Les structures de
contrôle conditionnelles
Les structures de contrôle se séparent en
deux familles:
• les structures alternatives
• les structures de boucles.
Elles permettent de modifier le
comportement de l’application en fonction
des valeurs de ses variables.
 Permet de réaliser un traitement ou un autre
selon la valeur d'une condition.
Syntaxe :
En Agorithmique
SI <condition> ALORS
<bloc d'instructions 1>
SINON
<bloc d'instructions 2>
FinSi
En C
if ( <expression> )
<bloc d'instructions 1>;
else
<bloc d'instructions 2>;
if – else
Expression
VRAI FAUX
<Bloc d'instructions 1> <Bloc d'instructions 2>
<expression> :
une variable d'un type numérique, une expression
fournissant un résultat numérique.
<bloc d'instructions> :
• un ensemble d'instructions entre accolades
• une seule instruction
if (a > b)
max = a;
else
max = b;
if (A==B)
printf("A est égal à B");
else
printf("A diffère de B");
if ((a > b) && (b>c))
{
printf("max =%d", a);
printf("min =%d",c);
}
if (A-B)
printf("A diffère de B");
else
printf("A est égal à B");
Exemples
Algorithme Test_Positif;
Var x : entier;
Début
Écrire ("Saisir un entier x: ") ; Lire (x);
Si (x > 0) alors
Écrire(x, " est un nombre positif ");
Sinon
Écrire(x, " est un nombre négatif");
Finsi
Fin.
Exercice:
Ecrire l'algorithme et le programme C permettant de
tester est-ce que un entier x est positif ou négatif
#include <stdio.h> /*Programme TestPositif;*/
main () {
int x;
printf("Saisir un entier x: n");
scanf("%d",&x);
if (x>0)
printf("%d est un nombre positif n", x);
else
printf("%d est un nombre négatif n", x);
}
Exercice:
Ecrire l'algorithme et le programme C permettant de
tester est-ce que un entier x est positif ou négatif
Exercice:
Écrire un algorithme et un programme C qui permet d'afficher
le maximum de deux entiers quelconques.
Algorithmique
ALGORITHME Max_2_Entiers;
Var a,b : Entiers;
DEBUT
Ecrire("Veuillez entrer deux entiers:");
Lire (a,b);
Si (a<b) Alors
Ecrire ("le maximum de ", a , " et ", b, " est : ", b);
Sinon
Ecrire ("le maximum de ", a , " et ", b, " est : ", a);
FinSi
FIN
Exercice:
Écrire un algorithme et un programme C qui permet de
calculer le maximum de deux entiers quelconques.
Programme C
#include <stdio.h>
Main() {
int a, b;
printf ("Veuillez entrer deux entiers: n");
scanf("%d %d",&a,&b);
if (a<b)
printf ("le maximum de %d et %d est : %d",a , b, b);
else
printf ("le maximum de %d et %d est : %d",a , b, a);
}
Pour prendre des décisions entre plusieurs alternatives :
En Agorithmique
SI <Expression 1> ALORS
<bloc d'instructions 1>
SINON
SI <Expression 2> ALORS
<bloc d'instructions 2>
SINON
<bloc d'instructions 3>
FinSi
FinSi
En C
if ( <expression1> )
<bloc d'instructions1>;
else if (<expression2>)
<bloc d'instructions2>;
else if (<expression3>)
<bloc d'instructions3>;
else if (<expressionN>)
<bloc d'instructionsN>;
else
<blocN+1>;
if – else if- …. -else
Exemple :
#include <stdio.h>
main()
{
int A,B;
printf("Entrez deux nombres entiers :");
scanf("%d %d", &A, &B);
if (A > B)
printf("%d est plus grand que %dn", A, B);
else if (A < B)
printf("%d est plus petit que %dn", A, B);
else
printf("%d est égal à %dn", A, B);
}
if – else if- …. -else
VAR A,B,C:Entiers;
DEBUT
Ecrire("Entrer trois entiers:");
Lire(A,B,C);
Ecrire("La valeur maximale est : );
SI (A>B) AND (A>C) ALORS
Ecrire(A);
SINON
SI (A<B) ALORS Ecrire(B);
SINON Ecrire(C);
FinSI
FinSi
Exercice:
Ecrire l'algorithme et le programme C qui lit trois valeurs entières (A, B
et C) au clavier et qui affiche la plus grande des trois valeurs,
#include <stdio.h>
Main() {
int A, B, C;
printf("Introduisez trois nombres entiers :");
scanf("%d %d %d", &A, &B, &C);
printf("La valeur maximale est ");
if ((A>B && A>C))
printf("Le max est : %dn",A);
else if (B>C)
printf(" Le max est : %dn",B);
else
printf(" Le max est : %dn",C);
}
Exercice:
Ecrire l'algorithme et le programme C qui lit trois valeurs entières (A, B
et C) au clavier et qui affiche la plus grande des trois valeurs,
les différentes conditions sont testées dans l'ordre où elles
apparaissent.
Dès qu'une condition est vraie, on exécute l'action associée et on
quitte la structure.
Si aucune condition n'est vérifiée, on exécute la partie sinon, qui est
facultative.
Selon expression Faire
valeur 1 : bloc d’instructions 1
valeur 2 : bloc d’instructions 2
valeur 3 : bloc d’instructions 3
…
Sinon
instructions par défaut
Finselon
switch (expression) {
case val1: instruction 1; break ;
case val2: instruction 2; break ;
...
case valN: instruction N; break ;
default: instruction D ; break ;
}
Switch-case
Exercice
Ecrire l'algorithme et le programme C qui affiche le nom du mois
selon le chiffre entré au clavier.
Selon mois Faire
1 : Ecrire "Janvier";
2 : Ecrire "Février";
…
11 : Ecrire "Novembre";
12 : Ecrire "Décembre";
Sinon
Ecrire "Un numéro de
mois doit être compris entre
1 et 12";
Finselon
switch (mois)
{
case 1: printf ("Janvier");break ;
case 2: printf ( "Février");break ;
…
case 11 : printf ("Novembre");break ;
case 12 : printf ("Décembre"); break ;
default:
printf("Un numéro de mois doit être
compris entre 1 et 12"); break ;
}
Problème
Écrire un algorithme permettant d’afficher 300 fois le
message : ‘‘ bonjour tout le monde’’.
Solution
ALGORITHME Affichage-300-fois;
DEBUT
Écrire (' Bonjour tout le monde '); {1ère fois}
Écrire (' Bonjour tout le monde '); {2ème fois}
.
.
Écrire (' Bonjour tout le monde '); {300ème fois}
FIN
 Les structures de boucles nous donnent la
possibilité de faire répéter une instruction (ou un
bloc):
• soit tant qu'une condition est vraie
• soit un nombre déterminé de fois.
 Il ya 3 grands types de structures de boucles:
• Tant que … Faire : si condition répète
• Faire … Jusqu'à : répète jusqu’à condition
• Pour : répète n fois
La structure "tant que"
Permet de tester une condition
Exécuter une instruction (ou un bloc) tant que
cette condition est vraie.
Syntaxe:
Tant que Expression Faire
<bloc d'instructions>;
Fin tant que
while (Expression) {
<bloc d'instructions>;
/*bloc d'instructions*/
}
• Tant que Expression est Vraie le bloc d'instructions
sera exécuté.
• Si Expression est fausse on passe à l'instruction
suivante.
• Il se peut que l'on ne rentre jamais dans la boucle (si la
condition n'est jamais vraie)
• On ne connaît pas à l’avance le nombre d'itérations de la
boucle Tant que.
Tant que Expression Faire
<bloc d'instructions>;
Fin tant que
while (Expression) {
<bloc d'instructions>;
/*bloc d'instructions*/
}
Solution de l'exercice précédent:
ALGORITHME Affichage-300-fois;
VAR i : Entier ;
DEBUT
i  0 ; { Initialisation }
Tant que (i < 300) Faire
Écrire (" Bonjour tout le monde ");
i  i + 1 ;
Fin tant que
FIN.
Solution de l'exercice précédent:
#include <stdio.h>
#include <conio.h>
main() {
int i = 0;
while (i < 300)
{
printf("Bonjour tout le monde n ");
i++;
}
}
Exemple
ALGORITHME Affichage-Test;
VAR test: Entier;
DEBUT
Test ← 10;
Tant que (test >0) Faire
Ecrire ("test = ", test);
Test ← test-2;
Fin Tant que
FIN.
#include <stdio.h>
#include <conio.h>
main()
{
int test = 10;
while (test > 0)
{
printf("test = %d n ", test);
test -= 2;
}
}
Exercice
Dans ces algorithmes combien de fois la boucle est- elle
exécutée ?
ALGORITHME Boucle1;
Var i , y : Entiers;
Début
i   ;
y  0 ;
Tant Que (i<7) faire
i  i+1;
y  y+i;
Écrire (' y = ' , y)
Fin Tant que
Fin
ALGORITHME Boucle2;
Var n : Entier;
Début
n  15;
Tant Que (n<>0) faire
Écrire (n);
n  n-2 ;
Fin Tant que
Fin.
La structure "Faire … jusqu'à"
 On utilise cette instruction pour exécuter des actions
jusqu'à ce qu'une condition soit remplie.
 Elle permet d’entrer une première fois dans la boucle
avant de tester la condition pour les autres fois.
Syntaxe :
Faire
<bloc d'instructions>;
Jusqu’à Condition
Do
{
<bloc d'instructions>;
} while (condition);
•Le bloc d'instructions est exécuté une première fois.
•Si la condition est vraie la boucle est à nouveau exécutée.
•Si la condition est fausse on passe à l'instruction suivante.
•Le bloc d’instructions sera exécuté au moins une fois.
•La boucle n’est pas INCONDITIONNELLE. On ne connaît
pas à l’avance le nombre d’itérations.
Faire
<bloc d'instructions>;
Jusqu’à Condition
Do
{
<bloc d'instructions>;
} while (condition);
Exemple
ALGORITHME Affichage-Test;
VAR test: Entier;
DEBUT
Test ← 10;
Faire
Ecrire ("test = ", test);
Test ← test-2;
jusqu'à (test >0)
FIN.
#include <stdio.h>
main ()
{
int test = 10;
do
{
printf ("test= %d n", test);
test -= 2;
} while (test > 0);
}
Exercice:
Écrire un algorithme et un programme C permettant de
calculer, pour un entier N> 0, la somme :
SN = 1 + 2 + 3 + …… + N
L’instruction Pour
 Elle limite le nombre de fois où doit se répéter le bloc Action
 L’utilisation la plus courante est l’initialisation et la modification
d’un compteur jusqu’à ce que celui-ci atteigne la valeur
souhaitée.
 On doit utiliser la structure Pour lorsque l’on connaît le
nombre d’itérations.
Syntaxe :
Pour variable  valeur1 à
valeur2 [pas de <incrément>]
faire
<Bloc d'instructions> ;
Fin Pour
for (expression(s)1;
expression(s)2; expression(s)3 )
{
<Bloc d'instructions> ;
}
 Expression 1 => Initialisation d’une ou plusieurs
variables (index).
 Expression 2 => Expression conditionnelle
(condition d’arrêt).
 Expression 3 => Expression modifiant l’index.
Pour variable  valeur1 à
valeur2 [pas de <incrément>]
faire
<Bloc d'instructions> ;
Fin Pour
for (expression(s)1;
expression(s)2; expression(s)3 )
{
<Bloc d'instructions> ;
}
Exemple:
ALGORITHME Affichage-a;
VAR a: Entier;
DEBUT
Pour a  256 à 1 faire
Ecrire ("a = ", a);
Test ← a / 2;
Fin pour
FIN
#include <stdio.h>
main ()
{
int a;
for (a = 256; a>1; a /= 2)
printf ("a= %d n", a);
}
Exercice:
Écrire l’algorithme permettant de calculer la
moyenne des notes de N étudiants

Algorithmique&Langage C Partie-2 BTS.pptx

  • 1.
  • 2.
    Les structures decontrôle se séparent en deux familles: • les structures alternatives • les structures de boucles. Elles permettent de modifier le comportement de l’application en fonction des valeurs de ses variables.
  • 3.
     Permet deréaliser un traitement ou un autre selon la valeur d'une condition. Syntaxe : En Agorithmique SI <condition> ALORS <bloc d'instructions 1> SINON <bloc d'instructions 2> FinSi En C if ( <expression> ) <bloc d'instructions 1>; else <bloc d'instructions 2>; if – else
  • 4.
    Expression VRAI FAUX <Bloc d'instructions1> <Bloc d'instructions 2> <expression> : une variable d'un type numérique, une expression fournissant un résultat numérique. <bloc d'instructions> : • un ensemble d'instructions entre accolades • une seule instruction
  • 5.
    if (a >b) max = a; else max = b; if (A==B) printf("A est égal à B"); else printf("A diffère de B"); if ((a > b) && (b>c)) { printf("max =%d", a); printf("min =%d",c); } if (A-B) printf("A diffère de B"); else printf("A est égal à B"); Exemples
  • 6.
    Algorithme Test_Positif; Var x: entier; Début Écrire ("Saisir un entier x: ") ; Lire (x); Si (x > 0) alors Écrire(x, " est un nombre positif "); Sinon Écrire(x, " est un nombre négatif"); Finsi Fin. Exercice: Ecrire l'algorithme et le programme C permettant de tester est-ce que un entier x est positif ou négatif
  • 7.
    #include <stdio.h> /*ProgrammeTestPositif;*/ main () { int x; printf("Saisir un entier x: n"); scanf("%d",&x); if (x>0) printf("%d est un nombre positif n", x); else printf("%d est un nombre négatif n", x); } Exercice: Ecrire l'algorithme et le programme C permettant de tester est-ce que un entier x est positif ou négatif
  • 8.
    Exercice: Écrire un algorithmeet un programme C qui permet d'afficher le maximum de deux entiers quelconques. Algorithmique ALGORITHME Max_2_Entiers; Var a,b : Entiers; DEBUT Ecrire("Veuillez entrer deux entiers:"); Lire (a,b); Si (a<b) Alors Ecrire ("le maximum de ", a , " et ", b, " est : ", b); Sinon Ecrire ("le maximum de ", a , " et ", b, " est : ", a); FinSi FIN
  • 9.
    Exercice: Écrire un algorithmeet un programme C qui permet de calculer le maximum de deux entiers quelconques. Programme C #include <stdio.h> Main() { int a, b; printf ("Veuillez entrer deux entiers: n"); scanf("%d %d",&a,&b); if (a<b) printf ("le maximum de %d et %d est : %d",a , b, b); else printf ("le maximum de %d et %d est : %d",a , b, a); }
  • 10.
    Pour prendre desdécisions entre plusieurs alternatives : En Agorithmique SI <Expression 1> ALORS <bloc d'instructions 1> SINON SI <Expression 2> ALORS <bloc d'instructions 2> SINON <bloc d'instructions 3> FinSi FinSi En C if ( <expression1> ) <bloc d'instructions1>; else if (<expression2>) <bloc d'instructions2>; else if (<expression3>) <bloc d'instructions3>; else if (<expressionN>) <bloc d'instructionsN>; else <blocN+1>; if – else if- …. -else
  • 11.
    Exemple : #include <stdio.h> main() { intA,B; printf("Entrez deux nombres entiers :"); scanf("%d %d", &A, &B); if (A > B) printf("%d est plus grand que %dn", A, B); else if (A < B) printf("%d est plus petit que %dn", A, B); else printf("%d est égal à %dn", A, B); } if – else if- …. -else
  • 12.
    VAR A,B,C:Entiers; DEBUT Ecrire("Entrer troisentiers:"); Lire(A,B,C); Ecrire("La valeur maximale est : ); SI (A>B) AND (A>C) ALORS Ecrire(A); SINON SI (A<B) ALORS Ecrire(B); SINON Ecrire(C); FinSI FinSi Exercice: Ecrire l'algorithme et le programme C qui lit trois valeurs entières (A, B et C) au clavier et qui affiche la plus grande des trois valeurs,
  • 13.
    #include <stdio.h> Main() { intA, B, C; printf("Introduisez trois nombres entiers :"); scanf("%d %d %d", &A, &B, &C); printf("La valeur maximale est "); if ((A>B && A>C)) printf("Le max est : %dn",A); else if (B>C) printf(" Le max est : %dn",B); else printf(" Le max est : %dn",C); } Exercice: Ecrire l'algorithme et le programme C qui lit trois valeurs entières (A, B et C) au clavier et qui affiche la plus grande des trois valeurs,
  • 14.
    les différentes conditionssont testées dans l'ordre où elles apparaissent. Dès qu'une condition est vraie, on exécute l'action associée et on quitte la structure. Si aucune condition n'est vérifiée, on exécute la partie sinon, qui est facultative. Selon expression Faire valeur 1 : bloc d’instructions 1 valeur 2 : bloc d’instructions 2 valeur 3 : bloc d’instructions 3 … Sinon instructions par défaut Finselon switch (expression) { case val1: instruction 1; break ; case val2: instruction 2; break ; ... case valN: instruction N; break ; default: instruction D ; break ; } Switch-case
  • 15.
    Exercice Ecrire l'algorithme etle programme C qui affiche le nom du mois selon le chiffre entré au clavier. Selon mois Faire 1 : Ecrire "Janvier"; 2 : Ecrire "Février"; … 11 : Ecrire "Novembre"; 12 : Ecrire "Décembre"; Sinon Ecrire "Un numéro de mois doit être compris entre 1 et 12"; Finselon switch (mois) { case 1: printf ("Janvier");break ; case 2: printf ( "Février");break ; … case 11 : printf ("Novembre");break ; case 12 : printf ("Décembre"); break ; default: printf("Un numéro de mois doit être compris entre 1 et 12"); break ; }
  • 16.
    Problème Écrire un algorithmepermettant d’afficher 300 fois le message : ‘‘ bonjour tout le monde’’. Solution ALGORITHME Affichage-300-fois; DEBUT Écrire (' Bonjour tout le monde '); {1ère fois} Écrire (' Bonjour tout le monde '); {2ème fois} . . Écrire (' Bonjour tout le monde '); {300ème fois} FIN
  • 17.
     Les structuresde boucles nous donnent la possibilité de faire répéter une instruction (ou un bloc): • soit tant qu'une condition est vraie • soit un nombre déterminé de fois.  Il ya 3 grands types de structures de boucles: • Tant que … Faire : si condition répète • Faire … Jusqu'à : répète jusqu’à condition • Pour : répète n fois
  • 18.
    La structure "tantque" Permet de tester une condition Exécuter une instruction (ou un bloc) tant que cette condition est vraie. Syntaxe: Tant que Expression Faire <bloc d'instructions>; Fin tant que while (Expression) { <bloc d'instructions>; /*bloc d'instructions*/ }
  • 19.
    • Tant queExpression est Vraie le bloc d'instructions sera exécuté. • Si Expression est fausse on passe à l'instruction suivante. • Il se peut que l'on ne rentre jamais dans la boucle (si la condition n'est jamais vraie) • On ne connaît pas à l’avance le nombre d'itérations de la boucle Tant que. Tant que Expression Faire <bloc d'instructions>; Fin tant que while (Expression) { <bloc d'instructions>; /*bloc d'instructions*/ }
  • 20.
    Solution de l'exerciceprécédent: ALGORITHME Affichage-300-fois; VAR i : Entier ; DEBUT i  0 ; { Initialisation } Tant que (i < 300) Faire Écrire (" Bonjour tout le monde "); i  i + 1 ; Fin tant que FIN.
  • 21.
    Solution de l'exerciceprécédent: #include <stdio.h> #include <conio.h> main() { int i = 0; while (i < 300) { printf("Bonjour tout le monde n "); i++; } }
  • 22.
    Exemple ALGORITHME Affichage-Test; VAR test:Entier; DEBUT Test ← 10; Tant que (test >0) Faire Ecrire ("test = ", test); Test ← test-2; Fin Tant que FIN. #include <stdio.h> #include <conio.h> main() { int test = 10; while (test > 0) { printf("test = %d n ", test); test -= 2; } }
  • 23.
    Exercice Dans ces algorithmescombien de fois la boucle est- elle exécutée ? ALGORITHME Boucle1; Var i , y : Entiers; Début i   ; y  0 ; Tant Que (i<7) faire i  i+1; y  y+i; Écrire (' y = ' , y) Fin Tant que Fin ALGORITHME Boucle2; Var n : Entier; Début n  15; Tant Que (n<>0) faire Écrire (n); n  n-2 ; Fin Tant que Fin.
  • 24.
    La structure "Faire… jusqu'à"  On utilise cette instruction pour exécuter des actions jusqu'à ce qu'une condition soit remplie.  Elle permet d’entrer une première fois dans la boucle avant de tester la condition pour les autres fois. Syntaxe : Faire <bloc d'instructions>; Jusqu’à Condition Do { <bloc d'instructions>; } while (condition);
  • 25.
    •Le bloc d'instructionsest exécuté une première fois. •Si la condition est vraie la boucle est à nouveau exécutée. •Si la condition est fausse on passe à l'instruction suivante. •Le bloc d’instructions sera exécuté au moins une fois. •La boucle n’est pas INCONDITIONNELLE. On ne connaît pas à l’avance le nombre d’itérations. Faire <bloc d'instructions>; Jusqu’à Condition Do { <bloc d'instructions>; } while (condition);
  • 26.
    Exemple ALGORITHME Affichage-Test; VAR test:Entier; DEBUT Test ← 10; Faire Ecrire ("test = ", test); Test ← test-2; jusqu'à (test >0) FIN. #include <stdio.h> main () { int test = 10; do { printf ("test= %d n", test); test -= 2; } while (test > 0); }
  • 27.
    Exercice: Écrire un algorithmeet un programme C permettant de calculer, pour un entier N> 0, la somme : SN = 1 + 2 + 3 + …… + N
  • 28.
    L’instruction Pour  Ellelimite le nombre de fois où doit se répéter le bloc Action  L’utilisation la plus courante est l’initialisation et la modification d’un compteur jusqu’à ce que celui-ci atteigne la valeur souhaitée.  On doit utiliser la structure Pour lorsque l’on connaît le nombre d’itérations. Syntaxe : Pour variable  valeur1 à valeur2 [pas de <incrément>] faire <Bloc d'instructions> ; Fin Pour for (expression(s)1; expression(s)2; expression(s)3 ) { <Bloc d'instructions> ; }
  • 29.
     Expression 1=> Initialisation d’une ou plusieurs variables (index).  Expression 2 => Expression conditionnelle (condition d’arrêt).  Expression 3 => Expression modifiant l’index. Pour variable  valeur1 à valeur2 [pas de <incrément>] faire <Bloc d'instructions> ; Fin Pour for (expression(s)1; expression(s)2; expression(s)3 ) { <Bloc d'instructions> ; }
  • 30.
    Exemple: ALGORITHME Affichage-a; VAR a:Entier; DEBUT Pour a  256 à 1 faire Ecrire ("a = ", a); Test ← a / 2; Fin pour FIN #include <stdio.h> main () { int a; for (a = 256; a>1; a /= 2) printf ("a= %d n", a); }
  • 31.
    Exercice: Écrire l’algorithme permettantde calculer la moyenne des notes de N étudiants