Documents
Resources
Learning Center
Upload
Plans & pricing Sign in
Sign Out

Les structures algorithmiques de contr�le

VIEWS: 32 PAGES: 11

									 ChapII : Les Structures algorithmiques de contrôle                      Prof : HichemKlouz

        ChapII : Les structures algorithmiques de contrôle
 Objectifs :
 A la fin de ce chapitre l’élève doit être capable de choisir la structure de contrôle convenable
 pour résoudre un problème donné.
I- Les structures de contrôle conditionnelles
   Les structures de contrôle conditionnelles sont de trois types :
       - la structure conditionnelle simple
       - la structure conditionnelle généralisée
       - la structure à choix
1- la structure conditionnelle simple
 a- la forme simple réduite
 Activité 1 :
 Résoudre mathématiquement l’équation suivante : ax + b = 0
 Solution :
 Quelque soit x Є IR Si a ≠ 0 alors x = -b ∕ a
 D’où si la condition a ≠ 0 est vrai alors on a la solution x = -b ∕ a
 Activité 2 :
 Ecrire la spécification, l’algorithme ainsi que le programme en pascal du problème de
 l’activité1
 Solution :
La spécification :
Résultat : Ecrire ("la solution est ", x)
Traitement : Si a ≠ 0 alors x ← -b ∕ a
               FinSi
               a= donnée
                b= donnée

 L’algorithme :
0) Début Resolution
1) Ecrire ("donnez la valeur de a ")
2) lire (a)
3) Ecrire ("donnez la valeur de b")
4) lire (b)
5) Si a ≠ 0 alors x ← -b ∕ a
 Ecrire (" la solution est ", x)
 FinSi
6) Fin Resolution
T.D.O
 Objets                           Types                            Rôles
 x                                Reél                             Solution de l’équation
 a                                Réel                             1er coefficient
 b                                Réel                             2ème coefficient

 En Pascal :
 Program Resolution ;
 Uses wincrt ;
 Var a, b, x : real;
 Begin
 Writeln ( ' donnez la valeur de a ' ) ; readln(a) ;

                                                                                                    1
 ChapII : Les Structures algorithmiques de contrôle                      Prof : HichemKlouz
 Writeln (' donnez la valeur de b ' ) ; readln(b) ;
 If a <>0 then x: = - b ∕ a;
 Writeln(' la solution est ', x) ;
 End.

Le principe :
Si la condition est vraie alors on exécute la séquence d’instructions sinon on ne fait rien.
Déclaration :

 Au niveau de l’algorithme                              Au niveau de Pascal
 1) Cas d’un traitement à une seule instruction         1) Cas d’un traitement à une seule instruction
 ----{init}                                             ----;{init}
  Si condition alors                                    If condition then
     instruction                                             Instruction ;
  FinSi

 2) Cas d’un traitement à plusieurs instructions        2) Cas d’un traitement à plusieurs
 ----{init}                                             instructions
 Si condition alors                                     ----;{init}
     Instruction1                                       If condition then
     Instruction2                                         Begin
     --------------                                          Instruction1 ;
     --------------   .                                      Instruction2 ;
     Instruction N                                           -------------- ;
  FinSi                                                      -------------- ; .
                                                             Instruction N ;
                                                          End ;

 Remarque : {init}est une séquence d’instructions qui contiendra les éventuelles initialisations.

  Activité 3 :
 Ré exécuter le programme de l’activité 2 en mettant a = 0. Que remarquez-vous ?
 Le programme affiche 0 comme solution. Comme notre condition a <>0 n’est pas vérifiée
