I vettori, comunemente detti "array", sono un tipo di dato strutturato, i quali posso avere 1 o 2[bidimensionali] dimensioni(in questo caso parleremo di matrici).
Un vettore lo poete immaginare come un insieme di celle di memoria adiacenti, che si differenziano tramite un indice(un valore intero, positivo e crescente).
NB:un vettore puo' contenere solo elementi di uno stesso tipo. Ad esempio solo reali, o solo interi.
# Dichiarazione
Per la dichiarazione di un vettore dobbiamo eseguire una sintassi ben percisa che riporto qui sotto.
Sotto la riservata var scriviamo:
- Code: Select all
a: array[1..n] of integer;
1. a è il nostro vettore;
2. 1..n è la dimensione. Ciò sta a significare che questo array avrà n posti numerati da 1 a n(gli indici di cui prima parlavo);
3. of integer o real o qualsiasi altro tipo assegna il tipo di varibili che il vettore può contenere.
# Gestione dei vettori
Siccome un vettore è un insieme di varibili, come faccio a scriverlo o a caricarlo?
Per l'assegnazione basta fare:
- Code: Select all
a[1]:=123;
OPPURE
- Code: Select all
i:=1;
a[i]:=123;
Questi due esempi sono due modi diversi, ma il risultato è indentico. Quel numero tra quadre rappresenta l'indice che mi determina la posizione all'interno del vettore in cui devo mettere il numero. Stessa cosa quando scrivo.
- Code: Select all
write(a[2]);
scriverà il contenuto di ciò che c'è dentro al secondo posto del vettore.
NB: cosa succede se per sbaglio scrivo:
- Code: Select all
write(a);
Semplice. Il compilatore darà un errore, perchè non gli è stato specificato quale 'posto' andare a prendere in considerazione.
Ora. Se un nostro vettore ha 10 posti, e io voglio caricarlo tutto con i miei voti, come farò? Ciclo for!
- Code: Select all
...
for i:=1 to 10 do
begin
write('Introduci il ',i,'^ voto: ');
readln(a[i]);
end;
sembrerà difficile così d'un botto, ma vedrete che diventerà familiarissimo, visto che lo userete tantissimo. Ogni volta vi chiederà di introdurre l'n-esimo voto, e andrà a caricarlo nell'n-esimo posto. Tutto torna!
come scrivere quel vettore? Ciclo for! (sta diventando ripetitivo
)- Code: Select all
for i:=1 to 10 do write(a[i]:3);
così mi scriverà il mio vettore di voti(quel tre lì è per formattare l'output, sostanzialmente scrive il valore a[i] in 3 spazi).
Piccola info che c'entra poco:
Se per caso avete un vettore di 100 spazi che dovete caricare con i pesi degli iscritti a una scuola di judo e non vi va di scrivere ogni volta il peso di ognuno 100 volte, può essere utile il randomize.
- Code: Select all
...
randomize; //è sempre necessario. Questa procedura serve per pulire il registro con i valori dell'ultima 'randomizzazione'. Se non lo mettessimo userebbe sempre gli stessi valori.
...
for i:=1 to 100 do a[i]:=random(10)+ 60; //mi troverà a caso un numero tra 0 e 9 e lo sommerà a 60 ;)
Risultato? avrete il vostro vettore carico di valori tra 60 e 69, pronto per essere utilizzato.



