7. Strutture di controllo Informatica per l’Ingegneria- CDL in Ingegneria Informatica- A.A. 2016-2017
Istruzioni di selezione Istruzioni cicliche (di iterazione) Indice Istruzioni di selezione Sostituibili dal costrutto elseif, switch Istruzioni cicliche (di iterazione) Sostituibili dal costrutto for Informatica per l’Ingegneria- CDL in Ingegneria Informatica- A.A. 2016-2017
Programmazione strutturata TEOREMA DI BOHM-JACOPINI: tutti i programmi possono essere scritti con l’utilizzo delle sole strutture di controllo: sequenza, selezione e iterazione (senza l’uso del salto goto) Le strutture di controllo consentite sono quelle di selezione(if-else) e iterazione (while) Informatica per l’Ingegneria- CDL in Ingegneria Informatica- A.A. 2016-2017
Istruzioni di selezione: Il costrutto elseif istruzione di selezione a più vie (se l’else include ulteriori condizioni) Sintassi : if condizione 1 istruzione1 elseif condizione2 istruzione2 else istruzione3 end Regole: l’else si può omettere in assenza di un blocco in corrispondenza di istruzione3 falso vero Condizione1 falso vero Condizione2 istruzione1 istruzione3 istruzione2 Informatica per l’Ingegneria- CDL in Ingegneria Informatica- A.A. 2016-2017
Costrutto elseif: esempio if j<i fprintf('-'); elseif j==i fprintf('*'); else fprintf('+'); end falso j < i vero falso j =i vero - + * Informatica per l’Ingegneria- CDL in Ingegneria Informatica- A.A. 2016-2017
Istruzioni di selezione: il costrutto switch (1) istruzione di selezione a più vie auto esclusive (se l’else non è uno solo) consente la scelta di un’istruzione tra altre sulla base del valore di una particolare espressione di input (scalare o stringa) Sintassi: switch input case valore1 istruzioni1 case valore2 istruzioni2 ……. otherwise istruzioniN end Regole: clausola otherwise facoltativa ogni valore di case su una riga distinta del programma In caso di espressione di input scalare simula il costrutto if input ==valore1 istruzioni1 elseif input ==valore2 istruzioni2 else istruzioniN end vero falso input ==valore1 input ==valore2 falso vero istruzioni1 istruzioniN istruzioni2 Informatica per l’Ingegneria- CDL in Ingegneria Informatica- A.A. 2016-2017
Costrutto switch: esempio Immettere una scelta valore=input(‘Immettere una scelta’) switch valore case 1 disp(‘Caso1’) case 2 disp(‘Caso2’) case 3 disp(‘Caso3’) end valore falso vero valore ==1 vero falso valore==2 Caso 1 falso valore==3 vero Caso 2 Caso 3 Informatica per l’Ingegneria- CDL in Ingegneria Informatica- A.A. 2016-2017
Istruzioni cicliche: il ciclo for Nei cicli a conteggio (numero di passaggi noti in anticipo) invece di: VariabileDiCiclo = ValoreIniziale while VariabileDiConteggio <= ValoreFinale [Sequenza di istruzioni da ripetere] VariabileDiConteggio = VariabileDiConteggio + Incremento end Usare: for VariabileDiCiclo = ValoreIniziale:Incremento:ValoreFinale [Sequenza di istruzioni da ripetere] Informatica per l’Ingegneria- CDL in Ingegneria Informatica- A.A. 2016-2017
Ciclo for: regole Considerazioni su VariabileDiCiclo= ValoreIniziale : Incremento : ValoreFinale Incremento può essere negativo vale +1 in caso di omissione se positivo, il ciclo viene interrotto quando VariabileDiCiclo >ValoreFinale se negativo, il ciclo viene interrotto quando VariabileDiCiclo<ValoreFinale Informatica per l’Ingegneria- CDL in Ingegneria Informatica- A.A. 2016-2017
s=0 for i=0:1:10 n=input(‘Inserire un numero’) s=s+n end Ciclo for : esempio 1 si può omettere s=0 for i=0:1:10 n=input(‘Inserire un numero’) s=s+n end s 0 i 0 falso i < 10 vero n s s + n i i + 1 Informatica per l’Ingegneria- CDL in Ingegneria Informatica- A.A. 2016-2017
Le istruzioni break e continue break interrompe l’esecuzione di un ciclo Esempio for k = 1:10 x=50-k^2 if x<0 break end y=sqrt(x) continue provoca l’interruzione della corrente iterazione del ciclo e il passaggio all’iterazione successiva x=input(‘Inserire un intero’) continue Il break, utilizzato in un costrutto if, mappa un salto condizionato: meglio codificare con while k = 1 while k<10 & x>=0 x=50-k^2 if x>=0 y=sqrt(x) end k=k+1 Il continue può essere evitato modellando meglio le condizioni for k = 1:10 x=input(‘Inserire un intero’) if x>=0 y=sqrt(x) end Informatica per l’Ingegneria- CDL in Ingegneria Informatica- A.A. 2016-2017
Scrivere un programma che consenta la scelta tra le seguenti opzioni: Esercizi Scrivere un programma che consenta la scelta tra le seguenti opzioni: Calcolo del massimo e del minimo di una sequenza di N numeri, con N letto da tastiera Calcolo della media di una sequenza di N numeri, con N letto da tastiera Calcolo di una potenza, data la base e l’esponente, entrambi letti da tastiera Scrivere un programma che consenta la scelta tra le opzioni dell’esercizio 1 in maniera ripetuta (finchè l’utente non desidera terminare il programma) Informatica per l’Ingegneria- CDL in Ingegneria Informatica- A.A. 2016-2017