Pascal/Tipi di dati: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Ramac (discussione | contributi)
m →‎real: funzioni
Ramac (discussione | contributi)
m sintassi colorata
Riga 18:
 
Proviamo a fare un programma che utilizzi alcune operazioni. Per ora ci limiteremo a fare semplici assegnamenti di variabili all'interno del programma stesso. Presto troveremo il modo di dinamicizzare le cose...
<source lang=pascal>
 
program Pari;
var n:integer;
begin
n:=5;
if (n mod 2 = 0) then write ('pari')
else write ('dispari');
end.
</source>
 
Il programma presenta alcuni costrutti che non abbiamo ancora visto, ma la cui intepretazione è semplice. Analizziamo come al solito riga per riga.
* Come al solito la prima riga contiene la dichiarazione del titolo.
Riga 40:
 
Un semplice esempio di uso potrebbe essere la stampa della tabella dei codici ascii.
<source lang=pascal>
 
program ASCII;
var n:integer;
begin
for n:=0 to 255 do
writeln(n, ' ==> ', chr(n));
end.
</source>
 
Come al solito analizziamo riga per riga.
* Dichiarazione del programma,
Riga 56:
 
Per assegnare ad una variabile ''char'' un valore è necessario usare la notazione
<source lang=pascal>
nome_variabile := 'carattere';
</source>
I due caratteri ' (carattere apice) identificano un valore alfanumerico e non numerico.
== Real ==
Line 78 ⟶ 80:
 
Le variabili di tipo booleano si dichiarano con la parola riservata ''boolean''.
<source lang=pascal>
var
variabile_booleana:boolean;
 
</source>
Si inizializzano così:
<source lang=pascal>
variabile_booleana:=true;
oppure
variabile_booleana:=false;
</source>
 
L'utilizzo di variabili Boolean è in genere limitato all'analisi di particolari aspetti dell'input da utente, o all'utilizzo come 'flag' nella programmazione più avanzata.
 
Line 92 ⟶ 96:
 
La dichiarazione di una variabile string ha sintassi:
<source lang=pascal>
 
nome_della_variabile : string[n];
</source>
 
Ovvero afferma che la variabile ''nome_della_variabile'' può contenere una riga di massimo ''n'' caratteri.
 
Line 102 ⟶ 106:
 
Nel caso si voglia inserire un carattere apice nella propria stringa (per inserire ad esempio un apostrofo) è necessario usare due apici di seguito. Un'istruzione come questa
<source lang=pascal>
writeln('L'unica soluzione...');
</source>
genera infatti un errore, poiché l'apostrofo tra ''La'' e ''unica'' è interpretato dal compilatore come un apice che delimita la fine della stringa. Un'istruzione invece come questa
<source lang=pascal>
writeln('L<nowiki>''</nowiki>unica soluzione...');
</source>
è interpretata correttamente.
 
L'unico operatore possibile con il tipo string è l'operatore di concatenazione +, che è possibile capire con un esempio:
<source lang=pascal>
var1 := 'Ma la volpe col suo balzo ';
var2var1 := 'haMa raggiuntola ilvolpe quietocol suo balzo fido';
var3var2 := var1'ha +raggiunto var2il + 'quieto 1234fido';
var3 := var1 + var2 + ' 1234';
</source>
La variabile var3 alla fine di questo breve listato conterrà così il valore ''Ma la volpe col suo balzo ha raggiunto il quieto fido 1234'', in quanto le stringhe sono state concatenate in una stringa unica.<br/>Si noti lo spazio inserito prima dell'apice: senza lo spazio, le parole risulterebbero attaccate.
 
Una funzionalità interessante relativa alle stringhe è l''''indicizzazione''', per la quale è possibile fare riferimento ad un carattere all'interno della stringa, usando la notazione
<source lang=pascal>
variabile[n] {l'n-esimo carattere della stringa in variabile}
 
</source>
== Tabella: Operazioni ed operatori ==
<center>
Line 159 ⟶ 170:
 
La sintassi è
<source lang=pascal>
'''type'''
nome:(elemento_1, elemento_2,...,elemento_n);
</source>
dove elemento_1,elemento_2,...,elemento_n sono i possibile valori che possono assumere le variabili del tipo di dato ''nome'' elencati in ordine.
 
Per indicare quindi che una variabile è del tipo ''nome'' si usa la sintassi:
<source lang=pascal>
var
variabile:nome;
 
</source>
Per fare un esempio, possiamo definire un tipo:
<source lang=pascal>
type
mesi: (gen, feb, mar, apr, mag, giu, lug, ago, set, ott, nov, dic);
</source>
e dichiarare due variabili
<source lang=pascal>
var
mese_di_nascita_luigi, mese_di_nascita_gianni:mesi;
</source>
Se corso del programma poniamo
<source lang=pascal>
mese_di_nascita_luigi:= feb;
mese_di_nascita_gianni:= ago;
</source>
avremo che:
l'istruzione<br(>
<source lang=pascal>
writeln(mese_di_nascita_luigi);
</source>
stampa sullo schermo ''feb''; l'espressione
mese_di_nascita_luigi < mese_di_nascita_gianni