- prof. V. Riboldi - TURBOPASCAL L’iterazione Quando si risolve un problema può accadere che un...

10
- prof. V. Riboldi - - prof. V. Riboldi - TURBOPASCAL TURBOPASCAL L’iterazione L’iterazione

Transcript of - prof. V. Riboldi - TURBOPASCAL L’iterazione Quando si risolve un problema può accadere che un...

Page 1: - prof. V. Riboldi - TURBOPASCAL L’iterazione Quando si risolve un problema può accadere che un gruppo di istruzioni debba essere ripetuto fino a quando.

- prof. V. Riboldi -- prof. V. Riboldi -

TURBOPASCALTURBOPASCAL

L’iterazioneL’iterazione

Page 2: - prof. V. Riboldi - TURBOPASCAL L’iterazione Quando si risolve un problema può accadere che un gruppo di istruzioni debba essere ripetuto fino a quando.

- prof. V. Riboldi -- prof. V. Riboldi -

Quando si risolve un problema può Quando si risolve un problema può

accadere che un gruppo di accadere che un gruppo di

istruzioni debba essere ripetuto istruzioni debba essere ripetuto

fino a quando non si verifichi una fino a quando non si verifichi una

determinata condizionedeterminata condizione

Page 3: - prof. V. Riboldi - TURBOPASCAL L’iterazione Quando si risolve un problema può accadere che un gruppo di istruzioni debba essere ripetuto fino a quando.

- prof. V. Riboldi -- prof. V. Riboldi -

L’iterazione enumerativaL’iterazione enumerativa

In In LPLPperper variabilevariabile:=:= val_in val_in

fino afino a val_fin val_fin faifaiinizioinizio

istruzione 1istruzione 1;;istruzione 2istruzione 2;;………………..

fine;fine;

In In TPTPforfor variabilevariabile:=:= val_in val_in

toto val_fin val_fin dodobeginbegin

istruzione 1istruzione 1;;istruzione 2istruzione 2;;………………..

end;end;

Consente la ripetizione di un gruppo di istruzioni Consente la ripetizione di un gruppo di istruzioni un numero prefissato di volteun numero prefissato di volte

Page 4: - prof. V. Riboldi - TURBOPASCAL L’iterazione Quando si risolve un problema può accadere che un gruppo di istruzioni debba essere ripetuto fino a quando.

- prof. V. Riboldi -- prof. V. Riboldi -

L’iterazione enumerativaL’iterazione enumerativa La La variabilevariabile viene detta viene detta contatorecontatore proprio proprio

per la funzione che ha di contare il numero per la funzione che ha di contare il numero di ripetizionidi ripetizioni

Il contatore deve essere di tipo Il contatore deve essere di tipo integerinteger Il contatore viene automaticamente Il contatore viene automaticamente

incrementato di una unità ad ogni incrementato di una unità ad ogni ripetizioneripetizione

Quando il contatore assume valore uguale Quando il contatore assume valore uguale al valore finale il ciclo viene eseguito per al valore finale il ciclo viene eseguito per l’ultima volta e poi il controllo l’ultima volta e poi il controllo dell’esecuzione passa all’istruzione dell’esecuzione passa all’istruzione successivasuccessiva

Page 5: - prof. V. Riboldi - TURBOPASCAL L’iterazione Quando si risolve un problema può accadere che un gruppo di istruzioni debba essere ripetuto fino a quando.

- prof. V. Riboldi -- prof. V. Riboldi -

Esempio di istruzione Esempio di istruzione forfor L’operazione L’operazione i:=1i:=1 è è

detta detta inizializzazioneinizializzazione della variabiledella variabile

Si noti come nel Si noti come nel diagramma siano diagramma siano evidenziati in blocchi evidenziati in blocchi separati l’inizializzazione separati l’inizializzazione a 1 della variabile a 1 della variabile ii, il , il controllo che il suo controllo che il suo valore non superi 3 e il valore non superi 3 e il suo ciclico incremento di suo ciclico incremento di 1: in 1: in TPTP il comando il comando forfor gestisce direttamente gestisce direttamente tutte queste operazioni.tutte queste operazioni.

somma:=0

somma:=somma+7

i:=1

i:= i+1

i<=3vero

falso

