SlideShare une entreprise Scribd logo
PROF : Mohamed SAYARI                              4 SI                      LES ALGORITHMES D’ARITHMETIQUES




I. Introduction
     L’arithmétique est une branche de mathématiques qui étudie les relations entre les nombres. C’est aussi
l’étude des nombres et des opérations élémentaires entre eux.

II. Calcul de PGCD (voir chapitre récursivité)

III. Calcul de        et
III.1 présentation
- Le nombre de permutations ordonnés possibles de p éléments parmi n appelé Arrangement :
    Exemple1 : quels sont les nombres de 2 chiffres à former à partir de la liste {5, 3,1}
    Réponse : 53, 35, 51, 15, 31, 13       =6
    Exemple2 : tirage sans remise

   Définition 1: E étant un ensemble à n éléments, on appelle arrangement de p éléments de E toute p-liste
    d'éléments distincts de E.

-   Le nombre de permutations sans ordre possibles de p éléments parmi n appelé Combinaison :
    Exemple1 : quels sont les listes de 2 éléments à former à partir de la liste {5, 3,1}
    Réponse : {5, 1}, {5, 3}, {3, 1}       =3
    Exemple2 : tirage avec remise

   Définition 2: E étant un ensemble à n éléments, on appelle combinaison de p éléments de E toute
    collection non ordonnée de p éléments distincts de E

III.2 Calcul de
Activité1 : écrire un programme modulaire en Pascal qui permet de calculer et d’afficher l           e avec n et p
deux entiers tel que 1≤p≤ n
                              Sachant que     = n (n-1) (n-2) ….. (n-p+1)
                                            Ou encore          (     )

a) Analyse du programme principal
   2) Résultat = Ecrire ("A (", p, ",", n, ")=", FN calcul (n, p))
   1) (N,p)= proc saisir (n, p)
                                                           Algorithme du programme principal
                      TDOG
                                                     0)   DEBUT arrangement
         Objet             Type/Nature
                                                     1)   Proc saisir (n, p)
         N                 Entier
                                                     2)   Ecrire ("A (", p, ",", n, ")=", FN calcul (n, p))
         p                 entier
         saisir            procédure                 3)   Fin arrangement
         calcul            fonction


                                                                                                              1
PROF : Mohamed SAYARI                         4 SI       LES ALGORITHMES D’ARITHMETIQUES


b) Analyse de la procédure saisir                      Algorithme de la procédure saisir
   DEF PROC saisir var (n, p : entier)
                                                     0) DEF PROC saisir (var n, p : entier)
   Résultat = n, p
                                                     1) Répéter
   2) N= [ ] répéter
                                                        Ecrire ("P= "), lire (P)
           N= donnée ("N=")
                                                        Jusqu’à (p≥1)
           Jusqu’à (n≥p)
                                                     2) Répéter
   1) P= [ ] répéter                                    Ecrire ("N= "), lire (N)
           P= donnée ("P= ")                            Jusqu’à (N≥p)
           Jusqu’à (p ≥1)                            3) Fin saisir


c) Analyse de la fonction calcul                       Algorithme de la fonction calcul
DEF FN calcul (n, p : entier) : entier
                                                     0) DEF FN CALCUL (n, p : entier) : entier
2) Résultat = calcul  a
                                                     1) A 1
1) A= [a1] pour i de n à (n-p+1) (pas=-1) Faire        Pour i de n à n-p+1 (pas=-1) Faire
                   Aa*i                                  Aa*i
               Fin pour                                 Fin pour
                                                     2) Calcul a
            TDOL                                     3) Fin calcul
        objet  Tupe/nature
          I      Entier
          a       entier




                                                                                           2
PROF : Mohamed SAYARI                              4 SI                       LES ALGORITHMES D’ARITHMETIQUES


III.3 Calcul de
Activité1 : écrire un programme modulaire en Pascal qui permet de calculer et d’afficher le              avec n et p
deux entiers tel que 0≤p≤ n



    a) Analyse du programme principal
    2) Résultat = Ecrire ("C (", p, ",", n, ")=", FN calcul (n, p))
    3) (N,p)= proc saisir (n, p)
                                                                Algorithme du programme principal
                       TDOG
                                                          0)   DEBUT arrangement
         Objet             Type/Nature                    1)   Proc saisir (n, p)
         N                 Entier                         2)   Ecrire ("C (", p, ",", n, ")=", FN calcul (n, p))
         p                 entier                         3)   Fin arrangement
         saisir            procédure
         calcul            fonction



    b) Analyse de la procédure saisir
    DEF PROC saisir var (n, p : entier)
    Résultat = n, p
       2) N= [ ] répéter
                                                                            Algorithme de la procédure saisir
            N= donnée ("N=")
            Jusqu’à (n≥p)                                                     0) DEF PROC saisir (var n, p : entier)
       1) P= [ ] répéter                                                      1) Répéter
            P= donnée ("P= ")                                                 Ecrire ("P= "), lire (P)
            Jusqu’à (p ≥0)                                                    Jusqu’à (p≥0)
                                                                              2) Répéter
                                                                              Ecrire ("N= "), lire (N)
                                                                              Jusqu’à (N≥p)
                                                                              3) Fin saisir


    c) Analyse de la fonction calcul
     DEF FN calcul (n, p : entier) : real                                   Algorithme de la fonction calcul
       2) Résultat = calcul  c
                                                                            0)   DEF FN CALCUL (n, p : entier) : réel
       1) C  FACT (n) / (FACT (p) * FACT (n-p))
                                                                            1)   C  FACT (n) / (FAT(p)*FACT (n-p))
                                                                            2)   CALCUL  c
                                                                            3)   Fin calcul




                                                                                                                3
PROF : Mohamed SAYARI                             4 SI          LES ALGORITHMES D’ARITHMETIQUES




III.4 Application
    =9    =8      =1

   =1           =1

Activité : écrire la fonction combinaison récursive

Analyse de la fonction COMB récursive
DEF FN Combo (n, p : entier) : entier
Résultat= combo
1) combo= [ ] si (p=0) ou (p=n) alors combo 1
        Sinon combo  FN combo (n-1, p-1) + FN combo (n-1, p)
        Fin si




                                                                                         4
PROF : Mohamed SAYARI                        4 SI                  LES ALGORITHMES D’ARITHMETIQUES


IV. Quelques règles de divisibilité (livre page 166)

V. Conversion entre les bases de numération
    V.1 Définition
Un système de numération est une méthode de comptage fondée sur une base de numération qui est
un entier supérieur ou égal à 2. Soit N une base de numération, le système sera doté de N chiffres de
0 à N-1

    V.2 Exemples de bases de numération (voir livre page 166)

    V.3 Conversion d’un nombre décimal en binaire
Ecrire un programme modulaire en pascal qui permet de saisir un entier positif, le convertit en
binaire.

a) Analyse du programme principal
    2) Résultat = Ecrire (Fn conv_DEC_BIN(n))
   1) N = proc saisir (n)

b) Analyse de la procédure CONV_DEC_BIN
   DEF FN CONV_DEC_BIN (n : entier) : chaîne                      Algorithme du programme principal
   2) Résultat = CONV_DEC_BIN  ch
   1)Ch=[ch  ""] répéter                                          0) Début conversion
                    R  n mod 2                                    1) Proc saisir (n)
                    N  n div 2                                    2) Ecrire (Fn conv_DEC_BIN(n))
                    Ch  chr(48+R)+ch                              3) Fin conversion
                   Jusqu’à (n=0)


                                                           Algorithme de la fonction CONV_DEC_BIN

                                                         0) DEF FN CONV_DEC_BIN (n : entier) : chaîne
                                                         1) Ch  ""
                                                             répéter
                                                              R  n mod 2
                                                              N  n div 2
                                                              Ch  chr(48+R)+ch
                                                             Jusqu’à (n=0)
                                                         2) CONV_DEC_Bin  ch
                                                         3) Fin CONV_DEC_BIN




                                                                                                 5
