Newsgroup: it.comp.programmare
Titolo: Overflow???

Come è possibile, se il qbasic scrtivo anche solo un'operazione
abbastanza semplice, come una moltiplicazione di 600 per 1024 mi da
overflow?
la riga è questa
print 600*1024
e mi da overflow!!!
Che faccio???
Grazie
    Ciao!!!
    Ciao!!!
-- 
 gatto
---> 
www.infinito.it/utenti/gat_mont/
Rimuovi l'antispam!!!

 Che faccio???
Usa un linguaggio un pelo piu' evoluto...
Davide

 la riga č questa


Usa un linguaggio un pelo piu' evoluto...
dove la trovo una versione di turbo pascal in rete?


PRINT 600& * 1024&
uao, funziona, grazie!!!


uao, funziona, grazie!!!
ma se metto
print 600#*1024# 
non č una corrispondenza doppia?
Boh, ho terminato il programma mettendo "#" davanti alla variabile ed
ora non va in overflow neanche con 999+E999*1024
Mi spieghi meglio come funziona il # o corrispondenza doppia, non ci
capisco molto solo a consultare la mitica guida in linea di qbasic.
Grazie!


 capisco molto solo a consultare la mitica guida in linea di qbasic.
Corrispondenza doppia??? Mai sentita, mi spiace...
Ah, cmq per la storia del linguaggio un pelo piů evoluto... con VB č lo
stesso (e giustamente) ;-)
Ciao,
Usmclf

 dove la trovo una versione di turbo pascal in rete?
Hummm.... 
www.borland.com
 ?
Davide

 dove la trovo una versione di turbo pascal in rete?
il turbo pascal e' protetto da copyright, pero' puoi scaricarti il 
dev-pascal: 
www.bloodshed.net
 (o 
blodsheed.net
, non ricordo).
ciao anto
-- 
Antonio Cuni, 19 anni, studente
Brainbench C++ Master: 4.6, higher than 98% of all previous test takers.
C Language: 3.32, higher than 79% of all previous test takers.
Guida C/C++ di Programmazione.it: 
http://cpp.programmazione.it

 Usa un linguaggio un pelo piu' evoluto...
Il Basic gestisce i numeri come il C e tanti altri. Basta che usi gli interi
lunghi e la cosa è fatta.
Non c'entra l'evoluzione con standard vecchi di decenni.
MaxArt

"MaxArt" <maxa...@ZEROSPAMtiscalinet.it> wrote in message
news:9sc183$6k1$1...@pegasus.tiscalinet.it...

Mumble. E se provassi con smalltalk. Come linguaggio ha oltre 20 anni,
però problemi simili non ne ha.
Per esempio:
Transcript show: (600 * 1024) printString
visualizza nel transcript (ch è la console di default)
614400
oppure anche
Transcript show: (195 ** 122) printString
essendo il doppio asterisco l'operatore di elevamento a potenza,
visualizza nel transcript
242227019960336120583274395643772355297326067052099004533537171686114124
860898594426568335185592410189194461915673769602601792999200162617206970
415775840261007017425648778177925968799160235659619330962311658435122735
9045801242294971138157601286966524867239058949053287506103515625
--
Andrea Ferro
---------
Brainbench C++ Master. Scored higher than 97% of previous takers
Scores: Overall 4.46, Conceptual 5.0, Problem-Solving 5.0
More info 
http://www.brainbench.com/transcript.jsp?pid=2522556

Signori... per cortesia... qualche riga qui sotto c'è già la soluzione al
problema da un po' di tempo...
Usmclf
Andrea Ferro <And...@UrkaDVD.it> wrote in message
yDgG7.674$6t4....@nreader2.kpnqwest.net...


 però problemi simili non ne ha.
Se è per quello, per rimanere nel Basic può provare Ubasic, che gestisce
sino a 32767 cifre.
MaxArt

 capisco molto solo a consultare la mitica guida in linea di qbasic.
