COMANDI ITERATIVI Ivan Lanese
Argomenti Comando while Comando do while Comando for
Comando while: reminder while (condizione) comando; Semantica: la condizione viene testata: se è vera, viene eseguito il comando e la condizione viene testata di nuovo il comando viene ripetuto fino a quando la condizione è vera quando la condizione diventa falsa, si esce dal while e l esecuzione continua con il comando successivo al while Terminologia: il comando viene chiamato corpo del while La condizione contiene una variabile: fate attenzione che la variabile sia inizializzata prima del ciclo, testata all'interno della condizione e modificata all'interno del corpo del while.
Comando while: esercizi Scrivere un programma che prende in input un numero intero n e stampa n asterischi Scrivere un programma che calcola il fattoriale di un numero intero n (0! = 1; n! = 1*2*... *n) Scrivere un programma che chiede in input un numero: se è positivo lo stampa, se è negativo o nullo lo rifiuta e ne chiede un altro. Il ciclo termina quando l'utente immette un numero valido Scrivere un programma che interroga uno studente sulla divisibilità: prende in input un numero intero e chiede allo studente di inserirne un divisore. Il programma termina solo quando lo studente inserisce un divisore corretto.
Comando do while do comando while(condizione); Semantica: viene eseguito il comando e in seguito la condizione viene testata se è vera, il comando viene ripetuto se è falsa si esce dal ciclo e l esecuzione continua con il comando successivo al while Terminologia: il comando viene chiamato corpo del do while Osservazione: il corpo del do while viene eseguito almeno una volta anche nel caso in cui la condizione sia falsa.
Comando do while: esercizi Provare a riscrivere i programmi precedenti usando un do while In quale dei casi la scrittura del programma risulta semplificata? E in quali casi si complica?
Comando do while: commento Il do while risulta più comodo quando il corpo del ciclo deve essere eseguito almeno una volta Esempio: ciclo di input, che chiede l'input e lo richiede nel caso non rispetti le condizioni specificate Comunque tutti i programmi che possono essere scritti col while possono essere scritti col do while e viceversa
Comando for: reminder for ( assegnamento iniziale; condizione; aggiornamento ) comando Semantica: viene eseguito l'assegnamento iniziale viene testata la condizione di ripetizione del ciclo: se è vera viene eseguito il comando, seguito dall'aggiornamento e poi il ciclo ricomincia dal test sulla condizione se è falsa si esce dal for Terminologia: il comando viene chiamato corpo del for Le tre espressioni tra parentesi corrispondono ad operazioni sulla variabile di controllo del ciclo che sono comuni anche al while.
Comando for: esercizi Provare a riscrivere i programmi precedenti usando un for In quale dei casi la scrittura del programma risulta semplificata? E in quali casi si complica?
Comando for: commento Il for risulta più comodo quando l'assegnamento iniziale e l'aggiornamento sono assegnamenti Esempio: assegnamento iniziale i = 0 e aggiornamento i = i + 1 In altri linguaggi il for può avere assegnamenti iniziali e aggiornamenti solo di questa forma, il C++ consente più libertà, il C+o no Storicamente il for poteva essere usato solo per cicli il cui numero di iterazioni era noto a priori, altrimenti si doveva usare il while o il do while for i = 1 to 10 do comando Rispettate questa convenzione, se no potreste indispettire gli informatici più tradizionalisti In C++ tutti i programmi che possono essere scritti col while possono essere scritti col for e viceversa: questo non vale in tutti i linguaggi
Cicli annidati Spesso può essere utile usare un ciclo dentro l'altro Ad ogni iterazione del ciclo esterno corrispondono 0 o più iterazioni del ciclo interno Fate attenzione a Non mischiare le variabili di controllo dei 2 cicli Ripristinare i valori di inizializzazione del ciclo interno ad ogni iterazione del ciclo esterno Si possono anche annidare più livelli di cicli
Cicli annidati: esercizio Scrivere un programma che stampa un triangolo isoscele dell altezza desiderata presa in input. Ad esempio, se l'altezza è 4 stampa: * *** ***** *******
Cicli annidati: esercizi Scrivere un programma che chiede all'utente dei numeri interi e scrive se sono primi o non primi. Il programma termina quando l'utente inserisce il numero 0 Scrivere un programma che stampa la tabella delle tabelline da 1 a 10
Programmi che non terminano I programmi scritti senza comandi iterativi (e senza altre cose che vedremo in seguito, quali la ricorsione) terminano sempre Eventualmente terminano a causa di un errore Usando i comandi iterativi possiamo scrivere programmi che non terminano while (true) cout << Hello ; Raramente si desidera scrivere un programma che non termina, verificate che i vostri programmi terminino
Programmi che non terminano: esercizio Il programma seguente termina? int main() { int i; cout << Inserire un numero intero: ; cin >> i; while(i < 100) { cout << i << \n ; i = i * 2; } }