
MSX Turbo Pascal Rubrica a cura di Stefano Roperto (parte 3)
Capitolo 3
Il tipo di dati definisce l’insieme di valori che una variabile può assumere. I tipi di dati più complessi che possono essere definiti dal programmatore, derivano tutti dai tipi standard. I tipi standard utilizzabili in Turbo Pascal 3.0 sono i seguenti:
Integer
Il tipo integer può rappresentare tutti i numeri interi con segno che è possibile rappresentare con due Bytes, quindi una variabile di tipo integer può contenere valori che vanno da -32768 a 32767. C’è da notare che l’overflow delle operazioni aritmetiche su numeri interi non viene rilevato. Operando con numeri interi, spetta al programmatore fare attenzione al fatto che i risultati parziali delle espressioni intere devono essere mantenuti all’interno del range di validità. per esempio, l’espressione 1000 * 100 /50 non restituirà 2000, poiché la moltiplicazione provoca un overflow. In questo caso, è necessario l’utilizzo delle parentesi per forzare la precedenza degli operatori 1000*(100/50) = 1000 * 2 = 2000 non produrrà nessun overflow. Una variabile di tipo Integer occupa due byte di memoria.
Byte
Il tipo Byte è un sottoinsieme del tipo Integer e può contenere valori compresi tra 0 e 255. I byte sono dunque compatibili con i numeri interi. È possibile assegnare a una variabile di tipo byte un valore Integer e viceversa (a patto che sia compreso nel range 0..255), salvo quando la variabile di tipo byte viene passata come parametri. Inoltre, i byte e i numeri interi possono essere utilizzati nella stessa espressione. Una variabile di tipo Byte occupa un byte in memoria.
Real
L’intervallo dei numeri reali è compreso tra 1 E – 38 e 1 E + 38 con una mantissa fino a 11 cifre significative. Un overflow durante un’operazione aritmetica che coinvolge numeri reali provoca l’interruzione del programma e restituisce un codice di errore, mentre un underflow causerà un risultato pari a zero. Sebbene il tipo real sia compreso tra i tipi scalari standard, bisogna norìtare che:
1) Le funzioni Pred e Succ non possono accettare argomenti reali.
2) I valori reali non possono essere utilizzati nell’indicizzazione degli array.
3) I valori reali non possono essere utilizzati per definire il tipo di base di un insieme.
4) I valori reali non possono essere utilizzati per controllare le istruzioni for e case.
5) Non sono ammessi sottoinsiemi di numeri reali.
I valori reali occupano 6 byte in memoria.
Boolean
Un valore boolean può assumere uno dei valori logici definiti dagli identificatori standard True e False. Questi sono definiti in modo tale che Falso < Vero. Una variabile boolean occupa un byte in memoria.
Char
Un valore Char descrive un carattere nel set di caratteri ASCII. Caratteri rappresentati sono ordinati in base al loro valore ASCII, ad esempio: ‘A’ < ‘S’. L’ordinale dei codici di carattere (ASCII) sono compresi tra 0 e 255. Una variabile Char occupa un byte in memoria.
Identificatori
Gli identificatori si utilizzano per indicare etichette, costanti, variabili, tipi definiti dal programmatore, procedure e funzioni. Un identificatore può essere lungo 127 caratteri, può contenere lettere e numeri, ma non può cominciare con un numero e non può contenere spazi per esempio:
A valido Abc valido (anche se poco significtivo) Parola valido Stringa1 Valido ContatoreTempo Valido (utilizzare la maiuscola all’inizio di ogni parola di un identificatore composto, ne aumenta la leggibilità) 1nome non valido (inizia con un numero) Nome cognome non valido (contiene uno spazio)
Costanti numeriche
Le costanti numeriche possono essere espresse sia in decimale che in esadecimale e possono essere di tipo intero o real. Alcuni esempi di costanti numeriche valide:
costanti di tipo integer 1 valida 12324 valida -23 valida $ABC valida $123G non valida (G non fa parte delle cifre esadecimali) 1.0 valida se usata come real, non valida se usata come integer costanti di tipo real 1234.5678 valida -0.056 valida lE4 valida 4E-3 valida -1.2345678901E+10 valida 1 valida sia se usata come integer, sia se usata come real
Costanti di tipo stringa
Le costanti di tipo stringa sono formate da un insieme di caratteri racchiusi tra due singoli apici ‘. Per esempio sono costanti stringa valide le seguenti stringhe:
‘ciao’ ‘ nel mezzo del cammin di nostra vita’ ‘uno all’’anno’ permette di stampare anche l’apice come apostrofo ‘’ rappresenta una stringa vuota ‘’’’ rappresenta una stringa che contiene il solo carattere ‘
Codici di controllo
Turbo pascal permette di inserire nelle stringhe anche i caratteri di controllo. I codici preceduti dal simbolo # denotano il codice ascii del carattere di controllo, mentre quelli preceduti dal simbolo ^denota il carattere di controllo. Per esempio:
#$1B è il codice ascii del carattere escape Analogamente ^[ rappresenta il carattere escape Esempi di caratteri di controllo sono i seguenti #13#10 carriage return + line feed ^G^G^G^G emette un beep 4 volte
I codici di controllo possono essere concatenati al tipo string per ottenere l’effetto desiderato, ad esempio se si stampa a video la stringa ‘testo di prova’ #13#10 dopo la visualizzazione dei caratteri tra gli apici, il cursore andrà a capo. In ogni caso in rete è possibile trovare l’elenco completo dei caratteri ASCII di controllo che sono i primi 31 caratteri.
Commenti
Come in tutti il linguaggi di programmazione è possibile inserire commenti nei listati. Il turbo Pascal prevede 2 formati:
primo formato: {il primo formato di commento si apre con una parentesi graffa aperta e si chiude con la relativa parentesi graffa chiusa}
secondo formato: (* il secondo formato è delimitato dai caratteri parentesi tonda e asterisco allinizio del commento e si chiude con gli stessi caratteri invertiti *)
col primo formato di inserimento dei commenti è possibile inserire nel programma alcune istruzioni speciali come ad esempio l’inclusione di un file di codice esterno o le cosiddette direttive di compilazione ovvero delle speciali istruzioni che abilitano o disabilitano alcune caratteristiche del compilatore:
Direttive al compilatore
{$I-}
{$I INCLUDE. FIL}
{$R-, B+, V-}
(*$X-*)Come si vede le direttive al compilatore sono inserite nel codice con la stessa sintassi dei commenti per cui entrambi i formati di commento sono validi. Vedremo più avanti l’utilità di attivare o disattivare certe caratteristiche del compilatore a seconda del risultato che si vuole ottenere e come creare, testare e includere un file esterno all’interno dei nostri programmi.


0 commenti