Iterazione A. Ferrari. Iterazioni (cicli) Literazione è una struttura che consente di ripetere più...

20
Iterazione Iterazione A. Ferrari A. Ferrari

Transcript of Iterazione A. Ferrari. Iterazioni (cicli) Literazione è una struttura che consente di ripetere più...

Page 1: Iterazione A. Ferrari. Iterazioni (cicli) Literazione è una struttura che consente di ripetere più volte lesecuzione di un insieme di istruzioni. Due.

IterazioneIterazioneA. FerrariA. Ferrari

Page 2: Iterazione A. Ferrari. Iterazioni (cicli) Literazione è una struttura che consente di ripetere più volte lesecuzione di un insieme di istruzioni. Due.

Iterazioni (cicli)Iterazioni (cicli)L’iterazione è una struttura che consente di L’iterazione è una struttura che consente di ripetere più volte l’esecuzione di un insieme di ripetere più volte l’esecuzione di un insieme di istruzioni.istruzioni.

Due tipi di iterazione:Due tipi di iterazione:iterazioni iterazioni enumerativeenumerative: consentono di eseguire : consentono di eseguire un blocco di istruzioni un numero predefinito di un blocco di istruzioni un numero predefinito di volte. volte.

iterazioni iterazioni guidate da eventiguidate da eventi: non è noto a priori : non è noto a priori quante volte saranno eseguite. quante volte saranno eseguite. Se la condizione specificata è vera (o è ancora Se la condizione specificata è vera (o è ancora vera) il blocco viene eseguito, altrimenti si passa vera) il blocco viene eseguito, altrimenti si passa all’istruzione successiva al termine del blocco.all’istruzione successiva al termine del blocco.

Page 3: Iterazione A. Ferrari. Iterazioni (cicli) Literazione è una struttura che consente di ripetere più volte lesecuzione di un insieme di istruzioni. Due.

Iterazioni Iterazioni postcondizionalipostcondizionali

L’iterazione postcondizionale L’iterazione postcondizionale è quella fondamentale, è quella fondamentale, infatti tutte le altre possono infatti tutte le altre possono essere definite a partire da essere definite a partire da questa.questa.

Il blocco delle istruzioni che Il blocco delle istruzioni che fanno parte dell’iterazione fanno parte dell’iterazione viene eseguito almeno una viene eseguito almeno una volta poi si verifica la volta poi si verifica la condizione e si ripete il condizione e si ripete il blocco fintanto che la blocco fintanto che la condizione è vera.condizione è vera.

Sono soddisfatti i requisiti Sono soddisfatti i requisiti della programmazione della programmazione strutturata: un solo punto strutturata: un solo punto d’ingresso e un solo punto d’ingresso e un solo punto d’uscita.d’uscita.

Page 4: Iterazione A. Ferrari. Iterazioni (cicli) Literazione è una struttura che consente di ripetere più volte lesecuzione di un insieme di istruzioni. Due.

do … whiledo … while Sintassi:Sintassi:

dodo<istruzione><istruzione>

while (<espressione>);while (<espressione>);

L’istruzione continua a essere eseguita fintanto che L’istruzione continua a essere eseguita fintanto che <espressione><espressione> risulta vera. risulta vera.

Nel caso, molto frequente, in cui il corpo del ciclo sia Nel caso, molto frequente, in cui il corpo del ciclo sia costituito da più istruzioni, si utilizza una coppia di costituito da più istruzioni, si utilizza una coppia di parentesi graffe per racchiudere l’insieme delle istruzioni parentesi graffe per racchiudere l’insieme delle istruzioni che fanno parte del ciclo.che fanno parte del ciclo.dodo{{

<istruzione1>;<istruzione1>;<istruzione2>;<istruzione2>;……<istruzioneN>;<istruzioneN>;

} while (<espressione>);} while (<espressione>);

Page 5: Iterazione A. Ferrari. Iterazioni (cicli) Literazione è una struttura che consente di ripetere più volte lesecuzione di un insieme di istruzioni. Due.