PROF : Mohamed SAYARI                              4 SI                      LES ALGORITHMES D’ARITHMETIQUES


    V. 4 Conversion d’un nombre binaire en décimal
Ecrire un programme modulaire en pascal qui permet de saisir un nombre binaire (sous forme d’une
chaîne de caractères), le convertit en décimal.
                                                              Algorithme du programme principal
  a) Analyse du programme principal
      2) Résultat = Ecrire (FN conv_bin_dec(ch))               0) Début conversion
      1)Ch= proc saisir (ch)                                   1) Proc saisir (ch)
                                                               2) Ecrire (FN conv_bin_dec(ch))
                                                               3) Fin conversion
  b) Analyse de la procédure saisir
DEF PROC SAISIR (var ch : chaîne)                                         Algorithme de la procédure saisir
Résultat = ch                                                       0) DEF PROC SAISIR (var ch : chaîne)
1)Ch=[ ] répéter                                                        1) répéter
          Ch= donnée ("CH= ")                                            Ecrire ("CH= "), lire (ch)
          i0                                                            i0
          répéter                                                        répéter
           ii+1                                                          ii+1
           test  ch[i] dans ["0","1"]                                    test  ch[i] dans ["0","1"]
          jusqu’à (non test) ou (i=long(ch))                             jusqu’à (non test) ou (i=long(ch))
          jusqu’à test                                                 Jusqu’à test
                                                                    2) Fin saisir




  c) Analyse de la fonction conv_bin_dec                             Algorithme de la fonction conv_bin_dec
DEF FN conv_bin_dec (ch :chaîne) : entier long
                                                              0)DEF FN conv_bin_dec (ch :chaîne): entire long
2)Résultat = conv_bin_dec  n
                                                              1)N <- 0
1)N= [n0] pour i de 1 à long (ch) faire
                                                               pour i de 1 à long (ch) faire
              N  n +(ord(ch[i])-48)*puissance(long(ch)-i)
                                                                    N  n +(ord(ch[i])-48)*puissance(long(ch)-i)
            Fin pour
                                                                  Fin pour
                                                              2) conv_bin_dec  N
                                                              3) Fin conv_bin_dec




  d) Analyse de la fonction puissance                               Algorithme de la fonction puissance
DEF FN puissance (x :entier) :entier                   0)DEF FN puissane (x :entier) : entier
2)Résultat = puissance p                              1)p 1
                                                         Pour i de 1 à x faire
1)P=[ p 1] pour i de 1 à x Faire
                                                               Pp*2
              P  2*p                                   Fin pour
            Fin pour                                    2)puissance p
                                                        3) Fin puissance



                                                                                                              6
PROF : Mohamed SAYARI   4 SI   LES ALGORITHMES D’ARITHMETIQUES




                                                        7
PROF : Mohamed SAYARI                              4 SI                   LES ALGORITHMES D’ARITHMETIQUES


        V. 5 Conversion d’un nombre hexadécimal en binaire
Activité : écrire un programme modulaire en pascal qui permet de saisir un nombre hexadécimal, le
convertit en binaire.




Analyse du programma principal :
2)Résultat= Ecrire("("ch," )16= (", FN conv_hex_bin(ch), ")2")
1)Ch= proc saisir (ch)
                                                                    Algorithme du programme principal
                       TDOG                           0) Début conversion
         Objet       Type/nature   Rôle
                                                      1) proc saisir (ch)
           Ch           Chaîne
          Saisir      Procédure                       2) Ecrire ("("ch,») 16= (", FN conv_hex_bin(ch), ")2")
      Conv_hex_bin     fonction                       3 Fin conversion
Analyse de la procédure saisir
                                                 TDOL
DEF PROC saisir (var ch :chîne)           Objet Type/nature   Rôle
Résultat = ch                                i     Entier
                                           test   booléen
1)Ch=[ ] répéter                                                             Algorithme de la procédure saisir
            Ch= donnée ("CH=")                                           0) DEF PROC saisir (var ch :chîne)
            i 0                                                         1) répéter
            Répéter                                                         Ecrire ("CH="), lire (ch)
               i  i+1                                                      i 0
                                                                              Répéter
               ch[i] dans ["0".."9", "A".."F"]
                                                                              i  i+1
            Jusqu’à (non test) ou (i=long (ch))
                                                                              ch[i] dans ["0".."9", "A".."F"]
         Jusqu’à (test)
                                                                              jusqu’à (non test) ou (i=long(ch))
Analyse de la fonction conv_hex_bin                                           Jusqu’à (test)
                                                                         2) fin saisir
DEF FN conv_hex_bin (ch : chaîne): chaîne
2)Résultat= conv_hex_bin  ph
2)Ph=[] tant que ph[1]= "0" faire                                                         TDOL
         Efface(ph, 1, 1)                                                    Objet        Type/nature    Rôle
                                                                           i             Entier
        Fin tant que                                                       con           fonction
1)Ph=[ph""]pour i de 1 à long (ch) faire                                  ph            chaîne
              Si ch[i] dans ["0".."9"] alors ph  ph + conv(ord(ch[i])-48)
              Sinon ph ph + conv (ord(ch[i])-55)
              Fin si

Analyse de la fonction conv
DEF FN conv (x : entier): chaîne                                                            TDOL
2)Résultat= convdh                                                              Objet     Type/nature    Rôle
                                                                               i          Entier
1)dh=[dh"0000", i4] répéter                                                  dh         chaîne
                       dh[i]  chr((x mod 2)+48)
                       x x div 2
                       i i – 1

                                                                                                                8
PROF : Mohamed SAYARI                              4 SI               LES ALGORITHMES D’ARITHMETIQUES

          Algorithme de la fonction conv_hex_bin
                      jusqu’à (x=0)
   0) DEF FN conv_hex_bin (ch : chaîne): chaîne                     Algorithme de la fonction conv
   1) Ph""                                                         0) DEF FN conv (x : entier): chaîne
     pour i de 1 à long (ch) faire                                  1) dh"0000"
     Si ch[i] dans ["0".."9"] alors ph  ph + conv(ord(ch[i])-48)      i4
     Sinon ph ph + conv (ord(ch[i])-55)                               répéter
     Fin si                                                            dh[i]  chr((x mod 2)+48)
   2) tant que ph[1]= "0" faire                                          x x div 2
        Efface (ph, 1, 1)                                                i i – 1
      Fin tant que                                                      jusqu’à (x=0)
   3) fin conv_hex_bin                                              2) fin conv

4) Fin conv_hex_bin




                                                                                                     9
PROF : Mohamed SAYARI                                 4 SI                    LES ALGORITHMES D’ARITHMETIQUES



        V. 6 Conversion d’un nombre binaire en hexadécimal
Activité : écrire un programme modulaire en pascal qui permet de saisir un nombre binaire, le
convertit en hexadécimal.

Analyse du programme principal :
2) Résulat= Ecrire ("(", ch, ") 2= (", FN conv_bin_hex(ch), ")16")
1) Ch= proc saisir (ch)
                                                                    Algorithme du programme principal
                      TDOG
                                                        0) Début conversion
         Objet        Type/nature      Rôle
    Conv_bin_hex     fonction                           1) proc saisir (ch)
    ch               chaîne
                                                        2) Ecrire ("(", ch, ") 2= (", conv_bin_hex(ch), ")16")
    Saisir           procédure
                                                        3) Fin conversion


Analyse de la fonction conv_bin_hex
DEF FN conv_hex_bin (ch : chaîne): chaîne
3) Résultat= conv_bin_hex  ph
2) Ph= [ph "" ] répéter
                      Ph  ph + Fn conv (sous-chaîne (ch, 1, 4))
                      Efface (ch, 1, 4)
                                                              Algorithme de la fonction conv_bin_hex
                   Jusqu’à (long (ch)=0)
