La struttura iterativa
La struttura iterativa
Quando si parla di strutture
iterative, si parla di cicli
Cicli = sono delle porzioni di
codice che vengono ripetute per
N volte
5 Liceo A.S. 2011-12
Informatica e Sistemi
Prof. Corrado Lai
2
Cicli iterativi
Ciclo while:
while viene utilizzato
quando il numero delle ripetizioni
N non è noto a priori
Ciclo for:
for viene utilizzato
quando il numero delle ripetizioni
N è un numero definito
5 Liceo A.S. 2011-12
Informatica e Sistemi
Prof. Corrado Lai
3
Ciclo While
Ciclo While precondizionale:
precondizionale la
condizione è controllata all’inizio del
ciclo e l’istruzione viene eseguita dopo.
In questa struttura l’istruzione può non
essere mai eseguita
Ciclo While postcondizionale:
postcondizionale la
condizione è controllata dopo
l’istruzione. In questa struttura
l’istruzione è sicuramente eseguita
almeno una volta
5 Liceo A.S. 2011-12
Informatica e Sistemi
Prof. Corrado Lai
4
5
While precondizionale
Flow-chart
istruzioni
La CONDIZIONE
SI
è vera ?
NO
5 Liceo A.S. 2011-12
Informatica e Sistemi
Prof. Corrado Lai
5
6
While precondizionale
Pseudocodice
Flow-chart
MENTRE (condizione)
istruzione
istruzioni
La CONDIZIONE
SI
è vera ?
NO
5 Liceo A.S. 2011-12
Informatica e Sistemi
Prof. Corrado Lai
6
7
While precondizionale
Linguaggio C
Flow-chart
istruzioni
La CONDIZIONE
WHILE (condizione)
{istruzioni}
SI
è vera ?
NO
5 Liceo A.S. 2011-12
Informatica e Sistemi
Prof. Corrado Lai
7
While precondizionale
Scrivere un programma che colcoli
la potenza di un numero reale B
con esponente intero positivo E
utilizzando la sola moltiplicazione
POTENZA = BE
POTENZA = B x B x B…. (per E volte)
5 Liceo A.S. 2011-12
Informatica e Sistemi
Prof. Corrado Lai
8
While precondizionale
SOLUZIONE in PSEUDOCODICE
Acquisisci B, E
Potenza=1
N=1
MENTRE (N <= E)
POTENZA = POTENZA * B
N = N+1
Visualizza POTENZA
5 Liceo A.S. 2011-12
Informatica e Sistemi
Prof. Corrado Lai
9
While precondizionale
Disegnare il flowchart dell’esercizio
precedente
5 Liceo A.S. 2011-12
Informatica e Sistemi
Prof. Corrado Lai
10
11
While postcondizionale
Flow-chart
istruzioni
La CONDIZIONE
SI
è vera ?
NO
5 Liceo A.S. 2011-12
Informatica e Sistemi
Prof. Corrado Lai
11
12
While postcondizionale
Flow-chart
Pseudocodice
ESEGUI istruzione
MENTRE (condizione)
istruzione
La CONDIZIONE
SI
è vera ?
NO
5 Liceo A.S. 2011-12
Informatica e Sistemi
Prof. Corrado Lai
12
13
While postcondizionale
Flow-chart
Linguaggio C
DO
WHILE
{istruzione}
(condizione)
istruzioni
La CONDIZIONE
SI
è vera ?
NO
5 Liceo A.S. 2011-12
Informatica e Sistemi
Prof. Corrado Lai
13
Esercizio While postcondizionale
Scrivere un codice di programma che controlli
che la lettera premuta sia la C
SOLUZIONE in PSEUDOCODICE
ESEGUI
visualizza "Premi C per continuare”
Acquisisci lettera
MENTRE (lettera <> C)
5 Liceo A.S. 2011-12
Informatica e Sistemi
Prof. Corrado Lai
14
While postcondizionale
Disegnare il flowchart dell’esercizio
precedente
5 Liceo A.S. 2011-12
Informatica e Sistemi
Prof. Corrado Lai
15
Esercizio While postcondizionale
Scrivere un programma che calcoli la media
di un numero qualsiasi di voti.
Il caricamento dei dati termina quando
viene inserito un numero negativo
N è la variabile che indica il numero dei voti
SOMMA è la variabile che tiene conto della
somma dei voti
5 Liceo A.S. 2011-12
Informatica e Sistemi
Prof. Corrado Lai
16
Esercizio While postcondizionale
N=0
SOMMA = 0
RIPETI
Acquisisci VOTO
SOMMA=SOMMA+VOTO
N=N+1
MENTRE (voto>=0)
MEDIA=SOMMA/N
Visualizza MEDIA
5 Liceo A.S. 2011-12
Informatica e Sistemi
Prof. Corrado Lai
17
Il ciclo FOR
Utilizzato quando il numero dei cicli N è
noto a priori
Più compatto ed elegante del While
Esiste una variabile contatore
La variabile contatore e la condizione,
fanno parte del costrutto stesso
Non esistono delle "variabili volanti“ come
nei cicli while
5 Liceo A.S. 2011-12
Informatica e Sistemi
Prof. Corrado Lai
18
19
Il ciclo FOR
Assegnazioni
variabili
incremento
variabile
istruzione
CONDIZIONE
Sulla variabile
vera ?
NO
5 Liceo A.S. 2011-12
SI
Flowchart
Il flowchart è simile
al While
precondizionale ma
in questo caso il
numero di cicli è
conosciuto a priori
e la condizione e
l’incremento della
variabile è dentro il
costrutto stesso
Informatica e Sistemi
Prof. Corrado Lai
19
Il ciclo FOR
E’ quindi utilizzata quando si desidera ripetere
una istruzione per un determinato numero di
volte
Per esempio se si vuole sommare 3 volte alla
variabile SOMMA, inizializzata a 0, il valore 7 si
potrebbe scrivere
SOMMA=0
SOMMA=SOMMA+7
SOMMA=SOMMA+7
SOMMA=SOMMA+7
5 Liceo A.S. 2011-12
Informatica e Sistemi
Prof. Corrado Lai
20
Il ciclo FOR
Risulta più come utilizzare un ciclo che si ripete 3 volte
Posso scrivere
SOMMA=0
FOR (i=1; i<=3; i=i+1)
SOMMA=SOMMA+7
Possiamo così riassumere:
0. Inizializziamo le variabili SOMMA=0 e i=1
1. Se i<=3 allora vai al passo 2 altrimenti fine
2. SOMMA=SOMMA+7
3. Incrementa la variabile i di 1, vai al passo 1
5 Liceo A.S. 2011-12
Informatica e Sistemi
Prof. Corrado Lai
21
Il ciclo FOR
Il formato del costrutto for è il seguente
FOR (esp1; esp2; esp3)
istruzione
esp1: il ciclo inizia con l’assegnazione di esp1
esp2: è la condizione. Se esp2 risulta vera,
viene eseguita istruzione, altrimenti il ciclo
non viene percorso nemmeno una volta
esp3: è l’incremento della variabile contatore
che verrà riverificata al passaggio successivo
da esp2
5 Liceo A.S. 2011-12
Informatica e Sistemi
Prof. Corrado Lai
22
Esercizii sul ciclo FOR
Scrivi un algoritmo che produca la
stampa dei numeri da 1 a 99
FOR (i=0; i<100; i=i+1)
Visualizza i
Scrivere un codice che esegue la somma
dei primi 10 numeri
TOTALE = 0
FOR(i=1; i <= 10; i=i+1)
FOR
TOTALE = TOTALE + i
Visualizza TOTALE
5 Liceo A.S. 2011-12
Informatica e Sistemi
Prof. Corrado Lai
23
24
Esercizio
Calcolare gli spazi percorsi da un corpo in
caduta libera nei primi 10 secondi
Soluzione: con una ripetizione enumerativa da
1 a 10, si calcola il valore di s secondo la
formula del moto uniformemente accelerato
S=1/2 gt2
FOR (t=0; t<=10; t=t+1)
s=1/2 gt2
Visualizza s
5 Liceo A.S. 2011-12
Informatica e Sistemi
Prof. Corrado Lai
24