alors la 1ère instruction (x: = - b ∕ a) ne sera pas exécutée et le programme passe directement à
l’instruction suivante qui permet d’afficher le contenu de x.
Activité 4 :
Ajouter Begin et End dans le programme de l’activité 2 pour que le programme n’affiche rien
lorsqu’on met a = 0
Remarque
On remarque que lorsque j’introduit 0 comme valeur pour a le programme n’affiche rien.
D’une façon générale lorsqu’on a plusieurs instructions à exécuter quand la condition est
vérifiée on doit mettre ces instructions entre Begin et End.
b- la forme complète (alternative)
Activité 5 :
Reprendre l’activité 2 en affichant le message « x est vide » lorsque a = 0
Solution :
La spécification :
Résultat : Affichage d’un message indiquant le résultat
Traitement : Si a ≠ 0 alors x ← -b ∕ a
                Ecrire ("la solution est ",x)
               Sinon
                 Ecrire(" x est vide ")
                                                                                                2
  ChapII : Les Structures algorithmiques de contrôle                    Prof : HichemKlouz
                FinSi
                a= donnée
                b= donnée
  L’algorithme :
 0) Début Resolution
 1) Ecrire ("donnez la valeur de a ")
 2) lire (a)
 3) Ecrire ("donnez la valeur de b")
 4) lire (b)
 5) Si a ≠ 0 alors x ← -b ∕ a
   Ecrire (" la solution est ", x)
   Sinon Ecrire(" x est vide ")
   Fin Si
 6) Fin Resolution
 T.D.O
  Objets                           Types                          Rôles
  x                                Reél                           Solution de l’équation
  a                                Réel                           1er coefficient
  b                                Réel                           2ème coefficient

  En Pascal :
   Program Resolution ;
   Uses wincrt ;
   Var a, b, x : real;
   Begin
   Writeln ( ' donnez la valeur de a ' ) ; readln(a) ;
   Writeln (' donnez la valeur de b ' ) ; readln(b) ;
    If a <>0 then
   Begin
    x: = - b ∕ a;
   Writeln(' la solution est ', x) ;
    End { Pas de ;}
    Else
    Writeln(' x est vide ') ;
    End.
  Le principe :
  Si la condition est vraie alors on exécute le 1er bloc d’instructions si elle n’est pas vraie on
  n’exécute le 2ème bloc d’instructions.
  Déclaration :
Au niveau de l’algorithme                              Au niveau de Pascal
1) Cas d’un traitement à une seule instruction         1) Cas d’un traitement à une seule instruction
----{init}                                             ----;{init}
Si condition alors                                     If condition then
     Instruction1                                           Instruction1
Sinon                                                  Else
     Instruction2                                           Instruction2 ;
FinSi
2) Cas d’un traitement à plusieurs instructions 2) Cas d’un traitement à plusieurs instructions
----{init}                                             ----;{init}
 Si condition alors                                     If condition then
     Instruction1-a                                      Begin
     Instruction2-a                                         Instruction1-a ;
                                                                                                   3
  ChapII : Les Structures algorithmiques de contrôle                       Prof : HichemKlouz

   --------------                                      Instruction2-a ;
   --------------     .                                -------------- ;
   Instruction N-a                                     -------------- ;     .
Sinon                                                  Instruction N-a ;
   Instruction1-b                                    End
   Instruction2-b                                   Else
   --------------                                    Begin
   --------------     .                                Instruction1-b ;
   Instruction N-b                                     Instruction2-b ;
                                                       -------------- ;
FinSi                                                  -------------- ;     .
                                                       Instruction N-b ;
                                                     End ;

2- la structure conditionnelle généralisée
Activité 1 :
  Modifier le programme en Pascal de l’activité 5 pour résoudre l’équation : ax + b = 0
  1) Discuter tous les cas mathématiques possibles
Solution :
Program Resolution ;
Uses wincrt ;
Var
a,b,x : real ;
Begin
Writeln ( ' donnez la valeur de a ' ) ; readln(a) ;
Writeln (' donnez la valeur de b ' ) ; readln(b) ;
 If a <>0 then
   Begin
   x: = - b ∕ a;
   Writeln(' la solution est ', x) ;
    End
 Else if b = 0 then
 Writeln(' la solution est IR ')
  Else
  Writeln( ' x est vide ') ;
End.
Le principe :
Si la 1ère condition est vérifiée alors le 1er bloc d’instructions sera exécuté. Si elle n’est pas
vraie on passe à la 2ème condition si elle est vérifiée alors on exécute le 2ème bloc
d’instructions. Si cette condition n’est pas vraie alors on passe à l’exécution du 3ème bloc
d’instructions.
Déclaration :
  Au niveau de l’algorithme                               Au niveau de Pascal
  ----{init}                                              ----;{init}
  Si condition1 alors Instruction1                        If condition1 then Instruction1
  Sinon Si condition2 alors Instruction2                  Else If condition2 then Instruction2
  Sinon Si condition3 alors Instruction3                  Else If condition3 then Instruction3
      --------------                                           --------------
  Sinon Si conditionN-1 alors InstructionN-1              Else If conditionN-1 then InstructionN-1
  Sinon Instruction N                                     Else Instruction N ;
  FinSi
  NB : Jamais de point virgule avant ELSE.
                                                                                                   4
 ChapII : Les Structures algorithmiques de contrôle                     Prof : HichemKlouz

