[zxspectrum] tipi di dato
- From: Paolo Ferraris <pieffe8@xxxxxxxxxxxxx>
- To: zxspectrum@xxxxxxxxxxxxx
- Date: Fri, 12 Mar 2004 18:16:32 -0600
Ciao a tutti,
ma vi date una calmata con i messaggi? :-) Stamattina ne ho scaricati 90.
Ma visto che non sono abbastanza :-) ci penso anche io a mettere carne
sul fuoco, mettendo un po' di ordine (o disordine) nel discorso dei tipi
di dato.
Una variabile e` di un tipo se puo` contenere valori solamente di quel tipo.
Esempio in basic: ogni variabile che finisce in $ puo` contenere solo
stringhe, e quindi e` di tipo stringa.
In clipper (da quanto ho capito perche` non l'ho mai usato, ma potrei
dire hypertalk per esempio) le variabili non hanno tipo, anzi... sono di
un tipo unico e possono contenere valori di 4 categorie diverse: numeri,
stringhe, ecc... Se la seguente sequenza di due instruzioni
a = 3
a = "pippo"
e` accettata dal linguaggio (errori di sintassi esclusi) cio`
confermerebbe quello che sto dicendo: la stessa variabile puo` contenere
valori di tipo completamente diverso, nella stessa portione di codice.
Passiamo ora al basic Sinclair. Io dico che ci sono solo due tipi:
numerico e stringa. Il fatto che interi a 17 bit (e non a 16 come stiamo
continuando a dire) non vengano rappresentati internamente come floating
point e` irrilevante per vari motivi:
1) Non puoi dichiarare variabili di tipo intero, neanche se usi INT.
Tra l'altro, INT 100000.3 viene memorizzato come numero floating point.
2) E` totalmente trasparente all'utente: non ottieni per esempio
overflow se sommi due numeri interi a 17 bit: il risultato viene
convertito in floating point.
3) Ricordiamoci della differenza tra specifiche di un linguaggio e la
sua implementazione: due compilatori ANSI C (che quindi seguono uno
standard) possono essere implementati in maniera totalmente diversa.
Compreso modo di memorizzare i numeri float: nulla vieterebbe di usare
lo stesso identico approccio usato sullo Spectrum.
Other related posts: