laboratorio di informatica lezione 3...cristian consonni laboratorio di informatica , lezione 3 35 /...

82
Laboratorio di Informatica Lezione 3 Cristian Consonni 14 ottobre 2015 Cristian Consonni Laboratorio di Informatica , Lezione 3 1 / 76

Upload: others

Post on 25-Jul-2020

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Laboratorio di Informatica Lezione 3...Cristian Consonni Laboratorio di Informatica , Lezione 3 35 / 76 Outline for section 4 1 Procedure e funzioni 2 Iterazione e ricorsione 3 Variabili

Laboratorio di InformaticaLezione 3

Cristian Consonni14 ottobre 2015

Cristian Consonni Laboratorio di Informatica , Lezione 3 1 / 76

Page 2: Laboratorio di Informatica Lezione 3...Cristian Consonni Laboratorio di Informatica , Lezione 3 35 / 76 Outline for section 4 1 Procedure e funzioni 2 Iterazione e ricorsione 3 Variabili

Outline

1 Procedure e funzioni

2 Iterazione e ricorsione

3 Variabili globali e locali

4 Esericizi (parte I)

5 Array

6 Matrici

7 EsericiziEserciziCrivello di Eratostene

Cristian Consonni Laboratorio di Informatica , Lezione 3 2 / 76

Page 3: Laboratorio di Informatica Lezione 3...Cristian Consonni Laboratorio di Informatica , Lezione 3 35 / 76 Outline for section 4 1 Procedure e funzioni 2 Iterazione e ricorsione 3 Variabili

Chi sono

Cristian ConsonniDISI - Dipartimento di Ingegneria e Scienza dell’InformazionePagina web del laboratorio:http://disi.unitn.it/˜consonni/teaching

Email: [email protected]: Povo 2 - Open Space 9

Per domande: scrivetemi una mailRicevimento: su appuntamento via mail

Cristian Consonni Laboratorio di Informatica , Lezione 3 3 / 76

Page 4: Laboratorio di Informatica Lezione 3...Cristian Consonni Laboratorio di Informatica , Lezione 3 35 / 76 Outline for section 4 1 Procedure e funzioni 2 Iterazione e ricorsione 3 Variabili

Outline for section 1

1 Procedure e funzioni

2 Iterazione e ricorsione

3 Variabili globali e locali

4 Esericizi (parte I)

5 Array

6 Matrici

7 EsericiziEserciziCrivello di Eratostene

Cristian Consonni Laboratorio di Informatica , Lezione 3 4 / 76

Page 5: Laboratorio di Informatica Lezione 3...Cristian Consonni Laboratorio di Informatica , Lezione 3 35 / 76 Outline for section 4 1 Procedure e funzioni 2 Iterazione e ricorsione 3 Variabili

Metodo della bisezione

Negli esercizi della scorsa volta abbiamo calcolato gli zeri di unafunzione:

f (x) = x3 − x − 2 (1)

Cristian Consonni Laboratorio di Informatica , Lezione 3 5 / 76

Page 6: Laboratorio di Informatica Lezione 3...Cristian Consonni Laboratorio di Informatica , Lezione 3 35 / 76 Outline for section 4 1 Procedure e funzioni 2 Iterazione e ricorsione 3 Variabili

Funzioni (I)

Possiamo definire delle funzioni per rendere il codice:piu leggibilepiu riutilizzabilepiu compatto e semplice da modificare

Cristian Consonni Laboratorio di Informatica , Lezione 3 6 / 76

Page 7: Laboratorio di Informatica Lezione 3...Cristian Consonni Laboratorio di Informatica , Lezione 3 35 / 76 Outline for section 4 1 Procedure e funzioni 2 Iterazione e ricorsione 3 Variabili

Funzioni (II)

Dichiarazione e implementazione di una funzione:public static double f(double x) {

return(x * x * x - x - 2);}

analizziamo la sintassi parola per parola.

Cristian Consonni Laboratorio di Informatica , Lezione 3 7 / 76

Page 8: Laboratorio di Informatica Lezione 3...Cristian Consonni Laboratorio di Informatica , Lezione 3 35 / 76 Outline for section 4 1 Procedure e funzioni 2 Iterazione e ricorsione 3 Variabili

Funzioni (III)

Dichiarazione e implementazione di una funzione:public static double f(double x) {

return(x * x * x - x - 2);}

Le parole chiave public e static modificano la visibilita della funzione. Perora ignoratele e scrivete sempre cosı.

Cristian Consonni Laboratorio di Informatica , Lezione 3 8 / 76

Page 9: Laboratorio di Informatica Lezione 3...Cristian Consonni Laboratorio di Informatica , Lezione 3 35 / 76 Outline for section 4 1 Procedure e funzioni 2 Iterazione e ricorsione 3 Variabili

Funzioni (IV)

Dichiarazione e implementazione di una funzione:public static double f(double x) {

return(x * x * x - x - 2);}

Questo e il tipo del valore di ritorno (return type) della funzione, vuoldire, in questo caso, che la funzione restituisce un double.

Cristian Consonni Laboratorio di Informatica , Lezione 3 9 / 76

Page 10: Laboratorio di Informatica Lezione 3...Cristian Consonni Laboratorio di Informatica , Lezione 3 35 / 76 Outline for section 4 1 Procedure e funzioni 2 Iterazione e ricorsione 3 Variabili

Funzioni (V)

Dichiarazione e implementazione di una funzione:public static double f(double x) {

return(x * x * x - x - 2);}

Dopo il tipo di ritorno si specifica il nome della funzione, come per levariabili si tratta dell’identificativo da utilizzare per utilizzare unafunziona.

Cristian Consonni Laboratorio di Informatica , Lezione 3 10 / 76

Page 11: Laboratorio di Informatica Lezione 3...Cristian Consonni Laboratorio di Informatica , Lezione 3 35 / 76 Outline for section 4 1 Procedure e funzioni 2 Iterazione e ricorsione 3 Variabili

Funzioni (VI)

Dichiarazione e implementazione di una funzione:public static double f(double x) {

return(x * x * x - x - 2);}

Le funzioni sono caratterizzate dalle parentesi tonde f() che servono perpotere chiamare una funzione.

Cristian Consonni Laboratorio di Informatica , Lezione 3 11 / 76

Page 12: Laboratorio di Informatica Lezione 3...Cristian Consonni Laboratorio di Informatica , Lezione 3 35 / 76 Outline for section 4 1 Procedure e funzioni 2 Iterazione e ricorsione 3 Variabili

Funzioni (VII)

Dichiarazione e implementazione di una funzione:public static double f(double x) {

return(x * x * x - x - 2);}

All’interno delle parentesi tonde si indicano gli argomenti della funzionedetti parametri formali.

Cristian Consonni Laboratorio di Informatica , Lezione 3 12 / 76

Page 13: Laboratorio di Informatica Lezione 3...Cristian Consonni Laboratorio di Informatica , Lezione 3 35 / 76 Outline for section 4 1 Procedure e funzioni 2 Iterazione e ricorsione 3 Variabili

Funzioni (VIII)

Dichiarazione e implementazione di una funzione:public static double f(double x) {

return(x * x * x - x - 2);}

Ogni parametro formale e caratterizzato da un proprio tipo...

Cristian Consonni Laboratorio di Informatica , Lezione 3 13 / 76

Page 14: Laboratorio di Informatica Lezione 3...Cristian Consonni Laboratorio di Informatica , Lezione 3 35 / 76 Outline for section 4 1 Procedure e funzioni 2 Iterazione e ricorsione 3 Variabili

Funzioni (IX)

Dichiarazione e implementazione di una funzione:public static double f(double x) {

return(x * x * x - x - 2);}

e da un proprio nome.

Cristian Consonni Laboratorio di Informatica , Lezione 3 14 / 76

Page 15: Laboratorio di Informatica Lezione 3...Cristian Consonni Laboratorio di Informatica , Lezione 3 35 / 76 Outline for section 4 1 Procedure e funzioni 2 Iterazione e ricorsione 3 Variabili

Funzioni (X)

Dichiarazione e implementazione di una funzione:public static double f(double x1, int x2) {

return(x1 * x1 * x1 - x2 - 2);}

Una funzione puo avere piu parametri formali ciascuno caratterizzato dalproprio tipo e nome.

Cristian Consonni Laboratorio di Informatica , Lezione 3 15 / 76

Page 16: Laboratorio di Informatica Lezione 3...Cristian Consonni Laboratorio di Informatica , Lezione 3 35 / 76 Outline for section 4 1 Procedure e funzioni 2 Iterazione e ricorsione 3 Variabili

Funzioni (XI)

Dichiarazione e implementazione di una funzione:public static double f(double x) {

return(x * x * x - x - 2);}

Le parentesi graffe {} delimitano il corpo (o scope) della funzione.

Cristian Consonni Laboratorio di Informatica , Lezione 3 16 / 76

Page 17: Laboratorio di Informatica Lezione 3...Cristian Consonni Laboratorio di Informatica , Lezione 3 35 / 76 Outline for section 4 1 Procedure e funzioni 2 Iterazione e ricorsione 3 Variabili

Funzioni (XII)

Dichiarazione e implementazione di una funzione:public static double f(double x) {

return(x * x * x - x - 2);}

La parola riservata return indica quale valore sara restituito dallafunzione.

Cristian Consonni Laboratorio di Informatica , Lezione 3 17 / 76

Page 18: Laboratorio di Informatica Lezione 3...Cristian Consonni Laboratorio di Informatica , Lezione 3 35 / 76 Outline for section 4 1 Procedure e funzioni 2 Iterazione e ricorsione 3 Variabili

Funzioni: riassumendo

Dichiarazione e implementazione di una funzione:public static double f(double x) {

return(x * x * x - x - 2);}

public static → visibilitadouble → tipo del valore di ritornof → nome della funzionedouble x → parametri formalireturn → valore di ritorno

Cristian Consonni Laboratorio di Informatica , Lezione 3 18 / 76

Page 19: Laboratorio di Informatica Lezione 3...Cristian Consonni Laboratorio di Informatica , Lezione 3 35 / 76 Outline for section 4 1 Procedure e funzioni 2 Iterazione e ricorsione 3 Variabili

Procedure

Le procedure sono funzioni che non restituiscono alcun valore. Perindicare questo fatto si usa come valore di ritorno void:public static void f(double x) {println("Questa e una procedura");

}

(Nelle slide usero printf e println invece di System.out.printf o System.out.println).

public static → visibilitavoid → nessun valore ritornarto, e una proceduraf → nome della proceduradouble x → parametri formalireturn → valore di ritorno

Cristian Consonni Laboratorio di Informatica , Lezione 3 19 / 76

Page 20: Laboratorio di Informatica Lezione 3...Cristian Consonni Laboratorio di Informatica , Lezione 3 35 / 76 Outline for section 4 1 Procedure e funzioni 2 Iterazione e ricorsione 3 Variabili

Funzioni e procedure: esempio (I)

public class FunzioniProcedure {

// Questa e una funzione di due parametri x e y// che restituisce un interopublic static int somma(int x, int y) {

return x + y;}

...

Cristian Consonni Laboratorio di Informatica , Lezione 3 20 / 76

Page 21: Laboratorio di Informatica Lezione 3...Cristian Consonni Laboratorio di Informatica , Lezione 3 35 / 76 Outline for section 4 1 Procedure e funzioni 2 Iterazione e ricorsione 3 Variabili

Funzioni e procedure: esempio (II)

...

// Questa e una procedura di due parametri x e ypublic static void stampaSomma(int x, int y) {

printf("== Somma di due numeri ==%n");printf("Il primo parametro (x) vale %d.%n", x);printf("Il secondo parametro (y) vale %d.%n", y);printf("La somma di %d e %d e %d.%n", x, y, x + y);

// La riga seguente puo essere omessa,// io preferisco indicarla per chiarezzareturn;

}

...

Cristian Consonni Laboratorio di Informatica , Lezione 3 21 / 76

Page 22: Laboratorio di Informatica Lezione 3...Cristian Consonni Laboratorio di Informatica , Lezione 3 35 / 76 Outline for section 4 1 Procedure e funzioni 2 Iterazione e ricorsione 3 Variabili

Funzioni e procedure: esempio (III)

...

// Questo e il main, come al solitopublic static void main(String[] args) {

int a = 7;int b = 11;int risultato;

// Chiamata della funzionerisultato = somma(a, b);printf("risultato: %d.%n", risultato);

// Chiamata della procedurastampaSomma(a, b);

}}

Cristian Consonni Laboratorio di Informatica , Lezione 3 22 / 76

Page 23: Laboratorio di Informatica Lezione 3...Cristian Consonni Laboratorio di Informatica , Lezione 3 35 / 76 Outline for section 4 1 Procedure e funzioni 2 Iterazione e ricorsione 3 Variabili

Parametri attuali