Esercizio 1Esercizio 1Iterazione guidata da Iterazione guidata da

eventieventiScrivere un programma che richiede in Scrivere un programma che richiede in input un numero intero e lo continua a input un numero intero e lo continua a richiedere finché non viene inserito un richiedere finché non viene inserito un numero pari.numero pari.

Page 6: Iterazione A. Ferrari. Iterazioni (cicli) Literazione è una struttura che consente di ripetere più volte lesecuzione di un insieme di istruzioni. Due.

Soluzione 1Soluzione 1/*

* Richiede in input un valore intero pari poi lo visualizza

*/

#include <stdio.h>

int main()

{

int valore;

printf("Inserisci un numero pari ");

do

scanf("%d",&valore);

while ((valore%2)!=0);

printf("%d e' un numero pari",valore);

}

Page 7: Iterazione A. Ferrari. Iterazioni (cicli) Literazione è una struttura che consente di ripetere più volte lesecuzione di un insieme di istruzioni. Due.

Soluzione 2Soluzione 2/*

* Richiede in input un valore intero pari poi lo visualizza

*/

#include <stdio.h>

int main()

{

int valore;

do

{

printf("Inserisci un numero pari ");

scanf("%d",&valore);

}

while ((valore%2)!=0);

printf("%d e' un numero pari",valore);

}

Page 8: Iterazione A. Ferrari. Iterazioni (cicli) Literazione è una struttura che consente di ripetere più volte lesecuzione di un insieme di istruzioni. Due.

Soluzione 3Soluzione 3/*

* Richiede in input un valore intero pari poi lo visualizza

*/

#include <stdio.h>

int main()

{

int valore;

do

{

printf("Inserisci un numero pari ");

scanf("%d",&valore);

if((valore%2)!=0)

printf("il numero inserito non e’ pari …\n");

}

while ((valore%2)!=0);

printf("%d e' un numero pari",valore);

}

Page 9: Iterazione A. Ferrari. Iterazioni (cicli) Literazione è una struttura che consente di ripetere più volte lesecuzione di un insieme di istruzioni. Due.

Esercizio 2Esercizio 2Iterazione Iterazione

enumerativaenumerativaRealizzare un programma che determini Realizzare un programma che determini la potenza intera di un numero la potenza intera di un numero utilizzando soltanto l’operatore utilizzando soltanto l’operatore prodotto. prodotto. Il valore della potenza (l’esponente) e il Il valore della potenza (l’esponente) e il numero (la base) sono immessi numero (la base) sono immessi dall’utente.dall’utente.

Page 10: Iterazione A. Ferrari. Iterazioni (cicli) Literazione è una struttura che consente di ripetere più volte lesecuzione di un insieme di istruzioni. Due.

#include <stdio.h>int main(){ int base,esponente,potenza; int contatore; //conta quante volte viene eseguito il ciclo printf("inserisci la base "); scanf("%d",&base); printf("inserisci l’ esponente"); scanf("%d",&esponente); potenza = 1; contatore= 0; do { potenza = potenza * base; contatore = contatore +1; //numero di prodotti eseguiti } while (contatore<esponente); printf("potenza = %d ",potenza);}

Page 11: Iterazione A. Ferrari. Iterazioni (cicli) Literazione è una struttura che consente di ripetere più volte lesecuzione di un insieme di istruzioni. Due.

Iterazioni Iterazioni precondizionaliprecondizionali

Le iterazioni Le iterazioni precondizionali hanno la precondizionali hanno la condizione in testa al condizione in testa al ciclo. ciclo.

La logica è quella di La logica è quella di verificare una verificare una condizione e continuare condizione e continuare a eseguire il blocco delle a eseguire il blocco delle istruzioni che fanno istruzioni che fanno parte dell’iterazione parte dell’iterazione fintanto che questa fintanto che questa risulti vera.risulti vera.

Il blocco di istruzioni Il blocco di istruzioni può, nel caso in cui la può, nel caso in cui la condizione risulti subito condizione risulti subito falsa, non essere mai falsa, non essere mai eseguito.eseguito.

