PROGRAMMIAMO
JS - A cosa servono gli array

Ancora un confronto fra vettori e variabili

Se consideriamo di nuovo gli esempi forniti nelle lezioni precedenti, non sembra che i vettori siano molto utili. Infatti, negli esempi proposti, è possibile sostituirli con un gruppo di normali variabili, senza che sostanzialmente cambi nulla. Si consideri ad esempio:

var vettore = [];
vettore[0] = 15;
vettore[1] = -23;
vettore[2] = -78.09;
vettore[3] = 5;

che potrebbe essere tranquillamente sostituito con

variabile0 = 15;
variabile1 = -23;
variabile2 = -78.09;
variabile3 = 5;

Si presti attenzione al fatto che variabile0, variabile1... sono normali variabili. Il numero progressivo 0, 1... fa parte del nome della variabile. In pratica il nostro vettore di 4 elementi può essere sostituito da 4 variabili singole e, a quanto pare, non cambierebbe nulla.

 

Vettori con indici variabili

C'è tuttavia una cosa importantissima che è possibile fare con i vettori ma non con le variabili. Si osservi il seguente esempio:

var numeri = [];
for (i=0;i<10;i++)
{
numeri[i] = window.prompt("Inserisci un nuovo valore");
}

In questo caso l'indice del vettore non è realizzato per mezzo di una costante numerica fissa (cioè un valore 0, 1...), ma con la variabile i. In pratica l'indice del vettore viene incrementato automaticamente dal ciclo for, partendo dal valore 0 fino ad arrivare al valore finale 9 (in corrispondenza di i=10 il ciclo termina).

Se avessimo voluto scrivere la stessa cosa con le variabili, avremmo dovuto fare:

numero0 = window.prompt("Inserisci un nuovo valore");
numero1 = window.prompt("Inserisci un nuovo valore");
numero2 = window.prompt("Inserisci un nuovo valore");
numero3 = window.prompt("Inserisci un nuovo valore");
...
numero9 = window.prompt("Inserisci un nuovo valore");

Se avessimo dovuto acquisire 100 valori diversi, la convenienza dell'uso dei vettori sarebbe risultata ancora più evidente.

 

Ancora un esempio di cosa si può fare con un indice variabile

Dunque l'uso dei vettori è particolarmente comodo quando è abbinato a un indice variabile, cioè, in altre parole, all'uso di una variabile per fare da indice al vettore. Qualsiasi variabile va bene per indicizzare un vettore, purché contenga solo valori interi (indici decimali non hanno senso) e maggiori di zero (non esistono elementi di indice negativo in un vettore).

Usando gli indici variabili è possibile fare con i vettori cose che sarebbero molto difficili o persino impossibili con le variabili singole. Si consideri per esempio il seguente programma che acquisisce 10 elementi di un vettore e quindi li visualizza in ordine inverso, a partire dall'ultimo elemento acquisito fino al primo (l'elemento zero):

var numeri = [];
for (i=0;i<10;i++)
{
numeri[i] = window.prompt("Inserisci un nuovo valore");
}

for (k=9;k>=0;k--)
{
alert(numeri[k]);
}

 

Altri cicli su tutti gli elementi di un vettore

Non sempre si conosce la lunghezza di un vettore. Si consideri l'esempio seguente:

var numeri = [];
for (i=0; ;i++)
{

numeri[i] = window.prompt("Inserisci un nuovo valore");
if (numeri[i]<0)
{
break;
}

}

Il ciclo prosegue finché l'utente non inserisce un valore negativo. Dunque alla fine del ciclo il vettore numeri può contenere un numero qualsiasi di elementi. Supponiamo ora ad esempio di voler sommare uno a tutti gli elementi del vettore. Possiamo farlo in questo modo:

for (k=0;k<numeri.length;k++)
{
numeri[k] = Number(numeri[k]) + 1;
}

L'operatore Number serve per convertire ogni valore in numero ed evitare che i valori vengano trattati come stringhe e concatenati.

 

 

precedente - successiva

Sito realizzato in base al template offerto da

http://www.graphixmania.it