Nella slide precedente abbiamo vistopublic static int somma(int x, int y) {...public static void stampaSomma(int x, int y) {

definizioni della funzione somma e della procedura stampaSomma.Entrambe le definizioni hanno come parametri formali le variabli x e y.

Le chiamate:risultato = somma(a, b);...stampaSomma(a, b);

hanno come parametri attuali le variabli a e b.

Cristian Consonni Laboratorio di Informatica , Lezione 3 23 / 76

Page 24: Laboratorio di Informatica Lezione 3...Cristian Consonni Laboratorio di Informatica , Lezione 3 35 / 76 Outline for section 4 1 Procedure e funzioni 2 Iterazione e ricorsione 3 Variabili

Parametri passati per valore (I)

public class StampaParola {

// di solito in Java si usa il CamelCasepublic static void stampaParolaInVerticale(String parola) {

// String.toUpperCase() rende una stringa tutta// maiuscolaparola = parola.toUpperCase();

// String.length restituisce la lunghezza della parolafor(int i = 0; i < parola.length(); i++) {

// parola.charAt(i) restituisce l’i-esimo carattere// della parola si parte a contare da zero.println(parola.charAt(i));}

}...

Cristian Consonni Laboratorio di Informatica , Lezione 3 24 / 76

Page 25: Laboratorio di Informatica Lezione 3...Cristian Consonni Laboratorio di Informatica , Lezione 3 35 / 76 Outline for section 4 1 Procedure e funzioni 2 Iterazione e ricorsione 3 Variabili

Parametri passati per valore (II)

...

public static void main(String[] args) {

String parola = "Ciao";

printf("La parola da stampare e: %s.%n", parola);stampaParolaInVerticale(parola);printf("La parola stampata e: %s.%n", parola);

}}

Cristian Consonni Laboratorio di Informatica , Lezione 3 25 / 76

Page 26: Laboratorio di Informatica Lezione 3...Cristian Consonni Laboratorio di Informatica , Lezione 3 35 / 76 Outline for section 4 1 Procedure e funzioni 2 Iterazione e ricorsione 3 Variabili

Funzioni: diagramma

Possiamo immaginare una funzione come una “scatola nera” che rende iningresso i parametri e restituisce un valore:

x1, x2, x3, . . . f f (x1, x2, x3, . . . )

return type ftype1 x1, type2 x2, type3 x3, . . .

AttenzioneIn un linguaggio imperativo e possibile che una funzioni modifichi ilvalore di alcune variabili in ingresso!

Cristian Consonni Laboratorio di Informatica , Lezione 3 26 / 76

Page 27: Laboratorio di Informatica Lezione 3...Cristian Consonni Laboratorio di Informatica , Lezione 3 35 / 76 Outline for section 4 1 Procedure e funzioni 2 Iterazione e ricorsione 3 Variabili

Funzioni: diagramma

Possiamo immaginare una funzione come una “scatola nera” che rende iningresso i parametri e restituisce un valore:

x1, x2, x3, . . . f f (x1, x2, x3, . . . )

return type ftype1 x1, type2 x2, type3 x3, . . .

AttenzioneIn un linguaggio imperativo e possibile che una funzioni modifichi ilvalore di alcune variabili in ingresso!

Cristian Consonni Laboratorio di Informatica , Lezione 3 26 / 76

Page 28: Laboratorio di Informatica Lezione 3...Cristian Consonni Laboratorio di Informatica , Lezione 3 35 / 76 Outline for section 4 1 Procedure e funzioni 2 Iterazione e ricorsione 3 Variabili

Outline for section 2

1 Procedure e funzioni

2 Iterazione e ricorsione

3 Variabili globali e locali

4 Esericizi (parte I)

5 Array

6 Matrici

7 EsericiziEserciziCrivello di Eratostene

Cristian Consonni Laboratorio di Informatica , Lezione 3 27 / 76

Page 29: Laboratorio di Informatica Lezione 3...Cristian Consonni Laboratorio di Informatica , Lezione 3 35 / 76 Outline for section 4 1 Procedure e funzioni 2 Iterazione e ricorsione 3 Variabili

Iterazione e ricorsione (I)

Una distizione importante per quanto riguarda le funzione e la seguente:funzioni iterativefunzioni ricorsive

Una funzione ricorsiva e una funzione che richiama se stessa.Altrimenti e iterativa.Le funzioni viste finora sono iterative.

Cristian Consonni Laboratorio di Informatica , Lezione 3 28 / 76

Page 30: Laboratorio di Informatica Lezione 3...Cristian Consonni Laboratorio di Informatica , Lezione 3 35 / 76 Outline for section 4 1 Procedure e funzioni 2 Iterazione e ricorsione 3 Variabili

Iterazione e ricorsione (II)

Le funzioni ricorsive si trovano molto comunemente anche in matematica.Esempi:

fattoriale: n! = n · n − 1 · · · · · 3 · 2 · 1 := n · (n − 1)!successione di Fibonacci: Fn = Fn−1 + Fn−2

ovviamente la definzione deve avere alcuni casi limite altrimenti siandrebbe avanti all’infinito.

Per i casi di cui sopra:fattoriale: n = 0⇒ 0! = 1 (il fattoriale non e definito per numeriinteri negativi)successione di Fibonacci: F0 = 0 e F1 = 1a

aTradizionalmente si definiva F0 = 1 e F1 = 1, ma ora si definisce di solitocome sopra. Si veda anche https://oeis.org/A000045

Cristian Consonni Laboratorio di Informatica , Lezione 3 29 / 76

Page 31: Laboratorio di Informatica Lezione 3...Cristian Consonni Laboratorio di Informatica , Lezione 3 35 / 76 Outline for section 4 1 Procedure e funzioni 2 Iterazione e ricorsione 3 Variabili

Definizione ricorsiva del fattoriale

public class FattorialeRicorsivo {

public static int fattoriale(int n) {if (n == 0) {return 1;

}return n * fattoriale(n - 1);

}

public static void main(String[] args) {int numero = 10;int risultato = 0;

risultato = fattoriale(numero);printf("Il fattoriale di %d e: %d", numero, risultato);

}}

Cristian Consonni Laboratorio di Informatica , Lezione 3 30 / 76

Page 32: Laboratorio di Informatica Lezione 3...Cristian Consonni Laboratorio di Informatica , Lezione 3 35 / 76 Outline for section 4 1 Procedure e funzioni 2 Iterazione e ricorsione 3 Variabili

Outline for section 3

1 Procedure e funzioni

2 Iterazione e ricorsione

3 Variabili globali e locali

4 Esericizi (parte I)

5 Array

6 Matrici

7 EsericiziEserciziCrivello di Eratostene

Cristian Consonni Laboratorio di Informatica , Lezione 3 31 / 76

Page 33: Laboratorio di Informatica Lezione 3...Cristian Consonni Laboratorio di Informatica , Lezione 3 35 / 76 Outline for section 4 1 Procedure e funzioni 2 Iterazione e ricorsione 3 Variabili

Variabili globali e locali

All’interno di una funzione possono essere definite nuove variabili. Questevariabili sono locali ovvero esistono e sono utilizzatibili solo all’internodella funzione stessa....public static int somma(int x, int y) {

int ris;ris = x + y;return ris;

}

public static void main(String[] args) {int a = 7;int b = 11;int risultato;

// Qui *non posso* usare ris!...

Cristian Consonni Laboratorio di Informatica , Lezione 3 32 / 76

Page 34: Laboratorio di Informatica Lezione 3...Cristian Consonni Laboratorio di Informatica , Lezione 3 35 / 76 Outline for section 4 1 Procedure e funzioni 2 Iterazione e ricorsione 3 Variabili

Variabili globali e locali

Le parentesi graffe {} definiscono uno scope (lett. ambito) ovvero unblocco di codice.

public static void main(String[] args) {int fatt = 1;int N = 10;

for (int n = 2; n < N; n++) {// La variabile n esiste solo all’interno di questo// blocco di codice...

}

Cristian Consonni Laboratorio di Informatica , Lezione 3 33 / 76

Page 35: Laboratorio di Informatica Lezione 3...Cristian Consonni Laboratorio di Informatica , Lezione 3 35 / 76 Outline for section 4 1 Procedure e funzioni 2 Iterazione e ricorsione 3 Variabili

Variabili globali e locali

Come avete gia visto potete usare variabili che avete definito in bloccopiu esterno dentro blocchi piu interni.

public static void main(String[] args) {int fatt = 1;int N = 10;

for (int n = 2; n < N; n++) {// fatt e definita nel blocco piu esterno, quindi// la posso usare anche quifatt = fatt * n;

}

Cristian Consonni Laboratorio di Informatica , Lezione 3 34 / 76

Page 36: Laboratorio di Informatica Lezione 3...Cristian Consonni Laboratorio di Informatica , Lezione 3 35 / 76 Outline for section 4 1 Procedure e funzioni 2 Iterazione e ricorsione 3 Variabili

Variabili globali e locali

Posso definere delle variabili che possano essere usate in ogni scope,queste si dicono variabili globali.

public class GlobaliLocali {

int numero = 0;

...

queste variabili possono essere modificate da ogni funzione e quindivanno usate con attenzione. E meglio limitare il piu possibile lo scope diuna variabile.Cercate di dare nomi significativi alle variabili globali altrimenti sembrache “piovano dal cielo”. Solitamente le variabili globali (specie serappresentano una costante) si scrivono con nomi tutti in MAIUSCOLO.

Cristian Consonni Laboratorio di Informatica , Lezione 3 35 / 76

Page 37: Laboratorio di Informatica Lezione 3...Cristian Consonni Laboratorio di Informatica , Lezione 3 35 / 76 Outline for section 4 1 Procedure e funzioni 2 Iterazione e ricorsione 3 Variabili

Outline for section 4

1 Procedure e funzioni

2 Iterazione e ricorsione

3 Variabili globali e locali

4 Esericizi (parte I)

5 Array

6 Matrici

7 EsericiziEserciziCrivello di Eratostene

Cristian Consonni Laboratorio di Informatica , Lezione 3 36 / 76

Page 38: Laboratorio di Informatica Lezione 3...Cristian Consonni Laboratorio di Informatica , Lezione 3 35 / 76 Outline for section 4 1 Procedure e funzioni 2 Iterazione e ricorsione 3 Variabili

Esercizi (parte I)

1 Scrivere una funzione testa se un numero intero e primo (restituendoun booleano);

2 Scrivere una procedura che stampi una parola (o una frase) alcontrario. Ad esempio:

“gatto” → ottag;“anna” → anna;

3 scrivere una funzione che calcoli la somma dei numeri interi da 1 a N;4 riscrivere la funzione precedente in modo ricorsivo;

Cristian Consonni Laboratorio di Informatica , Lezione 3 37 / 76

Page 39: Laboratorio di Informatica Lezione 3...Cristian Consonni Laboratorio di Informatica , Lezione 3 35 / 76 Outline for section 4 1 Procedure e funzioni 2 Iterazione e ricorsione 3 Variabili

Outline for section 5

1 Procedure e funzioni

2 Iterazione e ricorsione

3 Variabili globali e locali

4 Esericizi (parte I)

5 Array

6 Matrici

7 EsericiziEserciziCrivello di Eratostene

Cristian Consonni Laboratorio di Informatica , Lezione 3 38 / 76

Page 40: Laboratorio di Informatica Lezione 3...Cristian Consonni Laboratorio di Informatica , Lezione 3 35 / 76 Outline for section 4 1 Procedure e funzioni 2 Iterazione e ricorsione 3 Variabili

Array (I)

0 1 2 3 4 5 6 7 8 9”a” ”b” ”c” ”d” ”e” ”f” ”g” ”h” ”i” ”j”

Un array (o vettore) e una struttura dati composto da un numerofinito di elementi tutti dello stesso tipo.

Cristian Consonni Laboratorio di Informatica , Lezione 3 39 / 76

Page 41: Laboratorio di Informatica Lezione 3...Cristian Consonni Laboratorio di Informatica , Lezione 3 35 / 76 Outline for section 4 1 Procedure e funzioni 2 Iterazione e ricorsione 3 Variabili

Array (I)

Simili al concetto matematico di vettore:

v =

1047

Cristian Consonni Laboratorio di Informatica , Lezione 3 40 / 76

Page 42: Laboratorio di Informatica Lezione 3...Cristian Consonni Laboratorio di Informatica , Lezione 3 35 / 76 Outline for section 4 1 Procedure e funzioni 2 Iterazione e ricorsione 3 Variabili

Array (II)

1 Dichiarazione di un array:

tipo nome[] tipo[] nome

2 Allocazione:

nome = new tipo[dimensione]

3 Diachiarazione e inizializzazione con literals:

tipo[] nome ={val1, val2, ...}

Cristian Consonni Laboratorio di Informatica , Lezione 3 41 / 76

Page 43: Laboratorio di Informatica Lezione 3...Cristian Consonni Laboratorio di Informatica , Lezione 3 35 / 76 Outline for section 4 1 Procedure e funzioni 2 Iterazione e ricorsione 3 Variabili

Array (III)

public class Array {

public static void main(String[] args) {

int[] vettore;vettore = new int[10];

...

Cristian Consonni Laboratorio di Informatica , Lezione 3 42 / 76

Page 44: Laboratorio di Informatica Lezione 3...Cristian Consonni Laboratorio di Informatica , Lezione 3 35 / 76 Outline for section 4 1 Procedure e funzioni 2 Iterazione e ricorsione 3 Variabili

Array (IV)

indici0 1 2 3 4 5 6 7 8 9

”a” ”b” ”c” ”d” ”e” ”f” ”g” ”h” ”i” ”j”valori

Per accedere all’elemento con indice i dell’array si usa la sintassi:

nome[i]

Notate che:gli indici partono da zero e arrivono fino alla lunghezza dell’arraymeno unoil primo elemento e accessibile con nome[0]l’ultimo elemento e accessibile con nome[len - 1] (dove len e lalunghezza dell’array.

Cristian Consonni Laboratorio di Informatica , Lezione 3 43 / 76

Page 45: Laboratorio di Informatica Lezione 3...Cristian Consonni Laboratorio di Informatica , Lezione 3 35 / 76 Outline for section 4 1 Procedure e funzioni 2 Iterazione e ricorsione 3 Variabili

Array (V)

indici0 1 2 3 4 5 6 7 8 9

”a” ”b” ”c” ”d” ”e” ”f” ”g” ”h” ”i” ”j”valori

Per accedere all’elemento con indice i dell’array si usa la sintassi:

valore = nome[i]

Esempi:nome[0] → ”a”nome[4] → ”e”nome[10] → Errore: out of range

Cristian Consonni Laboratorio di Informatica , Lezione 3 44 / 76

Page 46: Laboratorio di Informatica Lezione 3...Cristian Consonni Laboratorio di Informatica , Lezione 3 35 / 76 Outline for section 4 1 Procedure e funzioni 2 Iterazione e ricorsione 3 Variabili

Array (VI)

indici0 1 2 3 4 5 6 7 8 9

”a” ”b” ”c” ”d” ”e” ”f” ”g” ”h” ”i” ”j”valori

Per impostare il valore dell’elemento con indice i dell’array si usa lasintassi:

nome[i] = valore

Esempi:nome[0] = "z"

nome[4] = "x"

nome[10] → Errore: out of range

Cristian Consonni Laboratorio di Informatica , Lezione 3 45 / 76

Page 47: Laboratorio di Informatica Lezione 3...Cristian Consonni Laboratorio di Informatica , Lezione 3 35 / 76 Outline for section 4 1 Procedure e funzioni 2 Iterazione e ricorsione 3 Variabili

Array (VI)

indici0 1 2 3 4 5 6 7 8 9

”a” ”b” ”c” ”d” ”e” ”f” ”g” ”h” ”i” ”j”valori

Per impostare il valore dell’elemento con indice i dell’array si usa lasintassi:

nome[i] = valore

Esempi:nome[0] = "z"

nome[4] = "x"

nome[10] → Errore: out of range

Cristian Consonni Laboratorio di Informatica , Lezione 3 45 / 76

Page 48: Laboratorio di Informatica Lezione 3...Cristian Consonni Laboratorio di Informatica , Lezione 3 35 / 76 Outline for section 4 1 Procedure e funzioni 2 Iterazione e ricorsione 3 Variabili

Array (VI)

indici0 1 2 3 4 5 6 7 8 9

”z” ”b” ”c” ”d” ”e” ”f” ”g” ”h” ”i” ”j”valori

Per impostare il valore dell’elemento con indice i dell’array si usa lasintassi:

nome[i] = valore

Esempi:nome[0] = "z"

nome[4] = "x"

nome[10] → Errore: out of range

Cristian Consonni Laboratorio di Informatica , Lezione 3 45 / 76

Page 49: Laboratorio di Informatica Lezione 3...Cristian Consonni Laboratorio di Informatica , Lezione 3 35 / 76 Outline for section 4 1 Procedure e funzioni 2 Iterazione e ricorsione 3 Variabili

Array (VI)

indici0 1 2 3 4 5 6 7 8 9

”z” ”b” ”c” ”d” ”e” ”f” ”g” ”h” ”i” ”j”valori

Per impostare il valore dell’elemento con indice i dell’array si usa lasintassi:

nome[i] = valore

Esempi:nome[0] = "z"

nome[4] = "x"

nome[10] → Errore: out of range

Cristian Consonni Laboratorio di Informatica , Lezione 3 45 / 76

Page 50: Laboratorio di Informatica Lezione 3...Cristian Consonni Laboratorio di Informatica , Lezione 3 35 / 76 Outline for section 4 1 Procedure e funzioni 2 Iterazione e ricorsione 3 Variabili

Array (VI)

indici0 1 2 3 4 5 6 7 8 9

”z” ”b” ”c” ”d” ”x” ”f” ”g” ”h” ”i” ”j”valori

Per impostare il valore dell’elemento con indice i dell’array si usa lasintassi:

nome[i] = valore

Esempi:nome[0] = "z"

nome[4] = "x"

nome[10] → Errore: out of range

Cristian Consonni Laboratorio di Informatica , Lezione 3 45 / 76

Page 51: Laboratorio di Informatica Lezione 3...Cristian Consonni Laboratorio di Informatica , Lezione 3 35 / 76 Outline for section 4 1 Procedure e funzioni 2 Iterazione e ricorsione 3 Variabili

Array (VI)

indici0 1 2 3 4 5 6 7 8 9

”z” ”b” ”c” ”d” ”x” ”f” ”g” ”h” ”i” ”j”valori

Per impostare il valore dell’elemento con indice i dell’array si usa lasintassi:

nome[i] = valore

Esempi:nome[0] = "z"

nome[4] = "x"

nome[10] → Errore: out of range

Cristian Consonni Laboratorio di Informatica , Lezione 3 45 / 76

Page 52: Laboratorio di Informatica Lezione 3...Cristian Consonni Laboratorio di Informatica , Lezione 3 35 / 76 Outline for section 4 1 Procedure e funzioni 2 Iterazione e ricorsione 3 Variabili

Array e funzioni

Gli array possono essere usati come argomenti delle funzionipublic class ArrayFun {

public static void somma(int[] v) {

int s = 0,for(int i = 0; i < v.length; i++) {

}...

AttenzioneA differenza delle altre variabili, se un array viene modificato in unafunzione resta modificato per tutto il programma

Cristian Consonni Laboratorio di Informatica , Lezione 3 46 / 76

Page 53: Laboratorio di Informatica Lezione 3...Cristian Consonni Laboratorio di Informatica , Lezione 3 35 / 76 Outline for section 4 1 Procedure e funzioni 2 Iterazione e ricorsione 3 Variabili

Outline for section 6

1 Procedure e funzioni

2 Iterazione e ricorsione

3 Variabili globali e locali

4 Esericizi (parte I)

5 Array

6 Matrici

7 EsericiziEserciziCrivello di Eratostene

Cristian Consonni Laboratorio di Informatica , Lezione 3 47 / 76

Page 54: Laboratorio di Informatica Lezione 3...Cristian Consonni Laboratorio di Informatica , Lezione 3 35 / 76 Outline for section 4 1 Procedure e funzioni 2 Iterazione e ricorsione 3 Variabili

Matrici (I)

Analogamente ai vettori, possiamo introdurre le matrici:

A =

1 0 30 4 53 7 0

Cristian Consonni Laboratorio di Informatica , Lezione 3 48 / 76

Page 55: Laboratorio di Informatica Lezione 3...Cristian Consonni Laboratorio di Informatica , Lezione 3 35 / 76 Outline for section 4 1 Procedure e funzioni 2 Iterazione e ricorsione 3 Variabili

Matrici (II)

In Java sono vettori di vettori:public class Matrix {

public static void main(String[] args) {

double [ ] [ ] mat = new int[ 5 ] [ 4 ] ;...

Cristian Consonni Laboratorio di Informatica , Lezione 3 49 / 76

Page 56: Laboratorio di Informatica Lezione 3...Cristian Consonni Laboratorio di Informatica , Lezione 3 35 / 76 Outline for section 4 1 Procedure e funzioni 2 Iterazione e ricorsione 3 Variabili

Outline for section 7

1 Procedure e funzioni

2 Iterazione e ricorsione

3 Variabili globali e locali

4 Esericizi (parte I)

5 Array

6 Matrici

7 EsericiziEserciziCrivello di Eratostene

Cristian Consonni Laboratorio di Informatica , Lezione 3 50 / 76

Page 57: Laboratorio di Informatica Lezione 3...Cristian Consonni Laboratorio di Informatica , Lezione 3 35 / 76 Outline for section 4 1 Procedure e funzioni 2 Iterazione e ricorsione 3 Variabili

Esercizi (I)

inizializzare un array di 10 interi e inserire in ciascun elemento ilvalore 5 (utilizzare un ciclo for)inizializzare un array di interi e assegnare a ciascun elemento unvalore uguale alla sua posizioneDopo aver inizializzato l’array precedente, copiare il suo contenuto inordine nverso in un altro array della stessa dimensione.

(1, 2, 3)→ (3, 2, 1)

Suggerimento, con arr.length si puo ottenere la lunghezza dell’array:int arr[]arr = new int[10];

for (int i = 0; i < arr.length; i++) {...

}

Cristian Consonni Laboratorio di Informatica , Lezione 3 51 / 76

Page 58: Laboratorio di Informatica Lezione 3...Cristian Consonni Laboratorio di Informatica , Lezione 3 35 / 76 Outline for section 4 1 Procedure e funzioni 2 Iterazione e ricorsione 3 Variabili

Esercizi (I)

Implementare una funzione che dato in ingresso un vettore di numeriinteri restituisca quel vettore ordinato in ordine crescente.

Esistono tantissimi algoritmi di ordinamento, ecco l’idea di base per unodi essi:

array v di lunghezza N, si fa scorrere l’indice i da 0 a N − 1ripetendo i seguenti passi:

1 si cerca il piu piccolo elemento della sottosequenza v [i ..N]2 si scambia questo elemento con l’elemento i-esimo

Un’animazione descrittiva e disponibile a questo indirizzo:https://upload.wikimedia.org/wikipedia/commons/9/94/Selection-Sort-Animation.gif

Cristian Consonni Laboratorio di Informatica , Lezione 3 52 / 76

Page 59: Laboratorio di Informatica Lezione 3...Cristian Consonni Laboratorio di Informatica , Lezione 3 35 / 76 Outline for section 4 1 Procedure e funzioni 2 Iterazione e ricorsione 3 Variabili

Esercizi (II)

Scrivere una funzione che calcoli il prodotto scalare (double) di duevettori (di double) :

〈v , w〉 =N∑

i=1vi · wi (2)

Cristian Consonni Laboratorio di Informatica , Lezione 3 53 / 76

Page 60: Laboratorio di Informatica Lezione 3...Cristian Consonni Laboratorio di Informatica , Lezione 3 35 / 76 Outline for section 4 1 Procedure e funzioni 2 Iterazione e ricorsione 3 Variabili

Esercizi (III)

Scrivere un programma che data in ingresso una matrice di numericasuali ne calcoli la matrice trasposta.

Scrivere una funzione che stampi una matriceScrivere una funzione che calcoli la matrice trasposta data unamatrice

Data la matrice A, la matrice trasposta - indicata con AT - si ottienescambiando le righe con le colonne:

A =

1 9 30 4 52 7 0

AT =

1 0 29 4 73 5 0

Cristian Consonni Laboratorio di Informatica , Lezione 3 54 / 76

Page 61: Laboratorio di Informatica Lezione 3...Cristian Consonni Laboratorio di Informatica , Lezione 3 35 / 76 Outline for section 4 1 Procedure e funzioni 2 Iterazione e ricorsione 3 Variabili

Esercizi (IV)

Scrivere un programma che dati in ingresso i tre coefficienti a, b e crisolva le equazioni di secondo grado usando la formula.

il programma deve gestire i casi in cui non esistano soluzioni reali(discriminante ∆ = (b2 − 4ac) negativo),

x1,2 = −b ±√

b2 − 4ac2a

Cristian Consonni Laboratorio di Informatica , Lezione 3 55 / 76

Page 62: Laboratorio di Informatica Lezione 3...Cristian Consonni Laboratorio di Informatica , Lezione 3 35 / 76 Outline for section 4 1 Procedure e funzioni 2 Iterazione e ricorsione 3 Variabili

Esercizio: trovare tutti i numeri primi fino a N (I)

Nell’esercizio sulla primalita abbiamo scritto una funzione che cipermette di testare se un dato numero n e primo.Ammettiamo di voler scrivere un programma che ci dica tutti inumeri primi fino a 100.

Cristian Consonni Laboratorio di Informatica , Lezione 3 56 / 76

Page 63: Laboratorio di Informatica Lezione 3...Cristian Consonni Laboratorio di Informatica , Lezione 3 35 / 76 Outline for section 4 1 Procedure e funzioni 2 Iterazione e ricorsione 3 Variabili

Il crivello di Eratostene (I)

Il crivello di Eratostene e un algoritmo per trovare tutti i numeri primida 1 a un intero massimo N.

1 2 3 4 5 6 7 8 9 1011 12 13 14 15 16 17 18 19 2021 22 23 24 25 26 27 28 29 3031 32 33 34 35 36 37 38 39 4041 42 43 44 45 46 47 48 49 5051 52 53 54 55 56 57 58 59 6061 62 63 64 65 66 67 68 69 7071 72 73 74 75 76 77 78 79 8081 82 83 84 85 86 87 88 89 9091 92 93 94 95 96 97 98 99 100

Cristian Consonni Laboratorio di Informatica , Lezione 3 57 / 76

Page 64: Laboratorio di Informatica Lezione 3...Cristian Consonni Laboratorio di Informatica , Lezione 3 35 / 76 Outline for section 4 1 Procedure e funzioni 2 Iterazione e ricorsione 3 Variabili

Il crivello di Eratostene (II)

Il crivello di Eratostene e un algoritmo per trovare tutti i numeri primida 1 a un intero massimo N.

1 2 3 4 5 6 7 8 9 1011 12 13 14 15 16 17 18 19 2021 22 23 24 25 26 27 28 29 3031 32 33 34 35 36 37 38 39 4041 42 43 44 45 46 47 48 49 5051 52 53 54 55 56 57 58 59 6061 62 63 64 65 66 67 68 69 7071 72 73 74 75 76 77 78 79 8081 82 83 84 85 86 87 88 89 9091 92 93 94 95 96 97 98 99 100

Cristian Consonni Laboratorio di Informatica , Lezione 3 58 / 76

Page 65: Laboratorio di Informatica Lezione 3...Cristian Consonni Laboratorio di Informatica , Lezione 3 35 / 76 Outline for section 4 1 Procedure e funzioni 2 Iterazione e ricorsione 3 Variabili

Il crivello di Eratostene (III)

Il crivello di Eratostene e un algoritmo per trovare tutti i numeri primida 1 a un intero massimo N.

1 2 3 4 5 6 7 8 9 1011 12 13 14 15 16 17 18 19 2021 22 23 24 25 26 27 28 29 3031 32 33 34 35 36 37 38 39 4041 42 43 44 45 46 47 48 49 5051 52 53 54 55 56 57 58 59 6061 62 63 64 65 66 67 68 69 7071 72 73 74 75 76 77 78 79 8081 82 83 84 85 86 87 88 89 9091 92 93 94 95 96 97 98 99 100

Cristian Consonni Laboratorio di Informatica , Lezione 3 59 / 76

Page 66: Laboratorio di Informatica Lezione 3...Cristian Consonni Laboratorio di Informatica , Lezione 3 35 / 76 Outline for section 4 1 Procedure e funzioni 2 Iterazione e ricorsione 3 Variabili

Il crivello di Eratostene (IV)

Il crivello di Eratostene e un algoritmo per trovare tutti i numeri primida 1 a un intero massimo N.

1 2 3 4 5 6 7 8 9 1011 12 13 14 15 16 17 18 19 2021 22 23 24 25 26 27 28 29 3031 32 33 34 35 36 37 38 39 4041 42 43 44 45 46 47 48 49 5051 52 53 54 55 56 57 58 59 6061 62 63 64 65 66 67 68 69 7071 72 73 74 75 76 77 78 79 8081 82 83 84 85 86 87 88 89 9091 92 93 94 95 96 97 98 99 100

Cristian Consonni Laboratorio di Informatica , Lezione 3 60 / 76

Page 67: Laboratorio di Informatica Lezione 3...Cristian Consonni Laboratorio di Informatica , Lezione 3 35 / 76 Outline for section 4 1 Procedure e funzioni 2 Iterazione e ricorsione 3 Variabili

Il crivello di Eratostene (V)

Il crivello di Eratostene e un algoritmo per trovare tutti i numeri primida 1 a un intero massimo N.

1 2 3 4 5 6 7 8 9 1011 12 13 14 15 16 17 18 19 2021 22 23 24 25 26 27 28 29 3031 32 33 34 35 36 37 38 39 4041 42 43 44 45 46 47 48 49 5051 52 53 54 55 56 57 58 59 6061 62 63 64 65 66 67 68 69 7071 72 73 74 75 76 77 78 79 8081 82 83 84 85 86 87 88 89 9091 92 93 94 95 96 97 98 99 100

Cristian Consonni Laboratorio di Informatica , Lezione 3 61 / 76

Page 68: Laboratorio di Informatica Lezione 3...Cristian Consonni Laboratorio di Informatica , Lezione 3 35 / 76 Outline for section 4 1 Procedure e funzioni 2 Iterazione e ricorsione 3 Variabili

Il crivello di Eratostene (VI)

Il crivello di Eratostene e un algoritmo per trovare tutti i numeri primida 1 a un intero massimo N.

1 2 3 4 5 6 7 8 9 1011 12 13 14 15 16 17 18 19 2021 22 23 24 25 26 27 28 29 3031 32 33 34 35 36 37 38 39 4041 42 43 44 45 46 47 48 49 5051 52 53 54 55 56 57 58 59 6061 62 63 64 65 66 67 68 69 7071 72 73 74 75 76 77 78 79 8081 82 83 84 85 86 87 88 89 9091 92 93 94 95 96 97 98 99 100

Cristian Consonni Laboratorio di Informatica , Lezione 3 62 / 76

Page 69: Laboratorio di Informatica Lezione 3...Cristian Consonni Laboratorio di Informatica , Lezione 3 35 / 76 Outline for section 4 1 Procedure e funzioni 2 Iterazione e ricorsione 3 Variabili

Il crivello di Eratostene (VII)

Il crivello di Eratostene e un algoritmo per trovare tutti i numeri primida 1 a un intero massimo N.

1 2 3 4 5 6 7 8 9 1011 12 13 14 15 16 17 18 19 2021 22 23 24 25 26 27 28 29 3031 32 33 34 35 36 37 38 39 4041 42 43 44 45 46 47 48 49 5051 52 53 54 55 56 57 58 59 6061 62 63 64 65 66 67 68 69 7071 72 73 74 75 76 77 78 79 8081 82 83 84 85 86 87 88 89 9091 92 93 94 95 96 97 98 99 100

Cristian Consonni Laboratorio di Informatica , Lezione 3 63 / 76

Page 70: Laboratorio di Informatica Lezione 3...Cristian Consonni Laboratorio di Informatica , Lezione 3 35 / 76 Outline for section 4 1 Procedure e funzioni 2 Iterazione e ricorsione 3 Variabili

Il crivello di Eratostene (VI)

Il crivello di Eratostene e un algoritmo per trovare tutti i numeri primida 1 a un intero massimo N.

1 2 3 4 5 6 7 8 9 1011 12 13 14 15 16 17 18 19 2021 22 23 24 25 26 27 28 29 3031 32 33 34 35 36 37 38 39 4041 42 43 44 45 46 47 48 49 5051 52 53 54 55 56 57 58 59 6061 62 63 64 65 66 67 68 69 7071 72 73 74 75 76 77 78 79 8081 82 83 84 85 86 87 88 89 9091 92 93 94 95 96 97 98 99 100

Cristian Consonni Laboratorio di Informatica , Lezione 3 64 / 76

Page 71: Laboratorio di Informatica Lezione 3...Cristian Consonni Laboratorio di Informatica , Lezione 3 35 / 76 Outline for section 4 1 Procedure e funzioni 2 Iterazione e ricorsione 3 Variabili

Il crivello di Eratostene (VII)

Il crivello di Eratostene e un algoritmo per trovare tutti i numeri primida 1 a un intero massimo N.

1 2 3 4 5 6 7 8 9 1011 12 13 14 15 16 17 18 19 2021 22 23 24 25 26 27 28 29 3031 32 33 34 35 36 37 38 39 4041 42 43 44 45 46 47 48 49 5051 52 53 54 55 56 57 58 59 6061 62 63 64 65 66 67 68 69 7071 72 73 74 75 76 77 78 79 8081 82 83 84 85 86 87 88 89 9091 92 93 94 95 96 97 98 99 100

Cristian Consonni Laboratorio di Informatica , Lezione 3 65 / 76

Page 72: Laboratorio di Informatica Lezione 3...Cristian Consonni Laboratorio di Informatica , Lezione 3 35 / 76 Outline for section 4 1 Procedure e funzioni 2 Iterazione e ricorsione 3 Variabili

Il crivello di Eratostene (VIII)

Il crivello di Eratostene e un algoritmo per trovare tutti i numeri primida 1 a un intero massimo N.

1 2 3 4 5 6 7 8 9 1011 12 13 14 15 16 17 18 19 2021 22 23 24 25 26 27 28 29 3031 32 33 34 35 36 37 38 39 4041 42 43 44 45 46 47 48 49 5051 52 53 54 55 56 57 58 59 6061 62 63 64 65 66 67 68 69 7071 72 73 74 75 76 77 78 79 8081 82 83 84 85 86 87 88 89 9091 92 93 94 95 96 97 98 99 100

Cristian Consonni Laboratorio di Informatica , Lezione 3 66 / 76

Page 73: Laboratorio di Informatica Lezione 3...Cristian Consonni Laboratorio di Informatica , Lezione 3 35 / 76 Outline for section 4 1 Procedure e funzioni 2 Iterazione e ricorsione 3 Variabili

Il crivello di Eratostene (IX)

Il crivello di Eratostene e un algoritmo per trovare tutti i numeri primida 1 a un intero massimo N.

1 2 3 4 5 6 7 8 9 1011 12 13 14 15 16 17 18 19 2021 22 23 24 25 26 27 28 29 3031 32 33 34 35 36 37 38 39 4041 42 43 44 45 46 47 48 49 5051 52 53 54 55 56 57 58 59 6061 62 63 64 65 66 67 68 69 7071 72 73 74 75 76 77 78 79 8081 82 83 84 85 86 87 88 89 9091 92 93 94 95 96 97 98 99 100

Cristian Consonni Laboratorio di Informatica , Lezione 3 67 / 76

Page 74: Laboratorio di Informatica Lezione 3...Cristian Consonni Laboratorio di Informatica , Lezione 3 35 / 76 Outline for section 4 1 Procedure e funzioni 2 Iterazione e ricorsione 3 Variabili

Il crivello di Eratostene (X)

Il crivello di Eratostene e un algoritmo per trovare tutti i numeri primida 1 a un intero massimo N.

1 2 3 4 5 6 7 8 9 1011 12 13 14 15 16 17 18 19 2021 22 23 24 25 26 27 28 29 3031 32 33 34 35 36 37 38 39 4041 42 43 44 45 46 47 48 49 5051 52 53 54 55 56 57 58 59 6061 62 63 64 65 66 67 68 69 7071 72 73 74 75 76 77 78 79 8081 82 83 84 85 86 87 88 89 9091 92 93 94 95 96 97 98 99 100

Cristian Consonni Laboratorio di Informatica , Lezione 3 68 / 76

Page 75: Laboratorio di Informatica Lezione 3...Cristian Consonni Laboratorio di Informatica , Lezione 3 35 / 76 Outline for section 4 1 Procedure e funzioni 2 Iterazione e ricorsione 3 Variabili

Il crivello di Eratostene (XI)

Il crivello di Eratostene e un algoritmo per trovare tutti i numeri primida 1 a un intero massimo N.

1 2 3 4 5 6 7 8 9 1011 12 13 14 15 16 17 18 19 2021 22 23 24 25 26 27 28 29 3031 32 33 34 35 36 37 38 39 4041 42 43 44 45 46 47 48 49 5051 52 53 54 55 56 57 58 59 6061 62 63 64 65 66 67 68 69 7071 72 73 74 75 76 77 78 79 8081 82 83 84 85 86 87 88 89 9091 92 93 94 95 96 97 98 99 100

Cristian Consonni Laboratorio di Informatica , Lezione 3 69 / 76

Page 76: Laboratorio di Informatica Lezione 3...Cristian Consonni Laboratorio di Informatica , Lezione 3 35 / 76 Outline for section 4 1 Procedure e funzioni 2 Iterazione e ricorsione 3 Variabili

Il crivello di Eratostene (XII)

Il crivello di Eratostene e un algoritmo per trovare tutti i numeri primida 1 a un intero massimo N.

1 2 3 4 5 6 7 8 9 1011 12 13 14 15 16 17 18 19 2021 22 23 24 25 26 27 28 29 3031 32 33 34 35 36 37 38 39 4041 42 43 44 45 46 47 48 49 5051 52 53 54 55 56 57 58 59 6061 62 63 64 65 66 67 68 69 7071 72 73 74 75 76 77 78 79 8081 82 83 84 85 86 87 88 89 9091 92 93 94 95 96 97 98 99 100

Cristian Consonni Laboratorio di Informatica , Lezione 3 70 / 76

Page 77: Laboratorio di Informatica Lezione 3...Cristian Consonni Laboratorio di Informatica , Lezione 3 35 / 76 Outline for section 4 1 Procedure e funzioni 2 Iterazione e ricorsione 3 Variabili

Il crivello di Eratostene (XIII)

Il crivello di Eratostene e un algoritmo per trovare tutti i numeri primida 1 a un intero massimo N.

1 2 3 4 5 6 7 8 9 1011 12 13 14 15 16 17 18 19 2021 22 23 24 25 26 27 28 29 3031 32 33 34 35 36 37 38 39 4041 42 43 44 45 46 47 48 49 5051 52 53 54 55 56 57 58 59 6061 62 63 64 65 66 67 68 69 7071 72 73 74 75 76 77 78 79 8081 82 83 84 85 86 87 88 89 9091 92 93 94 95 96 97 98 99 100

Cristian Consonni Laboratorio di Informatica , Lezione 3 71 / 76

Page 78: Laboratorio di Informatica Lezione 3...Cristian Consonni Laboratorio di Informatica , Lezione 3 35 / 76 Outline for section 4 1 Procedure e funzioni 2 Iterazione e ricorsione 3 Variabili

Il crivello di Eratostene (XIV)

Il crivello di Eratostene e un algoritmo per trovare tutti i numeri primida 1 a un intero massimo N.

1 2 3 4 5 6 7 8 9 1011 12 13 14 15 16 17 18 19 2021 22 23 24 25 26 27 28 29 3031 32 33 34 35 36 37 38 39 4041 42 43 44 45 46 47 48 49 5051 52 53 54 55 56 57 58 59 6061 62 63 64 65 66 67 68 69 7071 72 73 74 75 76 77 78 79 8081 82 83 84 85 86 87 88 89 9091 92 93 94 95 96 97 98 99 100

Cristian Consonni Laboratorio di Informatica , Lezione 3 72 / 76

Page 79: Laboratorio di Informatica Lezione 3...Cristian Consonni Laboratorio di Informatica , Lezione 3 35 / 76 Outline for section 4 1 Procedure e funzioni 2 Iterazione e ricorsione 3 Variabili

Il crivello di Eratostene (XV)

Il crivello di Eratostene e un algoritmo per trovare tutti i numeri primida 1 a un intero massimo N.

1 2 3 4 5 6 7 8 9 1011 12 13 14 15 16 17 18 19 2021 22 23 24 25 26 27 28 29 3031 32 33 34 35 36 37 38 39 4041 42 43 44 45 46 47 48 49 5051 52 53 54 55 56 57 58 59 6061 62 63 64 65 66 67 68 69 7071 72 73 74 75 76 77 78 79 8081 82 83 84 85 86 87 88 89 9091 92 93 94 95 96 97 98 99 100

Cristian Consonni Laboratorio di Informatica , Lezione 3 73 / 76

Page 80: Laboratorio di Informatica Lezione 3...Cristian Consonni Laboratorio di Informatica , Lezione 3 35 / 76 Outline for section 4 1 Procedure e funzioni 2 Iterazione e ricorsione 3 Variabili

Il crivello di Eratostene (XVI)

Il crivello di Eratostene e un algoritmo per trovare tutti i numeri primida 1 a un intero massimo N.

1 2 3 4 5 6 7 8 9 1011 12 13 14 15 16 17 18 19 2021 22 23 24 25 26 27 28 29 3031 32 33 34 35 36 37 38 39 4041 42 43 44 45 46 47 48 49 5051 52 53 54 55 56 57 58 59 6061 62 63 64 65 66 67 68 69 7071 72 73 74 75 76 77 78 79 8081 82 83 84 85 86 87 88 89 9091 92 93 94 95 96 97 98 99 100

Cristian Consonni Laboratorio di Informatica , Lezione 3 74 / 76

Page 81: Laboratorio di Informatica Lezione 3...Cristian Consonni Laboratorio di Informatica , Lezione 3 35 / 76 Outline for section 4 1 Procedure e funzioni 2 Iterazione e ricorsione 3 Variabili

Il crivello di Eratostene (XVII)

Il crivello di Eratostene e un algoritmo per trovare tutti i numeri primida 1 a un intero massimo N.

1 2 3 4 5 6 7 8 9 1011 12 13 14 15 16 17 18 19 2021 22 23 24 25 26 27 28 29 3031 32 33 34 35 36 37 38 39 4041 42 43 44 45 46 47 48 49 5051 52 53 54 55 56 57 58 59 6061 62 63 64 65 66 67 68 69 7071 72 73 74 75 76 77 78 79 8081 82 83 84 85 86 87 88 89 9091 92 93 94 95 96 97 98 99 100

Cristian Consonni Laboratorio di Informatica , Lezione 3 75 / 76

Page 82: Laboratorio di Informatica Lezione 3...Cristian Consonni Laboratorio di Informatica , Lezione 3 35 / 76 Outline for section 4 1 Procedure e funzioni 2 Iterazione e ricorsione 3 Variabili

Esercizio: trovare tutti i numeri primi fino a N (II)

Scrivere un programma che riempa un vettore di numeri da 1 a 100e usando l’algoritmo del crivello di Eratostene crei alla fine un altrovettore contenente i numeri primi fino a 100.

Cristian Consonni Laboratorio di Informatica , Lezione 3 76 / 76