![Page 1: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)](https://reader034.vdocuments.pub/reader034/viewer/2022051314/5542eb50497959361e8c0220/html5/thumbnails/1.jpg)
1
Corso di Informatica
(Programmazione)Esercitazione 3 (5 dicembre 2008)
![Page 2: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)](https://reader034.vdocuments.pub/reader034/viewer/2022051314/5542eb50497959361e8c0220/html5/thumbnails/2.jpg)
2
Esercizi sugli arrayEsercizio 1
dato un array A di N interi calcolare la
media e contare gli elementi > della media
Esempio (N=10)
8011020 40 46 60 4 92 15121
Risultato 58 (in realtà 58.8) e ci
sono 5 elementi superiori a 58
A
![Page 3: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)](https://reader034.vdocuments.pub/reader034/viewer/2022051314/5542eb50497959361e8c0220/html5/thumbnails/3.jpg)
3
Esercizi sugli arrayAlgoritmo: eseguo la somma S di tutti gli elementi
di A scandendo gli elementi di A dal primo (in
posizione 0) all’ultimo (in posizione N-1).
Divido poi S per la dimensione N ottenendo
la media M dei valori.
Esamino di nuovo uno alla volta gli elementi di A
dal primo all’ultimo e incremento di 1 un contatore
(variabile conta) ogni volta che la posizione i...
![Page 4: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)](https://reader034.vdocuments.pub/reader034/viewer/2022051314/5542eb50497959361e8c0220/html5/thumbnails/4.jpg)
4
Esercizi sugli array… contiene un valore A[i] > M.
![Page 5: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)](https://reader034.vdocuments.pub/reader034/viewer/2022051314/5542eb50497959361e8c0220/html5/thumbnails/5.jpg)
5
Esercizi sugli array
A
Esecuzione dell’algoritmo per l’array A di 10interi dell’esempio precedente:
- all’inizio ho somma=0- step 1 i=0 (i è l’indice che scandisce gli elementi di A)
somma = somma+A[0] = 0 + 80 = 80
8011020 40 46 60 4 92 15121
![Page 6: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)](https://reader034.vdocuments.pub/reader034/viewer/2022051314/5542eb50497959361e8c0220/html5/thumbnails/6.jpg)
6
Esercizi sugli array
A
- step 2 i=1
- step 3 i=2
8011020 40 46 60 4 92 15121
somma = somma+A[1] = 80 + 110 = 190
A 8011020 40 46 60 4 92 15121
somma = somma+A[2] = 190 + 20 = 210
![Page 7: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)](https://reader034.vdocuments.pub/reader034/viewer/2022051314/5542eb50497959361e8c0220/html5/thumbnails/7.jpg)
7
Esercizi sugli array
A
- step 4 i=3
- step 5 i=4
8011020 40 46 60 4 92 15121
somma = somma+A[3] = 210 + 40 = 250
A 8011020 40 46 60 4 92 15121
somma = somma+A[4] = 250 + 46 = 296
![Page 8: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)](https://reader034.vdocuments.pub/reader034/viewer/2022051314/5542eb50497959361e8c0220/html5/thumbnails/8.jpg)
8
Esercizi sugli array
A
- step 6 i=5
- step 7 i=6
8011020 40 46 60 4 92 15121
somma = somma+A[5] = 296 + 60 = 356
A 8011020 40 46 60 4 92 15121
somma = somma+A[6] = 356 + 4 = 360
![Page 9: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)](https://reader034.vdocuments.pub/reader034/viewer/2022051314/5542eb50497959361e8c0220/html5/thumbnails/9.jpg)
9
Esercizi sugli array
A
- step 8 i=7
- step 9 i=8
8011020 40 46 60 4 92 15121
somma = somma+A[7] = 360 + 92 = 452
A 8011020 40 46 60 4 92 15121
somma = somma+A[8] = 452 + 15 = 467
![Page 10: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)](https://reader034.vdocuments.pub/reader034/viewer/2022051314/5542eb50497959361e8c0220/html5/thumbnails/10.jpg)
10
Esercizi sugli array
A
- step 10 i=9
8011020 40 46 60 4 92 15121
somma = somma+A[9] = 467 + 121 = 588
- step 11calcolo la media:
M=somma / 10 = 588 /10 = 58 (arrotondoperché uso variabili intere)
![Page 11: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)](https://reader034.vdocuments.pub/reader034/viewer/2022051314/5542eb50497959361e8c0220/html5/thumbnails/11.jpg)
11
Esercizi sugli array
A
- step 12 conta = 0- step 13 i=0 (nuova inizializzazione di i)
- step 14 i=1
8011020 40 46 60 4 92 15121
A[0] è > 58? Sì! Quindi conta = conta + 1 = 0 + 1 = 1
A 8011020 40 46 60 4 92 15121
A[1] è > 58? Sì! Quindi conta = conta + 1 = 1 + 1 = 2
![Page 12: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)](https://reader034.vdocuments.pub/reader034/viewer/2022051314/5542eb50497959361e8c0220/html5/thumbnails/12.jpg)
12
Esercizi sugli array
A
- step 15 i=2
- step 16 i=3
8011020 40 46 60 4 92 15121
A[2] è > 58? NO! Quindi conta rimane a 2
A 8011020 40 46 60 4 92 15121
A[3] è > 58? NO! Quindi conta rimane a 2
![Page 13: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)](https://reader034.vdocuments.pub/reader034/viewer/2022051314/5542eb50497959361e8c0220/html5/thumbnails/13.jpg)
13
Esercizi sugli array
A
- step 17 i=4
- step 18 i=5
8011020 40 46 60 4 92 15121
A[4] è > 58? NO! Quindi conta rimane a 2
A 8011020 40 46 60 4 92 15121
A[5] è > 58? SI’! Quindi conta = conta + 1 = 2 +1 = 3
![Page 14: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)](https://reader034.vdocuments.pub/reader034/viewer/2022051314/5542eb50497959361e8c0220/html5/thumbnails/14.jpg)
14
Esercizi sugli array
A
- step 19 i=6
- step 20 i=7
8011020 40 46 60 4 92 15121
A[6] è > 58? NO! Quindi conta rimane a 3
A 8011020 40 46 60 4 92 15121
A[7] è > 58? SI’! Quindi conta = conta + 1 = 3 +1 = 4
![Page 15: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)](https://reader034.vdocuments.pub/reader034/viewer/2022051314/5542eb50497959361e8c0220/html5/thumbnails/15.jpg)
15
Esercizi sugli array
A
- step 21 i=8
- step 22 i=9
8011020 40 46 60 4 92 15121
A[8] è > 58? NO! Quindi conta rimane a 4
A 8011020 40 46 60 4 92 15121
A[9] è > 58? SI’! Quindi conta = conta + 1 = 4 +1 = 5
![Page 16: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)](https://reader034.vdocuments.pub/reader034/viewer/2022051314/5542eb50497959361e8c0220/html5/thumbnails/16.jpg)
16
Esercizi sugli arraypublic class CalcoloMedia {
public static void main(String arg[]) {int[] A={4,15,20,21,40,6,7,9,10,1};int i;int length;int somma=0, media=0, conta=0;
length=10;i=0;while(i <= lentgth-1){
somma=somma+A[i];i=i+1;
}media=somma/length;i=0;while(i <= lentgth-1){
if(A[I] > media){conta=conta+1;
}i=i+1;
}
System.out.println(conta+” elementi sono > di “+media);}
}
![Page 17: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)](https://reader034.vdocuments.pub/reader034/viewer/2022051314/5542eb50497959361e8c0220/html5/thumbnails/17.jpg)
17
Esercizi sugli arrayEsercizio 2
dato un array A di N interi verificare se A
contiene almeno 3 elementi consecutivi
Esempio (N=10)
Risultato il vettore contiene almeno
3 elementi consecutivi
8011040 40 40 60 4 92 15121A
![Page 18: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)](https://reader034.vdocuments.pub/reader034/viewer/2022051314/5542eb50497959361e8c0220/html5/thumbnails/18.jpg)
18
Esercizi sugli arrayAlgoritmo: dichiaro la variabile booleana
threeElements che all’inizio ha valore false (cioè
parto dall’ipotesi che l’array non abbia almeno 3
elementi consecutivi). Poi scandisco l’array dal
primo elemento (in posizione 0) a quello in
posizione N-3 (ovvero l’ultimo elemento dell’array
che è seguito da almeno 2 elementi), dove N è
la lunghezza dell’array.
![Page 19: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)](https://reader034.vdocuments.pub/reader034/viewer/2022051314/5542eb50497959361e8c0220/html5/thumbnails/19.jpg)
19
Esercizi sugli array…Se trovo che, per la posizione generica i,
A[i] è uguale a A[i+1] e A[i+1] è uguale a
A[i+2], allora posso dire che nell’array ci sono
almeno 3 elementi consecutivi. In tale caso
assegno true alla variabile threeElements e
interrompo la scansione dell’array.
![Page 20: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)](https://reader034.vdocuments.pub/reader034/viewer/2022051314/5542eb50497959361e8c0220/html5/thumbnails/20.jpg)
20
Esercizi sugli array
A
Esecuzione dell’algoritmo per l’array A di 10interi dell’esempio precedente:
- all’inizio threeElements è false- step 1 i=0 (i è l’indice che scandisce gli elementi di A)
A[0] è uguale a A[1] e A[1] è uguale a A[2]?NO! Allora proseguo
8011040 40 40 60 4 92 15121
![Page 21: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)](https://reader034.vdocuments.pub/reader034/viewer/2022051314/5542eb50497959361e8c0220/html5/thumbnails/21.jpg)
21
Esercizi sugli array
A
- step 2 i=1
- step 3 i=2
A[1] è uguale a A[2] e A[2] è uguale a A[3]?NO! Allora proseguo
A
A[2] è uguale a A[3] e A[3] è uguale a A[4]?SI’! Allora assegno true a threeElementse interrompo la scansione
8011040 40 40 60 4 92 15121
8011040 40 40 60 4 92 15121
![Page 22: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)](https://reader034.vdocuments.pub/reader034/viewer/2022051314/5542eb50497959361e8c0220/html5/thumbnails/22.jpg)
22
Esercizi sugli arraypublic class ThreeElements {
public static void main(String arg[]) {int[] A={4,15,20,21,40,6,7,9,10,1};int i;int length;boolean trhreeElements=false;
length=10;i=0;while(i <= lentgth-1 && threeElements == false){
if(A[i]==A[i+1] && A[i+1]==A[i+2]){threeElements=true;
}i=i+1;
}
System.out.print(“Ci sono 3 elementi consecutivi: “);System.out.println(trhreeElements);
}}
![Page 23: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)](https://reader034.vdocuments.pub/reader034/viewer/2022051314/5542eb50497959361e8c0220/html5/thumbnails/23.jpg)
23
Esercizi sugli arrayEsercizio 3
dato un array A di N interi e un intero k
verificare se A contiene k
Esempio (N=10, k=40)
Risultato il vettore contiene 40
8011039 12 40 60 4 92 15121A
![Page 24: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)](https://reader034.vdocuments.pub/reader034/viewer/2022051314/5542eb50497959361e8c0220/html5/thumbnails/24.jpg)
24
Esercizi sugli arrayAlgoritmo: dichiaro la variabile booleana
found che all’inizio ha valore false (cioè
parto dall’ipotesi che l’array non contenga l’intero
k). Poi scandisco l’array dal primo elemento
(in posizione 0) all’ultimo (in posizione N-1). Se
trovo una posizione i tale che A[i] è
uguale a k, allora assegno alla variabile found
il valore true e interrompo la scansione
![Page 25: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)](https://reader034.vdocuments.pub/reader034/viewer/2022051314/5542eb50497959361e8c0220/html5/thumbnails/25.jpg)
25
Esercizi sugli array
A
Esecuzione dell’algoritmo per l’array A di 10interi dell’esempio precedente:
- all’inizio found è false- step 1 i=0 (i è l’indice che scandisce gli elementi di A)
A[0] è uguale a 40? NO! Allora proseguo
8011039 12 40 60 4 92 15121
![Page 26: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)](https://reader034.vdocuments.pub/reader034/viewer/2022051314/5542eb50497959361e8c0220/html5/thumbnails/26.jpg)
26
Esercizi sugli array
A
- step 2 i=1
- step 3 i=2
A[1] è uguale a 40? NO! Allora proseguo
A
A[2] è uguale a 40? NO! Allora proseguo
8011039 12 40 60 4 92 15121
8011039 12 40 60 4 92 15121
![Page 27: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)](https://reader034.vdocuments.pub/reader034/viewer/2022051314/5542eb50497959361e8c0220/html5/thumbnails/27.jpg)
27
Esercizi sugli array
A
- step 4 i=3
- step 5 i=4
A[3] è uguale a 40? NO! Allora proseguo
A
A[2] è uguale a 40? SI’! Allora assegno true afound e interrompo la scansione
8011039 12 40 60 4 92 15121
8011039 12 40 60 4 92 15121
![Page 28: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)](https://reader034.vdocuments.pub/reader034/viewer/2022051314/5542eb50497959361e8c0220/html5/thumbnails/28.jpg)
28
Esercizi sugli arraypublic class SearchK {
public static void main(String arg[]) {int[] A={4,15,20,21,40,6,7,9,10,1};int i, k;int length;boolean found=false;
length=10;i=0;k=40;while(i <= lentgth-1 && found == false){
if(A[i]==k){found=true;
}i=i+1;
}
System.out.print(“Trovato: “+found);}
}
![Page 29: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)](https://reader034.vdocuments.pub/reader034/viewer/2022051314/5542eb50497959361e8c0220/html5/thumbnails/29.jpg)
29
Esercizi sugli arrayNOTA BENE: il programma precedente vale
anche nel caso in cui A sia un array di caratteri
e al posto dell’intero k ci sia un carattere c.
La modifica del codice è contenuta nella
slide successiva.
![Page 30: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)](https://reader034.vdocuments.pub/reader034/viewer/2022051314/5542eb50497959361e8c0220/html5/thumbnails/30.jpg)
30
Esercizi sugli arraypublic class SearchChar {
public static void main(String arg[]) {char[] A={‘a’,’b’,’c’,’d’,’e’,’f’,’g’,’h’,’i’,’l’};int i;char c;int length;boolean found=false;
length=10;i=0;c=‘b’;while(i <= lentgth-1 && found == false){
if(A[i]==c){found=true;
}i=i+1;
}
System.out.print(“Trovato: “+found);}
}
![Page 31: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)](https://reader034.vdocuments.pub/reader034/viewer/2022051314/5542eb50497959361e8c0220/html5/thumbnails/31.jpg)
31
Esercizi sugli arrayEsercizio 4
dato un array A di N interi e un intero k
contare le occorrenze di k in A
Esempio (N=10, k=40)
Risultato 40 compare 3 volte
80 40 39 12 40 60 4 92 40121A
![Page 32: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)](https://reader034.vdocuments.pub/reader034/viewer/2022051314/5542eb50497959361e8c0220/html5/thumbnails/32.jpg)
32
Esercizi sugli arrayAlgoritmo: dichiaro la variabile intera
count che alla fine conterrà il numero di
occorrenze di k in A. Poi scandisco l’array
dal primo elemento (in posizione 0) all’ultimo
(in posizione N-1) e incremento di 1 la variabile
count ogni volta che incontro una posizione i
in cui A[i] è uguale a k.
![Page 33: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)](https://reader034.vdocuments.pub/reader034/viewer/2022051314/5542eb50497959361e8c0220/html5/thumbnails/33.jpg)
33
Esercizi sugli array
A
Esecuzione dell’algoritmo per l’array A di 10interi dell’esempio precedente:
- all’inizio count è 0- step 1 i=0 (i è l’indice che scandisce gli elementi di A)
A[0] è uguale a 40? NO! Allora proseguo
80 40 39 12 40 60 4 92 40121
![Page 34: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)](https://reader034.vdocuments.pub/reader034/viewer/2022051314/5542eb50497959361e8c0220/html5/thumbnails/34.jpg)
34
Esercizi sugli array
A
- step 2 i=1
- step 3 i=2
A[1] è uguale a 40? SI’! Allora count = count +1= 0 + 1 = 1
A
A[2] è uguale a 40? NO! Allora count rimane a 1
80 40 39 12 40 60 4 92 40121
80 40 39 12 40 60 4 92 40121
![Page 35: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)](https://reader034.vdocuments.pub/reader034/viewer/2022051314/5542eb50497959361e8c0220/html5/thumbnails/35.jpg)
35
Esercizi sugli array
A
- step 4 i=3
- step 5 i=4
A[3] è uguale a 40? NO! Allora count rimane a 1
A
A[4] è uguale a 40? SI’! Allora count = count + 1= 1 + 1 = 2
80 40 39 12 40 60 4 92 40121
80 40 39 12 40 60 4 92 40121
![Page 36: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)](https://reader034.vdocuments.pub/reader034/viewer/2022051314/5542eb50497959361e8c0220/html5/thumbnails/36.jpg)
36
Esercizi sugli array
A
- step 6 i=5
- step 7 i=6
A[5] è uguale a 40? NO! Allora count rimane a 2
A
A[6] è uguale a 40? NO! Allora count rimane a 2
80 40 39 12 40 60 4 92 40121
80 40 39 12 40 60 4 92 40121
![Page 37: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)](https://reader034.vdocuments.pub/reader034/viewer/2022051314/5542eb50497959361e8c0220/html5/thumbnails/37.jpg)
37
Esercizi sugli array
A
- step 8 i=7
- step 9 i=8
A[7] è uguale a 40? NO! Allora count rimane a 2
A
A[8] è uguale a 40? SI’! Allora count = count + 1= 2 + 1 = 3
80 40 39 12 40 60 4 92 40121
80 40 39 12 40 60 4 92 40121
![Page 38: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)](https://reader034.vdocuments.pub/reader034/viewer/2022051314/5542eb50497959361e8c0220/html5/thumbnails/38.jpg)
38
Esercizi sugli array
A
- step 10 i=9
A[9] è uguale a 40? NO! Allora count rimane a 3
80 40 39 12 40 60 4 92 40121
![Page 39: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)](https://reader034.vdocuments.pub/reader034/viewer/2022051314/5542eb50497959361e8c0220/html5/thumbnails/39.jpg)
39
Esercizi sugli arraypublic class CountK {
public static void main(String arg[]) {int[] A={4,15,20,21,40,6,7,9,10,1};int i, k;int length, count;
length=10;i=0;k=40;count=0;while(i <= lentgth-1){
if(A[i]==k){count=count+1;
}i=i+1;
}
System.out.print(“Occorrenze=“+count);}
}
![Page 40: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)](https://reader034.vdocuments.pub/reader034/viewer/2022051314/5542eb50497959361e8c0220/html5/thumbnails/40.jpg)
40
Esercizi sugli arrayNOTA BENE: il programma precedente vale
anche nel caso in cui A sia un array di caratteri
e al posto dell’intero k ci sia un carattere c.
La modifica del codice è contenuta nella
slide successiva.
![Page 41: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)](https://reader034.vdocuments.pub/reader034/viewer/2022051314/5542eb50497959361e8c0220/html5/thumbnails/41.jpg)
41
Esercizi sugli arraypublic class CountChar {
public static void main(String arg[]) {char[] A={‘a’,’b’,’c’,’a’,’e’,’f’,’a’,’h’,’i’,’l’};int i;char c;int length, count;
length=10;i=0;c=‘a’;count=0;while(i <= lentgth-1){
if(A[i]==c){count=count+1;
}i=i+1;
}
System.out.print(“Occorrenze=“+count);}
}
![Page 42: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)](https://reader034.vdocuments.pub/reader034/viewer/2022051314/5542eb50497959361e8c0220/html5/thumbnails/42.jpg)
42
Esercizi sugli arrayEsercizio 5
dato un array A di N interi e un intero k
verificare che tutti gli elementi sono < k
Esempio (N=10, k=40)
Risultato non tutti gli elementi
sono < 40
30 25 39 12 40 60 4 92 40121A
![Page 43: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)](https://reader034.vdocuments.pub/reader034/viewer/2022051314/5542eb50497959361e8c0220/html5/thumbnails/43.jpg)
43
Esercizi sugli arrayAlgoritmo: dichiaro la variabile booleana ok che
inizializzo a true in quanto faccio l’ipotesi che
tutti gli elementi di A siano < k. Poi scandisco
l’array dal primo elemento (in posizione 0)
all’ultimo (in posizione N-1) e se trovo
una posizione i in cui A[i] >= k, allora la mia ipotesi
di partenza è falsa, quindi assegno alla variabile
ok il valore false e interrompo la scansione.
![Page 44: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)](https://reader034.vdocuments.pub/reader034/viewer/2022051314/5542eb50497959361e8c0220/html5/thumbnails/44.jpg)
44
Esercizi sugli array
A
Esecuzione dell’algoritmo per l’array A di 10interi dell’esempio precedente:
- all’inizio ok è true- step 1 i=0 (i è l’indice che scandisce gli elementi di A)
A[0] è < 40? SI’! Allora proseguo
30 25 39 12 40 60 4 92 40121
![Page 45: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)](https://reader034.vdocuments.pub/reader034/viewer/2022051314/5542eb50497959361e8c0220/html5/thumbnails/45.jpg)
45
Esercizi sugli array
A
- step 2 i=1
- step 3 i=2
A[1] è < 40? SI’! Allora proseguo
A
A[3] è < 40? SI’! Allora proseguo
30 25 39 12 40 60 4 92 40121
30 25 39 12 40 60 4 92 40121
![Page 46: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)](https://reader034.vdocuments.pub/reader034/viewer/2022051314/5542eb50497959361e8c0220/html5/thumbnails/46.jpg)
46
Esercizi sugli array
A
- step 4 i=3
- step 5 i=4
A[3] è < 40? SI’! Allora proseguo
A
A[4] è < 40? NO! Allora false a ok e interrompo
30 25 39 12 40 60 4 92 40121
30 25 39 12 40 60 4 92 40121
![Page 47: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)](https://reader034.vdocuments.pub/reader034/viewer/2022051314/5542eb50497959361e8c0220/html5/thumbnails/47.jpg)
47
Esercizi sugli arraypublic class CheckLessThanK {
public static void main(String arg[]) {int[] A={4,15,20,21,40,6,7,9,10,1};int i, k;int length;boolean ok=true;
length=10;i=0;k=40;while(i <= lentgth-1 && ok == true){
if(A[i]>=k){ok=false;
}i=i+1;
}
System.out.print(“Sono tutti < k: “+ok);}
}
![Page 48: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)](https://reader034.vdocuments.pub/reader034/viewer/2022051314/5542eb50497959361e8c0220/html5/thumbnails/48.jpg)
48
Esercizi sugli arrayNOTA BENE: il programma precedente può
essere esteso agli altri tipi di confronto:
- Verifica che tutti gli elementi sono uguali a k
il test dell’if diventa: A[i] != k
- Verifica che tutti gli elementi sono diversi da k
il test dell’if diventa: A[i] == k
- Verifica che tutti gli elementi sono > k
il test dell’if diventa: A[i] <= k
![Page 49: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)](https://reader034.vdocuments.pub/reader034/viewer/2022051314/5542eb50497959361e8c0220/html5/thumbnails/49.jpg)
49
Esercizi sugli array...
- Verifica che tutti gli elementi sono <= k
il test dell’if diventa: A[i] > k
- Verifica che tutti gli elementi sono >= k
il test dell’if diventa: A[i] < k
![Page 50: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)](https://reader034.vdocuments.pub/reader034/viewer/2022051314/5542eb50497959361e8c0220/html5/thumbnails/50.jpg)
50
Esercizi sugli arrayEsercizio 6
dato un array A di N interi scambiare il
l’elemento in posizione I (compresa tra 0
e N-1) con l’elemento in posizione j
(compresa tra 0 e N-1) diversa da i
![Page 51: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)](https://reader034.vdocuments.pub/reader034/viewer/2022051314/5542eb50497959361e8c0220/html5/thumbnails/51.jpg)
51
Esercizi sugli arrayEsempio (N=10, i=0, j=9)
30 25 39 12 40 60 4 92 40121A
12125 39 12 40 60 4 92 40 30
![Page 52: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)](https://reader034.vdocuments.pub/reader034/viewer/2022051314/5542eb50497959361e8c0220/html5/thumbnails/52.jpg)
52
Esercizi sugli arrayAlgoritmo: dichiaro la variabile intera help che
mi serve per conservare il valore di A[i] prima
di sovrascriverlo con A[j]. Poi assegno a A[i]
il valore di A[j] e a A[j] il valore di help a cui
era stato assegnato il valore originale di A[i].
![Page 53: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)](https://reader034.vdocuments.pub/reader034/viewer/2022051314/5542eb50497959361e8c0220/html5/thumbnails/53.jpg)
53
Esercizi sugli array
A
Esecuzione dell’algoritmo per l’array A di 10interi dell’esempio precedente:
- step 1 help = A[0]- step 2 A[0] = A[9]
12125 39 12 40 60 4 92 40121
- step 3 A[9] = help
A 12125 39 12 40 60 4 92 40 30
![Page 54: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)](https://reader034.vdocuments.pub/reader034/viewer/2022051314/5542eb50497959361e8c0220/html5/thumbnails/54.jpg)
54
Esercizi sugli arraypublic class Scambia {
public static void main(String arg[]) {int[] A={4,15,20,21,40,6,7,9,10,1};int i, j;int length, help;
length=10;i=0;j=9;help=A[i];A[i]=A[j];A[j]=help;
}}
![Page 55: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)](https://reader034.vdocuments.pub/reader034/viewer/2022051314/5542eb50497959361e8c0220/html5/thumbnails/55.jpg)
55
Esercizi sugli arrayEsercizio 6
dato un array A di N invertire gli elementi
di A
Esempio (N=10)
30 25 39 12 40 60 4 92 40121A
12140 92 4 60 40 12 39 25 30A
![Page 56: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)](https://reader034.vdocuments.pub/reader034/viewer/2022051314/5542eb50497959361e8c0220/html5/thumbnails/56.jpg)
56
Esercizi sugli arrayAlgoritmo: eseguo uno scambio dell’elemento in
posizione i e del suo simmetrico in posizione
N-i-1. Questo scambio lo faccio per tutte le
posizioni i che vanno da 0 a N/2-1
![Page 57: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)](https://reader034.vdocuments.pub/reader034/viewer/2022051314/5542eb50497959361e8c0220/html5/thumbnails/57.jpg)
57
Esercizi sugli array
A
Esecuzione dell’algoritmo per l’array A di 10interi dell’esempio precedente:
- step 1 i=0 (i è l’indice che scandisce gli elementi di A)
scambio A[0] con A[9]
30 25 39 12 40 60 4 92 40121
12125 39 12 40 60 4 92 40 30
![Page 58: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)](https://reader034.vdocuments.pub/reader034/viewer/2022051314/5542eb50497959361e8c0220/html5/thumbnails/58.jpg)
58
Esercizi sugli array
A
- step 2 i=1
scambio A[1] con A[8]
12125 39 12 40 60 4 92 40 30
12140 39 12 40 60 4 92 25 30
![Page 59: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)](https://reader034.vdocuments.pub/reader034/viewer/2022051314/5542eb50497959361e8c0220/html5/thumbnails/59.jpg)
59
Esercizi sugli array
A
- step 3 i=2
scambio A[2] con A[7]
12140 39 12 40 60 4 92 25 30
12140 92 12 40 60 4 39 25 30
![Page 60: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)](https://reader034.vdocuments.pub/reader034/viewer/2022051314/5542eb50497959361e8c0220/html5/thumbnails/60.jpg)
60
Esercizi sugli array
A
- step 4 i=3
scambio A[3] con A[6]
12140 92 12 40 60 4 39 25 30
12140 92 4 40 60 12 39 25 30
![Page 61: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)](https://reader034.vdocuments.pub/reader034/viewer/2022051314/5542eb50497959361e8c0220/html5/thumbnails/61.jpg)
61
Esercizi sugli array
A
- step 5 i=4 (N/2-1=10/2-1=4)
scambio A[4] con A[5]
12140 92 4 40 60 12 39 25 30
12140 92 4 60 40 12 39 25 30
Risultato finale
![Page 62: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)](https://reader034.vdocuments.pub/reader034/viewer/2022051314/5542eb50497959361e8c0220/html5/thumbnails/62.jpg)
62
Esercizi sugli arraypublic class InvertArray {
public static void main(String arg[]) {int[] A={4,15,20,21,40,6,7,9,10,1};int i;int length;int help;
length=10;i=0;while(i <= lentgth/2-1){
help=A[i];A[i]=A[j];A[j]=help;i=i+1;
}}
}
![Page 63: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)](https://reader034.vdocuments.pub/reader034/viewer/2022051314/5542eb50497959361e8c0220/html5/thumbnails/63.jpg)
63
Esercizi sugli arrayNOTA BENE: il programma precedente vale
anche nel caso in cui N sia dispari. Le posizioni
da scambiare sono sempre I e N-I-1 con
I che va da 0 a N/2-1, in quanto esiste un
elemento centrale in posizione N/2 che rimane
fisso nella stessa posizione.
![Page 64: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)](https://reader034.vdocuments.pub/reader034/viewer/2022051314/5542eb50497959361e8c0220/html5/thumbnails/64.jpg)
64
Esercizi sugli arrayEsercizio 7
dato un array A di N calcolare per ogni A[i]
la somma dei primi A[i] interi (da 1 a A[i])
Esempio (N=10)
30 25 39 12 40 60 4 92 40121A
per i=0, calcolo 1+2+3+…+30per i=1, calcolo 1+2+3+…+25...
![Page 65: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)](https://reader034.vdocuments.pub/reader034/viewer/2022051314/5542eb50497959361e8c0220/html5/thumbnails/65.jpg)
65
Esercizi sugli arrayAlgoritmo: eseguo una scansione di A per i che va
da 0 a N-1 e per ogni A[i] eseguo un ciclo più
interno che calcola la somma 1+2+3+…A[i].
![Page 66: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)](https://reader034.vdocuments.pub/reader034/viewer/2022051314/5542eb50497959361e8c0220/html5/thumbnails/66.jpg)
66
Esercizi sugli arraypublic class InvertArray {
public static void main(String arg[]) {int[] A={4,15,20,21,40,6,7,9,10,1};int i, j;int length;int somma;
length=10;i=0;while(i <= lentgth-1){
j=1;somma=0;while(j<=A[i]){
somma=somma+j;j=j+1
}System.out.println(“Somma=“+somma);i=i+1;
}}
}