1) Ch=[ ] tant que long(ch) mod 4≠0 Faire             0) DEF FN conv_bin_hex (ch : chaîne): chaîne
                Insère (ch, "0", 1)                   1) tant que long(ch) mod 4≠0 Faire
          Fin tant que                                   Insère (ch, "0", 1)
                                                                 Fin tant que
                               TDOL
                                                              2) ph ""
               Objet          Type/nature     Rôle               Répéter
              conv           fonction                              Ph  ph + FN conv (sous-chaîne (ch, 1, 4))
              ph             chaîne                              Efface (ch, 1, 4)
                                                                 Jusqu’à (long (ch)=0)
                                                              3) conv_bin_hex  ph
Analyse de la fonction conv                                   4) fin conv_bin_hex
DEF FN conv (dh : chaîne) : caractère
Résultat= conv
2)Conv=[ ] si x dans [0..9] alors conv  chr (x+48)                         Algorithme de la fonction conv
            Sinon conv  chr (x+55)                              0) DEF FN conv (dh : chaîne) : caractère
            Fin si                                               1) x0
                                                                  pour i de 1 à 4 faire
1) x=[x0] pour i de 1 à 4 faire
                                                                     x  x + (ord (ch[i])-48) * FN puissance (4-i)
        x  x + (ord (ch[i])-48) * FN puissance (4-i)
                                                                 Fin pour
           Fin pour
                                                                 2) si x dans [0..9] alors conv  chr (x+48)
                                TDOL                                     Sinon conv  chr (x+55)
                     Objet    Type/nature      Rôle              Fin si
                   x          enier                              3) Fin conv
                   i          entier
                                                                                                            10
PROF : Mohamed SAYARI                            4 SI              LES ALGORITHMES D’ARITHMETIQUES



Analyse de la fonction puissance                             Algorithme de la fonction puissance
DEF FN puissance (a :etier) : entier
Résultat=puissance b                                   0) DEF FN puissance (a :etier) : entier
                                                        1) b1
b=[b1] pour i de 1 à 4 faire
                                                           Pour i de 1 à 4 faire
              bb*2
                                                           bb*2
         fin pour
                                     TDOL                  fin pour
                           Objet   Type/nature   Rôle   2) puissance b
                         b         enier
                         i         entier




                                                                                                   11
PROF : Mohamed SAYARI                                    4 SI                        LES ALGORITHMES D’ARITHMETIQUES



            V. 5 Conversion d’un nombre hexadécimal en décimal
Activité : écrire un programme modulaire en pascal qui permet de saisir un nombre hexadécimal, le
convertit en décimal.

Analyse du programme principal :
2) Résultat= Ecrire ("(ch",") 16= (", FN conv_hex_dec (ch),") 10")
1) Ch=proc saisir (ch)

                          Algorithme du programme principal                                           TDOG
          0) Début conversion                                                                  Objet       Type/nature
          1) proc saisir (ch)                                                                   saisir      Procédure
                                                                                            Conv_hex_dec     fonction
          2) Ecrire ("(ch",") 16= (", FN conv_hex_dec (ch),") 10")                               ch           chaîne
          3) Fin conversion

Analyse de la fonction conv_hex_dec :
DEF FN conv_hex_dec (ch :chaîne): entire long
2) Résultat= conv_hex_dec  N
1) N= [N 0] pour i de 1 à long (ch) faire
               Si ch[i] dans ["0".."9"] alors N N + (ord (ch[i])-48) * FN puissance (long (ch) –i)
               Sinon N  N + (ord (ch[i])-55) * FN puissance (long (ch)-i)
               Fin si
               Fin pour
                             Algorithme de la fonction conv_hex_dec
0) DEF FN conv_hex_dec (ch :chaîne): entire long
1) N0
    pour i de 1 à long (ch) faire                                                                             TDOL
     Si ch[i] dans ["0".."9"] alors N N + (ord (ch[i])-48) * FN puissance (long (ch) –i)             Objet   Type/nature
     Sinon N  N + (ord (ch[i])-55) * FN puissance (long (ch)-i)                                       N       Entier long
     Fin si                                                                                             i        entier
     Fin pour
2) conv_hex_dec  N
3) Fin conv_hex_dec


Analyse de la fonction puissance :
DEF FN puissance (x : entier) : entier long
2) Résultat= puissance p                                                 Algorithme de la fonction puissance
1) P= [p0] pour i de 1 à x faire                                0) DEF FN puissance (x : entier) : entier long
             P  p * 16                                          1) p0
           Fin pour                                               Pour i de 1 à x faire
                                                                        P  p * 16
                          TDOL                                   Fin pour
                  Objet       Type/nature                        2) Puissance p
                   p           Entier long                       3) Fin puissance
                    i            entier


                                                                                                                         12
PROF : Mohamed SAYARI   4 SI   LES ALGORITHMES D’ARITHMETIQUES




                                                        13
PROF : Mohamed SAYARI                              4 SI                       LES ALGORITHMES D’ARITHMETIQUES



             V.7 Conversion d’un nombre octal en binaire
Similaire à la conversion de l’hexadécimal en binaire.
     Exemple :

                5                      7                          3                          1


               101                    111                       011                        001

     Donc (5731)8 = (101111011001)2

             V. 8 Conversion d’un nombre binaire en octal

Similaire à la conversion du binaire en hexadécimal
     Exemple :

         101                         111                           011                            001


  1*22+0*21+1*20 = 5          1*22+1*21+1*20 = 7           0*22+1*21+1*20 = 3             0*22+0*21+1*20 = 1

     Donc (101111011001)2 = (5731)8

             V. 9 Conversion d’un nombre octal en décimal
Similaire à la conversion du hexadécimal en décimal
     Exemple :
                          (5732)8 = 5*83 + 7*82 + 3*81 + 2*80 = (3034)10

            V. 10 Conversion d’un nombre d’une base b1 en une base b2
Ecrire un programme modulaire en Pascal, qui saisit un nombre d’une base B1 et le convertit en une
base B2 avec (2≤B1≤16 et 2≤B2≤16)

a) Analyse du programme principal
   4) Résultat= écrire ("(", ch,") ", b1, "= (", FN conversion (ch, b1, b2), ")", b2)
   3) B2= proc saisir (b2)
                                                           Algorithme du programme principal :
   2) Ch= proc saisir (ch, b1)
   1) B1= proc saisir (b1)                   0) Début conversion
                                            1) proc saisir (b1)
                                            2) proc saisir (ch, b1)
                                            3) proc saisir (b2)
                                            4) écrire ("(", ch,") ", b1, "= (", FN conversion (ch, b1, b2), ")", b2)
                                            5) Fin conversion




                                                                                                               14
PROF : Mohamed SAYARI                                 4 SI                         LES ALGORITHMES D’ARITHMETIQUES


b) Analyse de la fonction conversion
  DEF FN conversion (ch : chaîne ; b1, b2 : entier) : chaîne
  3) Résultat = conversion  ph                                         Algorithme de la fonction convesrion
  2) Ph  FN convb2 (n10, b2)                                0)   DEF FN conversion (ch : chaîne ; b1, b2 : entier)
  1) N10  FN conv10 (ch, b1)                                1)   N10  FN conv10 (ch, b1)
                                                             2)   Ph  FN convb2 (n10, b2)
                                                             3)   conversion  ph
                                                             4)   fin conversion
c) Analyse de la fonction conv10 (convertit un nombre vers la base décimal)
   DEF FN conv10 (ch : chaîne ; b1 : entier) : entier long
   2) Résultat= conv10 n
   1) N= [n0] pour i de long (ch) à 1 (pas=-1) Faire
                 Si ch[i] dans ["0".."9"] alors n  n + (ord (ch[i])-48) * Fn puissance (b1, long (ch)-1)
                 Sinon n  n + (ord (ch[i])-55) * Fn puissance (b1, long (ch)-1)
                 Fin si
                 Fin pour
                                                Algorithme de la fonction conv10
            0) DEF FN conv10 (ch : chaîne ; b1 : entier) : entier long
            1) n0
               Pour i de long (ch) à 1 (pas=-1) Faire
                       Si ch[i] dans ["0".."9"] alors n  n + (ord (ch[i])-48) * Fn puissance (b1, long (ch)-1)
                       Sinon n  n + (ord (ch[i])-55) * Fn puissance (b1, long (ch)-1)
                       Fin si
               Fin pour
            2) conv10 n
            3) Fin conv10

