Académique Documents
Professionnel Documents
Culture Documents
Introduction
On appelle instruction de contrôle toute instruction qui permet de contrôler le fonctionnement d’un
programme. Parmi les instructions de contrôle, on distingue les instructions de branchement
conditionnel et les boucles. Les instructions de branchement permettent de déterminer quelles
instructions seront exécutées et dans quel ordre.
Si expression fournit une valeur différente de 0, alors le bloc instruction1 est exécuté
sinon le bloc instruction2 sera exécuté.
La partie expression peut être :
o Une variable numérique
o Une expression fournissant un résultat numérique
La partie bloc instruction peut désigner :
o Une seule instruction terminée par un point virgule.
o Un ensemble d’instructions mis entre deux accolades.
• Exemple 1:
if (a>b)
max = a;
else max = b;
• Exemple 2:
if (A – B)
printf("%d est différent de %d", A,B) ;
else
printf("%d est égal à %d", A,B) ;
Exercice : Ecrire un programme qui permet de lire deux entiers A et B et d’afficher le résultat de la
comparaison de A et de B.
void main( ) {
int A,B ;
printf("Donnez deux entiers :") ;
scanf("%d %d",&A,&B) ;
if (A>B)
printf("%d > %d", A, B);
else
if (A<B)
printf("%d < %d", A, B);
else
printf("%d = %d", A, B);
}
else
max = B;
max = (A>B)? A : B ;
• Syntaxe :
Switch (<expression>)
{
case constante_1 : <instructions 1> ;
case constante_2 : <instructions 2> ; break ;
……………
case constante_N : <instructions N> ; break ;
default : <instructions N+1> ; break ;
}
o Le mot clé switch doit être suivi d’une expression fournissant un résultat par
exemple : le nom d’une variable ou une expression arithmétique.
o Les instructions correspondant au cas default sont exécutées lorsqu’aucun des cas
n’est vérifié.
o Remarque : expression ne peut pas être de type chaine de caractères
• Exemple
int a = 6 ;
switch (a) {
}
• Exemple :
char c = 'A';
switch (c){
case 'A':
printf("lettre A\n");
break;
case 'B':
printf("lettre B\n");
break;
}
#include <stdio.h>
void main()
{
int a = 1;
switch (a) {
case 1: printf("bonjour 1 !!!\n");
case 2: printf("bonjour 2 !!!\n"); break;
case 4: printf("bonjour 4 !!!\n"); break;
default: printf("ni 1, ni 2 ni 4!!!\n");
}
}
bonjour 1 !!!
bonjour 2 !!!
1. La boucle while
Syntaxe :
while (<expression>)
{
<Bloc d’instructions> ;
}
• Tant que expression fournit une valeur différente de zéro, le bloc d’instructions sera exécuté
sinon l’exécution continue avec l’instruction qui suit le bloc d’instruction: la condition de
poursuite de la boucle est examinée avant chaque parcours de la boucle et non après.
• Le bloc d’instructions est exécuté zéro ou plusieurs fois.
Exemple 1:
Ecrire un programme qui permet d’afficher les nombres compris entre 0 et 9 séparés par une
tabulation.
#include <stdio.h>
void main()
{
int i = 0;
while (i<10)
{
printf("%d\t ",i) ;
i = i+1;
}
}
Exercice 1:
Ecrire un programme qui permet de lire un entier n et de calculer la somme des n premiers entiers.
#include <stdio.h>
void main()
{
int i, s, n ;
printf("donnez un entier ");
scanf("%d ",&n) ;
i=1; s=0;
while (i <=n)
{
s = s+i; /*ou bien s += i ;*/
i = i+1;
}
printf("la somme des %d premiers entiers est %d ", n, s) ;
}
Exercice 2 :
Ecrire un programme qui affiche les diviseurs de n, un entier tapé au clavier:
#include <stdio.h>
void main()
{
int i, n ;
printf("donnez un entier ");
scanf("%d ",&n) ;
i=1;
while (i <= n)
{
if (n % i == 0)
printf("diviseur de %d: %d\n", n, i);
i = i+1;
}
}
2. La boucle do…while
Syntaxe:
do
{
<bloc d’instructions> ;
} while(<expression>);
• La boucle do…while teste sa condition après l’exécution du bloc d’instructions.
• Le bloc d’instructions est exécuté au moins une fois quelque soit le résultat de
l’expression.
• Une application typique de do…while est la saisie de données qui doivent vérifier une
certaine condition.
Exemple:
int N ;
do
{
printf("donnez un nombre entre 1 et 10 sauf 1 et 10: ") ;
scanf("%d", &N) ;
} while (N<=1 || N>=10);
printf("nombre saisi satisfaisant, sortie de la boucle") ;
Après exécution :
donnez un nombre 1 et 10: 1
donnez un nombre 1 et 10: 88
donnez un nombre 1 et 10: 99
donnez un nombre 1 et 10: 6
nombre saisi satisfaisant, sortie de la boucle
3. La boucle for
Syntaxe :
<expression_I >;
while (<expression_C>)
{
<bloc d’instructions>;
<expression_R>;
}
Exemple 1:
Ecrire un programme qui permet de calculer et afficher le carré des entiers entre 0 et 5
int i ;
for (i=0 ; i<= 5 ;i++)
printf("le carré de %d est %d \n", i, i*i) ;
Résultat de l’exécution :
Exemple 2:
Ecrire un programme pour le calcul de la somme des entiers de 1 à 100 en utilisant la boucle for:
int s = 0;
int i;
for (i=1; i<=100 ; i++)
s += i;
printf ("la somme de 1 à 100 = %d\n", s);
Ou bien
int i=1, s=0;
for ( ; i<=100; s+=i, i++);
printf("i=%d, la somme de 1 à 100 = %d\n",s) ;
//-> ça donne : i=101, la somme de 1 à 100 = 5050
Exemple 3:
Ecrire un programme qui affichage des diviseurs d’un entier n donné au clavier en utilisant la
boucle for:
int n ;
printf("Donner un nombre : \n");
scanf("%d",&n);
for (i=1; i<= n; i++)
if (n% i == 0)
printf("diviseur %d",i);
Remarque :
• Si le bloc d'instructions ne doit pas être exécuté si la condition est fausse, alors utilisez
while ou for.
• Si le bloc d'instructions doit être exécuté au moins une fois, alors utilisez do - while.
• Le choix entre for et while n'est souvent qu'une question de préférence ou d'habitudes.
int i,j ;
for (i=1;i<10;i++)
{
for (j=1;j<10;j++)
{
printf("%3d",i*j);
}
printf("\n");
}
Ce programme affiche:
o La boucle sur « j » est appelée boucle interne. Elle affiche le produit « i*j » sur une
ligne.
o La boucle sur « i » est appelée boucle externe. Elle affiche donc une ligne (boucle sur
j) puis effectue un saut de ligne.
o On peut donc imbriquer autant de boucles (« for », « while », « do ») que l'on veut.
main()
{
int i;
for (i = 0; i < 5; i++)
{
printf("i = %d\n",i);
if (i == 3)
break;
}
printf("valeur de i à la sortie de la boucle = %d\n",i);
}
Imprime à l’écran :
i = 0
i = 1
i = 2
i = 3
valeur de i à la sortie de la boucle = 3
main() {
int i;
for (i = 0; i < 5; i++)
{
if (i == 3)
continue;
printf("i = %d\n",i);
}
printf("valeur de i à la sortie de la boucle = %d\n",i);
}
Imprime :
i = 0
i = 1
i = 2
i = 4
valeur de i à la sortie de la boucle = 5
main()
{
int i;
for (i = 1; i < 10; i++)
{
printf("début tour %d\n",i);
printf("bonjour\n");
if (i == 3)
goto sortie;
printf("fin tour %d\n",i);
}
sortie: printf("après la boucle \n");
}
Imprime à l’écran :
début tour 1
bonjour
fin tour 1
début tour 2
bonjour
fin tour 2
début tour 3
bonjour
après la boucle