Allora, vedrò di spiegarti. I simboli dopo le cifre di fatto "convertono" il
numero in un particolare tipo di dato. Tu dirai: ma sono tutti numeri!
Però questi numeri occupano memoria, e a volte è necessario specificare
quanta memoria dare a questi numeri. Per cui, i numeri possono essere:
 - interi a precisione singola
 - interi a precisione doppia
 - a virgola mobile a precisione singola
 - a virgola mobile a precisione doppia
Il QuickBasic Professional dispone anche del tipo monetario (dimentica...),
il C/C++ e tanti altri del "carattere". Il C/C++ inoltre può decidere se
hanno il segno o no, e in un ambiente a 32 bit gli interi a precisione
doppia sono come quelli a precisione singola... Ma per tornare al BASIC,
inizialmente avevi scritto 600*1024. Quei numeri venivano interpretati come
interi a precisione singola, e il risultato ci si aspettava che fosse intero
a precisione singola... ma gli interi a precisione singola vanno da -32768 a
32767, quindi è andato in overflow. Per risolvere il problema, è bastato
mettere un & dopo i numeri per avvisare il compilatore che i numeri in
questione dovevano essere interpretati come interi a precisione doppia, più
che sufficienti per il tuo calcolo (vanno da -2^31 a 2^31-1... 2^31 sono
circa 2 miliardi). Mettendo il simbolo # hai detto di interpretarli come
numeri in virgola mobile a precisione doppia, anch'essi sufficienti per il
tuo calcolo. Anche quelli a precisione singola dovrebbero funzionale (usa il
! ).
MaxArt
P.S.: usualmente il QBasic interpreta i numeri senza contrassegno come
numeri in virgola mobile a precisione singola... evidentemente gli hai detto
precedentemente di non fare così... cosa hai fatto?

 PRINT i
Alternativa:
i&=600*1024
PRINT i&
MaxArt

 PRINT i&
Alternativa che NON funziona!!!
Ciao,
Usmclf.

 precedentemente di non fare così... cosa hai fatto?
Non ha fatto proprio nulla, scusa ma hai provato tu?
Usmclf.

 Non ha fatto proprio nulla, scusa ma hai provato tu?
In tanti anni di programmazione in QuickBasic... sinceramente no!!!
Invero, sono le variabili, se senza contrassegno, ad essere interpretate
come a virgola mobile a precisione singola. Non mi era mai capitato di
scrivere in un programma un'istruzione del genere...
MaxArt

 Alternativa che NON funziona!!!
Beh, certo, se mi dimentico i & nella prima riga :-)
Comunque ne basta uno, da mettere in uno qualsiasi tra i due frattori.
MaxArt

 scrivere in un programma un'istruzione del genere...
Tanti anni di programmazione QB e non sai che bisogna provare prima
di dare delle indicazioni (per di piů sbagliate)???
Mah...
Usmclf.
MaxArt <maxa...@ZEROSPAMtiscalinet.it> wrote in message
9sknuv$kbk$1...@pegasus.tiscalinet.it...


 Comunque ne basta uno, da mettere in uno qualsiasi tra i due frattori.
Frattori???
Mah...
Usmclf.
MaxArt <maxa...@ZEROSPAMtiscalinet.it> wrote in message
9sko2e$kc6$1...@pegasus.tiscalinet.it...


precedentemente di non fare così... cosa hai fatto?
Ho messo la variabile con %
E non lo dovevo fare.
Comunque ho capito, grazie per la spiegazione.


ad esempio, il Pascal chiama i numeri a virgola mobile REAL...
Perchč, tu con
var x: real
non gli dici che x puň essere qualsiasi numero REALE (cioč TUTTI i
numeri possibili immaginabili 1; 1,0000001; 1,0000002 ecc...)???
O sbaglio?
Cioč 'sti benedetti numeri a virgola mobile di cui si sente sempre
parlare, non sono altro che numeri reali?


Alternativa che NON funziona!!!
ahah, va in overflow.


Frattori???
sě, ho provato, basta
i& = 600& * 1024
PRINT i&
end
