Structures de contrôle
1. Traitement séquentiel
2. Traitement alternatif
a. if ….
b. if … else
c. instruction switch
3. Traitement répétitif
a. boucle while
b. boucle do .. . While
c. boucle for
cours initiation C++
Mme BENALLEL
2
Introduction
• Une structure de contrôle sert à contrôler le
déroulement d’un traitement
• Un traitement peut être
Séquentiel
Alternatif
Répétitif
cours initiation C++
Mme BENALLEL
3
Traitement séquentiel
• C’est une séquence d’instructions qui s’exécutent
séquentiellement, ie. l’une après l’autre
Début
instruction1;
instruction2;
……
instructionN;
Fin.
cours initiation C++
Mme BENALLEL
4
Traitement séquentiel
Exemple:
Soit à additionner deux entiers a et b, les opérations à effectuer se
présentent comme suit:
1. Introduire la valeur de a;
2. Introduire la valeur de b;
3. Additionner a et b (a+b);
4. Afficher le résultat
cours initiation C++
Mme BENALLEL
5
Traitement séquentiel
Le programme C correspondant :
#include<stdio.h>
int main()
{ int a, b , s;
printf(" introduire deux entiers :") ;
scanf("%d",&a);
scanf("%d",&b);
s=a+b;
printf(" la somme de %d et %d est %d ", a,b,s);
return 0;
}
Toutes les instructions de ce programme s’exécutent séquentiellement
cours initiation C++
Mme BENALLEL
6
Traitement alternatif
Définition: Cette structure de contrôle permet d'exécuter une instruction
ou une suite d'instructions seulement si une condition est vraie.
• le if,
• le if else,
• le switch.
if (condition) instruction;
if (condition) instruction1;
else instruction2;
switch(identificateur)
{
case c1:instruction1;break;
case c2:instruction2;break;
case c3:instruction3;break;
...
default: instruction;break;
}
cours initiation C++
Mme BENALLEL
7
Traitement alternatif
1) if (condition) instruction
On évalue la condition :
• si elle est vraie on exécute l’instruction et on passe à l’instruction suivante,
• si elle est fausse on passe directement à l’instruction suivante.
L’instruction peut être remplacée par une suite d ’instructions entre accolades
cours initiation C++
Mme BENALLEL
8
Les conditions
Les conditions habituellement utilisables :
• if (a>b)… strictement supérieur à
• if (a>=b)… supérieur ou égal à
• if (a<b)… strictement inférieur à
• if (a<=b)… inférieur ou égal à
• if (a==b)… test d'égalité
• if (a!=b)… différent de
Une erreur classique
Pour effectuer un test d'égalité, il faut utiliser 2 fois le symbole =.
Par exemple :
if(a==b)…
Une erreur classique consiste à écrire :
if(a=b)…
Traitement alternatif
cours initiation C++
Mme BENALLEL
9
Traitement alternatif
#include <stdio.h>
int main()
{
int a;
printf(" Tapez une valeur : ");
scanf("%d", &a);
if (a > 10) printf( "Gagné !" );
printf( "Le programme est fini");
return 0;
}
Exemple 1 : utilisation du if
cours initiation C++
Mme BENALLEL
10
Traitement alternatif
2) Le if ... Else
Cette structure de contrôle permet d'exécution soit l'instruction1,
soit l'instruction 2 en fonction du résultat d'une condition.
Syntaxe :
if (condition) instruction1;
else instruction2;
On évalue la condition,
• si elle est vraie, on exécute l’instruction1 et on passe à
l’instruction suivante,
• si elle est fausse, on exécute l’instruction2 et on passe à
l’instruction suivante.
L’instruction1 ou l’instruction2 peuvent être remplacées par une suite
d’instructions entre accolades.
cours initiation C++
Mme BENALLEL
11
Traitement alternatif
#include <stdio.h>
int main()
{
int a;
printf(" Tapez une valeur : ");
scanf("%d", &a);
if(a>10) printf("Gagné !");
else printf("Perdu");
print("le programme est fini");
return 0;
}
Exemple 2 : utilisation du if... else
cours initiation C++
Mme BENALLEL
12
Les conditions complexes
Il est souvent nécessaire d'écrire des conditions assez compliquées. Il faudra alors
utiliser le ET logique, le OU logique et le NON logique.
Il faudra une certaine habitude pour ne pas confondre ces différents opérateurs.
Traitement alternatif
cours initiation C++
Mme BENALLEL
13
#include <stdio.h>
int main()
{
int a;
printf(" Tapez une valeur : ");
scanf("%d", &a);
if(a>10 && a<20) printf("GAGNÉ");
else printf("PERDU");
return 0;
}
Le ET logique
Syntaxe
condition1 && condition2
Exemple 3 : utilisation du ET logique
Traitement alternatif
cours initiation C++
Mme BENALLEL
14
Traitement alternatif
Le OU logique
Syntaxe : condition1 || condition2
Rappel sur le OU logique:
VRAI OU VRAI = VRAI
VRAI OU FAUX = VRAI
FAUX OU VRAI = VRAI
FAUX OU FAUX = FAUX
#include <stdio.h>
int main()
{
int a;
printf(" Tapez une valeur : ");
scanf("%d", &a);
if( a<3 || a>20 ) printf("GAGNÉ");
else printf("PERDU");
return 0;
}
Exemple 4 : utilisation du OU logique
cours initiation C++
Mme BENALLEL
15
Traitement alternatif
Le NON logique
Syntaxe : !(condition)
Rappel sur le NON logique :
! VRAI=FAUX
!FAUX=VRAI
#include <stdio.h>
int main()
{
int a;
printf(" Tapez une valeur : ");
scanf("%d", &a);
if(!(a<3 || a>20)) cout<<"PERDU"<<"n";
else cout<<"GAGNE"<<"n";
return 0;
}
Exemple 5 : utilisation du NON logique
cours initiation C++
Mme BENALLEL
16
Traitement alternatif
#include <stdio.h>
int main()
{
int a;
printf(" Tapez un entier : ");
scanf("%d", &a);
if (a==12) {
printf( "GAGNÉ");
a = a+1;
}
printf( "La valeur finale de l'entier tapé vaut %d", a);
return 0;
}
Exemple 6 : Mettre plusieurs instructions dans un if
cours initiation C++
Mme BENALLEL
17
Traitement alternatif
#include <stdio.h>
int main()
{
int a;
printf(" Tapez une valeur : ");
scanf("%d", &a);
if(a!=10){printf("GAGNÉ"); a=a+1;}
else {printf("PERDU");a=a-1;}
printf("La valeur finale vaut %d ",a);
return 0;
}
Exemple 7 : Mettre plusieurs instructions dans un if...else
cours initiation C++
Mme BENALLEL
18
Traitement alternatif
#include <stdio.h>
int main()
{
int a; bool c,d;
printf(" Tapez un entier : ");
scanf("%d", &a);
c=(a<3);
d=(a>20);
if(c||d)printf("GAGNÉ");
else printf("PERDU");
Return 0;
}
Le type bool
Il s'agit d'un type de base prédéfini du langage C. Il permet de stocker une
valeur booléenne pouvant prendre 2 valeurs : soit true soit false.
Le résultat d’une condition peut être stocké dans un bool.
Exemple 8 : utilisation du type bool
cours initiation C++
Mme BENALLEL
19
Traitement alternatif
Alternative imbriquée
Une instruction if ou else peut renfermer une autre instruction if ou else, on
parle d’imbrication de conditions.
Syntaxe
If (condition1)
{
if (condition2) séquence1;
else
{
if (condition3) séquence2;
else séquence3;
}
}
else séquence4;
cours initiation C++
Mme BENALLEL
20
Traitement alternatif
Alternative imbriquée
Exemple 9 : utilisation de if imbriquées
On considère trois nombres entiers A, B et C, le programme qui affiche le
plus grand nombre entre les trois:
#include <stdio.h>
int main()
{
int a,b,c,;
printf(" donner les trois nombres à comparer : ");
scanf("%d, %d, %d", &a, &b,&c);
If (a>b) { if (a>c) {printf(" le plus grand des trois nombres est : %d",a);
else printf(" le plus grand des trois nombres est : %d ",c);}
else {if (b>c) printf(" le plus grand des trois nombres est : %d ",b);
else printf(" le plus grand des trois nombres est : %d ", c);}
return 0;
}
cours initiation C++
Mme BENALLEL
21
Syntaxe :
switch(expression)
{
case c1:instruction1;break;
case c2:instruction2;break;
case c3:instruction3;break;
...
default: instruction;break;
}
Traitement alternatif
Alternative multiple " switch"
L’instruction switch permet de simplifier les choses lorsque le niveau
d’imbrication des if est trop élevé
Principe:
évaluer expression , si sa valeur correspond
à l’une des valeurs de case, le bloc
d’instructions correspondant sera exécuté
jusqu’à la rencontre de l’instruction break,
sinon, le programme pointe directement
vers l’instruction default.
cours initiation C++
Mme BENALLEL
22
Traitement alternatif
Alternative multiple " switch"
#include <stdio.h>
int main()
{
int i;
printf("Tapez un entier entre 1 et 3 bornes incluses :");
scanf("%d",&i);
switch(i)
{
case 1: printf("GAGNÉ ");
i=i+99;
break;
case 2: printf("PERDU n° 2");
i=0;
break;
case 3: printf("PERDU n°3 ");
i++;
break;
}
printf("La valeur finale de i est %d",i);
return 0;}
Exemple 9 : utilisation du switch
cours initiation C++
Mme BENALLEL
23
Traitement répétitif
La boucle While
Le traitement est répétitif lorsque son exécution se répète plusieurs fois, le
nombre de répétitions peut être connu ou pas, on parle de boucles ou
itérations
Syntaxe:
while (condition)
{ instruction1;
instruction2;
….
instructionN;
}
Principe: dans la boucle while la séquence d’itérations s’exécute tant que
la condition est vérifiée.
Remarque: le nombre d’itérations n’est pas connu à l’avance
cours initiation C++
Mme BENALLEL
24
Traitement répétitif
Exemple. Programme C qui permet de calculer et d’afficher la somme des 10
premiers nombres entiers en utilisant la boucle while
#include <stdio.h>
int main()
{
int n=0, s=0;
while (n<10)
{
s=s+n; // s(t+1)=s(t)+n;
n++;
}
printf(" La somme des %d premiers entiers est %d ", n,
s);
return 0;
}
cours initiation C++
Mme BENALLEL
25
Traitement répétitif
La boucle do… while
Syntaxe:
do
{ instruction1;
instruction2;
….
instructionN;
}
while (condition)
Principe: la boucle do….while s’exécute au moins une fois, car la condition
est testée à la sortie de la boucle.
Remarque: le nombre d’itérations n’est pas connu à l’avance
cours initiation C++
Mme BENALLEL
26
Traitement répétitif
Exemple. Programme C++ qui permet de calculer et d’afficher la somme des n
premiers nombres entiers en utilisant la boucle do…while
#include <stdio.h>
int main()
{
int i, n, s;
printf(" donner la valeur de n: ");
scanf("%d",&n);
s=0; i=0 ;
do{
s=s+i;
i++;
} while (i<n)
printf(" La somme obtenue est %d ",s);
return 0;
}
cours initiation C++
Mme BENALLEL
27
Traitement répétitif
La boucle for
Syntaxe:
for (val_initiale;val_finale;compteur++)
{ instruction1;
instruction2;
….
instructionN;
}
Principe: le bloque d’instruction va s’exécuter pour les valeurs du
compteur allant de la valeur initiale à la valeur finale qui représente le
test ou la condition d’arrêt de la boucle.
Remarque: le nombre d’itérations est connu à l’avance
cours initiation C++
Mme BENALLEL
28
Traitement répétitif
Exemple. Programme C qui permet de calculer et d’afficher la somme des 10
premiers nombres entiers en utilisant la boucle for
#include <stdio.h>
int main()
{
int i, s=0;
for(i=0; i<10;i++)
s=s+i;
printf(" La somme obtenue est %d " ,s);
return 0;
}
cours initiation C++
Mme BENALLEL
29
Traitement répétitif
Autres versions de la boucle for
Les trois éléments (initialisation, test et action) peuvent présenter un
grand nombre de variations
1. Initialisation et incrémentation multiples
Exemple
for (int i=0, j=0; i<3 ; i++, j++)
printf("%d, %d", i,j);
2. Utilisation d’instructions nulles
Exemple
Exemple
int c=0;
for ( ; c<3 ; )
{ c++;
printf("%d",c);
}
Exemple
cours initiation C++
Mme BENALLEL
30
Traitement répétitif
Autres versions de la boucle for
3. La boucle sans paramètres
Exemple int c=0;
for ( ; ; )
{
if(c<3)
{printf("%d", c);
c++;
}
else break;
}
4. Boucle for vide
Exemple
for (int i=0; i<5 ; printf("i: %d",i++ ))
; //instruction vide
Exemple Exemple
Cette instruction est équivalente à:
for (int i=0; i<5 ; i++ )
printf("i: %d",i);
cours initiation C++
Mme BENALLEL
31
A savoir
En plus
cours initiation C++
Mme BENALLEL
32
Instructions Break & Continue
Instruction Break
L’instruction break met fin à une boucle, et va à la première
instruction qui suit la boucle.
#include <stdio.h>
int main()
{
for(int x=1; x<=5;x++)
{ for (int y=1; y<=5; y++)
if (y>x) break;
else
printf("%d",x*y);
}
}
Exemple
cours initiation C++
Mme BENALLEL
33
Instructions Break & Continue
Instruction Continue
L’instruction break saute le reste des instructions présentes dans le
bloc de la boucle, en se rendant immédiatement à l’instruction
suivante en dehors de la boucle. L’instruction continue saute
également le reste des instructions dans le bloc, toutefois, au lieu de
mettre fin à la boucle, elle se met au début de la boucle et exécute
l’instruction suivante.
cours initiation C++
Mme BENALLEL
34
Instructions Break & Continue
Instruction Continue
#include <stdio.h>
int main()
{int n;
for( ; ; )
{ printf(“introduire un entier: ”);
scanf("%d",&n);
if (n%2==0) continue;
if (n%3==0) break;
printf(“bas de la boucle ”);
}
printf(“Extérieur de la boucle ”);
}
Exemple
introduire un entier: 7
bas de la boucle
introduire un entier: 4
introduire un entier: 9
Extérieur de la boucle
Exécution
cours initiation C++
Mme BENALLEL
35
Conclusion
• Toutes les boucles peuvent être imbriquées les unes à l’intérieur des
autres
• La boucle while peut ne pas s’exécuter du tout si la condition n’est
pas vérifiée;
• La boucle do…while s’exécute au moins une fois;
• La boucle for s’ exécute toujours et le nombre d’itérations est connu
d’avance;
• Les boucle while et do…while nécessitent toujours une initialisation
et une incrémentation du compteur de boucle dans le cas où le
nombre d’itérations est connu, sinon la condition d’arrêt doit être
possible à atteindre pour ne pas avoir une boucle infinie.

Structures de contrôle en C .pptx

  • 1.
    Structures de contrôle 1.Traitement séquentiel 2. Traitement alternatif a. if …. b. if … else c. instruction switch 3. Traitement répétitif a. boucle while b. boucle do .. . While c. boucle for
  • 2.
    cours initiation C++ MmeBENALLEL 2 Introduction • Une structure de contrôle sert à contrôler le déroulement d’un traitement • Un traitement peut être Séquentiel Alternatif Répétitif
  • 3.
    cours initiation C++ MmeBENALLEL 3 Traitement séquentiel • C’est une séquence d’instructions qui s’exécutent séquentiellement, ie. l’une après l’autre Début instruction1; instruction2; …… instructionN; Fin.
  • 4.
    cours initiation C++ MmeBENALLEL 4 Traitement séquentiel Exemple: Soit à additionner deux entiers a et b, les opérations à effectuer se présentent comme suit: 1. Introduire la valeur de a; 2. Introduire la valeur de b; 3. Additionner a et b (a+b); 4. Afficher le résultat
  • 5.
    cours initiation C++ MmeBENALLEL 5 Traitement séquentiel Le programme C correspondant : #include<stdio.h> int main() { int a, b , s; printf(" introduire deux entiers :") ; scanf("%d",&a); scanf("%d",&b); s=a+b; printf(" la somme de %d et %d est %d ", a,b,s); return 0; } Toutes les instructions de ce programme s’exécutent séquentiellement
  • 6.
    cours initiation C++ MmeBENALLEL 6 Traitement alternatif Définition: Cette structure de contrôle permet d'exécuter une instruction ou une suite d'instructions seulement si une condition est vraie. • le if, • le if else, • le switch. if (condition) instruction; if (condition) instruction1; else instruction2; switch(identificateur) { case c1:instruction1;break; case c2:instruction2;break; case c3:instruction3;break; ... default: instruction;break; }
  • 7.
    cours initiation C++ MmeBENALLEL 7 Traitement alternatif 1) if (condition) instruction On évalue la condition : • si elle est vraie on exécute l’instruction et on passe à l’instruction suivante, • si elle est fausse on passe directement à l’instruction suivante. L’instruction peut être remplacée par une suite d ’instructions entre accolades
  • 8.
    cours initiation C++ MmeBENALLEL 8 Les conditions Les conditions habituellement utilisables : • if (a>b)… strictement supérieur à • if (a>=b)… supérieur ou égal à • if (a<b)… strictement inférieur à • if (a<=b)… inférieur ou égal à • if (a==b)… test d'égalité • if (a!=b)… différent de Une erreur classique Pour effectuer un test d'égalité, il faut utiliser 2 fois le symbole =. Par exemple : if(a==b)… Une erreur classique consiste à écrire : if(a=b)… Traitement alternatif
  • 9.
    cours initiation C++ MmeBENALLEL 9 Traitement alternatif #include <stdio.h> int main() { int a; printf(" Tapez une valeur : "); scanf("%d", &a); if (a > 10) printf( "Gagné !" ); printf( "Le programme est fini"); return 0; } Exemple 1 : utilisation du if
  • 10.
    cours initiation C++ MmeBENALLEL 10 Traitement alternatif 2) Le if ... Else Cette structure de contrôle permet d'exécution soit l'instruction1, soit l'instruction 2 en fonction du résultat d'une condition. Syntaxe : if (condition) instruction1; else instruction2; On évalue la condition, • si elle est vraie, on exécute l’instruction1 et on passe à l’instruction suivante, • si elle est fausse, on exécute l’instruction2 et on passe à l’instruction suivante. L’instruction1 ou l’instruction2 peuvent être remplacées par une suite d’instructions entre accolades.
  • 11.
    cours initiation C++ MmeBENALLEL 11 Traitement alternatif #include <stdio.h> int main() { int a; printf(" Tapez une valeur : "); scanf("%d", &a); if(a>10) printf("Gagné !"); else printf("Perdu"); print("le programme est fini"); return 0; } Exemple 2 : utilisation du if... else
  • 12.
    cours initiation C++ MmeBENALLEL 12 Les conditions complexes Il est souvent nécessaire d'écrire des conditions assez compliquées. Il faudra alors utiliser le ET logique, le OU logique et le NON logique. Il faudra une certaine habitude pour ne pas confondre ces différents opérateurs. Traitement alternatif
  • 13.
    cours initiation C++ MmeBENALLEL 13 #include <stdio.h> int main() { int a; printf(" Tapez une valeur : "); scanf("%d", &a); if(a>10 && a<20) printf("GAGNÉ"); else printf("PERDU"); return 0; } Le ET logique Syntaxe condition1 && condition2 Exemple 3 : utilisation du ET logique Traitement alternatif
  • 14.
    cours initiation C++ MmeBENALLEL 14 Traitement alternatif Le OU logique Syntaxe : condition1 || condition2 Rappel sur le OU logique: VRAI OU VRAI = VRAI VRAI OU FAUX = VRAI FAUX OU VRAI = VRAI FAUX OU FAUX = FAUX #include <stdio.h> int main() { int a; printf(" Tapez une valeur : "); scanf("%d", &a); if( a<3 || a>20 ) printf("GAGNÉ"); else printf("PERDU"); return 0; } Exemple 4 : utilisation du OU logique
  • 15.
    cours initiation C++ MmeBENALLEL 15 Traitement alternatif Le NON logique Syntaxe : !(condition) Rappel sur le NON logique : ! VRAI=FAUX !FAUX=VRAI #include <stdio.h> int main() { int a; printf(" Tapez une valeur : "); scanf("%d", &a); if(!(a<3 || a>20)) cout<<"PERDU"<<"n"; else cout<<"GAGNE"<<"n"; return 0; } Exemple 5 : utilisation du NON logique
  • 16.
    cours initiation C++ MmeBENALLEL 16 Traitement alternatif #include <stdio.h> int main() { int a; printf(" Tapez un entier : "); scanf("%d", &a); if (a==12) { printf( "GAGNÉ"); a = a+1; } printf( "La valeur finale de l'entier tapé vaut %d", a); return 0; } Exemple 6 : Mettre plusieurs instructions dans un if
  • 17.
    cours initiation C++ MmeBENALLEL 17 Traitement alternatif #include <stdio.h> int main() { int a; printf(" Tapez une valeur : "); scanf("%d", &a); if(a!=10){printf("GAGNÉ"); a=a+1;} else {printf("PERDU");a=a-1;} printf("La valeur finale vaut %d ",a); return 0; } Exemple 7 : Mettre plusieurs instructions dans un if...else
  • 18.
    cours initiation C++ MmeBENALLEL 18 Traitement alternatif #include <stdio.h> int main() { int a; bool c,d; printf(" Tapez un entier : "); scanf("%d", &a); c=(a<3); d=(a>20); if(c||d)printf("GAGNÉ"); else printf("PERDU"); Return 0; } Le type bool Il s'agit d'un type de base prédéfini du langage C. Il permet de stocker une valeur booléenne pouvant prendre 2 valeurs : soit true soit false. Le résultat d’une condition peut être stocké dans un bool. Exemple 8 : utilisation du type bool
  • 19.
    cours initiation C++ MmeBENALLEL 19 Traitement alternatif Alternative imbriquée Une instruction if ou else peut renfermer une autre instruction if ou else, on parle d’imbrication de conditions. Syntaxe If (condition1) { if (condition2) séquence1; else { if (condition3) séquence2; else séquence3; } } else séquence4;
  • 20.
    cours initiation C++ MmeBENALLEL 20 Traitement alternatif Alternative imbriquée Exemple 9 : utilisation de if imbriquées On considère trois nombres entiers A, B et C, le programme qui affiche le plus grand nombre entre les trois: #include <stdio.h> int main() { int a,b,c,; printf(" donner les trois nombres à comparer : "); scanf("%d, %d, %d", &a, &b,&c); If (a>b) { if (a>c) {printf(" le plus grand des trois nombres est : %d",a); else printf(" le plus grand des trois nombres est : %d ",c);} else {if (b>c) printf(" le plus grand des trois nombres est : %d ",b); else printf(" le plus grand des trois nombres est : %d ", c);} return 0; }
  • 21.
    cours initiation C++ MmeBENALLEL 21 Syntaxe : switch(expression) { case c1:instruction1;break; case c2:instruction2;break; case c3:instruction3;break; ... default: instruction;break; } Traitement alternatif Alternative multiple " switch" L’instruction switch permet de simplifier les choses lorsque le niveau d’imbrication des if est trop élevé Principe: évaluer expression , si sa valeur correspond à l’une des valeurs de case, le bloc d’instructions correspondant sera exécuté jusqu’à la rencontre de l’instruction break, sinon, le programme pointe directement vers l’instruction default.
  • 22.
    cours initiation C++ MmeBENALLEL 22 Traitement alternatif Alternative multiple " switch" #include <stdio.h> int main() { int i; printf("Tapez un entier entre 1 et 3 bornes incluses :"); scanf("%d",&i); switch(i) { case 1: printf("GAGNÉ "); i=i+99; break; case 2: printf("PERDU n° 2"); i=0; break; case 3: printf("PERDU n°3 "); i++; break; } printf("La valeur finale de i est %d",i); return 0;} Exemple 9 : utilisation du switch
  • 23.
    cours initiation C++ MmeBENALLEL 23 Traitement répétitif La boucle While Le traitement est répétitif lorsque son exécution se répète plusieurs fois, le nombre de répétitions peut être connu ou pas, on parle de boucles ou itérations Syntaxe: while (condition) { instruction1; instruction2; …. instructionN; } Principe: dans la boucle while la séquence d’itérations s’exécute tant que la condition est vérifiée. Remarque: le nombre d’itérations n’est pas connu à l’avance
  • 24.
    cours initiation C++ MmeBENALLEL 24 Traitement répétitif Exemple. Programme C qui permet de calculer et d’afficher la somme des 10 premiers nombres entiers en utilisant la boucle while #include <stdio.h> int main() { int n=0, s=0; while (n<10) { s=s+n; // s(t+1)=s(t)+n; n++; } printf(" La somme des %d premiers entiers est %d ", n, s); return 0; }
  • 25.
    cours initiation C++ MmeBENALLEL 25 Traitement répétitif La boucle do… while Syntaxe: do { instruction1; instruction2; …. instructionN; } while (condition) Principe: la boucle do….while s’exécute au moins une fois, car la condition est testée à la sortie de la boucle. Remarque: le nombre d’itérations n’est pas connu à l’avance
  • 26.
    cours initiation C++ MmeBENALLEL 26 Traitement répétitif Exemple. Programme C++ qui permet de calculer et d’afficher la somme des n premiers nombres entiers en utilisant la boucle do…while #include <stdio.h> int main() { int i, n, s; printf(" donner la valeur de n: "); scanf("%d",&n); s=0; i=0 ; do{ s=s+i; i++; } while (i<n) printf(" La somme obtenue est %d ",s); return 0; }
  • 27.
    cours initiation C++ MmeBENALLEL 27 Traitement répétitif La boucle for Syntaxe: for (val_initiale;val_finale;compteur++) { instruction1; instruction2; …. instructionN; } Principe: le bloque d’instruction va s’exécuter pour les valeurs du compteur allant de la valeur initiale à la valeur finale qui représente le test ou la condition d’arrêt de la boucle. Remarque: le nombre d’itérations est connu à l’avance
  • 28.
    cours initiation C++ MmeBENALLEL 28 Traitement répétitif Exemple. Programme C qui permet de calculer et d’afficher la somme des 10 premiers nombres entiers en utilisant la boucle for #include <stdio.h> int main() { int i, s=0; for(i=0; i<10;i++) s=s+i; printf(" La somme obtenue est %d " ,s); return 0; }
  • 29.
    cours initiation C++ MmeBENALLEL 29 Traitement répétitif Autres versions de la boucle for Les trois éléments (initialisation, test et action) peuvent présenter un grand nombre de variations 1. Initialisation et incrémentation multiples Exemple for (int i=0, j=0; i<3 ; i++, j++) printf("%d, %d", i,j); 2. Utilisation d’instructions nulles Exemple Exemple int c=0; for ( ; c<3 ; ) { c++; printf("%d",c); } Exemple
  • 30.
    cours initiation C++ MmeBENALLEL 30 Traitement répétitif Autres versions de la boucle for 3. La boucle sans paramètres Exemple int c=0; for ( ; ; ) { if(c<3) {printf("%d", c); c++; } else break; } 4. Boucle for vide Exemple for (int i=0; i<5 ; printf("i: %d",i++ )) ; //instruction vide Exemple Exemple Cette instruction est équivalente à: for (int i=0; i<5 ; i++ ) printf("i: %d",i);
  • 31.
    cours initiation C++ MmeBENALLEL 31 A savoir En plus
  • 32.
    cours initiation C++ MmeBENALLEL 32 Instructions Break & Continue Instruction Break L’instruction break met fin à une boucle, et va à la première instruction qui suit la boucle. #include <stdio.h> int main() { for(int x=1; x<=5;x++) { for (int y=1; y<=5; y++) if (y>x) break; else printf("%d",x*y); } } Exemple
  • 33.
    cours initiation C++ MmeBENALLEL 33 Instructions Break & Continue Instruction Continue L’instruction break saute le reste des instructions présentes dans le bloc de la boucle, en se rendant immédiatement à l’instruction suivante en dehors de la boucle. L’instruction continue saute également le reste des instructions dans le bloc, toutefois, au lieu de mettre fin à la boucle, elle se met au début de la boucle et exécute l’instruction suivante.
  • 34.
    cours initiation C++ MmeBENALLEL 34 Instructions Break & Continue Instruction Continue #include <stdio.h> int main() {int n; for( ; ; ) { printf(“introduire un entier: ”); scanf("%d",&n); if (n%2==0) continue; if (n%3==0) break; printf(“bas de la boucle ”); } printf(“Extérieur de la boucle ”); } Exemple introduire un entier: 7 bas de la boucle introduire un entier: 4 introduire un entier: 9 Extérieur de la boucle Exécution
  • 35.
    cours initiation C++ MmeBENALLEL 35 Conclusion • Toutes les boucles peuvent être imbriquées les unes à l’intérieur des autres • La boucle while peut ne pas s’exécuter du tout si la condition n’est pas vérifiée; • La boucle do…while s’exécute au moins une fois; • La boucle for s’ exécute toujours et le nombre d’itérations est connu d’avance; • Les boucle while et do…while nécessitent toujours une initialisation et une incrémentation du compteur de boucle dans le cas où le nombre d’itérations est connu, sinon la condition d’arrêt doit être possible à atteindre pour ne pas avoir une boucle infinie.

Notes de l'éditeur

  • #9 Ce programme demande à l'utilisateur de saisir une valeur entière a. Si la valeur tapée est strictement supérieure à 10 on affiche "Gagné" puis "Le programme est fini" et le programme s'arrête. Dans le cas contraire, on affiche uniquement "le programme est fini" et le programme s'arrête.
  • #11 Ce programme demande à l'utilisateur de saisir une valeur entière a. Si la valeur tapée est strictement supérieure à 10, on affiche "Gagné" puis "Le programme est fini" et le programme s'arrête. Dans le cas contraire, on affiche "Perdu" puis "Le programme est fini" et le programme s'arrête.
  • #13 Dans ce programme, on demande à l'utilisateur de taper une variable entière a. Si la valeur tapée est comprise entre 11 et 19 bornes incluses on affiche "GAGNÉ". Dans le cas contraire, on affiche "PERDU".
  • #14 Dans ce programme, on demande à l'utilisateur de taper une variable entière a. Si la valeur tapée est strictement plus petite que 3 on affiche "GAGNÉ". Si la valeur tapée est strictement plus grande que 20 on affiche "GAGNÉ". Dans le cas contraire, on affiche "PERDU".
  • #15 Dans ce programme, on demande à l'utilisateur de taper une valeur entière a. Si la condition assez complexe ( !(a<3 || a>20)) est vraie on affiche "GAGNÉ" sinon on affiche "PERDU". En fait, on affichera "GAGNÉ" si a est compris entre 3 et 20 bornes incluses.
  • #16 Dans ce programme, on demande à l'utilisateur de saisir une valeur entière a. Si a vaut 12 alors on va effectuer dans un premier temps deux instructions : on affiche "GAGNÉ" et on incrémente a de 1. On affiche ensuite la valeur de a qui vaudra 13. Si a est différent de 12, on affiche directement la valeur de a qui n'aura pas été modifiée.
  • #17 Dans ce programme, on demande à l'utilisateur de saisir une valeur entière a. Si a est différent de 10 alors on va effectuer dans un premier temps 2 instructions : on affiche "GAGNÉ" et on incrémente a de 1. On affiche ensuite la valeur de a. Si a est égal à 10 alors on va effectuer dans un premier temps 2 instructions : on affiche "PERDU" et on décrémente a de 1. On affiche ensuite la valeur de a.
  • #18 Dans ce programme, nous définissons une variable entière a et 2 variable booléennes c et d. On demande à l'utilisateur de saisir la variable entière a. Dans c, on affecte true si a est strictement plus petit que 3. c vaudra false dans le cas contraire. Dans d, on affecte true si a est strictement plus grand que 20. d vaudra false dans le cas contraire. Si c ou d est vrai, c'est à dire si a est strictement plus petit que 3 ou si a est strictement plus grand que 20 alors on affiche "GAGNÉ". On affiche perdu dans le cas contraire. Exécution de l'exemple 8 Lorsqu'on exécute notre programme, il s'affiche à l'écran : Tapez une valeur entière : -6 GAGNÉ
  • #22 On commence par saisir un entier i. Il y a ensuite une switch qui permet d'effectuer une série d'instructions en fonction de la valeur de i. Les 3 valeurs de i pour lesquelles on effectue une série d'instructions sont 1, 2 et 3. Si i vaut une autre valeur le switch ne fait rien car il n'y a pas de default. Exécution 1 de l’exemple 9 Tapez un entier entre 1 et 3 bornes incluses :1 GAGNÉ La valeur finale de i est 100 Exécution 2 de l’exemple 9 Tapez un entier entre 1 et 3 bornes incluses :2 PERDU n°2 La valeur finale de i est 0 Exécution 3 de l’exemple 9 Tapez un entier entre 1 et 3 bornes incluses :3 PERDU n°3 La valeur finale de i est 0