[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: