1 / 24

Programmazione Procedurale in Linguaggio C++

Programmazione Procedurale in Linguaggio C++. Strutture di Controllo Parte 2 Istruzioni Condizionali. versione 2.0. Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina). Strutture di Controllo: Istruzioni Condizionali >> Sommario.

Download Presentation

Programmazione Procedurale in Linguaggio C++

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Programmazione Procedurale in Linguaggio C++ Strutture di Controllo Parte 2 Istruzioni Condizionali versione 2.0 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina) G. Mecca – mecca@unibas.it – Università della Basilicata

  2. Strutture di Controllo: Istruzioni Condizionali >> Sommario Sommario • Introduzione • Istruzione if-then-else • Istruzione if-then • Istruzioni Condizionali Nidificate • Esercizio: Riconoscimento di Triangoli G. Mecca - Programmazione Procedurale in Linguaggio C++

  3. Strutture di Controllo: Istruzioni Condizionali >> Introduzione Introduzione • Istruzione if-then-else • esecuzione di blocco di codice oppure di un’altro a seconda che una condizione sia vera o falsa • Istruzione if-then • esecuzione di un blocco di codice se la condizione è vera • altrimenti nessun effetto G. Mecca - Programmazione Procedurale in Linguaggio C++

  4. Strutture di Controllo: Istruzioni Condizionali >> Istruzione if-then-else Istruzione if-then-else • Sintassi: if (<condizione>) <blocco1> else <blocco2> • Dove • <condizione> è una espressione con valore booleano • <blocco1> e <blocco2> blocchi di istruzioni G. Mecca - Programmazione Procedurale in Linguaggio C++

  5. Strutture di Controllo: Istruzioni Condizionali >> Istruzione if-then-else Istruzione if-then-else • Semantica • viene valutato il valore della <condizione> • se il valore dell’espressione è true si esegue <blocco1> • se il valore dell’espressione è false si esegue <blocco2> • in entrambi i casi l’esecuzione procede con l’istruzione immediatamente successiva G. Mecca - Programmazione Procedurale in Linguaggio C++

  6. Strutture di Controllo: Istruzioni Condizionali >> Istruzione if-then-else Esempio n.1 istruzione precedente istruzione if-then-else istruzione successiva int a; cin >> a; if ((a % 2) == 0) { cout << “il numero e’ pari”; } else { cout << “il numero e’ dispari”; } cout << “Fine”; G. Mecca - Programmazione Procedurale in Linguaggio C++

  7. Strutture di Controllo: Istruzioni Condizionali >> Istruzione if-then-else Esempio n.2 int a, b; cin >> a; cin >> b; if (a > b) { cout << “a maggiore di b ”; cout << “Valore di a:” << a; } else { cout << “a non e’ maggiore di b ”; cout << “Valore di b:” << b; } cout << “Fine”; G. Mecca - Programmazione Procedurale in Linguaggio C++

  8. Strutture di Controllo: Istruzioni Condizionali >> Istruzione if-then-else Caso a: Esempio n.3 Inserisci somma e num. es. 72 3 Media: 24 1. float sommaVoti, numeroEsami, media; 2. cout << “Inserisci somma e num. es.” << endl; 3. cin >> sommaVoti; 4. cin >> numeroEsami; 5. if (numeroEsami>0) { 6. media = sommaVoti/numeroEsami; 7. cout << “Media: ” << media; 8. } else { 9. cout << “Errore”; 10. } 11. cout << “-Fine-”; -Fine- Flusso di esecuzione: 1-2-3-4-condizione-6-7-11 Caso b: Inserisci somma e num. es. 100 -3 Errore -Fine- Flusso di esecuzione: 1-2-3-4-condizione-9-11 G. Mecca - Programmazione Procedurale in Linguaggio C++

  9. Strutture di Controllo: Istruzioni Condizionali >> Istruzione if-then Istruzione if-then • Sintassi if (<condizione>) <blocco> • Semantica • viene valutata la condizione • se la condizione è vera viene eseguito il blocco e poi si prosegue con l’istr. successiva • se la condizione è falsa si prosegue direttamente con l’istruzione successiva G. Mecca - Programmazione Procedurale in Linguaggio C++

  10. Strutture di Controllo: Istruzioni Condizionali >> Istruzione if-then Istruzione if-then • Esempio: int a; cout << “Immetti un numero positivo” << endl; cin >> a; if (a < 0 ) { a = abs(a); } cout << “Radice quadrata: “ << sqrt(a); se il valore di a è positivo non è necessario effettuare alcuna operazione G. Mecca - Programmazione Procedurale in Linguaggio C++

  11. Strutture di Controllo: Istruzioni Condizionali >> Nidificazione Istruzione Condizionali Nidificate • Nidificazione • le istruzioni che seguono l’if e/o l’else possono essere istruzioni qualsiasi • in particolare, possono essere a loro volta istruzioni condizionali • il processo può essere ripetuto a molti livelli • Analogo • è come se gli if interni facessero il “nido” in quelli esterni G. Mecca - Programmazione Procedurale in Linguaggio C++

  12. Strutture di Controllo: Istruzioni Condizionali >> Nidificazione Istruzione Condizionali Nidificate • Come deve essere interpretata la semantica ? • in modo del tutto ordinario • ciascuna istruzione condizionale viene eseguita secondo la sua semantica • bisogna solo fare attenzione al modo in cui vengono valutate le condizioni ed alla sequenza delle scelte G. Mecca - Programmazione Procedurale in Linguaggio C++

  13. Strutture di Controllo: Istruzioni Condizionali >> Nidificazione Istruzione Condizionali Nidificate if esterno if interno int a, b, differenza; cin >> a; cin >> b; if (a > b) { cout << “a maggiore di b” << endl; differenza = a - b; } else { if (b > a) { cout << “b e’ maggiore di a” << endl; } else { cout << “a e b sono uguali” << endl; } differenza = b - a; } cout << “Differenza: ” << differenza << endl; G. Mecca - Programmazione Procedurale in Linguaggio C++

  14. Strutture di Controllo: Istruzioni Condizionali >> Nidificazione Caso a: Istruzione Condizionali Nidificate 7 4 a maggiore di b Differenza: 3 Flusso di esecuzione: 1-2-3-cond(T)-5-6-15 1. int a, b, differenza; 2. cin >> a; 3. cin >> b; 4. if (a > b) { 5. cout << “a maggiore di b” << endl; 6. differenza = a - b; 7. } else { 8. if (b > a) { 9. cout << “b maggiore di a”; 10. } else { 11. cout << “a e b sono uguali”; 12. } 13. differenza = b - a; 14. } 15. cout << “Differenza: ” << differenza; Caso b: 6 34 b maggiore di a Differenza: 28 Flusso di esecuzione: 1-2-3-cond(F)-7-cond(T)-9-13-15 Caso c: 7 7 a e b sono uguali Differenza: 0 Flusso di esecuzione: 1-2-3-cond(F)-7-cond(F)-10- 11-13-15 G. Mecca - Programmazione Procedurale in Linguaggio C++

  15. Strutture di Controllo: Istruzioni Condizionali >> Esercizio Esercizio: Riconoscimento di Triangoli • Problema: • date le lunghezze dei lati di un triangolo riconoscere e stampare di che tipo di triangolo si tratta (isoscele, equilatero o scaleno) • Analisi delle Specifiche: • dati in ingresso: le lunghezze a, b, c dei lati • dati in uscita: uno dei seguenti messaggi • “Triangolo equilatero” • “Triangolo isoscele” • “Triangolo scaleno” • in generale bisogna anche eliminare le ambiguità (es: condizioni di errore) G. Mecca - Programmazione Procedurale in Linguaggio C++

  16. Strutture di Controllo: Istruzioni Condizionali >> Esercizio Esercizio: Riconoscimento di Triangoli • Scelta dell’algoritmo • I passo: strategia di rappresentazione dei dati • II passo: strategia di operazioni • Strategia di rappresentazione • lunghezze dei lati a,b,c: variabili float a,b,c • Strategia di operazioni • acquisisco le lunghezze dei lati • verifico se il tr. è equilatero; altrimenti verifico se il tr. è isoscele; altrimenti il tr. è scaleno >>> scrittura del programma G. Mecca - Programmazione Procedurale in Linguaggio C++

  17. Strutture di Controllo: Istruzioni Condizionali >> Esercizio Esercizio: Riconoscimento di Triangoli #include <iostream.h> void main(){ float a,b,c; cout << "Immetti i tre lati " << endl; cin >> a; cin >> b; cin >> c; if ((a==b) && (b==c)) { cout << "il triangolo e' equilatero" << endl; } else { if((a==b) || (a==c) || (b==c)) { cout << "il triangolo e' isoscele" << endl; } else { cout << "il triangolo e' scaleno" << endl; } } } G. Mecca - Programmazione Procedurale in Linguaggio C++

  18. Strutture di Controllo: Istruzioni Condizionali >> Esercizio Esercizio a Casa: Volo dello Shuttle • Problema: • uno shuttle decolla alle ore X, minuti Y, secondi Z del giorno 1 gennaio 2002 • lo shuttle sta in volo X1 ore, Y1 minuti, Z1 secondi (per un totale di meno di 24 ore) e poi atterra • dato l’orario di decollo X:Y:Z, e il tempo di volo X1:Y1:Z1, calcolare la data e l’ora di atterraggio • Esempio • decollo alle ore 18:40:10 del 1 gennaio 2002 • tempo di volo pari a 20:40:15 • atterraggio il 2 gennaio 2002 alle ore 15:20:25 G. Mecca - Programmazione Procedurale in Linguaggio C++

  19. Strutture di Controllo: Istruzioni Condizionali >> Esercizio Esercizio a Casa: Volo dello Shuttle • Attenzione • per ora per semplicità trascuriamo il controllo degli errori • possiamo supporre che l’utente digiti dati corretti • altrimenti il programma si allungherebbe eccessivamente • Inoltre • evitare il controllo delle date G. Mecca - Programmazione Procedurale in Linguaggio C++

  20. Strutture di Controllo: Istruzioni Condizionali >> Sommario Riassumendo • Istruzioni Condizionali • servono a controllare l’esecuzione dei blocchi del programma sulla base di condizioni • condizione: espressione vera o falsa • due forme: if-then-else, if-then • Nidificazione • attenzione ai riferimenti G. Mecca - Programmazione Procedurale in Linguaggio C++

  21. Strutture di Controllo >> Un Esempio Un Esempio: Media con For #include <iostream.h> void main() { float voto, sommaVoti, media; int numeroEsami, i; cout << "Quanti esami hai sostenuto ?" << endl; cin >> numeroEsami; sommaVoti = 0.0; for (i=0; i<numeroEsami; i++) { cout << "Immetti il voto di un esame" << endl; cin >> voto; sommaVoti += voto; } if (numeroEsami > 0) { media = sommaVoti/numeroEsami; cout << "La media vale: " << media << endl; } else { cout << "Non hai fornito nessun voto" << endl; } } G. Mecca - Programmazione Procedurale in Linguaggio C++

  22. Strutture di Controllo >> Un Esempio Un Esempio: Media con While #include <iostream.h> void main() { float voto, sommaVoti, media; int numeroEsami; bool continua; continua = true; numeroEsami = 0; sommaVoti = 0.0; while (continua == true) { cout << "Immetti il voto (0 per fermarti)" << endl; cin >> voto; if (voto == 0) { continua = false; } else { numeroEsami++; sommaVoti += voto; } } if (numeroEsami > 0) { media = sommaVoti/numeroEsami; cout << "La media vale: " << media << endl; } else { cout << "Non hai fornito nessun voto" << endl; } } G. Mecca - Programmazione Procedurale in Linguaggio C++

  23. Ringraziamenti Ringraziamenti • Parte del materiale di questa lezione è stato sviluppato con la collaborazione della Dott.ssa Maria Samela (mariasamela@tiscali.it), a cui va il mio ringraziamento. G. Mecca - Programmazione Procedurale in Linguaggio C++

  24. Termini della Licenza Termini della Licenza • This work is licensed under the Creative Commons Attribution-ShareAlike License. To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/1.0/ or send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA. • Questo lavoro viene concesso in uso secondo i termini della licenza “Attribution-ShareAlike” di Creative Commons. Per ottenere una copia della licenza, è possibile visitare http://creativecommons.org/licenses/by-sa/1.0/ oppure inviare una lettera all’indirizzo Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA. G. Mecca - Programmazione Procedurale in Linguaggio C++

More Related