d) Analyse de la fonction convb2 (convertit un nombre décimal vers la base B2)
   DEF FN convb2 (n1O : entier long ; b2 : entier) : chaîne
   2) Résultat= convb2  ph
                                                                      Algorithme de la fonction convb2
   1) Ph= [ph""] répéter                                  0) DEF FN convb2 (n1O : entier long ; b2 : entier) : chaîne
                      R  n mod b2                         1) ph""
                      Si r ≤9 alors ph  chr(r + 48) + ph   Répéter
                      Sinon ph  chr(r+55) + ph                 R  n mod b2
                      Fin si                                    Si r ≤9 alors ph  chr(r + 48) + ph
                                                                Sinon ph  chr(r+55) + ph
                      N10  N10 div b2                          Fin si
                   Jusqu’à (N10 = 0)                            N10  N10 div b2
                                                           Jusqu’à (N10 = 0)
                                                           2) convb2  ph
                                                           3) fin convb2

                                                                            Algorithme de la fonction puissance
e) Analyse de la fonction puissance                                0) DEF FN puissance (x, y : entier) : entier long
   DEF FN puissance (x, y : entier) : entier long                  1) Z 1
   2) Résultat= puissance  Z                                      Pour i de 1 à y faire
   1) Z= [Z 1] pour i de 1 à y faire                                            ZZ*x
                                                                      Fin pour
                     ZZ*x
                                                                   2) puissance  Z
                 Fin pour                                          3) Fin puissance


                                                                                                                   15
PROF : Mohamed SAYARI   4 SI   LES ALGORITHMES D’ARITHMETIQUES




                                                        16

Contenu connexe

Tendances

Serie algos approximationx
Serie algos approximationxSerie algos approximationx
Serie algos approximationxmohamed_SAYARI
 
Corrige exercices pascal_fenni_2018
Corrige exercices pascal_fenni_2018Corrige exercices pascal_fenni_2018
Corrige exercices pascal_fenni_2018
salah fenni
 
Sujets de preparation bac tp (sayari)
Sujets de preparation bac tp (sayari)Sujets de preparation bac tp (sayari)
Sujets de preparation bac tp (sayari)mohamed_SAYARI
 
Résumer sur les fichier et les enregistrement
Résumer sur les fichier et les enregistrementRésumer sur les fichier et les enregistrement
Résumer sur les fichier et les enregistrementborhen boukthir
 
Exercices en turbo pascal sur les nombres
Exercices en turbo pascal sur les nombresExercices en turbo pascal sur les nombres
Exercices en turbo pascal sur les nombres
salah fenni
 
Exercices_Python_Fenni_2023 -corrigé.pdf
Exercices_Python_Fenni_2023 -corrigé.pdfExercices_Python_Fenni_2023 -corrigé.pdf
Exercices_Python_Fenni_2023 -corrigé.pdf
salah fenni
 
Projet de programmation la conversion entre les bases
Projet de programmation   la conversion entre les bases Projet de programmation   la conversion entre les bases
Projet de programmation la conversion entre les bases Tunisie collège
 
Algorithmique et programmation en Pascal (résumé)
Algorithmique et programmation en Pascal (résumé)Algorithmique et programmation en Pascal (résumé)
Algorithmique et programmation en Pascal (résumé)
salah fenni
 
Algorithmique programmation2018
Algorithmique programmation2018Algorithmique programmation2018
Algorithmique programmation2018
salah fenni
 
02 correction-td smi-s3-algo2
02 correction-td smi-s3-algo202 correction-td smi-s3-algo2
02 correction-td smi-s3-algo2
L’Université Hassan 1er Settat
 
resume algo 2023.pdf
resume algo 2023.pdfresume algo 2023.pdf
resume algo 2023.pdf
salah fenni
 
bac info : série récursivité
bac info : série récursivitébac info : série récursivité
bac info : série récursivité
Ămîʼndǿ TrànCè
 
Chap04 les-algorithme-de-tri-et-de-recherche
Chap04 les-algorithme-de-tri-et-de-rechercheChap04 les-algorithme-de-tri-et-de-recherche
Chap04 les-algorithme-de-tri-et-de-recherche
Riadh Harizi
 
Exercices en turbo pascal sur la récursivité
Exercices en turbo pascal sur la récursivitéExercices en turbo pascal sur la récursivité
Exercices en turbo pascal sur la récursivitésalah fenni
 
Résumé Algorithme et Programmation
Résumé Algorithme et ProgrammationRésumé Algorithme et Programmation
Résumé Algorithme et Programmation
borhen boukthir
 

Tendances (20)

Recursiviteeeeeeeeee
RecursiviteeeeeeeeeeRecursiviteeeeeeeeee
Recursiviteeeeeeeeee
 
Serie algos approximationx
Serie algos approximationxSerie algos approximationx
Serie algos approximationx
 
Serie
SerieSerie
Serie
 
Corrige exercices pascal_fenni_2018
Corrige exercices pascal_fenni_2018Corrige exercices pascal_fenni_2018
Corrige exercices pascal_fenni_2018
 
Algorithmes de tri
Algorithmes de triAlgorithmes de tri
Algorithmes de tri
 
Serie2
Serie2Serie2
Serie2
 
Sujets de preparation bac tp (sayari)
Sujets de preparation bac tp (sayari)Sujets de preparation bac tp (sayari)
Sujets de preparation bac tp (sayari)
 
Résumer sur les fichier et les enregistrement
Résumer sur les fichier et les enregistrementRésumer sur les fichier et les enregistrement
Résumer sur les fichier et les enregistrement
 
Exercices en turbo pascal sur les nombres
Exercices en turbo pascal sur les nombresExercices en turbo pascal sur les nombres
Exercices en turbo pascal sur les nombres
 
Exercices_Python_Fenni_2023 -corrigé.pdf
Exercices_Python_Fenni_2023 -corrigé.pdfExercices_Python_Fenni_2023 -corrigé.pdf
Exercices_Python_Fenni_2023 -corrigé.pdf
 
Projet de programmation la conversion entre les bases
Projet de programmation   la conversion entre les bases Projet de programmation   la conversion entre les bases
Projet de programmation la conversion entre les bases
 
Algorithmique et programmation en Pascal (résumé)
Algorithmique et programmation en Pascal (résumé)Algorithmique et programmation en Pascal (résumé)
Algorithmique et programmation en Pascal (résumé)
 
Algorithmique programmation2018
Algorithmique programmation2018Algorithmique programmation2018
Algorithmique programmation2018
 
02 correction-td smi-s3-algo2
02 correction-td smi-s3-algo202 correction-td smi-s3-algo2
02 correction-td smi-s3-algo2
 
resume algo 2023.pdf
resume algo 2023.pdfresume algo 2023.pdf
resume algo 2023.pdf
 
bac info : série récursivité
bac info : série récursivitébac info : série récursivité
bac info : série récursivité
 
Correction
CorrectionCorrection
Correction
 
Chap04 les-algorithme-de-tri-et-de-recherche
Chap04 les-algorithme-de-tri-et-de-rechercheChap04 les-algorithme-de-tri-et-de-recherche
Chap04 les-algorithme-de-tri-et-de-recherche
 
Exercices en turbo pascal sur la récursivité
Exercices en turbo pascal sur la récursivitéExercices en turbo pascal sur la récursivité
Exercices en turbo pascal sur la récursivité
 
Résumé Algorithme et Programmation
Résumé Algorithme et ProgrammationRésumé Algorithme et Programmation
Résumé Algorithme et Programmation
 

