Introduzione agli array e alla loro gestione Prof. Claudio Ricci Classificazione • Monodimensionali (Vettori) • Bidimensionali (Matrici) definizione Un array è una struttura dati complessa usata in molti linguaggi di programmazione. modimensionale Si può immaginare un array come una sorta di casellario, le cui caselle sono dette celle dell'array stesso. Ciascuna delle celle si comporta come una variabile tradizionale; tutte le celle sono variabili di uno stesso tipo preesistente, detto tipo base dell'array. Si parlerà perciò di tipi come "array di interi", "array di stringhe", "array di caratteri" e così via. celle bidimensionale Definizione di un vettore Ecco un esempio, che si serve della sintassi C per definire e valorizzare un array: int vettore[10]; // definisce "vettore" come array di 10 elementi interi vettore[0] = 0; // assegna il valore "0" alla cella di indice 0 vettore[1] = 1; vettore[2] = 1; vettore[3] = 2; vettore[4] = 3; Ecco un esempio, che si serve della sintassi PASCAL per definire e valorizzare un array: var vettore: array [1..10] of integer; (* definisce "vettore" come array di 10 elementi interi*) vettore[1] = 0;(* assegna il valore "0" alla cella di indice 1*) vettore[2] = 1; vettore[3] = 1; vettore[4] = 2; vettore[5] = 3; Indice Ciascuna delle celle dell'array è identificata da un valore di indice. L'indice è generalmente numerico e i valori che gli indici possono assumere sono numeri interi contigui che partono da 0 o da 1. Si potrà quindi parlare della cella di indice 0, di indice 1, e, in generale, di indice N, dove N è un intero compreso fra 0 (o 1) e il valore massimo per gli indici dell'array. indice 1 2 3 4 5 Gestione di un vettore La maggior parte dei programmi che utilizzano array si servono della struttura di controllo "cicli for" per attraversare gli array, ovvero per accedere sequenzialmente alle celle. Il ciclo for si presta molto naturalmente all'uso combinato dell'array proprio perché consente di specificare un tipo particolare di iterazione di un certo insieme di istruzioni, controllato da un indice che assume un insieme di valori solitamente interi e contigui. Per esempio, il codice Java per stampare i contenuti di un array di 100 interi potrebbe essere come segue: for(int i=0; i<100; i=i+1) // per i crescente con passo 1 da 0 a 99 System.out.println(vettore[i]); // stampa la i-esima cella Un esempio in pascal Program Carica; var vett:array[1..10] of integer; var i: integer; begin For i:=1 to 10 do vett[i]:=i; for i:=1 to 10 do writeln(vett[i]); repeat until keypressed; end. 1 1 2 2 3 i 4 3 4 vett 5 5 6 6 7 7 8 8 9 10 9 10