• Non ci sono risultati.

Programmazione Procedurale in Linguaggio C++

N/A
N/A
Protected

Academic year: 2021

Condividi "Programmazione Procedurale in Linguaggio C++"

Copied!
12
0
0

Testo completo

(1)

G. Mecca – mecca@unibas.it – Università della Basilicata

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 - Programmazione Procedurale in Linguaggio C++ 2

Sommario

m

Introduzione

m

Istruzione if-then-else

m

Istruzione if-then

m

Istruzioni Condizionali Nidificate

m

Esercizio: Riconoscimento di Triangoli

Strutture di Controllo: Istruzioni Condizionali >> Sommario

(2)

G. Mecca - Programmazione Procedurale in Linguaggio C++ 3

Introduzione

m

Istruzione if-then-else

ðesecuzione di blocco di codice oppure di un altro a seconda che una condizione sia vera o falsa

m

Istruzione if-then

ðesecuzione di un blocco di codice se la condizione è vera

ðaltrimenti nessun effetto

Strutture di Controllo: Istruzioni Condizionali >> Introduzione

G. Mecca - Programmazione Procedurale in Linguaggio C++ 4

Istruzione if-then-else

m

Sintassi:

if (<condizione>)

<blocco1>

else

<blocco2>

m

Dove

ð<condizione> è una espressione con valore booleano

ð<blocco1> e <blocco2> blocchi di istruzioni

Strutture di Controllo: Istruzioni Condizionali >> Istruzione if-then-else

(3)

G. Mecca - Programmazione Procedurale in Linguaggio C++ 5

Istruzione if-then-else

m

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

Strutture di Controllo: Istruzioni Condizionali >> Istruzione if-then-else

G. Mecca - Programmazione Procedurale in Linguaggio C++ 6

Esempio n.1

int a;

cin >> a;

if ((a

%

2) == 0) {

cout << “il numero e’ pari”;

} else {

cout << “il numero e’ dispari”;

}

cout << “Fine”;

Strutture di Controllo: Istruzioni Condizionali >> Istruzione if-then-else

istruzione precedente istruzione if-then-else

istruzione successiva

(4)

G. Mecca - Programmazione Procedurale in Linguaggio C++ 7

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”;

Strutture di Controllo: Istruzioni Condizionali >> Istruzione if-then-else

G. Mecca - Programmazione Procedurale in Linguaggio C++ 8

Esempio n.3

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-”;

Strutture di Controllo: Istruzioni Condizionali >> Istruzione if-then-else Caso a:

-Fine- Media: 24 72 3

Inserisci somma e num. es.

Flusso di esecuzione:

1-2-3-4-condizione-6-7-11 Caso b:

-Fine- Errore 100 -3

Inserisci somma e num. es.

Flusso di esecuzione:

1-2-3-4-condizione-9-11

(5)

G. Mecca - Programmazione Procedurale in Linguaggio C++ 9

Istruzione if-then

m

Sintassi

if (<condizione>)

<blocco>

m

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 (NON viene eseguita alcuna istruzione)

Strutture di Controllo: Istruzioni Condizionali >> Istruzione if-then

G. Mecca - Programmazione Procedurale in Linguaggio C++ 10

Istruzione if-then

m

Esempio:

int a;

cout << “Immetti un numero positivo” << endl;

cin >> a;

if (a < 0 ) { a = abs(a);

}

cout << “Radice quadrata: “ << sqrt(a);

Strutture di Controllo: Istruzioni Condizionali >> Istruzione if-then

se il valore di a è positivo non è necessario effettuare alcuna operazione

(6)

G. Mecca - Programmazione Procedurale in Linguaggio C++ 11

Istruzione Condizionali Nidificate

m

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

m

Analogo

ðè come se gli if interni facessero il “nido” in quelli esterni

Strutture di Controllo: Istruzioni Condizionali >> Nidificazione

G. Mecca - Programmazione Procedurale in Linguaggio C++ 12

Istruzione Condizionali Nidificate

m

Semantica

ðdeve essere interpretata in modo 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

Strutture di Controllo: Istruzioni Condizionali >> Nidificazione

(7)

G. Mecca - Programmazione Procedurale in Linguaggio C++ 13

Istruzione Condizionali Nidificate

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;

Strutture di Controllo: Istruzioni Condizionali >> Nidificazione

if esterno if interno

G. Mecca - Programmazione Procedurale in Linguaggio C++ 14

Istruzione Condizionali Nidificate

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;

Strutture di Controllo: Istruzioni Condizionali >> Nidificazione Caso a:

Differenza: 3 7 4

Flusso di esecuzione:

1-2-3-cond(T)-5-6-15 Caso b:

Flusso di esecuzione:

1-2-3-cond(F)-7-cond(T)-9-13-15 Caso c:

Flusso di esecuzione:

1-2-3-cond(F)-7-cond(F)-10- 11-13-15

a maggiore di b

Differenza: 28 6 34

b maggiore di a