Page 12: Iterazione A. Ferrari. Iterazioni (cicli) Literazione è una struttura che consente di ripetere più volte lesecuzione di un insieme di istruzioni. Due.

Il ciclo whileIl ciclo whileIl linguaggio C mette a disposizione il ciclo Il linguaggio C mette a disposizione il ciclo whilewhile

while (<espressione>)while (<espressione>)

<istruzione>;<istruzione>;

L’istruzione continua a essere eseguita fino a L’istruzione continua a essere eseguita fino a quando <espressione> risulta vera.quando <espressione> risulta vera.

Nel caso, molto frequente, in cui il corpo del Nel caso, molto frequente, in cui il corpo del ciclo sia costituito da più istruzioni, si utilizza ciclo sia costituito da più istruzioni, si utilizza una coppia di parentesi graffe per racchiudere una coppia di parentesi graffe per racchiudere l’insieme delle istruzioni che fanno parte del l’insieme delle istruzioni che fanno parte del ciclo.ciclo.

Page 13: Iterazione A. Ferrari. Iterazioni (cicli) Literazione è una struttura che consente di ripetere più volte lesecuzione di un insieme di istruzioni. Due.

Esempio - while 1Esempio - while 1/*

* Richiede in input un valore intero pari poi lo visualizza

*/

#include <stdio.h>

int main()

{

int valore;

printf("Inserisci un numero pari ");

scanf("%d",&valore);

while ((valore%2)!=0)

scanf("%d",&valore);

printf("%d e' un numero pari",valore);

}

Page 14: Iterazione A. Ferrari. Iterazioni (cicli) Literazione è una struttura che consente di ripetere più volte lesecuzione di un insieme di istruzioni. Due.

Esempio - while 2Esempio - while 2/*

* Richiede in input un valore intero pari poi lo visualizza

*/

#include <stdio.h>

int main()

{

int valore;

printf("Inserisci un numero pari ");

scanf("%d",&valore);

while ((valore%2)!=0)

{

printf("Il numero non e’ pari, reinserirlo");

scanf("%d",&valore);

}

printf("%d e' un numero pari",valore);

}

Page 15: Iterazione A. Ferrari. Iterazioni (cicli) Literazione è una struttura che consente di ripetere più volte lesecuzione di un insieme di istruzioni. Due.

EserciziEserciziRealizza un programma che determini la Realizza un programma che determini la potenza intera di un numero utilizzando potenza intera di un numero utilizzando soltanto l’operatore prodotto. soltanto l’operatore prodotto. Il valore della potenza (l’esponente) e il Il valore della potenza (l’esponente) e il numero (la base) sono immessi dall’utente.numero (la base) sono immessi dall’utente.Utilizzare il ciclo whileUtilizzare il ciclo while

Si riceve come dato d'ingresso una sequenza Si riceve come dato d'ingresso una sequenza di numeri terminante per 0, i numeri sono al di numeri terminante per 0, i numeri sono al massimo 100, non è conosciuta a priori la massimo 100, non è conosciuta a priori la lunghezza della sequenza. Visualizza il valore lunghezza della sequenza. Visualizza il valore del numero maggiore e di quello minoredel numero maggiore e di quello minore

Page 16: Iterazione A. Ferrari. Iterazioni (cicli) Literazione è una struttura che consente di ripetere più volte lesecuzione di un insieme di istruzioni. Due.

Iterazioni Iterazioni enumerativeenumerative

In molti casi, è noto a priori quante volte il blocco In molti casi, è noto a priori quante volte il blocco di istruzioni interne al ciclo debba essere di istruzioni interne al ciclo debba essere eseguitoeseguito

Le strutture iterative presentate possono essere Le strutture iterative presentate possono essere utilizzate anche per risolvere questo tipo di utilizzate anche per risolvere questo tipo di problemi.problemi.

