Programmazione Procedurale in
Linguaggio C++
Strutture di Controllo
Parte 1
Introduzione
versione 2.0
Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons
(vedi ultima pagina)
G. Mecca – Università della Basilicata – [email protected]
Strutture di Controllo: Introduzione >> Sommario
Sommario
 Panoramica
 Un
Esempio
Calcolo della Media degli Esami con While
Calcolo della Media degli Esami con For
 Concetti
Fondamentali
Condizione
Blocco
Classificazione delle Strutture di Controllo
G. Mecca - Programmazione Procedurale in Linguaggio C++
2
Strutture di Controllo: Introduzione >> Panoramica
Panoramica
 Finora:
elementi di base
funzionamento analogo a quello della
calcolatrice
esecuzione “sequenziale”
 In
realtà
i linguaggi di programmazione sono molto
più flessibili
è possibile alterare il “flusso” di esecuzione
delle istruzioni sulla base di “condizioni”
G. Mecca - Programmazione Procedurale in Linguaggio C++
3
Strutture di Controllo: Introduzione >> Panoramica
Panoramica
 Strutture
di Controllo
istruzioni per eseguire o meno una porzione
di programma
oppure per ripetere più volte l’esecuzione di
una porzione di programma
a seconda che una opportuna condizione sia
verificata o meno
G. Mecca - Programmazione Procedurale in Linguaggio C++
4
Strutture di Controllo: Introduzione >> Panoramica
Panoramica
 Esempio
questa porzione di programma
deve essere eseguita solo
se il valore della variabile
raggio è positivo
const float pigreco=3.14;
int raggio;
float circonf, cerchio;
cout << “Inserisci il val. del raggio” << endl;
cin >> raggio;
if (raggio > 0) {
cerchio = raggio*raggio*pigreco;
circonf = 2*pigreco*raggio;
cout << “Circonferenza: “ << circonf << endl;
cout << “Cerchio: “ << cerchio << endl;
} else
cout << “Errore”;
G. Mecca - Programmazione Procedurale in Linguaggio C++
5
Strutture di Controllo: Introduzione >> Panoramica
Panoramica
 In
generale, una struttura di controllo è
una istruzione come le altre
con una forma particolare
contiene una condizione
e uno o più “blocchi” di istruzioni
 Intuitivamente
il valore della condizione guida l’esecuzione
dei blocchi di istruzioni
G. Mecca - Programmazione Procedurale in Linguaggio C++
6
Strutture di Controllo: Introduzione >> Un Esempio
Un Esempio
 Un
programma per il calcolo della media
degli esami
 Due versioni
l’utente inserisce preliminarmente il numero
di esami sostenuti, e poi tutti i voti (versione
con for)
l’utente inserisce i voti uno per uno e si ferma
digitando 0 (versione con while)
G. Mecca - Programmazione Procedurale in Linguaggio C++
7
Strutture di Controllo: Introduzione >> Un Esempio
Un Esempio
 Utilizzo
delle strutture di controllo
è necessario ripetere le operazioni di
acquisizione ed elaborazione dei voti
è necessario distinguere il caso in cui è
possibile calcolare la media (è stato fornito
almeno un voto) dal caso in cui non sono
stati forniti voti
G. Mecca - Programmazione Procedurale in Linguaggio C++
8
Strutture di Controllo: Introduzione >> Un Esempio
Un Esempio: Media con For
#include <iostream.h>
>> mediafor.cpp
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++
9
Strutture di Controllo: Introduzione >> Un Esempio
Un Esempio: Media con While
#include <iostream.h>
>> mediaWhile.cpp
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++
10
Strutture di Controllo: Introduzione >> Concetti Fondamentali
Concetti Fondamentali
 Due
componenti fondamentali
condizione
uno o più blocchi di istruzioni
 Due
tipologie di strutture di controllo
istruzioni condizionali
istruzione iterative o “cicli”
con una semantica diversa
G. Mecca - Programmazione Procedurale in Linguaggio C++
11
Strutture di Controllo: Introduzione >> Concetti Fondamentali
Condizione
 Condizione
