Unità di apprendimento 7 Dal problema al programma
Unità di apprendimento 7 Lezione 5 Conosciamo l iterazione definita e indefinita
In questa lezione impareremo: che cos è l istruzione di iterazione come descriverla utilizzando i diagrammi a blocchi il linguaggio di progetto In linguaggio BYOB
L istruzione di iterazione o ciclo Negli algoritmi può capitare che alcune operazioni debbano essere eseguite più di una volta. Alcune istruzioni potrebbero dover essere ripetute in modo identico. Se ad esempio dobbiamo effettuare il conto alla rovescia da 10 a 1, + necessario ripetere per 10 volte l operazione sottrai 1.
L istruzione di iterazione o ciclo Oppure se dobbiamo riempire d acqua una vasca da bagno utilizzando un bicchiere è necessario versare ripetutamente il contenuto del bicchiere finché la vasca non risulti piena. La ripetizione di un insieme di istruzioni prende il nome di iterazione o ciclo (in inglese, loop).
L istruzione di iterazione o ciclo con l istruzione di ciclo indichiamo al calcolatore che deve ripetere un gruppo di istruzioni: un numero di volte ben determinato, come nel caso del conteggio; finché non si verifica una situazione, come nel caso della vasca.
L istruzione di iterazione o ciclo Quando il numero di ripetizioni è noto a priori, cioè sappiamo quante volte le istruzioni devono essere ripetute, il ciclo prende il nome di iterazione definita. Quando invece il ciclo viene ripetuto un numero di volte sconosciuto a priori prende il nome di l iterazione indefinita.
L istruzione di iterazione o ciclo Di seguito riportiamo alcuni esempi dei due diversi tipi di istruzioni.
L istruzione di iterazione o ciclo Nelle iterazioni definite è sempre presente un numero. viene sempre indicato chiaramente quante volte deve essere eseguita una operazione. Nelle iterazioni indefinite non si sa per quante volte questa debba essere ripetuta.
L istruzione di iterazione o ciclo Esempio: conto alla rovescia Un missile è in partenza dalla base spaziale Venere1: mancano 20 secondi al lancio e deve essere effettuato il conto alla rovescia. Il diagramma di flusso viene realizzato utilizzando i blocchi già conosciuti. Per ottenere la ripetizione ciclica combiniamo un istruzione di test con una (o più) istruzioni di esecuzione.
L istruzione di iterazione o ciclo
Codifichiamo l iterazione Lo schema generale di una istruzione iterativa è: Possiamo osservare come il percorso di un ramo formi un anello con l istruzione di test.
Codifichiamo l iterazione Esistono diversi tipi di ciclo Una scrittura in linguaggio di progetto che permette di descrivere tutti i tipi di ciclo è la seguente:
Codifichiamo l iterazione Codifichiamo l esempio precedente in linguaggio di progetto:
Realizziamo lo stesso algoritmo con Algo-Build
La tabella di traccia o trace table Uno strumento molto utile che ci permette di seguire passo passo il funzionamento del programma è la tabella di traccia (o trace table). In questa tabella sono presenti tante colonne quante sono le istruzioni da controllare.
La tabella di traccia o trace table Riprendiamo l esempio del missile: la tabella ha le seguenti colonne: La tabella viene realizzata aggiungendo una riga per ogni istruzione eseguita e riportando in ogni colonna l esito che questa istruzione ha avuto nel programma.
La tabella di traccia o trace table
La tabella di traccia o trace table Vediamo un secondo esempio Dobbiamo visualizzare sullo schermo i multipli di 7 che hanno valore inferiore al numero 50. Descriviamo innanzitutto a parole il procedimento che intendiamo utilizzare.
La tabella di traccia o trace table incominciamo con il numero 7 continuiamo a sommare a questo il numero 7 ripetiamo queste operazioni finché non otteniamo un numero > di 50 a questo punto ci fermiamo uscendo dal ciclo scriviamo che l elaborazione è terminata
La tabella di traccia o trace table Il diagramma di flusso è il seguente:
La tabella di traccia o trace table Traducendolo in pseudocodifica avremo
La tabella di traccia o trace table Osservazione Poiché all interno del ciclo dobbiamo eseguire due istruzioni, è necessario racchiuderle tra una istruzione di inizio e una di fine, in modo da non confonderle con le istruzioni di inizio e fine esterne al ciclo.
La tabella di traccia o trace table
La tabella di traccia o trace table Nella tabella sono indicate con lo stesso sfondo le operazioni presenti nel blocco di iterazione Quelle cioè racchiuse tra una istruzione di inizio e una di fine
Realizziamo ora lo stesso algoritmo con AlgoBuild
L iterazione definita Negli esempi visti non conoscevamo mai in anticipo il numero delle volte che doveva essere ripetuto il ciclo. Un insieme di problemi sono invece caratterizzati dal fatto di avere come dato iniziale proprio il numero di volte che un compito deve essere eseguito.
L iterazione definita Alcune situazioni sono le seguenti:
L iterazione definita In tutte queste situazioni il numero delle iterazioni è noto a priori, quindi definito. Nei linguaggi di programmazione esiste una istruzione che permette di codificare questo tipo di ciclo: il ciclo a conteggio, o ciclo for. Il suo nome deriva dal fatto che viene realizzato mediante un contatore che, per ogni volta che viene eseguito il corpo del ciclo, automaticamente viene aggiornato (incrementato).
L iterazione definita Il ciclo a conteggio prende anche il nome di ciclo enumerativo, in quanto il suo principio di funzionamento è quello di enumerare, cioè contare, la sequenza delle ripetizioni. A tal fine si utilizza un contatore che ad ogni iterazione viene incrementato di un valore costante che prende il nome di passo del contatore (o passo del ciclo).
L iterazione definita Esempio: prepara un budino per ogni compagno di classe Per prima cosa è necessario sapere il numero dei compagni di classe. Successivamente ripeteremo per tante volte la stessa operazione di preparare un budino quanti sono i compagni. Useremo proprio il numero_di_compagni come contatore delle ripetizioni del nostro ciclo a conteggio.
L iterazione definita La codifica in pseudolinguaggio è molto semplice:
L iterazione definita Il corrispondente diagramma di flusso è:
Leggi un numero e visualizza sullo schermo la tabellina dei suoi primi 10 multipli
Equivalenza con i blocchi BYOB
Codifica esercizio «conto alla rovescia» Linguaggio di progetto dell algoritmo
Codifica esercizio «costo per andare a scuola» Per realizzare questo Script basta definire una sola Variabile e la chiamiamo numero che inizializziamo ad un valore predefinito(20):
Codifica esercizio «costo per andare a scuola» Come variante leggiamo in input il valore della variabile numero ed effettuiamo il conto alla rovescia a partire del numero inserito.
Codifica esercizio «multipli di 7» Linguaggio di progetto dell algoritmo
Codifica esercizio «multipli di 7» Codifica in BYOB Definiamo due Variabili numero e multiplo: la prima inizializzata a 50 e la seconda a 7.
Codifica esercizio «multipli di 7» Modifichiamo ora lo Script leggendo in input il numero finale
Codifica esercizio «prepara i budini per la classe» Linguaggio di progetto dell algoritmo
Codifica esercizio «prepara i budini per la classe» Codifica in BYOB:
Codifica esercizio «costo per andare a scuola» Miglioriamo lo Script rendendolo più comprensibile: contiamo i budini prodotti:
ABBIAMO IMPARATO CHE...