Pascal - Arrays
Il linguaggio di programmazione Pascal fornisce una struttura dati chiamata array, che può memorizzare una raccolta sequenziale di dimensioni fisse di elementi dello stesso tipo. Un array viene utilizzato per memorizzare una raccolta di dati, ma spesso è più utile pensare a un array come una raccolta di variabili dello stesso tipo.
Invece di dichiarare variabili individuali, come numero1, numero2, ... e numero100, dichiari una variabile di matrice come numeri e utilizzi numeri [1], numeri [2] e ..., numeri [100] per rappresentare variabili individuali. Un elemento specifico in un array è accessibile da un indice.
Tutti gli array sono costituiti da posizioni di memoria contigue. L'indirizzo più basso corrisponde al primo elemento e l'indirizzo più alto all'ultimo elemento.
Si noti che se si desidera un array in stile C a partire dall'indice 0, è sufficiente avviare l'indice da 0, invece di 1.

Dichiarazione di array
Per dichiarare un array in Pascal, un programmatore può dichiarare il tipo e quindi creare le variabili di quell'array o dichiarare direttamente la variabile dell'array.
La forma generale della dichiarazione del tipo di un array unidimensionale è:
type
array-identifier = array[index-type] of element-type;
Dove,
array-identifier - indica il nome del tipo di array.
index-type- specifica il pedice dell'array; può essere qualsiasi tipo di dati scalare tranne real
element-type - specifica i tipi di valori che verranno memorizzati
Per esempio,
type
vector = array [ 1..25] of real;
var
velocity: vector;
Ora, la velocità è una matrice variabile di tipo vettoriale, sufficiente per contenere fino a 25 numeri reali.
Per avviare l'array dall'indice 0, la dichiarazione sarebbe:
type
vector = array [ 0..24] of real;
var
velocity: vector;
Tipi di pedice di array
In Pascal, un indice di array potrebbe essere di qualsiasi tipo scalare come intero, booleano, enumerato o sottointervallo, eccetto reale. Anche gli indici di matrice potrebbero avere valori negativi.
Per esempio,
type
temperature = array [-10 .. 50] of real;
var
day_temp, night_temp: temperature;
Prendiamo un altro esempio in cui il pedice è di tipo carattere -
type
ch_array = array[char] of 1..26;
var
alphabet: ch_array;
Il pedice potrebbe essere di tipo enumerato -
type
color = ( red, black, blue, silver, beige);
car_color = array of [color] of boolean;
var
car_body: car_color;
Inizializzazione degli array
In Pascal, gli array vengono inizializzati tramite assegnazione, specificando un particolare pedice o utilizzando un ciclo for-do.
Ad esempio:
type
ch_array = array[char] of 1..26;
var
alphabet: ch_array;
c: char;
begin
...
for c:= 'A' to 'Z' do
alphabet[c] := ord[m];
(* the ord() function returns the ordinal values *)
Accesso agli elementi dell'array
Si accede a un elemento indicizzando il nome dell'array. Questo viene fatto inserendo l'indice dell'elemento tra parentesi quadre dopo il nome dell'array. Ad esempio:
a: integer;
a: = alphabet['A'];
L'istruzione precedente prenderà il primo elemento dall'array denominato alfabeto e assegnerà il valore alla variabile a.
Di seguito è riportato un esempio, che utilizzerà tutti i tre concetti sopra menzionati vale a dire. dichiarazione, assegnazione e accesso agli array -
program exArrays;
var
n: array [1..10] of integer; (* n is an array of 10 integers *)
i, j: integer;
begin
(* initialize elements of array n to 0 *)
for i := 1 to 10 do
n[ i ] := i + 100; (* set element at location i to i + 100 *)
(* output each array element's value *)
for j:= 1 to 10 do
writeln('Element[', j, '] = ', n[j] );
end.
Quando il codice precedente viene compilato ed eseguito, produce il seguente risultato:
Element[1] = 101
Element[2] = 102
Element[3] = 103
Element[4] = 104
Element[5] = 105
Element[6] = 106
Element[7] = 107
Element[8] = 108
Element[9] = 109
Element[10] = 110
Pascal array in dettaglio
Gli array sono importanti per Pascal e dovrebbero richiedere molti più dettagli. Di seguito sono riportati alcuni concetti importanti relativi all'array che dovrebbero essere chiari a un programmatore Pascal:
Suor n | Concetto e descrizione |
---|---|
1 | Array multidimensionali Pascal supporta array multidimensionali. La forma più semplice dell'array multidimensionale è l'array bidimensionale. |
2 | Matrice dinamica In questo tipo di array, la lunghezza iniziale è zero. La lunghezza effettiva dell'array deve essere impostata con lo standardSetLength funzione. |
3 | Matrice imballata Questi array sono imballati in bit, ovvero ogni carattere o valore di verità viene memorizzato in byte consecutivi invece di utilizzare un'unità di memoria, di solito una parola (4 byte o più). |
4 | Passaggio di array a sottoprogrammi È possibile passare a un sottoprogramma un puntatore a un array specificando il nome dell'array senza un indice. |