1 Corso di Informatica (Programmazione) Esercitazione 1 (26 novembre 2008)

30
1 Corso di Informatica (Programmazione) Esercitazione 1 (26 novembre 2008)

Transcript of 1 Corso di Informatica (Programmazione) Esercitazione 1 (26 novembre 2008)

Page 1: 1 Corso di Informatica (Programmazione) Esercitazione 1 (26 novembre 2008)

1

Corso di Informatica

(Programmazione)Esercitazione 1 (26 novembre 2008)

Page 2: 1 Corso di Informatica (Programmazione) Esercitazione 1 (26 novembre 2008)

2

Esercizi sugli arrayEsercizio 1

dato un array A di N interi calcolare la

somma degli elementi che sono multipli di 3

Esempio (N=10)

4 15 20 21 40 6 7 9 10 1

Risultato 15 + 21 + 6 + 9 = 51

A

Page 3: 1 Corso di Informatica (Programmazione) Esercitazione 1 (26 novembre 2008)

3

Esercizi sugli arrayAlgoritmo: dichiaro una variabile s che dovrà

contenere il risultato finale e che inizialmente ha

valore 0. Scorro gli elementi di A dal

primo in posizione 0 (cioè A[0]) all’ultimo in

posizione (N-1) (cioè A[N-1]). Aggiungo a s

l’elemento che sto considerando nella generica

posizione i (cioè A[i]) ogni volta che questo

è multiplo di 3.

Page 4: 1 Corso di Informatica (Programmazione) Esercitazione 1 (26 novembre 2008)

4

Esercizi sugli array

4 15 20 21 40 6 7 9 10 1A

Esecuzione dell’algoritmo per l’array A di 10interi dell’esempio precedente:

- all’inizio ho s=0- step 1 i=0 (i è l’indice che scandisce gli elementi di A)

A[0] è multiplo di 3? NO! Quindi s rimane a 0

Page 5: 1 Corso di Informatica (Programmazione) Esercitazione 1 (26 novembre 2008)

5

Esercizi sugli array

4 15 20 21 40 6 7 9 10 1A

- step 2 i=1

A[1] è multiplo di 3? SI’! Quindi sommo a s il valoredi A[1] che è 15 s=s+15=0+15=15

4 15 20 21 40 6 7 9 10 1A

- step 3 i=2

A[2] è multiplo di 3? NO! Quindi s rimane a 15

Page 6: 1 Corso di Informatica (Programmazione) Esercitazione 1 (26 novembre 2008)

6

Esercizi sugli array

4 15 20 21 40 6 7 9 10 1A

- step 4 i=3

A[3] è multiplo di 3? SI’! Quindi sommo a s il valoredi A[3] che è 21 s=s+21=15+21=36

4 15 20 21 40 6 7 9 10 1A

- step 5 i=4

A[4] è multiplo di 3? NO! Quindi s rimane a 36

Page 7: 1 Corso di Informatica (Programmazione) Esercitazione 1 (26 novembre 2008)

7

Esercizi sugli array

4 15 20 21 40 6 7 9 10 1A

- step 6 i=5

A[5] è multiplo di 3? SI’! Quindi sommo a s il valoredi A[5] che è 6 s=s+6=36+6=42

4 15 20 21 40 6 7 9 10 1A

- step 7 i=6

A[6] è multiplo di 3? NO! Quindi s rimane a 42

Page 8: 1 Corso di Informatica (Programmazione) Esercitazione 1 (26 novembre 2008)

8

Esercizi sugli array

4 15 20 21 40 6 7 9 10 1A

- step 8 i=7

A[7] è multiplo di 3? SI’! Quindi sommo a s il valoredi A[7] che è 9 s=s+9=42+9=51

4 15 20 21 40 6 7 9 10 1A

- step 9 i=8

A[8] è multiplo di 3? NO! Quindi s rimane a 51

Page 9: 1 Corso di Informatica (Programmazione) Esercitazione 1 (26 novembre 2008)

9

Esercizi sugli array

4 15 20 21 40 6 7 9 10 1A

- step 10 i=9

A[9] è multiplo di 3? NO! Quindi s rimane a 51

Risultato 51

Page 10: 1 Corso di Informatica (Programmazione) Esercitazione 1 (26 novembre 2008)

10

Esercizi sugli arraypublic class SommaMultipliTre {

public static void main(String arg[]) {int[] A={4,15,20,21,40,6,7,9,10,1};int i;int s, length;

length=10;i=0;s=0;while(i <= lentgth-1){

//Verifico se l’elemento i-esimo//è multiplo di 3if(A[i] % 3 == 0){

s=s+A[i];}i=i+1;

}

System.out.println(“Somma=“+s);}

}

