Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
vuoi
o PayPal
tutte le volte che vuoi
LA MANIPOLAZIONE DI UN ARRAY
La manipolazione di array avviene spesso tramite cicli (generalmente con il ciclo for).
L'indice del ciclo varia da 0 a lunghezza-1 e ciò viene usato per scandire tutto l'array e per
accedere a ciascun elemento dell'array.
Es.: stampare in output tutti gli elementi di un array vet:
var i;
for (i=0; i<vet.length; i++)
writeln ('elemento di indice '+i+' = '+vet[i]);
Es.: costruire un vettore di lunghezza 10 i cui elementi siano numeri casuali tra 0 e 1:
var vet = new Array(10);
var i;
for (i=0; i<vet.length; i++)
vet[i]=Math.random();
ARRAY DINAMICI
In JS gli array sono strutture dinamiche: il numero degli elementi può variare durante
l'esecuzione del programma.
Per aggiungere un elemento ad array è possibile assegnare un valore ad un elemento di
indice successivo all'ultimo attualmente esistente
212
Es.: var L = 5, i =0;
var vet = newArray(L); //vet ha lunghezza 5
//gli elementi del vettore vengono riempiti con //le potenze di 2
for (i =0; i <L; i++)
vet[i]=Math.pow(2, i); vet[L]=Math.pow (2,L); //<---vet ora ha
lunghezza 6
vet[L+2] = -1; //aggiunge due elementi
Es. Calcolo della somma degli elementi in un vettore:
var a = newArray(10);
var i,somma =0;// qui le istruzioni per riempire l'array
//...
//...
//somma degli elementi nell'array:
for(i =0;i <a.length;i++)somma +=a[i];//stampiamo la
somma:writeln(somma);
Es.: Calcolo del massimo tra gli elementi (numerici) di un vettore
var a = newArray(10);
var i, max;
// qui le istruzioni per riempire l'array
// ...
// calcolo il massimo
max = -Infinity;
for (i =0; i<a.length;i ++)
if(a[i]>max)
max = a[i];
//stampiamo il massimo
writeln(max);
Es.: Ricerca di un elemento con valore vin un array a di lunghezza
L 213
Calcolare true se l'elemento viene trovato, false altrimenti,
supponendo che l’array non sia ordinato
var a = newArray(10);
var i,trovato =false;
var v =-1;// elemento da cercare
// qui le istruzioni per riempire l'array
// ...
for (i=0; i<a.length; i++)
if(a[i]==v)
trovato = true;
//stampiamo il risultato
if(trovato) writeln('trovato!’);
else writeln('non trovato!');
oppure
Se l'elemento viene trovato, stampare anche l'indice corrispondente
nell'array
Usiamo un'iterazione indeterminata
var a = newArray(10);
var i = 0, trovato = false;
var v = -1;// elemento da cercare
// qui le istruzioni per riempire l'array
// ...
while(i<a.length&&!trovato)
if(a[i]==v)
trovato = true;
else
i++;
//stampiamo il risultato
if(trovato) writeln ('trovato! indice = ' + i);
else writeln('non trovato!');
Es.: Shift a sinistra degli elementi di un vettore:
Si devono spostare di una posizione a sinistra tutti gli elementi
del vettore. Considerando un array di lunghezza 5
var vet = newArray(5); 214
// ...
for(i =0;i<vet.length-1;i++)
vet[i] = vet[i+1];
Es.: Shift circolare a sinistra degli elementi di un vettore:
è come uno shift a sinistra, ma l'elemento che esce dalla prima
posizione rientra nell'ultima posizione
var vet = newArray(5);
// ...
var c = vet[0];
for(i = 0;i<vet.length-1; i++)
vet[i] = vet[i+1];
vet[vet.length-1] = c;
Es.: Scrivere un programma per generare un array contenente 10 numeri
casuali tra 0 e 1. Quindi generare un numero casuale c.
Successivamente, stampare tutti gli elementi dell'array il cui
valore è maggiore di c.
var N =10;
var vet = newArray(N);
var c;
var i;
// genero gli N valori
for(i=0;i<N;i++)
vet[i] = Math.random();
// genero c
c = Math.random();
// stampo i numeri > c
for(i =0;i<N;i++)
if(vet[i]>c)
writeln (vet[i]);
Es.: Scrivere un programma per generare un array contenente 10 numeri
casuali tra 0 e 1. Quindi generare un numero casuale c.
Successivamente, costruire un nuovo array contenente gli indici
degli elementi del primo array che sono > c.
215
var N =10;
var vet =newArray(N);
var c;
var i;
var vet_i = [];// nuovo array
// genero gli N valori
for(i=0;i<N;i++)
vet[i] = Math.random();
// genero c
c = Math.random();
// scandisco l'array
for(i =0;i<N;i++)
if(vet[i]>c)
vet_i[vet_i.length] = i;
• Esercizi LABORATORIO 8 (Array)
8.1) Si scriva un programma che dichiara una variabile intera k (assegnandole un valore a
piacere). Il programma quindi legge k interi e li memorizza in un array A, quindi legge dall’input un
intero X e stampa il numero di occorrenze di X in A
var k = 4;
var a = new Array(k);
var i;
var q=0;
for (i=0;i<a.length;i++){
a[i]=readnum();
}
writeln(a);
var x=readnum();
for(i=0; i<a.length;i++){
if(a[i]==x)
q++;
} 216
writeln(q);
8.2) Si scriva un programma che dichiara una variabile intera k (assegnandole un valore a
piacere). Successivamente il programma legge k interi e li memorizza in un array A di lunghezza k
e dichiara un secondo array B di lunghezza k e copia tutti gli elementi di A in B e stampa entrambi
gli array.
var k=3;
var a = new Array(k);
var b = new Array(k);
var i;
for (i=0; i<a.length;i++){
a[i]=readnum();
}
for (i=0; i<b.length;i++){
b[i]=a[i];
}
writeln(a);
writeln(b);
8.3) Si scriva un programma che dichiara una variabile intera k (assegnandole un valore pari a
piacere). Quindi il programma legge k numeri e li memorizza in un array A di lunghezza k. Il
programma successivamente legge un valore X numerico. Il programma deve controllare che la
nell’array A sia minore o uguale a X, e stampare di
somma di tutti gli elementi di indice pari
conseguenza un messaggio “Condizione verificata” oppure “Condizione non verificata”.
var k=3;
var a = new Array(k);
var somma=0;
var i;
for(i=0;i<a.length;i++){
a[i]=readnum(); 217
}
var x = readnum();
for(i=0; i<a.length; i+=2){
somma+=a[i];}
if(somma<=x)
writeln('Condizione verificata');
else
writeln('Condizione non verificata');
8.4) Si scriva un programma che dichiara una variabile intera k (assegnandole un valore pari a
piacere). Quindi il programma legge k numeri e li memorizza in un array A di lunghezza k. Il
programma successivamente legge un valore X numerico. Il programma deve controllare che la
somma di tutti gli elementi con valori dispari presenti nell’array A sia minore o uguale ad X, e
stampare di conseguenza un messaggio “Condizione verificata” oppure “Condizione non verificata”.
var k=3;
var a = new Array(k);
var somma=0;
var i;
for(i=0;i<a.length;i++){
a[i]=readnum();
}
var x = readnum();
for(i=1; i<a.length; i+=2){
somma+=a[i];}
if(somma<=x)
writeln('Condizione verificata');
else
writeln('Condizione non verificata');
218
8.5) Si scriva un programma che dichiara una variabile intera k (assegnandole un valore pari a
piacere). Quindi il programma legge k numeri e li memorizza in un array A di lunghezza k. Il
programma successivamente legge un valore X numerico. Il programma deve controllare che la
somma dei valori di ogni coppia contigua di elementi di A sia uguale ad X. Infine il programma deve
“Condizione verificata” oppure “Condizione non verificata”, in base al risultato
stampare il messaggio
ottenuto.
var k=4;
var a = new Array(k);
var somma=0;
var i;
for(i=0;i<a.length;i++){
a[i]=readnum();
}
writeln(a);
var x = readnum();
for(i=0; i<a.length-1; i++){
somma=a[i]+a[i+1];
if(somma==x)
writeln('Condizione verificata');
else
writeln('Condizione non verificata');
} Si scriva un programma che legge dall’input k interi (con k numero paria piacere), e li
8.6)
memorizza in una array A di lunghezza k. Il programma successivamente legge due valori interi, X
e Y. Il programma deve controllare che ogni occorrenza di X sia sempre seguita da un’occorrenza
di Y e stampare di conseguenza un messaggio “Condizione verificata” oppure “Condizione non
verificata”. Nota: Nel caso in cui X non occorre mai si assuma che la condizione non sia verificata.
var k=4; 219
var a = new Array(k);
var i;
for(i=0;i<a.length;i++){
a[i]=readnum();
}
writeln(a);
var x = readnum();
var y = readnum();
for(i=0;i<a.length;i++){
if(a[i]==x && a[i+1] ==y){
writeln('condizione verificata');
}
else {
writeln('Condizione non verificata');}
}
8.7) Si scriva un programma che dichiara una variabile intera k (assegnandole un valore a
piacere). Quindi il programma legge k numeri e li memorizza in un array A di lunghezza k. Il
programma deve controllare che ogni coppia contigua di elementi di A abbia valori ordinati in senso
“Condizione verificata”
strettamente crescente. Infine il programma deve stampare il messaggio
oppure “Condizione non verificata”, in base al risultato ottenuto.
var k = 5;
var a = new Array(k);
var i;
var cont = 0;
for (i=0; i<a.length; i++){
a[i]=readnum();
}
for(i=0;i<a.length;i++){
if(a[i]<a[i+1]){
cont ++;} 220
}
if (cont == k-1){
writeln('Condizione verificata');
}
else {
writeln('Condizione non verificata');
}
8.8) Si scriva un programma che dichiara una variabile intera k (assegnandole un valore a
piacere). Quindi il programma legge k numeri e li memorizza in un array A di lunghezza k. Il
programma deve quindi dichiarare un nuovo array B di lunghezza k e copiare gli elementi di A negli
elementi di B in modo che l’ordine degli elementi risulti invertito (cioè l’elemento di indice 1 in A sia
copiato nell’elemento di indice k-1 in B, l’elemento di indice 2 in A sia copiato nell’elemento di indice
in B, e così via fino all’elemento di indice k-1 in A copiato nell’elemento di indice 1 in B).
k-2
var k=6;
var A= new Array(k);
var B= new Array(k);
for(i=0;i<k;i++)
A[i]= readnum();
for(i=0;i<k;i++) //per i=0 //per i=1 //per i=2
B[k-i-1]=A[i]; // B[6-0-1]=B[5]=A[0] //B[6-1-1]=B[4]=A[1] // B[6-
2-1]=B[3]=A[2].....
writeln(A);
writeln(B);
8.9) Si scriva un programma che dichiara una variabile intera k (assegnandole un valore a
piacere). Il programma legge k numeri e li memorizza in un array A di lunghezza k. Il programma
legge altri k numeri e li memorizza in un secondo array B di lunghe