3- la structure conditionnelle à choix
Activité 1 :
Ecrire la spécification, l’algorithme et le programme Pascal appelé Entier qui affiche «Petit »
si l’entier saisi N Є [0,3] , « Moyen » si N Є [4,10] , « Grand » si N Є [11,40] et « Très
Grand » si N > 40.
Solution :
La spécification :
Résultat : Affichage d’un message indiquant le Type de l’entier saisi
Traitement : Si N dans [ 0 ..3 ] alors Ecrire ("Petit")
             Sinon Si N dans [ 4 ..10] alors Ecrire ("Moyen")
             Sinon Si N dans [11..40] alors Ecrire ("Grand")
             Sinon Ecrire ("Très Grand")
             Fin Si
 N= donnée ("Donnez en entier")

 L’algorithme :
0) Début Entier
1) Ecrire ("donnez un entier ")
2) lire (N)
3) Si N dans [0..3] alors Ecrire ("Petit")
Sinon Si N dans [4..10] alors Ecrire ("Moyen")
Sinon Si N dans [11..40] alors Ecrire ("Grand")
Sinon Ecrire ("Très Grand")
Fin Si
4) Fin Entier
T.D.O
 Objets       Types        Rôles
 N            Entier       Entier saisi


 En Pascal :
Program Entier ;
Uses wincrt ;
Var
N : Integer;
Begin
Writeln ( ' donnez un entier ' ) ;
readln(N) ;
If N in [0..3] then
 Writeln(' Petit ')
 Else if N in [4..10] then
 Writeln (' Moyen ')
  Else if N in [11..40] then
  Writeln (' Grand ')
  Else
  Writeln (' Très Grand ');
End.




                                                                                                  5
  ChapII : Les Structures algorithmiques de contrôle                      Prof : HichemKlouz

 Déclaration :
           Au niveau de l’algorithme                                     Au niveau de Pascal

----{init}                                             ---- ;{init}
  Selon selecteur Faire                                CASE selecteur OF
        Valeur 1 : Action 1                               Valeur_1 : Action 1;
         Valeur 2 : Action 2-1                            Valeur_2 : Begin
                      …                                               Action_ 2_1;
                      Action 2-N                                      …
         Valeur 3 : Action 3                                          Action_ 2_N ;
         Valeur 4, Valeur 6, Valeur 8 : Action 4                      End ;
         Valeur 5, Valeur 7, Valeur 9 : Action 5           Valeur_3 : Action_3 ;
         Valeur 10 .. Valeur 19 : Action 6                 Valeur_4, Valeur_6, Valeur_8 : Action_4 ;
          …                                                Valeur_5, Valeur_7, Valeur_9 : Action_5 ;
          Valeur N : Action N                              Valeur_10 .. Valeur_19 : Action_6 ;
                                                           …
        Sinon                                              Valeur_N : Action_N ;
           Action M
      Fin Selon                                           ELSE
                                                           Action_M ;
                                                        END ;
  Remarques :
  1) Le sélecteur est une variable, cette variable est comparée à une série de
  valeurs ou à un ou plusieurs intervalles. En cas d’égalité, l’instruction qui lui est
  associée est exécutée. Les autres ne seront pas exécutées.
  Le sélecteur ne peut pas être de type réel.
  2) La structure Selon peut ne pas avoir de Sinon
  3) Cette structure permet une meilleure lisibilité du programme
 Application :
 Reprendre l’activité 1 en utilisant la structure à choix Selon.
 Solution :
 La spécification :
 Résultat : Affichage d’un message indiquant le Type de l’entier saisi
 Traitement : Selon N faire
             0..3 : Ecrire ("Petit")
             4..10 : Ecrire ("Moyen")
             11..40 : Ecrire ("Grand")
              Sinon
              Ecrire ("Très Grand")
              Fin Selon
  N= donnée ("Donnez en entier")
  L’algorithme :
 0) Début Entier
 1) Ecrire ("donnez un entier ")
 2) lire (N)
 3) Selon N faire
     0..3 : Ecrire ("Petit")
     4..10 : Ecrire ("Moyen")
     11..40 : Ecrire ("Grand")
                                                                                               6
 ChapII : Les Structures algorithmiques de contrôle                       Prof : HichemKlouz
 Sinon Ecrire ("Très Grand")
 Fin Selon

