ELENCO ESCLUSI GRADUATORIA D`ISTITUTO PERSONALE ATA

CHAPTER 5
1
ISTRUZIONI DI SELEZIONE
ISTRUZIONI
Finora abbiamo visto istruzioni di assegnamento.
La maggior parte delle istruzioni C rientrano in 3
categorie:
2
• Istruzioni di selezione : if e switch
• Istruzioni di iterazione: while, do, e for
• Istruzioni di salto: break, continue, and goto. (return)
OPERATORI RELAZIONALI
<
>
<=
>=
minore di
maggiore di
minore o uguale a
maggiore o uguale a
Questi operatori producono 0 (falso) oppure 1 (vero)
3
Possono essere usati per confrontare interi o float
OPERATORI RELAZIONALI
La precedenza degli operatori relazionali è più bassa
di quella degli operatori aritmetici.
significa
(i + j) < (k – 1)
4
i+j<k-1
OPERATORI DI UGUAGLIANZA
==
!=
uguale a
diverso da
Questi operatori producono 0 (falso) oppure 1 (vero)
Gli operatori di uguaglianza hanno un aprecedenza più bassa
rispetto agli operatori relazionali
i < j == j < k
è equivalente a
5
(i < j) == (j < k)
OPERATORI LOGICI
!
&&
||
negazione
and
or
L’operatore ! è unario, mentre && e || sono binari.
6
Producono duce 0 o 1 come risultato.
OPERATORI LOGICI
&& e || hanno una precedenza più bassa rispetto
agli operatori relazionali e di uguaglianza
significa
(i < j) && (k == m)
7
i < j && k == m
L’ISTRUZIONE if
L’istruzione if permette ad un programma di scegliere tra due
alternative verificando il risultato di una espressione.
if ( expression ) statement;
Quando viene eseguita l’istruzione if viene valutata la
expression se il suo valore non è zero, allora lo statement è
eseguito
8
if (valore < 100000.00f)
commissione = 500.00f + .017f * valore;
ISTRUZIONI COMPOSTE
Se si vogliono eseguire più istruzioni dopo il test
dell’esperrione del if si inseriscono le parentesi { e } con la
sequenzadi istruzioni da eseguire:
if ( expression )
9
{ statements }
ISTRUZIONI COMPOSTE
{ percentuale=.017f * valore;
10
commissione = 500.00f + percentuale;}
ISTRUZIONI COMPOSTE
if (valore < 100000.00f)
{percentuale=.017f * valore;
11
commissione = 500.00f + percentuale;}
LA CLAUSOLA else
L’istruzione if può avere la clausola else :
if ( expression )
statement;
else
statement;
Lo statement che segue la parola else è eseguito se
l’expression ha valore 0.
Esempio:
12
if (i > j)
max = i;
else
max = j;
LA CLAUSOLA else
Non è insolito che un istruzione if sia innestata
all’interno di un’altra istruzione if :
j)
> k)
= i;
= k;
> k)
= j;
= k;
13
if (i >
if (i
max
else
max
else
if (j
max
else
max
LA CLAUSOLA else
Per evitare confusione usate le parettesi { e }:
14
if (i > j) {
if (i > k)
max = i;
else
max = k;
} else {
if (j > k)
max = j;
else
max = k;
}
PROGRAMMA: Calcolare la commissione
di un agente immobiliare
Quando si acquista una casa attraverso un agenzia
immobiliare viene pagata una commissione all’agente
immobiliare.
Si supponga che la commissione venga calcolata
secondo la seguente tabella:
Commissione
500€ + 1.7%
750€ + 0.66%
1000€ + 0.34%
2000€ + 0.12%
15
Importo della vendita
sotto i 100000€
100000€–200000€
200000€–300000€
oltre i 300000€
PROGRAMMA: CALCULARE LA COMMISSIONE
DI UN AGENTE IMMOBILIARE
Il programma broker.c chiede all’utente di inserire il valore
della casa, poi mostra la commissione dovuta all’agente
immobiliare:
16
Inserisci il valore della casa:
150000
Commissione: 1740.00€
broker.c
/* Calculare la commissione di un agente immobiliare */
#include <stdio.h>
int main(void)
{
float commissione, valore;
printf(”Inserisci il valore dell’immobile: ");
scanf("%f", &valore);
* valore;
* valore;
+.0034f*valore;
+.0012f*valore;
printf("Commissione: %.2f €\n", commissione);
return 0;}
17
if (valore < 100000.00f)
commissione = 500.00f +.017f
else if (valore < 200000.00f)
commission = 750.00f +.0066f
else if (valore < 300000.00f)
commissione = 1000.00f
else
commissione = 2000.00f
Il problema del
“DANGLING else”
State attenti a situazioni come queste:
if (y != 0)
if (x != 0)
result = x / y;
else
printf("Error: y is equal to 0\n");
L’indentazione direbbe che l’else si riferisce all’if più esterno,
ma non è così.
18
C segue la regola che l’else si riferisce all’if più interno che
non è già accoppiato con un altro if
Il problema del
“DANGLING else”
Una corretta indentazione sarebbe
if (y != 0)
if (x != 0)
result = x / y;
else
printf("Error: y is equal to 0\n");
L’utilizzo delle parentesi può essere di aiuto
19
if (y != 0)
{if (x != 0)
result = x / y;
else
printf("Error: y is equal to 0\n");}
L’ISTRUZIONE switch
20
Una cascata di istruzioni if :
if (grade == 4)
printf("Excellent");
else if (grade == 3)
printf("Good");
else if (grade == 2)
printf("Average");
else if (grade == 1)
printf("Poor");
else if (grade == 0)
printf("Failing");
else
printf("Illegal grade");
L’ISTRUZIONE switch
switch (grade) {
case 4: printf("Excellent");
break;
case 3: printf("Good");
break;
case 2: printf("Average");
break;
case 1: printf("Poor");
break;
case 0: printf("Failing");
break;
default: printf("Illegal grade");
break;
}
21
In alternativa si può usare l’istruzione switch :
L’ISTRUZIONE switch
La forma dell’istruzione switch è la seguente:
22
switch ( expression ) {
case constant-expression : statements
break;
……
case constant-expression : statements
break;
default : statements
break;
}
PROGRAMMA: GIOCO A PREMI
In un gioco a premi, i primi 5 estratti vincono. I
premi messi in palio vengono rivelati solo dopo
l’estrazione e solo ai vincitori.
Il programma premio.c chiede all’utente quale
è la sua posizione nell’estrazione (cioè se è
nella posizione 1, oppure 2, oppure 3, oppure 4,
oppure 5) ed in accordo ad essa rivela il premio.
Quale è la tua posizione? 3
23
Hai vinto 300 €
premio.c
/* Rivela il premio in accordo alla posizione*/
#include <stdio.h>
int main(void)
{
int posizione, day, year;
printf("Quale è la tua posizione? ");
scanf(”%d", &posizione);
vinto 500 €"); break;
vinto 400 €"); break;
vinto 300 €"); break;
vinto 200 €"); break;
vinto 100 €"); break;
dispiace ma non c’è un premio per te");
24
switch (posizione) {
case 1: printf("Hai
case 2: printf("Hai
case 3: printf("Hai
case 4: printf("Hai
case 5: printf("Hai
default: printf(”Mi
break;
}