espressione che assume valori booleani
(true o false)
Es: raggio < 0
Es: (annoCorso == 3) && (media > 28)
la sintassi e la semantica sono state già
discusse
servono a controllare se durante l’esec. del
prog. si verificano opportune circostanze
G. Mecca - Programmazione Procedurale in Linguaggio C++
12
Strutture di Controllo: Introduzione >> Concetti Fondamentali
Blocco
 Blocco
sequenza di istruzioni tra parentesi graffe
Es: {
{
int a;
a = 1;
cout << a;
}
cout << “Prova”;
cout << “endl;
}
{
a++; }
{ }
 Attenzione
tutte le istruzioni si concludono con ;
non c’è il ; dopo le parentesi
G. Mecca - Programmazione Procedurale in Linguaggio C++
13
Strutture di Controllo: Introduzione >> Concetti Fondamentali
Blocco
 Sintatticamente
un blocco fatto di un’unica istruzione può
essere scritto anche senza parentesi
es: { a=a+1; } equivalente a a=a+1;
 Nel
seguito, dovunque la sintassi prevede
un blocco può esserci:
un blocco di istruzioni (una o più) tra { }
una istruzione singola (senza parentesi { })
MA: noi metteremo sempre le parentesi (>>)
G. Mecca - Programmazione Procedurale in Linguaggio C++
14
Strutture di Controllo: Introduzione >> Concetti Fondamentali
Classificazione delle Str. di Controllo
 Strutture
condizionali
if (<condizione>)
<blocco1>
else
<blocco2>
consentono di eseguire un blocco di
istruzioni oppure un’altro
a seconda del valore vero o falso della
condizione
G. Mecca - Programmazione Procedurale in Linguaggio C++
15
Strutture di Controllo: Introduzione >> Concetti Fondamentali
Schema di Esecuzione
programma
istruzioni precedenti
if
vera
condizione
blocco1
falsa
blocco2
istruzioni successive
G. Mecca - Programmazione Procedurale in Linguaggio C++
16
Strutture di Controllo: Introduzione >> Concetti Fondamentali
Classificazione delle Str. di Controllo
 Strutture
iterative o Cicli: due forme
while (<condizione>)
<blocco>
for (<espressioni>)
<blocco>
consentono di ripetere l’esecuzione di un
blocco di istruzioni più volte
finché la condizione è verificata
G. Mecca - Programmazione Procedurale in Linguaggio C++
17
Strutture di Controllo: Introduzione >> Concetti Fondamentali
Schema di Esecuzione del Ciclo
programma
istruzioni precedenti
ciclo
(while o for)
condizione
blocco
istruzioni successive
G. Mecca - Programmazione Procedurale in Linguaggio C++
18
Strutture di Controllo: Introduzione >> Concetti Fondamentali
Classificazione delle Str. di Controllo
 Esistono
in tutti i linguaggi
sono componenti fondamentali della
programmazione
ci sono sia in C/C++ che in FORTRAN
 Al
solito
notevoli differenze sintattiche
semantica pressoché identica
G. Mecca - Programmazione Procedurale in Linguaggio C++
19
Strutture di Controllo: Introduzione >> Sommario
Riassumendo
 Un
Esempio
Calcolo della Media degli Esami con While
Calcolo della Media degli Esami con For
 Strutture
di Controllo
Condizione
Blocco
Classificazione delle Strutture di Controllo
G. Mecca - Programmazione Procedurale in Linguaggio C++
20
Ringraziamenti
Ringraziamenti

Parte del materiale di questa lezione è stato sviluppato con la
collaborazione della Dott.ssa Maria Samela
([email protected]), a cui va il mio ringraziamento.
G. Mecca - Programmazione Procedurale in Linguaggio C++
21
Termini della Licenza
Termini della Licenza

This work is licensed under the Creative Commons AttributionShareAlike 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++
22
Scarica

Programmazione Procedurale in Linguaggio C++