4) Fin Entier
T.D.O
 Objets       Types         Rôles
 N            Entier        Entier saisi


 En Pascal:
Program Entier ;
Uses wincrt;
Var
N : Integer;
Begin
Writeln ( ' donnez un entier ' ) ;
Readln (N) ;
CASE N OF
0..3 : Writeln (' Petit ') ;
4..10 : Writeln (' Moyen ') ;
11..40 : Writeln (' Grand ') ;
Else
Writeln (' Très Grand ') ;
End ;
End.

II- Les structures de contrôle Itératives
Activité 1 :
 Ecrire un programme qui permet d’afficher à l’écran 5 fois le message « Bonjour »
Solution :
Algorithme
0) Début Affichage
1) Ecrire("Bonjour")
2) Ecrire("Bonjour")
3) Ecrire("Bonjour")
4) Ecrire("Bonjour")
5) Ecrire("Bonjour")
6) Fin Affichage
   pour éviter la répétition de l’écriture d’une instruction ( ou d’un traitement ) plusieurs fois
   dans un programme, il faut utiliser une nouvelle structure qu’on appelle structure
   répétitive ou structure itérative ou boucle.

 1- La forme itérative complète : la boucle « POUR………Faire»
 Définition : La structure itérative complète est utilisée lorsqu‘on connaît à l’avance le nombre de
 répétition d’une suite d’instructions.




                                                                                                     7
 ChapII : Les Structures algorithmiques de contrôle                    Prof : HichemKlouz


Déclaration :

                Au niveau de l’algorithme                             Au niveau de Pascal
….{init}                                                  …. ;{init}
 POUR compteur de Vi à Vf Faire                            FOR compteur := Vi to Vf DO
                                                             BEGIN
        Instruction 1                                            Instruction 1 ;
        ….                Traitement                             ….              Traitement
        Instruction N                                            Instruction N ;

   FinPOUR                                                   END;


  Compteur : C’est une variable de contrôle de type scalaire.
  Vi et Vf sont respectivement la valeur initiale et finale de compteur
  Le nombre de répétition est connu à l’avance, il est égale à ( Vf – Vi ) +1

 Remarque:                                 Pour i de Vi à Vf Faire
               Si Vi < Vf                  For i := Vi TO Vf Do
    La valeur du compteur sera incrémentée par 1 pour atteindre Vf
                                                 Pour i de Vi à Vf Faire
                   Si Vi > Vf
                                                 For i := Vi DOWN TO Vf Do
      La valeur du compteur sera décrémentée jusqu’à atteindre Vf
 Exemple: Ecrire un programme pascal qui permet d’afficher les lettres majuscules de
 l’alphabet français dans un ordre décroissant.
Solution :
Pascal
 Program alphabet;
 Uses wincrt;
 Var
 lettre : char;
 begin
 For lettre := 'Z' downto 'A' do
 write (lettre, ' ') ;
 end.
 Application :
 Ecrire la spécification et l’algorithme d’un programme qui permet de remplir un tableau Tab
 par n entiers.
Solution :
La spécification :
 Résultat : le remplissage du tableau Tab
 Traitement : Pour i de 1 à n faire
                Tab[i] = donnée ("donnez la valeur", i)
                FinPour
 n = donnée ("Donner la taille du tableau :")



                                                                                              8
 ChapII : Les Structures algorithmiques de contrôle                   Prof : HichemKlouz
 T.D.O
         Objets                           Type                             Rôle
          Tab               Tableau de n entier                           Tableau
           n                Entier                                   Taille du tableau
           i                Entier                                      Compteur
 L’algorithme :
 0) Début Remplissage
 1) Ecrire ("Donner la taille du tableau :")
 2) Lire (n)
 3) Pour i de 1 à n faire
     lire (T[i] )
    FinPour
 3) Fin Remplissage
 2- Les formes itératives à condition d’arrêt
  a- La structure REPETER …JUSQU'A
  Activité :
 Ecrire un programme intitulé CONTROLE qui permet de saisir un entier naturel N compris
 entre 0 et 20 (0  N  20).
 Remarque :
  - L’utilisateur peut se tromper plusieurs fois
  - Dans ce cas le nombre de répétition est inconnu : on ne peut pas donc utiliser la structure
 itérative complète ( la boucle POUR ). On doit utiliser une structure à condition d’arrêt.