Viene utilizzata una variabile (contatore) che ha Viene utilizzata una variabile (contatore) che ha la funzione di “contare” il numero di ripetizioni;la funzione di “contare” il numero di ripetizioni;

Il contatore viene inizializzato prima del ciclo con Il contatore viene inizializzato prima del ciclo con un valore di partenza, e poi incrementato a ogni un valore di partenza, e poi incrementato a ogni esecuzione; esecuzione;

La condizione di ciclo controlla il raggiungimento La condizione di ciclo controlla il raggiungimento del numero di iterazioni voluto.del numero di iterazioni voluto.

Page 17: Iterazione A. Ferrari. Iterazioni (cicli) Literazione è una struttura che consente di ripetere più volte lesecuzione di un insieme di istruzioni. Due.

ProblemaProblemaProblema: calcolare la somma, il Problema: calcolare la somma, il prodotto e la media di n valori immessi prodotto e la media di n valori immessi dall’utente.dall’utente.

Input: la lunghezza n della sequenza dei Input: la lunghezza n della sequenza dei valori in ingresso, gli n valori della valori in ingresso, gli n valori della sequenza.sequenza.

Output: somma, prodotto e media dei Output: somma, prodotto e media dei valori immessi.valori immessi.

Page 18: Iterazione A. Ferrari. Iterazioni (cicli) Literazione è una struttura che consente di ripetere più volte lesecuzione di un insieme di istruzioni. Due.

Il ciclo forIl ciclo forOgni linguaggio presenta uno o più Ogni linguaggio presenta uno o più costrutti di programmazione per costrutti di programmazione per implementare le iterazioni enumerativeimplementare le iterazioni enumerative

Il C fornisce il ciclo for che, in realtà, è Il C fornisce il ciclo for che, in realtà, è un costrutto molto potente e può essere un costrutto molto potente e può essere utilizzato per qualsiasi tipo di utilizzato per qualsiasi tipo di iterazione. iterazione.

Per semplicità, lo utilizzeremo solo per Per semplicità, lo utilizzeremo solo per implementare iterazioni enumerative.implementare iterazioni enumerative.

Page 19: Iterazione A. Ferrari. Iterazioni (cicli) Literazione è una struttura che consente di ripetere più volte lesecuzione di un insieme di istruzioni. Due.

for - sintassifor - sintassifor(<istuzione1>;<espressione>;<istruzione2>)for(<istuzione1>;<espressione>;<istruzione2>) <istruzione da ripetere>; <istruzione da ripetere>;

<istruzione1> <istruzione1> viene eseguita prima del ciclo e viene utilizzata per viene eseguita prima del ciclo e viene utilizzata per inizializzare la variabile contatoreinizializzare la variabile contatore

<espressione><espressione>è la condizione logica che deve essere soddisfatta per è la condizione logica che deve essere soddisfatta per eseguire il corpo del cicloeseguire il corpo del ciclo

<istruzione2><istruzione2>viene eseguita ad ogni iterazione ed è utilizzata per viene eseguita ad ogni iterazione ed è utilizzata per incrementare/decrementare la variabile contatoreincrementare/decrementare la variabile contatore

<istruzione da ripetere><istruzione da ripetere>è il corpo del ciclo che normalmente è costituito da più è il corpo del ciclo che normalmente è costituito da più istruzioni racchiuse in una coppia di parentesi graffeistruzioni racchiuse in una coppia di parentesi graffe

Page 20: Iterazione A. Ferrari. Iterazioni (cicli) Literazione è una struttura che consente di ripetere più volte lesecuzione di un insieme di istruzioni. Due.

EsempiEsempi/* tabellina del 2 */

#include <stdio.h>

int main()

{

int ind; //indice

int prodotto;

for(ind=1;ind<=10;ind++)

{

prodotto=2*ind; printf("%d ",prodotto);

}

}

/* tabellina del 2 inverso*/

#include <stdio.h>

int main()

{

int ind; //indice

int prodotto;

for(ind=10;ind>=1;ind--)

{

prodotto=2*ind; printf("%d ",prodotto);

}

}