Pascal/Tipi di dati: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
G4 (discussione | contributi) avanzamento 100% |
per ora così |
||
Riga 1:
{{Pascal}}
In questo modulo analizzeremo i tipi di dati nativi di Pascal (che sono predefiniti e non richiedono l'uso di particolari [[Pascal/Librerie e funzioni predefinite|librerie]].
Ricordiamo che la dichiarazione di una variabile segue questa sintassi:
<source lang=pascal>
var
nome : tipo;
</source>
== Integer ==
Il tipo di dato più utilizzato è in genere il tipo ''integer''. Corrisponde ai [[w:numero intero (informatica)|numeri interi]], anche se non proprio a tutti; infatti, per via di problemi di memoria, non può memorizzare tutti i numeri: in Turbo Pascal comprende gli interi da -32768 a 32767
<br/>Essendo il computer una macchina limitata, infatti, non è possibile fare somme fino all'infinito. Ogni tipo di dato ha delle operazioni permesse. In questo caso le operazioni che danno come ''risultato'' un integer sono:
Line 153 ⟶ 161:
</source>
== Riassumendo ==
{| {{prettytable}} width="100%"
|+ Operazioni, operatori e funzioni
|-
|<
|-
|<
|-
|-
|-
|-
|div||integer o char||integer
|-
!Funzione!!Argomento!!Risultato
|-
|sqr(''x'')||real o integer o char||integer
|-
|sqrt(''x'')||real o integer o char||real
|-
|abs(''x'')||real o integer o char||real o integer o char
|-
|trunc(''x'')||real o integer o char||integer
|-
|sin(''x'') e cos(''x'')||real o integer o char||real
|-
|random||-||real
|}
Il significato di questi operatori e di queste funzioni è stato mostrato nei paragrafi precedenti. ad eccezione della funzione ''sqrt(''n'')'', che restituisce la radice quadrata di un ''n''.
=== Operatori di confronto ===
Pascal mette a disposizione inoltre alcuni operatori di confronto che restituiscono sempre un valore booleano e che possono essere usati su due variabili qualsiasi dello stesso tipo di dato:
{| {{prettytable}}
|+ Gli operatori di confronto in Pascal
! <
|minore
|-
! <=
| minore o uguale
|-
! =
| uguale
|-
! <>
| diverso - si può usare anche not(val1 = val2)
|-
! >=
| maggiore o uguale
|-
! >
| maggiore
|}
È intuibile il loro funzionamento nell'ambito di variabili integer o real; questi operatori tuttavia possono essere anche usati sui tipi di dato char o string; più in particolare:
Line 196 ⟶ 232:
true > false
== Tipi di dati definiti dall'utente ==
Abbiamo già visto prima che per dichiarare una variabile si deve specificare un tipo (ad esempio, integer o real) per indicare quali valori può assumere.<br7>
In alcuni casi può essere utile ricorrere a tipi di dati non predefiniti, ma creati dall'utente: si può ricorrere quindi ad una ''dichiarazione di tipo'' con la parola riservata '''''type'''''.
<br/>La sintassi è
<source lang=pascal>
type
nome: valori_possibili;
</source>
che definisce il tipo di dato ''nome''.
<br/>Per indicare quindi che una variabile è del tipo ''nome'' si usa la sintassi:
<source lang=pascal>
var
Line 217 ⟶ 248:
</source>
=== Tipi enumerativi ===
Il più semplice tipo di dichiarazione ''type'' è quella dei '''tipi enumerativi''', che consentono cioè un numero ristretto div valori, definiti singolarmente dall'utente:
<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.
<br/>Per fare un esempio, possiamo definire un tipo:
<source lang=pascal>
Line 238 ⟶ 277:
</source>
avremo che: l'istruzione <code>writeln(mese_di_nascita_luigi);</code> stampa sullo schermo ''feb''; l'espressione <code>mese_di_nascita_luigi < mese_di_nascita_gianni</code> restituisce TRUE, in quanto feb precede ago nella lista dei mesi indicata nella dichiarazione. Allo stesso modo <code>giu > set</code> restituisce invece FALSE.
=== Subrange ===
I '''''subrange''''' sono tipi di dati che sono definiti come sottoinsiemi di altri tipi. Ad esempio:
<source lang=pascal>
type
cifra: 0..9
mese_primaverile: marzo..giugno;
lettera: 'a'..'z';
</source>
Abbiamo definito tre dati subrange: il primo tipo permette tutti i numeri dallo 0 al 9, il secondo tutti i mesi (da gennaio a dicembre) e il terzo tutti i caratteri da "a" a "z". Come si può intuire:
* una definizione di un subrange è costituita da un '''limite''' inferiore e uno superiore
* un subrange non è valido se il limite inferiore è maggiore o uguale a quello superiore (ad esempio non è valido il subrange <code>9..5</code>)
* i due limiti devono essere dello stesso tipo di dato (interi, ''char'', o anche definiti dall'utente, come nel caso di <code>mese_primaverile</code> che è un subrange del tipo ''mesi'' definito in precedenza)
Una volta definito, lo possiamo utilizzare:
<source lang=pascal>
var mese: mese_primaverile;
</source>
In questo caso ad esempio si possono effettuare dichiarazioni come <code>mese := marzo;</code> ma non <code>mese: ottobre;</code>.
[[Categoria:Pascal|Tipi di dati]]
|