En vedette

Exercices pascal tous les chapitres
Exercices pascal tous les chapitresExercices pascal tous les chapitres
Exercices pascal tous les chapitres
borhen boukthir
 
Les algorithmes avancés
Les algorithmes avancésLes algorithmes avancés
Les algorithmes avancésmohamed_SAYARI
 
Se préparer au BAC TP
Se préparer au BAC TPSe préparer au BAC TP
Se préparer au BAC TPmohamed_SAYARI
 
Travaux dirigés 1: algorithme & structures de données (corrigés)
Travaux dirigés 1: algorithme & structures de données (corrigés)Travaux dirigés 1: algorithme & structures de données (corrigés)
Travaux dirigés 1: algorithme & structures de données (corrigés)
Ines Ouaz
 
éNoncés+corrections bac2010
éNoncés+corrections bac2010éNoncés+corrections bac2010
éNoncés+corrections bac2010Morom Bil Morom
 
éNoncés+corrections bac2008
éNoncés+corrections bac2008éNoncés+corrections bac2008
éNoncés+corrections bac2008Morom Bil Morom
 
4e ds2-2012-2013
4e ds2-2012-20134e ds2-2012-2013

En vedette (10)

Exercices pascal tous les chapitres
Exercices pascal tous les chapitresExercices pascal tous les chapitres
Exercices pascal tous les chapitres
 
Les algorithmes avancés
Les algorithmes avancésLes algorithmes avancés
Les algorithmes avancés
 
Les enregistrements
Les enregistrements Les enregistrements
Les enregistrements
 
Se préparer au BAC TP
Se préparer au BAC TPSe préparer au BAC TP
Se préparer au BAC TP
 
Travaux dirigés 1: algorithme & structures de données (corrigés)
Travaux dirigés 1: algorithme & structures de données (corrigés)Travaux dirigés 1: algorithme & structures de données (corrigés)
Travaux dirigés 1: algorithme & structures de données (corrigés)
 
Resumer sur les tris
Resumer sur les trisResumer sur les tris
Resumer sur les tris
 
DCT1 4SI
DCT1  4SIDCT1  4SI
DCT1 4SI
 
éNoncés+corrections bac2010
éNoncés+corrections bac2010éNoncés+corrections bac2010
éNoncés+corrections bac2010
 
éNoncés+corrections bac2008
éNoncés+corrections bac2008éNoncés+corrections bac2008
éNoncés+corrections bac2008
 
4e ds2-2012-2013
4e ds2-2012-20134e ds2-2012-2013
4e ds2-2012-2013
 

Similaire à Les algorithmes d'arithmetique

Fiche3 ex-sous-programme
Fiche3 ex-sous-programmeFiche3 ex-sous-programme
Fiche3 ex-sous-programme
Baghdadi Wajih
 
Chapitre 3 NP-complétude
Chapitre 3 NP-complétudeChapitre 3 NP-complétude
Chapitre 3 NP-complétude
Sana Aroussi
 
Traitement des données massives (INF442, A4)
Traitement des données massives (INF442, A4)Traitement des données massives (INF442, A4)
Traitement des données massives (INF442, A4)
Frank Nielsen
 
cours algorithme
cours algorithmecours algorithme
cours algorithme
mohamednacim
 
LES ALGORITHMES D’APPROXIMATION
LES ALGORITHMES D’APPROXIMATIONLES ALGORITHMES D’APPROXIMATION
LES ALGORITHMES D’APPROXIMATIONborhen boukthir
 
Algorithmique seconde (corrigés et commentaires)
Algorithmique seconde (corrigés et commentaires)Algorithmique seconde (corrigés et commentaires)
Algorithmique seconde (corrigés et commentaires)DriNox NordisTe
 
Fiche2 ex-sous-programme
Fiche2 ex-sous-programmeFiche2 ex-sous-programme
Fiche2 ex-sous-programme
Baghdadi Wajih
 
