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