Esercizi sul Modello Relazionale

Linguaggio C
Costrutti if e while
Corso di Informatica
Laurea in Fisica
prof. ing. Corrado Santoro
A.A. 2009-10
Costrutto “if”
False
Cond
True
...
...
...
...
...
...
Corrado Santoro, Informatica, Lezione 6 -Costrutti if e while
if (cond) {
/* codice per
Cond VERA */
}
else {
/* codice per
Cond FALSA */
}
2
Eq di secondo grado: flow chart
START
X1 = (- B – SQRT(Delta)) / (2*A)
X2 = (- B + SQRT(Delta)) / (2*A)
A, B, C
No
Delta = B*B - 4*A*C
Delta < 0
X1, X2
Yes
“nessuna soluzione”
Corrado Santoro, Informatica, Lezione 6 -Costrutti if e while
END
3
Implementazione in C
#include <stdio.h>
#include <math.h>
main()
{
float a, b, c, delta;
a = 2; b = -6; c = 1;
delta = b*b – 4*a*c;
if (delta < 0) {
printf(“Nessuna soluzione
}
else {
float x1, x2;
x1 = (-b + sqrt(delta)) /
x2 = (-b - sqrt(delta)) /
printf(“Le soluzioni sono
}
getchar();
}
Corrado Santoro, Informatica, Lezione 6 -Costrutti if e while
in R\n”);
(2 * a);
(2 * a);
%f e %f\n”, x1, x2);
4
Implementazione in C
#include <stdio.h>
#include <math.h>
main()
{
float a, b, c, delta;
a = 2; b = -6; c = 1;
delta = b*b – 4*a*c;
if (delta < 0)
printf(“Nessuna soluzione
else {
float x1, x2;
x1 = (-b + sqrt(delta)) /
x2 = (-b - sqrt(delta)) /
printf(“Le soluzioni sono
}
getchar();
}
in R\n”);
(2 * a);
(2 * a);
%f e %f\n”, x1, x2);
Se un blocco contiene una sola istruzione,
è possibile omettere le parentesi graffe
Corrado Santoro, Informatica, Lezione 6 -Costrutti if e while
5
Operatori di Confronto
• Uguale
– Es.:
==
if (a == 0) ...
• Maggiore
– Es.:
>
if (a > 0) ...
• Minore
– Es.:
<
if (a < 0) ...
• Diverso
– Es:
!=
if (a != 0) ...
• Maggiore o uguale
>=
• Minore o uguale
<=
Corrado Santoro, Informatica, Lezione 6 -Costrutti if e while
6
Variante: “if” senza “else”
False
Cond
True
...
...
if (cond) {
/* codice per
Cond VERA */
}
...
Corrado Santoro, Informatica, Lezione 6 -Costrutti if e while
7
Condizioni multiple
• E' possibile inserire nell'if un predicato booleano qualunque,
composto da varie condizioni legate da connettivi AND e OR
• AND LOGICO: &&
• OR LOGICO: ||
• Sintassi:
– if ((cond1) op_logico (cond2) op_logico (…)) {…}
• Esempio 1: stampa a e b se entrambe sono diverse da zero
– if ((a !=0) && (b !=0)) printf(“%d, %d\n”, a, b);
• Esempio 2: stampa a e b se almeno una è diversa da zero
– if ((a !=0) || (b !=0)) printf(“%d, %d\n”, a, b);
Corrado Santoro, Informatica, Lezione 6 -Costrutti if e while
8
Cicli: costrutto “while”
Cond
False
True
...
...
while (cond) {
/* codice da eseguire
fintanto che
cond è VERA */
}
...
Corrado Santoro, Informatica, Lezione 6 -Costrutti if e while
9
L'algoritmo MCD
START
A, B
B=B-A
No
No
A=B
Yes
“MCD = “, A
Corrado Santoro, Informatica, Lezione 6 -Costrutti if e while
A>B
A=A-B
Yes
END
10
L'algoritmo MCD modificato
START
A, B
B=B-A
No
Yes
A != B
No
“MCD = “, A
Corrado Santoro, Informatica, Lezione 6 -Costrutti if e while
A>B
A=A-B
Yes
END
11
MCD: Implementazione in C
#include <stdio.h>
main()
{
int a, b;
a = 232;
b = 12;
while (a != b) {
if (a > b)
a = a – b;
else
b = b - a;
}
printf(“MCD = %d\n”, a);
getchar();
}
Corrado Santoro, Informatica, Lezione 6 -Costrutti if e while
12