Solution :
La spécification :
 Résultat : la saisie d’un entier 0  N  20
 Traitement : REPETER
             N = Donnée (‘’ Introduire un entier’’)
             JUSQU'A ( 0 ≤ N ) ET ( N ≤ 20 )
L’algorithme :
 0) Début CONTROLE
 1) REPETER
     Ecrire (‘’introduire un entier’’)
     Lire (N)
    JUSQU'A ( 0 ≤ N ) ET ( N ≤ 20 )
 2) Fin CONTROLE
 T.D.O
    Objets            Types              Rôles
      N               Entier           Entier saisi
 En Pascal:
 Program CONTROLE;
  Uses wincrt ;
  Var
   N :integer ;
  Begin
    REPEAT
     Writeln('introduire un entier');
     Readln(N);
    UNTIL ( 0 <= N ) AND ( N <= 20 );
   End.

                                                                                             9
 ChapII : Les Structures algorithmiques de contrôle                      Prof : HichemKlouz

 Définition : La structure itérative à condition d’arrêt permet de répéter une suite
 d’instructions jusqu'à ce qu’une condition d’arrêt passe à l’état Vrai.

            Au niveau de l’algorithme                               Au niveau de Pascal
 ….{init}                                             …. ;{init}
    REPETER                                              REPEAT
       Instruction 1                                       Instruction 1 ;
       ….            Traitement                             ….               Traitement
       Instruction N                                       Instruction N ;
   JUSQU’A condition d’arrêt                             UNTIL condition d’arrêt ;

 Application :
 Faire l’application 3 du livre à la page 88.

 b- La structure TANT QUE …FAIRE
 -Cette structure est une définition itérative à condition d’arrêt. Dans ce cas aussi le nombre de
 répétition est inconnu à l’avance.
  -La différence avec la structure REPETER … JUSQU'A est dans le teste de la condition
 d’arrêt. Ce teste est effectué avant d’entrer dans la boucle TANT QUE (nombre de répétition
 peut être = 0). Alors que dans le cas de la boucle REPETER ce teste est effectué après l’entrée
 dans la boucle (nombre de répétition est > 0).
 Déclaration :

              Au niveau de l’algorithme                              Au niveau de Pascal
 ….{init}                                               …..;{init}
 TANT QUE condition FAIRE                                WHILE condition DO
                                                          Begin
        Instruction 1                                          Instruction 1 ;
        ….                                                     ….
        Instruction N                                          Instruction N ;

      Fin TANT QUE                                          End ;

 Application:
 Ecrire un programme intitulé SOM_POS qui permet de calculer la somme d’un ensemble
 d’entiers. On arrête le calcul de la somme et on affiche le résultat en cas où on saisie un entier
 négatif.
Solution :
La spécification :
 Résultat : Ecrire(Som)
 Traitement : Som  0
              TANT QUE ( X ≥ 0) FAIRE
              Som  Som + X
              X = Donnée (‘’ Introduire un entier’’)
              FIN TANT QUE
             X = Donnée (‘’ Introduire un entier’’)
L’algorithme :
 0) Début SOM_POS

                                                                                                10
ChapII : Les Structures algorithmiques de contrôle       Prof : HichemKlouz
1) Ecrire (‘’ Introduire un entier’’)
2) Lire (X)
3) Som  0
4) TANT QUE ( X ≥ 0) Faire
             Som Som + X
             Ecrire (‘’ Introduire un entier’’)
             Lire(X)
            FIN TANT QUE
5) Ecrire ( ‘’la somme est ‘’,Som)
6) Fin SOM_POS

T.D.O
  Objets             Types                  Rôle
    S               Entier                 Somme
    X               Entier


En Pascal:
Program SOM_POS;
  Uses wincrt ;
  Var
   Som, X :integer ;
  Begin
   Writeln(' Introduire un entier ' ) ; Readln (X) ;
    Som := 0 ;
    WHILE X >= 0 Do
      Begin
        Som:= Som+X;
        Writeln(' Introduire un entier '); Readln(X) ;
       End;
  Writeln('la somme est ', Som);
  End.
3- Application
Faire l’exercice 9 du livre à la page 105.




                                                                         11

								
To top