Differenza: 0 7 7

a e b sono uguali

(8)

G. Mecca - Programmazione Procedurale in Linguaggio C++ 15

Esercizio: Riconoscimento di Triangoli

m

Problema:

ðdate le lunghezze dei lati di un triangolo riconoscere e stampare di che tipo di triangolo si tratta (isoscele, equilatero o scaleno)

m

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)

Strutture di Controllo: Istruzioni Condizionali >> Esercizio

G. Mecca - Programmazione Procedurale in Linguaggio C++ 16

Esercizio: Riconoscimento di Triangoli

m

Scelta dell’algoritmo

ðI passo: strategia di rappresentazione dei dati ðII passo: strategia di operazioni

m

Strategia di rappresentazione

ðlunghezze dei lati a,b,c: variabili float a,b,c

m

Strategia di operazioni

ðacquisisco le lunghezze dei lati

ðverifico se il tr. è equilatero; altrimenti verifico se il tr.

è isoscele; altrimenti il tr. è scaleno

Strutture di Controllo: Istruzioni Condizionali >> Esercizio

>>> scrittura del programma

(9)

G. Mecca - Programmazione Procedurale in Linguaggio C++ 17

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;

} } }

Strutture di Controllo: Istruzioni Condizionali >> Esercizio

G. Mecca - Programmazione Procedurale in Linguaggio C++ 18

Esercizio a Casa: Volo dello Shuttle

m

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

m

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

Strutture di Controllo: Istruzioni Condizionali >> Esercizio

(10)

G. Mecca - Programmazione Procedurale in Linguaggio C++ 19

Esercizio a Casa: Volo dello Shuttle

m

Attenzione

ðper ora per semplicità trascuriamo il controllo degli errori

ðpossiamo supporre che l’utente digiti dati corretti

ðaltrimenti il programma si allungherebbe eccessivamente

m

Inoltre

ðevitare il controllo delle date

Strutture di Controllo: Istruzioni Condizionali >> Esercizio

G. Mecca - Programmazione Procedurale in Linguaggio C++ 20

Riassumendo

m

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

m

Nidificazione

Strutture di Controllo: Istruzioni Condizionali >> Sommario

(11)

G. Mecca - Programmazione Procedurale in Linguaggio C++ 21

Un Esempio: Media con For

#include <iostream.h>

void main() {

int voto, sommaVoti;

float media;

int numeroEsami, i;

cout << "Quanti esami hai sostenuto ?" << endl;

cin >> numeroEsami;

sommaVoti = 0;

for (i = 0; i < numeroEsami; i++) {

cout << "Immetti il voto di un esame" << endl;

cin >> voto;

sommaVoti += voto;

}

if (numeroEsami > 0) {

media = ((float)sommaVoti) / numeroEsami;

cout << "La media vale: " << media << endl;

} else

cout << "Non hai fornito nessun voto" << endl;

}

Strutture di Controllo >> Un Esempio

G. Mecca - Programmazione Procedurale in Linguaggio C++ 22

Un Esempio: Media con While

#include <iostream.h>

void main() {

int voto, sommaVoti, numeroEsami;

float media;

bool continua;

continua = true;

numeroEsami = 0;

sommaVoti = 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 = ((float)sommaVoti) / numeroEsami;

cout << "La media vale: " << media << endl;

} else {

cout << "Non hai fornito nessun voto" << endl;

} }

Strutture di Controllo >> Un Esempio

(12)

G. Mecca - Programmazione Procedurale in Linguaggio C++ 23

Ringraziamenti

m 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.

Ringraziamenti

G. Mecca - Programmazione Procedurale in Linguaggio C++ 24

Termini della Licenza

m 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.

Termini della Licenza

m 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.

Riferimenti

Documenti correlati

Concetti Introduttivi: Linguaggi &gt;&gt; Ciclo di Vita di un Programma.. Mecca - Programmazione Procedurale in Linguaggio

Strutture di Controllo: Conclusioni &gt;&gt; Convenzioni di Stile.. Mecca - Programmazione Procedurale in Linguaggio C++ 11. Convenzioni

il sottoprogramma lavora su tre dati di tipo float chiamati a,b,c attraverso cui è possibile modificare i corrispondenti argomenti. istruzione

ðil numero e il tipo degli argomenti (1 argomento di tipo double) &gt;&gt; parametri ðil tipo del risultato restituito (double). m Intestazione di

ðDefinizione di Funzioni ðDefinizione di Procedure ðChiamata di Funzioni ðChiamata di Procedure ðPassaggio dei Parametri ðProgrammazione Modulare. Termini

Strutture di Dati: Lista &gt;&gt; Rappresentazione con Record e Array. ATTENZIONE ai

Strutture di Dati: Lista &gt;&gt; Inserimenti e Cancellazioni. Mecca - Programmazione Procedurale in Linguaggio

Strutture di Dati: Lista &gt;&gt; Gestione dei File. i conta il numero di valori prelevati dal