Académique Documents
Professionnel Documents
Culture Documents
Chapitre 4 - STRUCTURES DE
CONTRÔLE
Cours d’algorithmique et programmation
en LANGAGE C
Licence Bioinformatique
2019
…
Ecrire("entrez un nombre")
Lire(n)
Ecrire("valeur positive")
FinSi
...
FST DMI Dr. I DIANE 2019 5
Structures conditionnelles : condition Si
Exemple 2
Programme Operation
Variable
nb1,nb2, res: entier
op : caractère
Début
Si (condition1) Alors
Action1
Action2
...
Sinon Si (conditionN) Alors
ActionN
Sinon
Action
FinSi
10
FST DMI Dr. I DIANE 2019
La condition Si en C : if
Exemple 1
…
printf("entrez un nombre");
scanf("%d", &n);
if (n > 0)
printf("valeur positive");
else
14
FST DMI Dr. I DIANE 2019
La structure Selon
• L’expression est évaluée, puis sa valeur est successivement comparée à
chacune des valeurs. Dès qu’il y a correspondance, les comparaisons sont
arrêtées et le traitement associé est exécuté. Si aucune valeur ne correspond à
la valeur de l’expression, alors le traitement associé au Sinon, s’il existe, est
exécuté.
Exemple
Programme qui affiche le mois en toute lettre selon son numéro.
Le numéro du mois est mémorisé dans la variable mois.
...
Ecrire("Donner le numéro du mois")
Lire(mois)
Selon (mois) Faire
1 : Ecrire("Janvier")
2 : Ecrire("Février")
3 : Ecrire("Mars")
4 : Ecrire("Avril")
…
11: Ecrire("Novembre")
12: Ecrire("Décembre")
Sinon Ecrire("Un numéro de mois doit être compris entre 1 et 12")
FinSelon
... 15
FST DMI Dr. I DIANE 2019
La structure Selon
• Remarque
Avec une structure Si, on aurait :
…
Ecrire(Donner le numéro du mois)
Lire(mois)
Si (mois = = 1) Alors
Ecrire("Janvier")
Sinon Si (mois = = 2) Alors
Ecrire("Février")
Sinon Si (mois = = 3) Alors
Ecrire("Mars")
Sinon Si (mois = = 4) Alors
Ecrire("Avril")
…
Sinon Si (mois = = 11) Alors
Ecrire("Novembre")
Sinon Si (mois = = 12) Alors
Ecrire("Décembre")
Sinon
Ecrire("Un numéro de mois doit être compris entre 1 et 12")
FinSi
…
16
FST DMI Dr. I DIANE 2019
La structure Selon
• Traduction en langage C
– Si on a le choix entre plusieurs traitements à effectuer suivant la valeur d'une
expression entière (c'est à dire de type entier, ou caractère, ou énuméré), on peut
alors utiliser la structure switch à la place de la structure if.
Syntaxe
switch (expression)
{
case valeur1 :
traitement1;
break;
case valeur2 :
traitement2;
break;
...
case valeurN :
traitementN;
break;
default :
traitement;
}
Exemple
…
printf("Donner le numéro du mois");
scanf("%d", &mois);
switch (mois)
{
case 1 : printf("Janvier"); break;
case 2 : printf("Février"); break;
...
case 12 : printf("Décembre"); break;
default : printf("Un numéro de mois doit être
compris entre 1 et 12");
}
...
Syntaxe
Programme qui calcule le cube des nombres non nuls saisis par l'utilisateur.
Tant que le nombre saisi par l'utilisateur n'est pas nul, on affiche son cube et on recommence.
Programme cube
Variable
x : Entier
Début
Ecrire("Ce programme calcul le cube des nombres que vous entrez. Pour arrêter tapez 0.")
Ecrire("Entrez un nombre")
Lire(x)
Tant que (x 0) Faire
Ecrire("le cube de " , x , " est ", x*x*x)
Ecrire("Entrez un nombre ou 0 pour arrêter")
Lire(x)
FinTQ
Ecrire("Fin")
Fin
while (condition)
{
traitement
}
• Exemple 2
…
• Exemple 3
…
Pour x = 0 à 20 Faire
Ecrire(x)
FinPour
…
24
FST DMI Dr. I DIANE 2019
Structures répétitives : La boucle Pour
• Remarque
• La boucle Pour permet de faire la même chose que la boucle Tant que mais de façon plus
rapide, du moins lorsque le nombre de répétitions est connu. En effet, avec une boucle tant
que, on pourrait faire la même chose que l'exemple 3 ci-dessus, mais il faudrait initialiser la
variable compteur et l'incrémenter explicitement.
…
x=0
Tant que (x <= 20) Faire
Ecrire(x)
x = x+1 // incrémentation explicite
FinTQ
…
25
FST DMI Dr. I DIANE 2019
Structures répétitives : La boucle Pour
• Traduction en langage C: boucle for
• Le déroulement se fait ainsi:
• instruction1 est exécutée une seule fois.
• Puis il y a l'enchaînement suivant:
– La condition est évaluée.
– Si elle est fausse, on sort de la boucle.
– Si elle est vraie, le traitement de la boucle est exécuté, puis instruction2 est exécutée et
on recommence en évaluant à nouveau la condition, etc …
• En général
• instruction1 permet d'initialiser une variable compteur
• instruction2 permet d'incrémenter ou de décrémenter une variable compteur
Exemple
for(x = 0; x <= 20; x = x+1)
{
printf("%d", x);
}
• A la sortie de la boucle, x vaut 21.
26
FST DMI Dr. I DIANE 2019
Structures répétitives : La boucle Faire…Tant que
• Cette boucle sert à répéter une instruction tant qu'une condition
est vraie. Son formalisme est le suivant:
Faire
traitement
Tant que (condition)
28
FST DMI Dr. I DIANE 2019
Imbrication de structures de contrôles
• Dans les parties traitement des structures de contrôle qu’on a vues, il peut y avoir d’autres
structures de contrôle. On parle alors d’imbrication de structures (c'est-à-dire que les
structures sont incluses les unes dans les autres).
- Dans le cas de structures Si imbriquées, le - Lorsque l'on imbrique des boucles
premier FinSi rencontré dans l'algorithme Pour, il faut utiliser des compteurs
indique toujours la fin de la structure la plus différents pour chaque boucle.
imbriquée.
Exemple
Exemple
Pour j = 1 à 3 Faire
Si (condition1) Alors Pour i = 1 à 5 Faire
… Ecrire("*")
Si (conditionN) Alors FinPour
… FinPour
FinSi
…
Finsi
• Tous les types de boucles peuvent s'imbriquer entre eux. La seule règle à respecter est que
les boucles ne doivent pas se chevaucher: elles doivent s'emboîter.
29
FST DMI Dr. I DIANE 2019
Instructions de rupture de séquence en langage C
• L'instruction break
– L'instruction break peut être employée à l'intérieur de n'importe quelle boucle. Elle
permet d'interrompre le déroulement de la boucle, et passe à la première instruction
qui suit la boucle. En cas de boucles imbriquées, break fait sortir de la boucle la plus
interne.
• Par exemple, le programme suivant:
int main() affiche à l'écran:
{ i=0
int i; i=1
for (i = 0; i < 5; i++) i=2
{ i=3
printf("i = %d\n",i); valeur de i a la sortie de la boucle = 3
if (i == 3)
break;
}
printf("valeur de i a la sortie de la boucle = %d\n",i);
return 0;
}
30
FST DMI Dr. I DIANE 2019
Instructions de rupture de séquence en langage C
• L'instruction continue
– L'instruction continue permet de passer directement à l'étape suivante d'une boucle
sans exécuter les autres instructions de la boucle qui la suivent.