Algorithmique Amp Programmation (R Sum
Algorithmique  Amp  Programmation (R SumAlgorithmique  Amp  Programmation (R Sum
Algorithmique Amp Programmation (R Sum
Amy Isleb
 
Chapitre 2 complexité
Chapitre 2 complexitéChapitre 2 complexité
Chapitre 2 complexité
Sana Aroussi
 
transparents-Algo-complexite.pdf
transparents-Algo-complexite.pdftransparents-Algo-complexite.pdf
transparents-Algo-complexite.pdf
abdallahyoubiidrissi1
 
Fiche1 ex-sous-programme
Fiche1 ex-sous-programmeFiche1 ex-sous-programme
Fiche1 ex-sous-programme
Baghdadi Wajih
 
Resume algorithme
Resume algorithmeResume algorithme
Resume algorithme
NAWEL_DERBEL
 
eExercices corrigesdivers
eExercices corrigesdiverseExercices corrigesdivers
eExercices corrigesdivers
Hajar Yazine
 
Exercicescorrigesdivers
ExercicescorrigesdiversExercicescorrigesdivers
ExercicescorrigesdiversKarim Amane
 
Correction td2
Correction td2Correction td2
Correction td2
USINEALIMENTS
 
Cours algorithmique et complexite complet
Cours algorithmique et complexite completCours algorithmique et complexite complet
Cours algorithmique et complexite completChahrawoods Dmz
 
Cours algorithmique et complexite
Cours algorithmique et complexite Cours algorithmique et complexite
Cours algorithmique et complexite Saddem Chikh
 
Cours algorithmique et complexite complet
Cours algorithmique et complexite completCours algorithmique et complexite complet
Cours algorithmique et complexite completChahrawoods Dmz
 
la complexité des algorithmes en toute simplicité
la complexité des algorithmes en toute simplicitéla complexité des algorithmes en toute simplicité
la complexité des algorithmes en toute simplicité
Sana REFAI
 
Chapitre 2 -Complexité des problèmes avec correction.pdf
Chapitre 2 -Complexité des problèmes avec correction.pdfChapitre 2 -Complexité des problèmes avec correction.pdf
Chapitre 2 -Complexité des problèmes avec correction.pdf
MbarkiIsraa
 

Similaire à Les algorithmes d'arithmetique (20)

Fiche3 ex-sous-programme
Fiche3 ex-sous-programmeFiche3 ex-sous-programme
Fiche3 ex-sous-programme
 
Chapitre 3 NP-complétude
Chapitre 3 NP-complétudeChapitre 3 NP-complétude
Chapitre 3 NP-complétude
 
Traitement des données massives (INF442, A4)
Traitement des données massives (INF442, A4)Traitement des données massives (INF442, A4)
Traitement des données massives (INF442, A4)
 
cours algorithme
cours algorithmecours algorithme
cours algorithme
 
LES ALGORITHMES D’APPROXIMATION
LES ALGORITHMES D’APPROXIMATIONLES ALGORITHMES D’APPROXIMATION
LES ALGORITHMES D’APPROXIMATION
 
Algorithmique seconde (corrigés et commentaires)
Algorithmique seconde (corrigés et commentaires)Algorithmique seconde (corrigés et commentaires)
Algorithmique seconde (corrigés et commentaires)
 
Fiche2 ex-sous-programme
Fiche2 ex-sous-programmeFiche2 ex-sous-programme
Fiche2 ex-sous-programme
 
Algorithmique Amp Programmation (R Sum
Algorithmique  Amp  Programmation (R SumAlgorithmique  Amp  Programmation (R Sum
Algorithmique Amp Programmation (R Sum
 
Chapitre 2 complexité
Chapitre 2 complexitéChapitre 2 complexité
Chapitre 2 complexité
 
transparents-Algo-complexite.pdf
transparents-Algo-complexite.pdftransparents-Algo-complexite.pdf
transparents-Algo-complexite.pdf
 
Fiche1 ex-sous-programme
Fiche1 ex-sous-programmeFiche1 ex-sous-programme
Fiche1 ex-sous-programme
 
Resume algorithme
Resume algorithmeResume algorithme
Resume algorithme
 
eExercices corrigesdivers
eExercices corrigesdiverseExercices corrigesdivers
eExercices corrigesdivers
 
Exercicescorrigesdivers
ExercicescorrigesdiversExercicescorrigesdivers
Exercicescorrigesdivers
 
Correction td2
Correction td2Correction td2
Correction td2
 
Cours algorithmique et complexite complet
Cours algorithmique et complexite completCours algorithmique et complexite complet
Cours algorithmique et complexite complet
 
Cours algorithmique et complexite
Cours algorithmique et complexite Cours algorithmique et complexite
Cours algorithmique et complexite
 
Cours algorithmique et complexite complet
Cours algorithmique et complexite completCours algorithmique et complexite complet
Cours algorithmique et complexite complet
 
la complexité des algorithmes en toute simplicité
la complexité des algorithmes en toute simplicitéla complexité des algorithmes en toute simplicité
la complexité des algorithmes en toute simplicité
 
Chapitre 2 -Complexité des problèmes avec correction.pdf
Chapitre 2 -Complexité des problèmes avec correction.pdfChapitre 2 -Complexité des problèmes avec correction.pdf
Chapitre 2 -Complexité des problèmes avec correction.pdf
 

Les algorithmes d'arithmetique

  • 1. PROF : Mohamed SAYARI 4 SI LES ALGORITHMES D’ARITHMETIQUES I. Introduction L’arithmétique est une branche de mathématiques qui étudie les relations entre les nombres. C’est aussi l’étude des nombres et des opérations élémentaires entre eux. II. Calcul de PGCD (voir chapitre récursivité) III. Calcul de et III.1 présentation - Le nombre de permutations ordonnés possibles de p éléments parmi n appelé Arrangement : Exemple1 : quels sont les nombres de 2 chiffres à former à partir de la liste {5, 3,1} Réponse : 53, 35, 51, 15, 31, 13  =6 Exemple2 : tirage sans remise  Définition 1: E étant un ensemble à n éléments, on appelle arrangement de p éléments de E toute p-liste d'éléments distincts de E. - Le nombre de permutations sans ordre possibles de p éléments parmi n appelé Combinaison : Exemple1 : quels sont les listes de 2 éléments à former à partir de la liste {5, 3,1} Réponse : {5, 1}, {5, 3}, {3, 1}  =3 Exemple2 : tirage avec remise  Définition 2: E étant un ensemble à n éléments, on appelle combinaison de p éléments de E toute collection non ordonnée de p éléments distincts de E III.2 Calcul de Activité1 : écrire un programme modulaire en Pascal qui permet de calculer et d’afficher l e avec n et p deux entiers tel que 1≤p≤ n Sachant que = n (n-1) (n-2) ….. (n-p+1) Ou encore ( ) a) Analyse du programme principal 2) Résultat = Ecrire ("A (", p, ",", n, ")=", FN calcul (n, p)) 1) (N,p)= proc saisir (n, p) Algorithme du programme principal TDOG 0) DEBUT arrangement Objet Type/Nature 1) Proc saisir (n, p) N Entier 2) Ecrire ("A (", p, ",", n, ")=", FN calcul (n, p)) p entier saisir procédure 3) Fin arrangement calcul fonction 1
  • 2. PROF : Mohamed SAYARI 4 SI LES ALGORITHMES D’ARITHMETIQUES b) Analyse de la procédure saisir Algorithme de la procédure saisir DEF PROC saisir var (n, p : entier) 0) DEF PROC saisir (var n, p : entier) Résultat = n, p 1) Répéter 2) N= [ ] répéter Ecrire ("P= "), lire (P) N= donnée ("N=") Jusqu’à (p≥1) Jusqu’à (n≥p) 2) Répéter 1) P= [ ] répéter Ecrire ("N= "), lire (N) P= donnée ("P= ") Jusqu’à (N≥p) Jusqu’à (p ≥1) 3) Fin saisir c) Analyse de la fonction calcul Algorithme de la fonction calcul DEF FN calcul (n, p : entier) : entier 0) DEF FN CALCUL (n, p : entier) : entier 2) Résultat = calcul  a 1) A 1 1) A= [a1] pour i de n à (n-p+1) (pas=-1) Faire Pour i de n à n-p+1 (pas=-1) Faire Aa*i Aa*i Fin pour Fin pour 2) Calcul a TDOL 3) Fin calcul objet Tupe/nature I Entier a entier 2
  • 3. PROF : Mohamed SAYARI 4 SI LES ALGORITHMES D’ARITHMETIQUES III.3 Calcul de Activité1 : écrire un programme modulaire en Pascal qui permet de calculer et d’afficher le avec n et p deux entiers tel que 0≤p≤ n a) Analyse du programme principal 2) Résultat = Ecrire ("C (", p, ",", n, ")=", FN calcul (n, p)) 3) (N,p)= proc saisir (n, p) Algorithme du programme principal TDOG 0) DEBUT arrangement Objet Type/Nature 1) Proc saisir (n, p) N Entier 2) Ecrire ("C (", p, ",", n, ")=", FN calcul (n, p)) p entier 3) Fin arrangement saisir procédure calcul fonction b) Analyse de la procédure saisir DEF PROC saisir var (n, p : entier) Résultat = n, p 2) N= [ ] répéter Algorithme de la procédure saisir N= donnée ("N=") Jusqu’à (n≥p) 0) DEF PROC saisir (var n, p : entier) 1) P= [ ] répéter 1) Répéter P= donnée ("P= ") Ecrire ("P= "), lire (P) Jusqu’à (p ≥0) Jusqu’à (p≥0) 2) Répéter Ecrire ("N= "), lire (N) Jusqu’à (N≥p) 3) Fin saisir c) Analyse de la fonction calcul DEF FN calcul (n, p : entier) : real Algorithme de la fonction calcul 2) Résultat = calcul  c 0) DEF FN CALCUL (n, p : entier) : réel 1) C  FACT (n) / (FACT (p) * FACT (n-p)) 1) C  FACT (n) / (FAT(p)*FACT (n-p)) 2) CALCUL  c 3) Fin calcul 3
  • 4. PROF : Mohamed SAYARI 4 SI LES ALGORITHMES D’ARITHMETIQUES III.4 Application =9 =8 =1 =1 =1 Activité : écrire la fonction combinaison récursive Analyse de la fonction COMB récursive DEF FN Combo (n, p : entier) : entier Résultat= combo 1) combo= [ ] si (p=0) ou (p=n) alors combo 1 Sinon combo  FN combo (n-1, p-1) + FN combo (n-1, p) Fin si 4
  • 5. PROF : Mohamed SAYARI 4 SI LES ALGORITHMES D’ARITHMETIQUES IV. Quelques règles de divisibilité (livre page 166) V. Conversion entre les bases de numération V.1 Définition Un système de numération est une méthode de comptage fondée sur une base de numération qui est un entier supérieur ou égal à 2. Soit N une base de numération, le système sera doté de N chiffres de 0 à N-1 V.2 Exemples de bases de numération (voir livre page 166) V.3 Conversion d’un nombre décimal en binaire Ecrire un programme modulaire en pascal qui permet de saisir un entier positif, le convertit en binaire. a) Analyse du programme principal 2) Résultat = Ecrire (Fn conv_DEC_BIN(n)) 1) N = proc saisir (n) b) Analyse de la procédure CONV_DEC_BIN DEF FN CONV_DEC_BIN (n : entier) : chaîne Algorithme du programme principal 2) Résultat = CONV_DEC_BIN  ch 1)Ch=[ch  ""] répéter 0) Début conversion R  n mod 2 1) Proc saisir (n) N  n div 2 2) Ecrire (Fn conv_DEC_BIN(n)) Ch  chr(48+R)+ch 3) Fin conversion Jusqu’à (n=0) Algorithme de la fonction CONV_DEC_BIN 0) DEF FN CONV_DEC_BIN (n : entier) : chaîne 1) Ch  "" répéter R  n mod 2 N  n div 2 Ch  chr(48+R)+ch Jusqu’à (n=0) 2) CONV_DEC_Bin  ch 3) Fin CONV_DEC_BIN 5
  • 6. PROF : Mohamed SAYARI 4 SI LES ALGORITHMES D’ARITHMETIQUES V. 4 Conversion d’un nombre binaire en décimal Ecrire un programme modulaire en pascal qui permet de saisir un nombre binaire (sous forme d’une chaîne de caractères), le convertit en décimal. Algorithme du programme principal a) Analyse du programme principal 2) Résultat = Ecrire (FN conv_bin_dec(ch)) 0) Début conversion 1)Ch= proc saisir (ch) 1) Proc saisir (ch) 2) Ecrire (FN conv_bin_dec(ch)) 3) Fin conversion b) Analyse de la procédure saisir DEF PROC SAISIR (var ch : chaîne) Algorithme de la procédure saisir Résultat = ch 0) DEF PROC SAISIR (var ch : chaîne) 1)Ch=[ ] répéter 1) répéter Ch= donnée ("CH= ") Ecrire ("CH= "), lire (ch) i0 i0 répéter répéter ii+1 ii+1 test  ch[i] dans ["0","1"] test  ch[i] dans ["0","1"] jusqu’à (non test) ou (i=long(ch)) jusqu’à (non test) ou (i=long(ch)) jusqu’à test Jusqu’à test 2) Fin saisir c) Analyse de la fonction conv_bin_dec Algorithme de la fonction conv_bin_dec DEF FN conv_bin_dec (ch :chaîne) : entier long 0)DEF FN conv_bin_dec (ch :chaîne): entire long 2)Résultat = conv_bin_dec  n 1)N <- 0 1)N= [n0] pour i de 1 à long (ch) faire pour i de 1 à long (ch) faire N  n +(ord(ch[i])-48)*puissance(long(ch)-i) N  n +(ord(ch[i])-48)*puissance(long(ch)-i) Fin pour Fin pour 2) conv_bin_dec  N 3) Fin conv_bin_dec d) Analyse de la fonction puissance Algorithme de la fonction puissance DEF FN puissance (x :entier) :entier 0)DEF FN puissane (x :entier) : entier 2)Résultat = puissance p 1)p 1 Pour i de 1 à x faire 1)P=[ p 1] pour i de 1 à x Faire Pp*2 P  2*p Fin pour Fin pour 2)puissance p 3) Fin puissance 6
  • 7. PROF : Mohamed SAYARI 4 SI LES ALGORITHMES D’ARITHMETIQUES 7
  • 8. PROF : Mohamed SAYARI 4 SI LES ALGORITHMES D’ARITHMETIQUES V. 5 Conversion d’un nombre hexadécimal en binaire Activité : écrire un programme modulaire en pascal qui permet de saisir un nombre hexadécimal, le convertit en binaire. Analyse du programma principal : 2)Résultat= Ecrire("("ch," )16= (", FN conv_hex_bin(ch), ")2") 1)Ch= proc saisir (ch) Algorithme du programme principal TDOG 0) Début conversion Objet Type/nature Rôle 1) proc saisir (ch) Ch Chaîne Saisir Procédure 2) Ecrire ("("ch,») 16= (", FN conv_hex_bin(ch), ")2") Conv_hex_bin fonction 3 Fin conversion Analyse de la procédure saisir TDOL DEF PROC saisir (var ch :chîne) Objet Type/nature Rôle Résultat = ch i Entier test booléen 1)Ch=[ ] répéter Algorithme de la procédure saisir Ch= donnée ("CH=") 0) DEF PROC saisir (var ch :chîne) i 0 1) répéter Répéter Ecrire ("CH="), lire (ch) i  i+1 i 0 Répéter ch[i] dans ["0".."9", "A".."F"] i  i+1 Jusqu’à (non test) ou (i=long (ch)) ch[i] dans ["0".."9", "A".."F"] Jusqu’à (test) jusqu’à (non test) ou (i=long(ch)) Analyse de la fonction conv_hex_bin Jusqu’à (test) 2) fin saisir DEF FN conv_hex_bin (ch : chaîne): chaîne 2)Résultat= conv_hex_bin  ph 2)Ph=[] tant que ph[1]= "0" faire TDOL Efface(ph, 1, 1) Objet Type/nature Rôle i Entier Fin tant que con fonction 1)Ph=[ph""]pour i de 1 à long (ch) faire ph chaîne Si ch[i] dans ["0".."9"] alors ph  ph + conv(ord(ch[i])-48) Sinon ph ph + conv (ord(ch[i])-55) Fin si Analyse de la fonction conv DEF FN conv (x : entier): chaîne TDOL 2)Résultat= convdh Objet Type/nature Rôle i Entier 1)dh=[dh"0000", i4] répéter dh chaîne dh[i]  chr((x mod 2)+48) x x div 2 i i – 1 8
  • 9. PROF : Mohamed SAYARI 4 SI LES ALGORITHMES D’ARITHMETIQUES Algorithme de la fonction conv_hex_bin jusqu’à (x=0) 0) DEF FN conv_hex_bin (ch : chaîne): chaîne Algorithme de la fonction conv 1) Ph"" 0) DEF FN conv (x : entier): chaîne pour i de 1 à long (ch) faire 1) dh"0000" Si ch[i] dans ["0".."9"] alors ph  ph + conv(ord(ch[i])-48) i4 Sinon ph ph + conv (ord(ch[i])-55) répéter Fin si dh[i]  chr((x mod 2)+48) 2) tant que ph[1]= "0" faire x x div 2 Efface (ph, 1, 1) i i – 1 Fin tant que jusqu’à (x=0) 3) fin conv_hex_bin 2) fin conv 4) Fin conv_hex_bin 9
  • 10. PROF : Mohamed SAYARI 4 SI LES ALGORITHMES D’ARITHMETIQUES V. 6 Conversion d’un nombre binaire en hexadécimal Activité : écrire un programme modulaire en pascal qui permet de saisir un nombre binaire, le convertit en hexadécimal. Analyse du programme principal : 2) Résulat= Ecrire ("(", ch, ") 2= (", FN conv_bin_hex(ch), ")16") 1) Ch= proc saisir (ch) Algorithme du programme principal TDOG 0) Début conversion Objet Type/nature Rôle Conv_bin_hex fonction 1) proc saisir (ch) ch chaîne 2) Ecrire ("(", ch, ") 2= (", conv_bin_hex(ch), ")16") Saisir procédure 3) Fin conversion Analyse de la fonction conv_bin_hex DEF FN conv_hex_bin (ch : chaîne): chaîne 3) Résultat= conv_bin_hex  ph 2) Ph= [ph "" ] répéter Ph  ph + Fn conv (sous-chaîne (ch, 1, 4)) Efface (ch, 1, 4) Algorithme de la fonction conv_bin_hex Jusqu’à (long (ch)=0) 1) Ch=[ ] tant que long(ch) mod 4≠0 Faire 0) DEF FN conv_bin_hex (ch : chaîne): chaîne Insère (ch, "0", 1) 1) tant que long(ch) mod 4≠0 Faire Fin tant que Insère (ch, "0", 1) Fin tant que TDOL 2) ph "" Objet Type/nature Rôle Répéter conv fonction Ph  ph + FN conv (sous-chaîne (ch, 1, 4)) ph chaîne Efface (ch, 1, 4) Jusqu’à (long (ch)=0) 3) conv_bin_hex  ph Analyse de la fonction conv 4) fin conv_bin_hex DEF FN conv (dh : chaîne) : caractère Résultat= conv 2)Conv=[ ] si x dans [0..9] alors conv  chr (x+48) Algorithme de la fonction conv Sinon conv  chr (x+55) 0) DEF FN conv (dh : chaîne) : caractère Fin si 1) x0 pour i de 1 à 4 faire 1) x=[x0] pour i de 1 à 4 faire x  x + (ord (ch[i])-48) * FN puissance (4-i) x  x + (ord (ch[i])-48) * FN puissance (4-i) Fin pour Fin pour 2) si x dans [0..9] alors conv  chr (x+48) TDOL Sinon conv  chr (x+55) Objet Type/nature Rôle Fin si x enier 3) Fin conv i entier 10
  • 11. PROF : Mohamed SAYARI 4 SI LES ALGORITHMES D’ARITHMETIQUES Analyse de la fonction puissance Algorithme de la fonction puissance DEF FN puissance (a :etier) : entier Résultat=puissance b 0) DEF FN puissance (a :etier) : entier 1) b1 b=[b1] pour i de 1 à 4 faire Pour i de 1 à 4 faire bb*2 bb*2 fin pour TDOL fin pour Objet Type/nature Rôle 2) puissance b b enier i entier 11
  • 12. PROF : Mohamed SAYARI 4 SI LES ALGORITHMES D’ARITHMETIQUES V. 5 Conversion d’un nombre hexadécimal en décimal Activité : écrire un programme modulaire en pascal qui permet de saisir un nombre hexadécimal, le convertit en décimal. Analyse du programme principal : 2) Résultat= Ecrire ("(ch",") 16= (", FN conv_hex_dec (ch),") 10") 1) Ch=proc saisir (ch) Algorithme du programme principal TDOG 0) Début conversion Objet Type/nature 1) proc saisir (ch) saisir Procédure Conv_hex_dec fonction 2) Ecrire ("(ch",") 16= (", FN conv_hex_dec (ch),") 10") ch chaîne 3) Fin conversion Analyse de la fonction conv_hex_dec : DEF FN conv_hex_dec (ch :chaîne): entire long 2) Résultat= conv_hex_dec  N 1) N= [N 0] pour i de 1 à long (ch) faire Si ch[i] dans ["0".."9"] alors N N + (ord (ch[i])-48) * FN puissance (long (ch) –i) Sinon N  N + (ord (ch[i])-55) * FN puissance (long (ch)-i) Fin si Fin pour Algorithme de la fonction conv_hex_dec 0) DEF FN conv_hex_dec (ch :chaîne): entire long 1) N0 pour i de 1 à long (ch) faire TDOL Si ch[i] dans ["0".."9"] alors N N + (ord (ch[i])-48) * FN puissance (long (ch) –i) Objet Type/nature Sinon N  N + (ord (ch[i])-55) * FN puissance (long (ch)-i) N Entier long Fin si i entier Fin pour 2) conv_hex_dec  N 3) Fin conv_hex_dec Analyse de la fonction puissance : DEF FN puissance (x : entier) : entier long 2) Résultat= puissance p Algorithme de la fonction puissance 1) P= [p0] pour i de 1 à x faire 0) DEF FN puissance (x : entier) : entier long P  p * 16 1) p0 Fin pour Pour i de 1 à x faire P  p * 16 TDOL Fin pour Objet Type/nature 2) Puissance p p Entier long 3) Fin puissance i entier 12
  • 13. PROF : Mohamed SAYARI 4 SI LES ALGORITHMES D’ARITHMETIQUES 13
  • 14. PROF : Mohamed SAYARI 4 SI LES ALGORITHMES D’ARITHMETIQUES V.7 Conversion d’un nombre octal en binaire Similaire à la conversion de l’hexadécimal en binaire. Exemple : 5 7 3 1 101 111 011 001 Donc (5731)8 = (101111011001)2 V. 8 Conversion d’un nombre binaire en octal Similaire à la conversion du binaire en hexadécimal Exemple : 101 111 011 001 1*22+0*21+1*20 = 5 1*22+1*21+1*20 = 7 0*22+1*21+1*20 = 3 0*22+0*21+1*20 = 1 Donc (101111011001)2 = (5731)8 V. 9 Conversion d’un nombre octal en décimal Similaire à la conversion du hexadécimal en décimal Exemple : (5732)8 = 5*83 + 7*82 + 3*81 + 2*80 = (3034)10 V. 10 Conversion d’un nombre d’une base b1 en une base b2 Ecrire un programme modulaire en Pascal, qui saisit un nombre d’une base B1 et le convertit en une base B2 avec (2≤B1≤16 et 2≤B2≤16) a) Analyse du programme principal 4) Résultat= écrire ("(", ch,") ", b1, "= (", FN conversion (ch, b1, b2), ")", b2) 3) B2= proc saisir (b2) Algorithme du programme principal : 2) Ch= proc saisir (ch, b1) 1) B1= proc saisir (b1) 0) Début conversion 1) proc saisir (b1) 2) proc saisir (ch, b1) 3) proc saisir (b2) 4) écrire ("(", ch,") ", b1, "= (", FN conversion (ch, b1, b2), ")", b2) 5) Fin conversion 14
  • 15. PROF : Mohamed SAYARI 4 SI LES ALGORITHMES D’ARITHMETIQUES b) Analyse de la fonction conversion DEF FN conversion (ch : chaîne ; b1, b2 : entier) : chaîne 3) Résultat = conversion  ph Algorithme de la fonction convesrion 2) Ph  FN convb2 (n10, b2) 0) DEF FN conversion (ch : chaîne ; b1, b2 : entier) 1) N10  FN conv10 (ch, b1) 1) N10  FN conv10 (ch, b1) 2) Ph  FN convb2 (n10, b2) 3) conversion  ph 4) fin conversion c) Analyse de la fonction conv10 (convertit un nombre vers la base décimal) DEF FN conv10 (ch : chaîne ; b1 : entier) : entier long 2) Résultat= conv10 n 1) N= [n0] pour i de long (ch) à 1 (pas=-1) Faire Si ch[i] dans ["0".."9"] alors n  n + (ord (ch[i])-48) * Fn puissance (b1, long (ch)-1) Sinon n  n + (ord (ch[i])-55) * Fn puissance (b1, long (ch)-1) Fin si Fin pour Algorithme de la fonction conv10 0) DEF FN conv10 (ch : chaîne ; b1 : entier) : entier long 1) n0 Pour i de long (ch) à 1 (pas=-1) Faire Si ch[i] dans ["0".."9"] alors n  n + (ord (ch[i])-48) * Fn puissance (b1, long (ch)-1) Sinon n  n + (ord (ch[i])-55) * Fn puissance (b1, long (ch)-1) Fin si Fin pour 2) conv10 n 3) Fin conv10 d) Analyse de la fonction convb2 (convertit un nombre décimal vers la base B2) DEF FN convb2 (n1O : entier long ; b2 : entier) : chaîne 2) Résultat= convb2  ph Algorithme de la fonction convb2 1) Ph= [ph""] répéter 0) DEF FN convb2 (n1O : entier long ; b2 : entier) : chaîne R  n mod b2 1) ph"" Si r ≤9 alors ph  chr(r + 48) + ph Répéter Sinon ph  chr(r+55) + ph R  n mod b2 Fin si Si r ≤9 alors ph  chr(r + 48) + ph Sinon ph  chr(r+55) + ph N10  N10 div b2 Fin si Jusqu’à (N10 = 0) N10  N10 div b2 Jusqu’à (N10 = 0) 2) convb2  ph 3) fin convb2 Algorithme de la fonction puissance e) Analyse de la fonction puissance 0) DEF FN puissance (x, y : entier) : entier long DEF FN puissance (x, y : entier) : entier long 1) Z 1 2) Résultat= puissance  Z Pour i de 1 à y faire 1) Z= [Z 1] pour i de 1 à y faire ZZ*x Fin pour ZZ*x 2) puissance  Z Fin pour 3) Fin puissance 15
  • 16. PROF : Mohamed SAYARI 4 SI LES ALGORITHMES D’ARITHMETIQUES 16