[zxspectrum] Re: usare le variabili intere

  • From: Enrico Maria Giordano <e.m.giordano@xxxxxxxxxxxxxxx>
  • To: zxspectrum@xxxxxxxxxxxxx
  • Date: Fri, 12 Mar 2004 18:41:37 +0100


"FALCO CESARE (BAM - 00541)" wrote:
> 
> > E la conseguenza di questo modo di pensare sarebbe, continuando con
> > l'esempio che avevo già introdotto, che il Clipper ha un solo tipo di
> > dato in quanto non ha dichiarazioni di tipo, il che è palesemente errato
> > in quanto quel linguaggio ha quattro tipi di dato ben diversi (stringa,
> > numerico, logico e data).
> 
> No, nel tuo esempio il Clipper ha 4 tipi di dato che posso utilizzare per
> dichiarare variabili di tipo adatto a contenere determinati valori.

Esattamente come sullo Spectrum. Se scrivo

LET i = 1

ottengo una variabile intera (gestita dal calcolatore interno in modo
appropriato). Ma se scrivo

LET fp = 123.456

ottengo una full fp. Due tipi di dato diversi dei quali, lo ammetto, il
principiante che legge il manuale dello Spectrum non si avvede.

> Questo e' il punto. Il Sinclair Basic tratta una variabile il
> cui contenuto sia un numero intero in modo diverso da come tratta
> una variabile il cui contenuto sia un numero in virgola mobile.
> E anche qui sono d'accordo.

Bene.

> Ma io non posso creare una variabile nella quale inserire
> *solo* numeri interi (come ad esempio in C), perche' l'interprete
> del linguaggio non consente questa possibilita'.

Certo, no. Appunto avevo detto che Stefano (flydream) aveva *quasi*
ragione.

> La domanda originale era:
> "Vorrei sapere se è possibile definire sullo spectrum
> le variabili numeriche in intere, in modo che il programma
> giri più velocemente, sugli MSX si usa DEFINTA-Z
> (definisci tutte le variabili intere)."

Ma io non rispondevo a quella. Rispondevo a Stefano (flydream) che
portava la funzione INT come esempio.

> Come hai detto anche tu, non stiamo parlando di opinioni,
> ma di regole sintattiche di un linguaggio di programmazione.
> L'unica risposta corretta alla domanda e' che non si puo'
> perche' si puo' solo definire una variabile che contenga numeri.

E no, qui ancora non siamo d'accordo. Quella è forse la risposta
corretta per un principiante ma non per uno che conosce
approfonditamente il calcolatore fp dello Spectrum, ti pare?

> Vedi sopra. Per quello che hai detto prima, la tua affermazione
> e' corretta, ma se pensi a come sono dichiarate le variabili, la
> funzione INT non fa altro che prendere un numero e restituirti
> un altro numero la cui parte decimale e' pari a 0.

Invece pare proprio che non sia così, a quanto dice Stefano Bodrato.

> Come ha scritto Roberto, se vogliamo trovare un'analogia con il
> cast, mi sembra meglio la funzione VAL.

Assolutamente no! Un cast è una conversione di tipo. E non è possibile
convertire un tipo stringa in un tipo numerico. E' possibile convertire
una stringa di cifre nel valore corrispondente ma questo non è un cast
in nessun senso. Ad esempio in C

char stringa[] = "123";

int n = ( int ) stringa;

è sintatticamente corretto ma non dà affatto il risultato sperato. Ci
vuole una funzione di conversione (atoi()) non un cast che sono due cose
concettualmente molto diverse.

> Che dici, abbiamo annoiato gli altri a sufficienza?  :^)

Ma se non parliamo di queste cose di cosa dobbiamo parlare?

> Rispondero' eventualmente lunedi' perche' devo scappare...  :^P

Ok.

EMG

--
EMAG Software Homepage:     http://www.emagsoftware.it
The EMG's ZX-Spectrum Page: http://www.emagsoftware.it/spectrum
The Best of Spectrum Games: http://www.emagsoftware.it/tbosg

Other related posts: