Algorithmique et Langage C
Algorithmique et Langage C
www.polytech.unice.fr/žvg/index-xidian.html
Granet Vincent - Vincent.Granet@univ-cotedazur.fr
Xi’an - Octobre 2019 - Avril 2020
55/214 Algorithmique et Langage C
Actions Structurées
Actions Structurées
Algorithmique et Langage C Actions Structurées
Énoncé composé
Composition d’énoncés
pour grouper des actions E i qui sont ensuite considérées comme une seule action E c
les actions sont exécutées séquentiellement
{P} début E
1; E
2; E
3f i n {Q}
Règle de déduction
si {P} ⇒ {P
1} ⇒ {Q
E1 1} ⇒ {P
2} ⇒ {Q
E2 2} ... {P
n} ⇒ {Q
En n} ⇒ {Q}
alors
{P} début {P
1} E
1{Q
1} ; {P
2} E
2{Q
2} ; ... ; {P
n} E
n{Q
n} fin {Q}
57/214 Algorithmique et Langage C
Actions Structurées Énoncé composé
Composition d’énoncés en C
un bloc groupe des énoncés entre des 2 accolades
/ x = 10 / y = x + 1; / y = 11 / / y = 11 / z = y; / z = 11 /
/ x = 10 /
{ y = x + 1; z = y; }
/ x = 10 et y = 11 et z = 11 /
Il peut contenir des déclarations locales
/ x = 10 / { i n t y = x + 1;
z = y;
}
/ x = 10 et z = 11 /
Algorithmique et Langage C Actions Structurées
Énoncé si
Énoncé conditionnel si
permet d’exécuter ou non une action en fonction d’un critère booléen.
si je gagne au loto alors je fais le tour du monde sinon je reste à la maison
{P} s i B a l o r s E
1s i n o n E
2f i n s i {Q}
Règle de déduction
si {P et B} ⇒ {Q} E
1et {P et non B} ⇒ {Q} E
2alors { P } énoncé-si { Q }
59/214 Algorithmique et Langage C
Actions Structurées Énoncé si
Exemple
{x est un entier quelconque}
s i x<0 a l o r s y← − x s i n o n y ← x f i n s i
{ y = |x|}
Algorithmique et Langage C Actions Structurées
Énoncé si
forme réduite
pas de partie sinon
{P} s i B a l o r s E f i n s i {Q}
Règle de déduction
si {P et B} ⇒ {Q} E et {P et non B} ⇒ {Q}
alors {P} énoncé-si-réduit {Q}
{x est un entier quelconque}
s i x<0 a l o r s x ← −x f i n s i
{ x> 0}
61/214 Algorithmique et Langage C
Actions Structurées Énoncé si
L’énoncé si en C
i f (B) E 1 e l s e E 2
i f (B) E 1
B est de type entier (ou convertible en entier)
/ x est un entier quelconque / i f (x<0) y = −x; e l s e y = x;
/ y = |x| /
/ x est un entier quelconque / i f (x<0) x = −x;
/ x>=0 /
Algorithmique et Langage C Actions Structurées
Énoncé si
Le sinon ( else ) se rapporte au si le plus proche
i f (x == 1) i f (y == 1)
printf("x et y sont égaux à 1\n");
e l s e { / y 6= 1 / a = 0; b = 1;
}
i f (x == 1) { i f (y == 1)
printf("x et y sont égaux à 1\n");
} e l s e { / x 6= 1 / a = 0; b = 1;
}
63/214 Algorithmique et Langage C
Actions Structurées Énoncé choix
Énoncé conditionnel choix
permet d’exécuter une action en fonction d’un critère sur plusieurs valeurs possibles
critère : expression de type scalaire discret
c h o i x couleur du feu parmi
rouge : s'arrêter vert : passer
orange : s'arrêter si possible, sinon passer
f i n c h o i x
Algorithmique et Langage C Actions Structurées
Énoncé choix
{P}
c h o i x expr parmi val
1: E
1val
2: E
2. . . val
n: E
nf i n c h o i x {Q}
Règle de déduction
si ∀k ∈ [1,n], {P et expr = val k } ⇒ {Q} E
kalors {P} énoncé-choix {Q}
{Q} peut être l’union de conséquents {Q k } des énoncés E k .
Le conséquent {Q} doit être vérifié, même si aucun énoncé E k n’a
65/214 Algorithmique et Langage C
Actions Structurées Énoncé choix
L’énoncé choix en C (1)
s w i t c h ( expr ) {
c a s e v 1 : E 1 ; br eak;
c a s e v 2 : E 2 ; br eak;
. . .
c a s e v n−1 : E n−1 ; br eak;
c a s e v n : E n ; br eak ; [ d e f a u l t : E d ;]
}
enum couleur { vert, orange, rouge };
s w i t c h (couleurDuFeu) {
c a s e rouge : s'arrêter; br eak ; c a s e vert : passer; br eak ;
c a s e orange : i f (possible) s'arrêter e l s e passer;
br eak;
}
Algorithmique et Langage C Actions Structurées
Énoncé choix
L’énoncé choix en C (2)
/ a et b 2 opérandes entiers et op == +, − , ou / / / évaluer a op b /
s w i t c h (op) {
c a s e '+' : res = a+b; br eak ; c a s e ' −' : res = a− b; br eak ; c a s e ' ' : res = a b; br eak ; c a s e '/' : i f (b!=0) res = a/b;
e l s e fprintf(stderr,"div par 0\n");
br eak;
d e f a u l t : fprintf(stderr,"op inconnu\n");
}
/ erreur ou res = a op b /
67/214 Algorithmique et Langage C
Actions Structurées Énoncé choix