Written by xinyiman Ottobre 19, 2011, 09:11:00 am23428 ViewsRating: 0 (0 Rates)Print
Fino ad adesso abbiamo visto dei tipi di dati semplici,
delle variabili mono-valore, infatti in base alle conoscenze fino a
qui acquisite se dovessimo immettere dieci valori numerici e
mantenerli in memoria avremmo dovuto dichiarare 10 variabili diverse,
ad esempio variabile1, variabile2, fino a variabile10.
Con i vettori o array questo problema è facilmente
superabile perché con una sola dichiarazione si possono memorizzare
più valori. Per capire meglio come ciò è possibile si può
immaginare la memoria come un insieme di tante celle, se dichiaro una
variabile come fino ad ora visto occupo una di queste celle, invece
se dichiari un vettore è come occupare da una a N celle consecutive.
Quindi ricapitolando se volessimo realizzare l'esempio di prima con
questa soluzione dovremmo dichiarare la variabile così variabile1:
Array[0..9] of integer. In questo modo abbiamo
metaforicamente ma neanche poi tanto dichiarato che 10 celle della
memoria si chiamano variabile1, e per poter leggere o cambiare il
valore di ogni singola cella usiamo un contatore da 0 a 9 ovvero
l'identificativo di ogni singola cella del valore.
Vediamo un esempio per capire meglio come utilizzare gli
array. Ovviamente apriamo una nuova "Console Application" e la
compiliamo in modo che sia tale e quale a questo codice qui sotto.
Bene quello che è stato aggiunto al codice iniziale
sono la dichiarazione di queste due variabili
variabile1: array[0..9] of integer;
i:
integer;
e queste righe di codice.
for
i:=0 to 9 do
begin
variabile1[i]:=i+10;
end;
for
i:=0 to 9 do
begin
writeln('Il valore della cella ', i,'
e'':',variabile1[i]);
end;
Come possiamo vedere la parte importante è
nell'esecuzione dei due cicli for. Il primo immette nelle celle del
vettore un valore che varia da 10 a 19 e nel secondo ciclo scrivo a
video questi 10 valori contenuti in variabile1. Un'altra cosa
importante da notare è che in fase di dichiarazione bisogna anche
dire al programma di che tipo è il vettore, nel nostro caso è
integer.
Bene quello che fino ad ora si è detto sui vettori si
può classificare come "vettori statici", ora vedremo anche
quelli dinamici. Si differenziano uno dall'altro dalla mancata
dichiarazione della lunghezza del vettore. Un vettore statico infatti
si dichiara così: nomevariabile: array[lunghezza] of
tipodivariabile; mentre un vettore dinamico si dichiara
così: nomevariabile: array of tipodivariabile;.
Vediamo ora un esempio per capire come si usano. Dopo aver dichiarato
la seguente variabile così: Variabile1: array of
integer; bisogna inserire il codice sottostante nella fase
esecutiva del programma.
SetLength(Variabile1,6);
for
i:=0 to 5 do
begin
Variabile1[i]:=i;
end;
for
i:=0 to 5 do
begin
writeln('Valore 1: ',Variabile1[i]);
end;
La prima cosa che bisogna notare è la procedura
SetLength che serve a stabilire quanto è lungo il vettore, perché
nel caso di un vettore statico una volta stabilita la lunghezza del
vettore quello rimane per tutta l'esecuzione del programma, mentre
per i vettori dinamici la lunghezza del vettore può variare
resettandone la lunghezza. Per il resto è tutto uguale ai vettori
statici.
About the author
xinyiman registered at Italian community of Lazarus and Free Pascal on Ottobre 14, 2011, 10:56:28 pm and has posted 3286 posts in the boards since then. Last visit was Oggi alle 12:55:02 pm.
Una breve nota: gli array dinamici sono zero-based, ovvero il primo indice è sempre 0 (zero) e consiglio di non usare mai un riferimento ad un preciso puntatore dell'array ma piuttosto, prendo come esempio il vettore "Variabile1" dell'esempio, il codice LOW(Variabile1) per indicare la posizione zero nell'array.
Commenting option has been turned off for this article.
Questo blog non rappresenta una testata giornalistica poiché viene
aggiornato senza alcuna periodicità. Non può pertanto considerarsi un
prodotto editoriale ai sensi della legge n. 62/2001.
Questo sito utilizza cookie, anche di terze parti, per offriti servizi in linea con le tue preferenze. Chiudendo questo banner, scorrendo questa pagina, cliccando su un link o proseguendo la navigazione in altra maniera, acconsenti all’uso dei cookie.