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
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
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

Dettagli
A.A. 2019-2020
263 pagine
1 download
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.