Page 11: 1 Corso di Informatica (Programmazione) Esercitazione 1 (26 novembre 2008)

11

Esercizi sugli arrayEsercizio 2

dato un array A di N interi calcolare

contare il numero degli elementi pari

Esempio (N=10)

4 15 20 21 40 6 7 9 10 1

Risultato 5

A

Page 12: 1 Corso di Informatica (Programmazione) Esercitazione 1 (26 novembre 2008)

12

Esercizi sugli arrayAlgoritmo: dichiaro una variabile c che dovrà

contenere il risultato finale e che inizialmente ha

valore 0. Scorro gli elementi di A dal

primo in posizione 0 (cioè A[0]) all’ultimo in

Posizione (N-1) (cioè A[N-1]). Incremento c di 1

ogni volta che l’elemento, che sto considerando

nella generica posizione i (cioè A[i]), è pari.

Page 13: 1 Corso di Informatica (Programmazione) Esercitazione 1 (26 novembre 2008)

13

Esercizi sugli array

4 15 20 21 40 6 7 9 10 1A

Esecuzione dell’algoritmo per l’array A di 10interi dell’esempio precedente:

- all’inizio ho c=0- step 1 i=0 (i è l’indice che scandisce gli elementi di A)

A[0] è pari? SI’! Quindi incremento c di 1, e c va a 1

Page 14: 1 Corso di Informatica (Programmazione) Esercitazione 1 (26 novembre 2008)

14

Esercizi sugli array

15 21 7 94 20 40 6 10 1A

- step 2 i=1

A[1] è pari? NO! Quindi c rimane a 1

15 21 7 94 20 40 6 10 1A

- step 3 i=2

A[2] è pari? SI’! Quindi incremento c di 1, e c va a 2

Page 15: 1 Corso di Informatica (Programmazione) Esercitazione 1 (26 novembre 2008)

15

Esercizi sugli array

4 15 20 21 40 6 7 9 10 1A

- step 4 i=3

A[3] è pari? NO! Quindi c rimane a 2

15 21 7 94 20 40 6 10 1A

- step 5 i=4

A[4] è pari? SI’! Quindi incremento c di 1, e c va a 3

Page 16: 1 Corso di Informatica (Programmazione) Esercitazione 1 (26 novembre 2008)

16

Esercizi sugli array

15 21 7 94 20 40 6 10 1A

- step 6 i=5

A[5] è pari? SI’! Quindi incremento c di 1, e c va a 4

15 21 7 94 20 40 6 10 1A

- step 7 i=6

A[6] è pari? NO! Quindi c rimane a 4

Page 17: 1 Corso di Informatica (Programmazione) Esercitazione 1 (26 novembre 2008)

17

Esercizi sugli array

15 21 7 94 20 40 6 10 1A

- step 8 i=7

A[7] è pari? NO! Quindi c rimane a 4

15 21 7 94 20 40 6 10 1A

- step 9 i=8

A[8] è pari? SI’! Quindi incremento c di 1, e c va a 5

Page 18: 1 Corso di Informatica (Programmazione) Esercitazione 1 (26 novembre 2008)

18

Esercizi sugli array

4 15 20 21 40 6 7 9 10 1A

- step 10 i=9

A[9] è pari? NO! Quindi c rimane a 5

Risultato 5

Il programma per contare i dispari è analogo!

Page 19: 1 Corso di Informatica (Programmazione) Esercitazione 1 (26 novembre 2008)

19

Esercizi sugli arraypublic class ContaPari {

public static void main(String arg[]) {int[] A={4,15,20,21,40,6,7,9,10,1};int i;int c, length;

length=10;i=0;c=0;while(i <= lentgth-1){

//Verifico se l’elemento i-esimo//è pari (multiplo di 2)if(A[i] % 2 == 0){

c=c+1;}i=i+1;

}

System.out.println(“Numero pari=“+c);}

}

Page 20: 1 Corso di Informatica (Programmazione) Esercitazione 1 (26 novembre 2008)

20

Esercizi sugli arraypublic class ContaDispari {

public static void main(String arg[]) {int[] A={4,15,20,21,40,6,7,9,10,1};int i;int c, length;

length=10;i=0;c=0;while(i <= lentgth-1){

//Verifico se l’elemento i-esimo//è dispari (non è multiplo di 2)if(A[i] % 2 != 0){

c=c+1;}i=i+1;

}

System.out.println(“Numero dispari=“+c);}

}

Page 21: 1 Corso di Informatica (Programmazione) Esercitazione 1 (26 novembre 2008)

21

Esercizi sugli arrayEsercizio 3

dato un array A di N interi cercare