Page 6: - prof. V. Riboldi - TURBOPASCAL L’iterazione Quando si risolve un problema può accadere che un gruppo di istruzioni debba essere ripetuto fino a quando.

- prof. V. Riboldi -- prof. V. Riboldi -

… … a ritrosoa ritroso

In In TP TP l’iterazione enumerativa può anche l’iterazione enumerativa può anche procedere dal valore più alto del contatore a procedere dal valore più alto del contatore a quello più bassoquello più basso

forfor variabile variabile:=:= val_fin val_fin downtodownto val_in val_in dodobeginbegin

istruzione 1istruzione 1;;istruzione 2istruzione 2;;………………..

end;end;

Page 7: - prof. V. Riboldi - TURBOPASCAL L’iterazione Quando si risolve un problema può accadere che un gruppo di istruzioni debba essere ripetuto fino a quando.

- prof. V. Riboldi -- prof. V. Riboldi -

L’iterazione per falsoL’iterazione per falso(o controllo in coda)(o controllo in coda)

In In LPLP

ripetiripeti

istruzione 1istruzione 1;;

istruzione 2istruzione 2;;

………………..

finché finché proposizioneproposizione;;

In In TPTP

repeatrepeat

istruzione 1istruzione 1;;

istruzione 2istruzione 2;;

………………..

until until proposizioneproposizione;;

Il blocco di istruzioni viene eseguito ripetutamente fino a quando la Il blocco di istruzioni viene eseguito ripetutamente fino a quando la proposizione da falsa diventa vera; certamente viene eseguito almeno una proposizione da falsa diventa vera; certamente viene eseguito almeno una

volta, in quanto la verifica del blocco di controllo segue il blocco stessovolta, in quanto la verifica del blocco di controllo segue il blocco stesso

Page 8: - prof. V. Riboldi - TURBOPASCAL L’iterazione Quando si risolve un problema può accadere che un gruppo di istruzioni debba essere ripetuto fino a quando.

- prof. V. Riboldi -- prof. V. Riboldi -

L’iterazione per veroL’iterazione per vero(o controllo in testa)(o controllo in testa)

In In LPLP

mentrementre proposizione proposizione faifai

inizioinizio

istruzione 1istruzione 1;;

istruzione 2istruzione 2;;

………………..

fine;fine;

In In TPTP

whilewhile proposizione proposizione dodo

beginbegin

istruzione 1istruzione 1;;

istruzione 2istruzione 2;;

………………..

end;end;

Il blocco viene eseguito ripetutamente mentre la proposizione è vera e Il blocco viene eseguito ripetutamente mentre la proposizione è vera e quando diventa falsa si esce dal ciclo; il blocco non viene mai eseguito se quando diventa falsa si esce dal ciclo; il blocco non viene mai eseguito se

la condizione è sempre falsa la condizione è sempre falsa

Page 9: - prof. V. Riboldi - TURBOPASCAL L’iterazione Quando si risolve un problema può accadere che un gruppo di istruzioni debba essere ripetuto fino a quando.

- prof. V. Riboldi -- prof. V. Riboldi -

Diagrammi a blocchiDiagrammi a blocchi

proposizione

vero

falso

ITERAZIONE PER FALSO

istruzione 2

istruzione 1 proposizione

vero

falso

ITERAZIONE PER VERO

istruzione 2

istruzione 1

Page 10: - prof. V. Riboldi - TURBOPASCAL L’iterazione Quando si risolve un problema può accadere che un gruppo di istruzioni debba essere ripetuto fino a quando.

- prof. V. Riboldi -- prof. V. Riboldi -

Nelle strutture Nelle strutture repeat … untilrepeat … until e e while … dowhile … do sono sempre presenti:sono sempre presenti:

almeno una variabile di controllo, almeno una variabile di controllo, inizializzata prima del cicloinizializzata prima del ciclo

una o più istruzioni che devono essere una o più istruzioni che devono essere eseguite una o più volte; tra di esse c'è eseguite una o più volte; tra di esse c'è sempre una istruzione che modifica la sempre una istruzione che modifica la variabile di controllo della iterazionevariabile di controllo della iterazione

la condizione di uscita dal ciclo (vera per la la condizione di uscita dal ciclo (vera per la strutturastruttura repeat repeat e falsa per la struttura e falsa per la struttura whilewhile) )