Estratto del documento

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

Anteprima
Vedrai una selezione di 10 pagine su 263
Appunti Fondamenti teorici e programmazione (con quasi tutti esercizi risolti e indice) Pag. 1 Appunti Fondamenti teorici e programmazione (con quasi tutti esercizi risolti e indice) Pag. 2
Anteprima di 10 pagg. su 263.
Scarica il documento per vederlo tutto.
Appunti Fondamenti teorici e programmazione (con quasi tutti esercizi risolti e indice) Pag. 6
Anteprima di 10 pagg. su 263.
Scarica il documento per vederlo tutto.
Appunti Fondamenti teorici e programmazione (con quasi tutti esercizi risolti e indice) Pag. 11
Anteprima di 10 pagg. su 263.
Scarica il documento per vederlo tutto.
Appunti Fondamenti teorici e programmazione (con quasi tutti esercizi risolti e indice) Pag. 16
Anteprima di 10 pagg. su 263.
Scarica il documento per vederlo tutto.
Appunti Fondamenti teorici e programmazione (con quasi tutti esercizi risolti e indice) Pag. 21
Anteprima di 10 pagg. su 263.
Scarica il documento per vederlo tutto.
Appunti Fondamenti teorici e programmazione (con quasi tutti esercizi risolti e indice) Pag. 26
Anteprima di 10 pagg. su 263.
Scarica il documento per vederlo tutto.
Appunti Fondamenti teorici e programmazione (con quasi tutti esercizi risolti e indice) Pag. 31
Anteprima di 10 pagg. su 263.
Scarica il documento per vederlo tutto.
Appunti Fondamenti teorici e programmazione (con quasi tutti esercizi risolti e indice) Pag. 36
Anteprima di 10 pagg. su 263.
Scarica il documento per vederlo tutto.
Appunti Fondamenti teorici e programmazione (con quasi tutti esercizi risolti e indice) Pag. 41
1 su 263
D/illustrazione/soddisfatti o rimborsati
Acquista con carta o PayPal
Scarica i documenti tutte le volte che vuoi
Dettagli
SSD
Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher lauria.mikelangelo di informazioni apprese con la frequenza delle lezioni di Fondamenti teorici e programmazione e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli Studi di Pisa o del prof Bonchi FIlippo.
Appunti correlati Invia appunti e guadagna

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community