l’elemento minimo e la sua posizione in A

Esempio (N=10)

4 15 20 21 3 6 7 9 10 40

Risultato 3

A

Page 22: 1 Corso di Informatica (Programmazione) Esercitazione 1 (26 novembre 2008)

22

Esercizi sugli arrayAlgoritmo: dichiaro due variabili, min e posMin, che

dovranno contenere i risultati finali (rispettivamente

il valore minimo e la sua posizione) e che inizialmente

sono uguali rispettivamente al valore del primo elemento

di A (cioè A[0]) e al valore della sua posizione in A (cioè 0).

Scorro gli elementi di A dal secondo in posizione 1 (cioè A[1])

all’ultimo in posizione (N-1) (cioè A[N-1]). Ogni volta che

l’elemento che sto considerando nella generica posizione i

(cioè A[i]) è minore del valore di min, allora aggiorno min con

il valore di A[i] e posMin con il valore i.

Page 23: 1 Corso di Informatica (Programmazione) Esercitazione 1 (26 novembre 2008)

23

Esercizi sugli array

4 15 20 21 3 6 7 9 10 40A

Esecuzione dell’algoritmo per l’array A di 10interi dell’esempio precedente:

- all’inizio ho min=A[0]=4 e posMin=0- step 1 i=1 (i è l’indice che scandisce gli elementi di A)

A[1] è minore di min? NO! Quindi min rimane a 4e posMin a 0

Page 24: 1 Corso di Informatica (Programmazione) Esercitazione 1 (26 novembre 2008)

24

Esercizi sugli array

15 21 7 94 20 3 6 10 40A

- step 2 i=2

A[2] è minore di min? NO! Quindi min rimane a 4e posMin a 0

15 21 7 94 20 3 6 10 40A

- step 3 i=3

A[3] è minore di min? NO! Quindi min rimane a 4e posMin a 0

Page 25: 1 Corso di Informatica (Programmazione) Esercitazione 1 (26 novembre 2008)

25

Esercizi sugli array

15 21 7 94 20 3 6 10 40A

- step 4 i=4

A[4] è minore di min? SI’! Quindi min assume il valore 3e posMin il valore 4

15 21 7 94 20 3 6 10 40A

- step 5 i=5

A[5] è minore di min? NO! Quindi min rimane a 3e posMin a 4

Page 26: 1 Corso di Informatica (Programmazione) Esercitazione 1 (26 novembre 2008)

26

Esercizi sugli array

15 21 7 94 20 3 6 10 40A

- step 6 i=6

A[6] è minore di min? NO! Quindi min rimane a 3e posMin a 4

15 21 7 94 20 3 6 10 40A

- step 7 i=7

A[7] è minore di min? NO! Quindi min rimane a 3e posMin a 4

Page 27: 1 Corso di Informatica (Programmazione) Esercitazione 1 (26 novembre 2008)

27

Esercizi sugli array

15 21 7 94 20 3 6 10 40A

- step 8 i=8

A[8] è minore di min? NO! Quindi min rimane a 3e posMin a 4

15 21 7 94 20 3 6 10 40A

- step 9 i=9

A[9] è minore di min? NO! Quindi min rimane a 3e posMin a 4

Page 28: 1 Corso di Informatica (Programmazione) Esercitazione 1 (26 novembre 2008)

28

Esercizi sugli array

Risultato min è 3 e posMin è 4

Il programma per trovare il massimo è analogo!

Page 29: 1 Corso di Informatica (Programmazione) Esercitazione 1 (26 novembre 2008)

29

Esercizi sugli arraypublic class TrovaMinimo {

public static void main(String arg[]) {int[] A={4,15,20,21,3,6,7,9,10,4};int i;int min, posMin, length;

length=10;i=1;posMin=0;min=A[posMin];while(i <= lentgth-1){

//Verifico se l’elemento i-esimo//è minore del minimo correnteif(A[i] < min){

min=A[i];posMin=i;

}i=i+1;

}

System.out.println(“Minimo=“+min+” in posizione “+posMin);}

}

Page 30: 1 Corso di Informatica (Programmazione) Esercitazione 1 (26 novembre 2008)

30

Esercizi sugli arraypublic class TrovaMassimo {

public static void main(String arg[]) {int[] A={4,15,20,21,3,6,7,9,10,4};int i;int max, posMax, length;

length=10;i=1;posMax=0;max=A[posMax];while(i <= lentgth-1){

//Verifico se l’elemento i-esimo//è maggiore del massimo correnteif(A[i] > max){

max=A[i];posMax=i;

}i=i+1;

}

System.out.println(“Massimo=“+max+” in posizione “+posMax);}

}