Corso di Fondamenti di Informatica
Le classi di istruzioni in C++
Claudio De Stefano - Corso di Fondamenti di Informatica
1
Le classi di istruzioni in C++
■
■
■
SEQUENZIALI
–
Statement semplice
–
Statement composto
CONDIZIONALI
–
if < expr.> { } else { }
–
switch <expr.> { case < cost> : .. }
ITERATIVE
–
while <expr.> { }
–
for (..) { }
–
do { } while < expr.>
Claudio De Stefano - Corso di Fondamenti di Informatica
2
Statement Semplici
■
Uno statement semplice può essere :
–
assegnamento
–
espressione
–
chiamata a funzione
Esempio:
main()
{
int x,y,z;
x = - 456; /* assegnamento */
x = x + 1; /* espressione */
z = max(x,y); /* funzione */
}
Claudio De Stefano - Corso di Fondamenti di Informatica
3
Statement Composti
■
Uno statement composto è una sequenza di statement sintatticamente equivalente ad
uno semplice ed è delimitato da parentesi graffe { }
Esempio:
{
a = b + 19;
b = c * 23;
c = c+1;
}
Claudio De Stefano - Corso di Fondamenti di Informatica
4
Costrutti Selettivi - “IF - ELSE”
■
Lo statement “if - else” è usato per prendere delle decisioni all’interno di un programma
Oppure
Sintassi:
if ( espressione )
istruzione;
if ( espressione )
{
istruzione_1;
istruzione_2;
}
if ( espressione )
{
istruzione_1;
istruzione_2;
}
else
{
istruzione_3;
istruzione_4;
}
Claudio De Stefano - Corso di Fondamenti di Informatica
Esempio
■
L’espressione < expr> viene valutata:
se risulta essere TRUE o NON ZERO viene eseguito il set di istruzioni corrispondente.
Esempio:
if ( x > 0 )
{
y = x;
k = 0;
}
else
{
y = 10;
k = -1;
}
Claudio De Stefano - Corso di Fondamenti di Informatica
Esempio
■
Equivalenza tra TRUE e NON ZERO:
if ( x )
/* if ( x!=0) */
{
cout << “X e’ diverso da zero” << endl;
}
else
{
cout << “X e’ uguale a zero” << endl;
}
Claudio De Stefano - Corso di Fondamenti di Informatica
Istruzioni if-else innestate
■
■
L’istruzione if-else può anche essere usata in sequenza costituendo cioè una serie di if
innestati;
occorre comunque fare attenzione ad alcune cose. Ad esempio:
y = 2;
if ( x < 0)
if ( x == -1)
y = 1;
else
y = 0;
z
z
z
y = 2;
if ( x < 0)
if ( x == -1)
y = 1;
else
y = 0;
Che valore assume y se x = -2 ?
Che valore assume y se x = -1 ?
Che valore assume y se x = 7 ?
Claudio De Stefano - Corso di Fondamenti di Informatica
Istruzione if, else-if, else-if, … , else
■
Quando occorre effettuare una scelta plurima è possibile utilizzare questo
costrutto:
if (espressione)
<istruzione/i>
else if (espressione)
<istruzione/i>
else if (espressione)
<istruzione/i>
…
else
<istruzione/i>
Claudio De Stefano - Corso di Fondamenti di Informatica
Esempio
Questo codice riconosce il carattere digitato a video assumendo che i caratteri
possibili si dividono in lettere, cifre e simboli.
cin >> c;
if ( c >= '0' && c <= '9')
cout << "E' una cifra\n";
else if ( c >= 'a' && c <= 'z' )
cout << "E' una lettera minuscola\n";
else if ( c >= 'A' && c <= 'Z' )
cout << "E' una lettera maiuscola\n";
else
cout << "E' un simbolo\n";
Claudio De Stefano - Corso di Fondamenti di Informatica
Esercizi
1. Riscrivere il codice precedente utilizzando al posto delle istruzioni else-if una serie di if
innestati
2. Ampliare il codice precedente prevedendo il riconoscimento anche dei segni di
punteggiatura, delle parentesi e degli operatori aritmetici.
3. Scrivere una funzione che stampa il massimo tra due interi.
Claudio De Stefano - Corso di Fondamenti di Informatica
Operatore Ternario
■
L’operatore ternario è una forma compressa di if-else.
Sintassi:< expr > ? < expr1> : < expr2>;
Se < expr> è vero viene valutato solo < expr1> altrimenti viene valutato <expr2>
■
Esempio:
x = ( y > 0) ? y : x + 1;
è equivalente a
if ( y > 0)
x = y;
else
x = x+1;
Claudio De Stefano - Corso di Fondamenti di Informatica
Esercizi
1. Utilizzando l’operatore ternario riscrivere il programma che stampa il massimo
tra due interi in input.
2. Utilizzando l’operatore ternario scrivere un programma che converte il
carattere di input da maiuscolo a minuscolo e viceversa.
Claudio De Stefano - Corso di Fondamenti di Informatica
Istruzione switch
■
■
L’istruzione switch consente di trasferire l’elaborazione a uno o più statement composti
in funzione della valutazione di una espressione.
Sintassi:
switch ( <expr>)
{
case <cost_1>:
statement;
case <cost_2>:
statement;
case <cost_3>:
statement;
default:
statement;
}
Claudio De Stefano - Corso di Fondamenti di Informatica
Istruzione switch
■
Questa istruzione consente di effettuare delle scelte plurime
■
Può essere usata solo quando le scelte dipendono dal valore assunto da una
espressione
■
Occorre fare attenzione in quanto l’esecuzione delle istruzioni comincia a partire
dall’istruzione corrispondente alla condizione trovata di
espressione = cost_x
e prosegue in maniera SEQUENZIALE fino all’ultima istruzione del costrutto switch.
■
Ciò garantisce una certa flessibilità, ed in particolare la possibilità di associare più
possibilità ad un unica etichetta.
Claudio De Stefano - Corso di Fondamenti di Informatica
Esempio
cin >> c
switch ( c ) {
case '0' :
case '1' :
.....
case '9' :
printf("E' una cifra\n");
case 'a' :
......
case 'z' :
printf("E' una lettera minuscola\n");
case 'A' :
......
case 'Z' :
printf("E' una lettera maiuscola\n");
default :
printf("E' un simbolo\n");
}
Claudio De Stefano - Corso di Fondamenti di Informatica
ATTENZIONE
■
Nel codice precedente c’è un errore !
■
Nel caso di c = ‘1’, l’output del programma sarà:
E’ una cifra
E’ una lettera minuscola
E’ una lettera maiuscola
E’ un simbolo
■
Questo accade in quanto le istruzioni eseguite sono quelle sequenziali a partire dal
primo case soddisfatto.
■
Per evitare ciò occorre utilizzare l’istruzione
break
che consente di forzare l’uscita dal costrutto switch non appena si verifica la condizione:
espressione = cost_x
Claudio De Stefano - Corso di Fondamenti di Informatica
Istruzione “while”
■
L’istruzione while permette di eseguire una serie di istruzioni fintanto che una
condizione iniziale rimane TRUE.
Sintassi:
while ( <expr> )
{
statement;
}
Claudio De Stefano - Corso di Fondamenti di Informatica
Esempio
a = 1;
while ( a <= 100) {
total += a*a;
a += 1;
}
a = 1;
while ( a++ <= 100)
total += a*a;
Claudio De Stefano - Corso di Fondamenti di Informatica
Istruzione “for”
■
L’istruzione for è molto simile al while precedente.
Sintassi:
for ( < inizializza var>; <expr>; <upd var>) {
statement;
}
™Equivalente
alla struttura seguente che utilizza while:
< inizializza variabili>;
while ( <expr>) {
< statement >;
< upd var >;
}
Claudio De Stefano - Corso di Fondamenti di Informatica
Esempio
main()
{
int sum , i;
sum =0;
for ( i = 1 ; i <= 10; i++)
{
sum += i;
}
}
Claudio De Stefano - Corso di Fondamenti di Informatica
Esempio
sum = 0;
i = 1;
for( ; i<= 10; ) {
sum= sum + i++;
}
sum = 0;
i = 1;
for ( ; ; ) {
if ( i > 10 ) break;
sum = sum + i++;
}
Claudio De Stefano - Corso di Fondamenti di Informatica
Istruzione “do-while”
■
■
L’istruzione do-while è simile alla while; l’espressione viene valutata alla fine e non
all’inizio del ciclo.
Questo comporta che un ciclo do-while venga eseguito almeno una volta.
Sintassi:
do
{
statement;
} while ( <expr>);
N.B : questo tipo di statement è comodo quando si desidera
eseguire una serie di istruzioni almeno una volta.
Claudio De Stefano - Corso di Fondamenti di Informatica
Esempio
int lines = 0, words = 0;
bool stop = false;
do
{
cin >> c;
if (c == ‘\n’)
lines++;
else if (c == ‘ ‘)
words++;
else if (c == EOF)
stop = true;
} while (stop);
Claudio De Stefano - Corso di Fondamenti di Informatica
Esercizi
1. Utilizzando un ciclo while e l’operatore CIN scrivere un programma che stampa la
lunghezza della stringa di input.
2. Utilizzando un ciclo while ed un istruzione switch, scrivere un programma che conta il
numero dei caratteri, delle parole, degli spazi bianchi, delle linee in input.
3. Scrivere un programma che riceve in ingresso cinque numeri rappresentanti dei gradi
celsius terminati da un EOF e stampa in output i corrispondenti gradi Fahrenheit.
[1 gardo Fahr. = 1 grado Celsius * (9/5) + 32]
4. Utilizzando un ciclo for scrivere un programma che riceve in input due interi
rappresentanti rispettivamente base ed esponente e ne calcola la potenza.
5. Scrivere lo stesso programma dell’esercizio 2 precedente utilizzando però un ciclo for.
Claudio De Stefano - Corso di Fondamenti di Informatica
main()
{
int p,base,n;
cout << "Dammi la base e l'esponente maggiore di zero \n");
cin >> base;
cin >> n;
cout << "La potenza di " << base << " elevato a " << n << " e’: \n ";
for(p=1 ; n > 0 ; --n)
p *= base;
}
cout << p << endl;
Claudio De Stefano - Corso di Fondamenti di Informatica
Istruzioni “break” e “continue”
■
■
break consente l’uscita immediata da una istruzione switch, while, for, do-while.
continue forza il passaggio all’iterazione successiva nelle istruzioni while, for, do-while.
Claudio De Stefano - Corso di Fondamenti di Informatica
Scarica

Corso di Fondamenti di Informatica