18. Array Monodimensionali: I Vettori
Nell’introduzione dello scorso capitolo abbiamo parlato di strutture, soffermandoci in modo particolare sugli array. In questo, e nel prossimo capitolo, parleremo degli Array, e degli algoritimi principali su di essi. Oggi parleremo specificatamente degli Array monodimensionali, o meglio chiamati Vettori.
18. Array Monodimensionali (Vettori)
Come detto nel precedente capitolo, il vettore è una struttura omogenea di dati, cioè tutti gli elementi che vi fanno parte saranno tutti dello stesso tipo. Esso gode delle segenti proprietà:
- Gli array sono uno dei tipi di dato strutturato
- Sono composti da elementi omogenei
- Ogni elemento è identificato all’interno del vettore da un numero d’ordine detto anche indice dell’elemento
- E’ possibile riempire o leggere una sola posizione per volta
- Il numero degli elementi è detto dimensione o lunghezza del vettore
La dimensione del vettore è, in genere, dichiarata all’interno del programma. Tuttavia esistono i vettori dinamici, che durante il programma cambiano più volte la dimensione. Tuttavia, per semplicità, si ricorre sempre ad un vettore statico, tranne quando si utilizzeranno strutture più complesse quali pile e code, che comunque non tratteremo in questa guida.
Nei programmi, la dichiarazione di un vettore avviene in questo modo:
dichiaro Vettore[dimensione] : tipo
Tra parentesi quadre metteremo la dimensione del vettore. ATTENZIONE: molti programmi partono il loro conteggio da 0. Quindi se metterete 10, le posizioni andranno da 0 a 9, e viceversa.
In genere, per inserire degli elementi in un vettore si usa un ciclo for. Ciò non esclude che voi potete usare anche un ciclo while, ma il for è più adatto allo scopo. Vediamo, ora, alcune operazioni fondamentali sugli array.
Assegnazione
Assegnamo al vettore vett1 in posizione 3 il valore 4.
vett1[3]=4
Se si tratta di una stringa, invece, si farà:
vett1[3]=”stringa”
Algoritmo di inserimento
INIZIO
Chiedo (N)
Dichiaro vett1 [N] : interoFOR (I=0; I>N; I++)
Chiedi (vett1[I])
Incrementa IFINE
Nell’appendice a questa guida, riporteremo anche altri algoritmi di lavoro sugli array. In questo capitolo parlerò più che altro delle logiche che stanno alla base dei due algoritmi successivi.
Algoritmo di ricerca
Alla base dell’algoritmo di ricerca c’è un confronto. Ciò che dobbiamo fare noi, con questo algoritmo, è cercare un determinato elemento in un array. Quindi con un ciclo for scorreremo tutto il vettore e, ad ogni posizione, controlleremo se l’elemento c’è oppure no. Questo, generalmente si può controllare con un IF. Ma tutta la ricerca la si può fare anche con un while. Tuttavia per un maggiore ordine si preferisce spesso utilizzare FOR e IF insieme.
Una volta trovato l’elemento possiamo fare ciò che vogliamo. Salvarne la posizione, contarne le occorrenze ecc… Per l’algoritmo si rimanda all’appendice.
Algoritmo di ordinamento
La logica di base dell’algoritmo di ordinamento è quello di, una volta ottenuto un elenco, di ordinarlo in un certo criterio (alfabeto, crescente ecc…). Questo si ottiene, in genere, con due cili for nidificati. Questo perchè il primo elemento non deve essere confrontato solo con il secondo, ma anche con gli altri elementi, e si può ottenere questo solo con un doppio ciclo for. Al termine dei due costrutti potremmo, lanciando l’output del vettore, notare che il vettore è nell’ordine che gli abbiamo impartito. Anche questo algoritmo lo troverete nell’appendice.
Ebbene. Chiudiamo qui questo capitolo sui vettori. Per ogni domanda, chiarimento o commento lasciaci il tuo parere sotto. Vi do l’appuntamento al prossimo capitolo, dove parleremo delle matrici. Alla prossima.










