Docstoc

Les algorithmes arithm�tiques

Document Sample
Les algorithmes arithm�tiques Powered By Docstoc
					 ChapVI : Les algorithmes arithmétiques                                Prof : Hichem Klouz

                 ChapVI : Les algorithmes arithmétiques
Calcul du PGCD
1) Définition
  Le plus grand commun diviseur de deux entiers a et b appelé aussi PGCD est le plus grand
  entier qui permet de diviser a et b. On le note PGCD (a, b).
2) Activité 1 :
  Ecrire la spécification et l’algorithme d’une fonction qui calcule le PGCD de deux entiers m
  et n en utilisant l’algorithme d’euclide.
Exemple :
PGCD( 17, 5 ) = PGCD( 5, 2 ) = PGCD( 2, 1 ) = PGCD ( 1, 0 ) = 1
Solution:
La spécification de la fonction pgcd_euclide :
 Résultat : pgcd_euclide
 Traitement : Tant que b ≠ 0 faire
               Res  a mod b
               ab
               b Res
              Fin tant que
              pgcd_euclide  a
L’algorithme de la fonction pgcd_euclide :
0) Fonction pgcd_euclide ( a, b :entier) : entier
1) Tant que b ≠ 0 faire
   Res  a mod b
   ab
   b Res
   Fin tant que
2) pgcd_euclide  a
3) Fin pgcd_euclide
 Tableau de Déclaration des Objets Locaux :

 Objets       Types          Rôles
 Res          Entier


3) Activité 2 :
  Ecrire la spécification et l’algorithme d’une fonction qui calcule le PGCD de deux entiers a et
  b en utilisant la méthode de différence.
Exemple :
PGCD( 17, 5 ) = PGCD( 12 , 5 ) = PGCD( 7 , 5 ) = PGCD ( 2 , 5 ) = PGCD ( 2 , 3 )
= PGCD ( 2 , 1 ) = PGCD ( 1 , 1 )
Solution:
La spécification de la fonction pgcd_diff :
 Résultat : pgcd_diff
 Traitement : Tant que a ≠ b faire
              Si a > b alors
                 aa–b
              Sinon
                 bb–a
              Fin si
              Fin tant que
                                                                                                 1
 ChapVI : Les algorithmes arithmétiques                              Prof : Hichem Klouz
pgcd_diff  a
L’algorithme de la fonction pgcd_diff :
 0) Fonction pgcd_diff ( a, b :entier) : entier
 1) Tant que a ≠ b faire
    Si a > b alors
     aa–b
    Sinon
     bb–a
    Fin si
    Fin tant que
 2) pgcd_diff  a
 3) Fin pgcd_diff

Calcul du PPCM
4) Définition
  Le plus petit commun multiple de deux entiers a et b appelé aussi PPCM est le plus petit
  entier multiple à la fois de a et de b. On le note PPCM ( a,b).
5) Activité 1 :
  Ecrire la spécification et l’algorithme d’une fonction qui permet de déterminer le PPCM de
  deux entiers m et n.
Exemple :
PPCM( 15, 6 ) = 30
15* 2 = 30 or 30 mod 6 = 0
PPCM (16, 5) = 80
16 * 2 = 32 mais 32 mod 5 ≠ 0 d’où
16 * 3 = 48 mais 48 mod 5 ≠ 0 d’où
16 * 4 = 64 mais 64 mod 5 ≠ 0 d’où
16 * 5 = 80 or 80 mod 5 = 0
Solution:
La spécification de la fonction ppcm :
 Résultat : ppcm
 Traitement : Si m > n alors max  m, min  n
               Sinon max  n, min  m
               Fin Si
               p  max
               i2
              Tant que p mod min ≠ 0 faire
               p  max * i
               ii+1
               Fin tant que
               ppcm  p
  L’algorithme de la fonction ppcm :
 0) Fonction ppcm ( m, n :entier) : entier
 1) Si m > n alors
    max  m, min  n
    Sinon max  n, min  m
    Fin Si
 2) p  max
 3) i  2



                                                                                               2
 ChapVI : Les algorithmes arithmétiques                                Prof : Hichem Klouz
 4) Tant que p mod min ≠ 0 faire
    p  max * i
    ii+1
    Fin tant que
 5) ppcm  p
 6) Fin ppcm
 Tableau de Déclaration des Objets Locaux :

 Objets        Types          Rôles
 min           Entier
 max           Entier
 i             Entier
 p             Entier

Les nombres premiers
6) Définition
  Un entier est dit premier s’il est divisible seulement par 1 et par lui-même.
7) Activité 1 :
  Ecrire la spécification et l’algorithme d’une fonction qui permet de vérifier si un nombre N
  est premier avec N > 1.
Exemple :
On va vérifier si 9 est un nombre premier ou pas.
On va chercher le nombre de diviseur de 9 dans l’intervalle [1 , ( 9 div 2)]
Initialement le nombre de diviseur de 9 est 1 ( nb = 1 )
9 mod 1 = 0 alors nb = 2
9 mod 2 ≠ 0 alors on passe à la valeur suivante de l’intervalle c'est-à-dire
9 mod 3 = 0 alors nb = 3.
On remarque que le nombre de diviseur nb > 2
Solution:
La spécification de la fonction premier :
 Résultat : premier
 Traitement : i  1
               nb  1
               Tant que i ≤ ( n div 2 ) ET ( nb < 3 ) faire
                Si n mod i = 0 alors
                nb  nb + 1
                Fin si
                ii+1
               Fin tant que
               Si nb = 2 alors premier  vrai
               Sinon premier  faux
               Fin Si
 L’algorithme de la fonction premier :
 0)   Fonction premier ( n :entier) : booléen
 1)   i1
 2)   nb  1
 3)   Tant que i ≤ ( n div 2 ) ET ( nb < 3 ) faire
      Si n mod i = 0 alors
       nb  nb + 1
       Fin si
       ii+1
       Fin tant que
                                                                                                 3
 ChapVI : Les algorithmes arithmétiques                               Prof : Hichem Klouz
 4) Si nb = 2 alors premier  vrai
    Sinon premier  faux
    Fin Si
 5) Fin premier
 Tableau de Déclaration des Objets Locaux :

 Objets       Types          Rôles
 i            Entier
 nb           Entier

8) Activité 2 :
  Ecrire la spécification et l’algorithme d’un programme qui permet de chercher et d’afficher
  tous les nombres premiers appartenant à l’intervalle [10, 100].
Solution:
La spécification du programme principal :
 Résultat : Affichage ( t, m )
 Traitement : Recherche ( t, m )
L’algorithme du programme principal :
 0) Début nb_premier
 1) Recherche ( t, m )
 2) Affichage ( t, m )
 3) Fin nb_premier
T.D.N.T
            Types
 Tab = Tableau de 91 entiers


 Tableau de Déclaration des Objets Globaux

 Objets                            Types                         Rôles
 t                                 Tab
 m                                 Entier                        Taille de t
 Affichage                         Procédure                     Affichage de t
 Recherche                         Procédure                     Recherche des éléments de t

La spécification de la procédure Recherche :
 Résultat : t
 Traitement : j  0
              Pour i de 10 à 100 faire
              Res  premier ( i )
              Si Res alors
              jj+1
              t[j]  i
              fin si
              fin pour
L’algorithme de la procédure Recherche :
 0) Procédure Recherche ( var t :Tab ; var j :entier )
 1) j  0
 2) Pour i de 10 à 100 faire
    Res  premier ( i )

                                                                                                4
 ChapVI : Les algorithmes arithmétiques                       Prof : Hichem Klouz
    Si Res alors
    jj+1
    t[j]  i
    fin Si
    fin pour
 3) Fin Recherche

 Tableau de Déclaration des Objets Locaux :

 Objets      Types           Rôles
 i           Entier
 Res         Booléen
 premier     Fonction

La spécification de la fonction premier :
 Résultat : premier
 Traitement : k  1
               nb  1
               Tant que k ≤ ( n div 2 ) ET ( nb < 3 ) faire
                Si n mod k = 0 alors
                nb  nb + 1
                Fin si
                kk+1
               Fin tant que
               Si nb = 2 alors premier  vrai
               Sinon premier  faux
               Fin Si
L’algorithme de la fonction premier :
 0) Fonction premier ( n :entier) : booléen
 1) k1
 2) nb  1
 3) Tant que k ≤ ( n div 2 ) ET ( nb < 3 ) faire
    Si n mod k = 0 alors
    nb  nb + 1
    Fin si
    kk+1
    Fin tant que
 4) Si nb = 2 alors premier  vrai
    Sinon premier  faux
    Fin Si
 5) Fin premier

 Tableau de Déclaration des Objets Locaux :

 Objets      Types           Rôles
 k           Entier
 nb          Entier

La spécification de la procédure Affichage :
 Résultat : affichage des éléments du tableau t
 Traitement : Pour i de 1 à m faire
                                                                                5
 ChapVI : Les algorithmes arithmétiques                                Prof : Hichem Klouz
                 Ecrire ( t[i])
                 Fin Pour
L’algorithme de la procédure Affichage :
0) Procédure Affichage ( t :Tab ; m :entier )
1) Pour i de 1 à m faire
   Ecrire ( t[i] )
   Fin Pour
2) Fin Affichage
 Tableau de Déclaration des Objets Locaux :

 Objets         Types             Rôles
 i              Entier

La décomposition en facteurs premiers
9) Définition
  La décomposition d’un entier en produit de facteurs premiers consiste à écrire cet entier sous
  la forme d’un produit de ces diviseurs premiers.
10) Activité 1 :
Ecrire la spécification et l’algorithme d’une procédure qui permet de décomposer un entier N
en produit de facteurs premiers.
La spécification de la procédure prod_fact :
 Résultat : t
 Traitement :      i2
                  j0
                 Tant que n ≠ 1 faire
                 Si n mod i = 0 alors
                  n  n div i
                  jj+1
                  t[j]  i
                 sinon i  i +1
                fin Si
                Fin tant que
L’algorithme de la procédure prod_fact :
0) Procédure prod_fact ( var t :Tab ; var j :entier ; n :entier )
1) i  2 , j  0
2) Tant que n ≠ 1 faire
   Si n mod i = 0 alors
    n  n div i
    jj+1
    t[j]  i
   sinon i  i +1
   fin Si
   Fin tant que
3) Fin prod_fact
 Tableau de Déclaration des Objets Locaux :

 Objets         Types             Rôles
 i              Entier




                                                                                                   6
  ChapVI : Les algorithmes arithmétiques                                Prof : Hichem Klouz

Le calcul du factoriel
11) Définition
 Le factoriel d’un entier n donné est le produit de tous les entiers de l’intervalle [1,n].
 Le factoriel de n est noté n!.
12) Activité 1 :
 Ecrire la spécification et l’algorithme d’une fonction qui permet de calculer le factoriel d’un
 entier N donné.
 La spécification de la fonction factorielle :
  Résultat : factorielle
  Traitement : fact  1
                 Pour i de 1 à n faire
                 fact  fact * i
                 fin pour
                 factorielle  fact
 L’algorithme de la fonction factorielle :
0) Fonction factorielle ( n :entier ) : entier_long
1) fact  1
2) Pour i de 1 à n faire
   fact  fact * i
   fin pour
3) factorielle  fact
4) Fin factorielle
  Tableau de Déclaration des Objets Locaux :

  Objets       Types           Rôles
  i            Entier
  fact         Entier_long

Conversion entre les bases de numération
13) Définition
 Convertir un entier positif N dans une base b ( au moins égale à 2 ) consiste à chercher la
 représentation de N dans la base b.
14) Activité 1 :
 Ecrire la spécification et l’algorithme d’un programme qui permet la conversion d’un entier N
 positif de la base décimal ( base 10 ) à la base binaire ( base 2 ).
Solution:
 La spécification du programme principal :
  Résultat : Affichage ( bin, i )
  Traitement : Conversion ( bin, i, n )
               Saisie( n )
 L’algorithme du programme principal :
  0) Début Conversion_10_2
  1) Saisie( n )
  2) Conversion ( bin, i, n )
  3) Affichage ( bin, i )
  4) Fin Conversion_10_2
 T.D.N.T
              Types
  Tab = Tableau de 100 entiers


                                                                                                   7
 ChapVI : Les algorithmes arithmétiques                                 Prof : Hichem Klouz
 Tableau de Déclaration des Objets Globaux

 Objets                      Types                        Rôles
 bin                         Tab
 i                           Entier
 n                           Entier                       Affichage de bin
 Affichage                   Procédure                    Conversion de la base 10 à base 2
 Conversion                  Procédure                    Saisie d’un entier n
 Saisie                      Procédure
La spécification de la procédure Saisie :
 Résultat : n
 Traitement : Répéter
              n = donnée (‘donnez un entier’)
              jusqu’à n > 0
L’algorithme de la procédure Saisie :
 0) Procédure Saisie ( var n :entier )
 1) Répéter
    Lire ( n )
    Jusqu’à n > 0
 2) Fin Saisie
La spécification de la procédure Conversion :
 Résultat : bin
 Traitement : i  0
               Tant que n ≠ 0 faire
                ii+1
                bin[i]  n mod 2
                n  n div 2
                Fin tant que
L’algorithme de la procédure Conversion :
0) Procédure Conversion ( var bin : Tab ; var i :entier ; n :entier )
1) i  0
2) Tant que n ≠ 0 faire
    ii+1
    bin[i]  n mod 2
    n  n div 2
    Fin tant que
3) Fin Conversion
La spécification de la procédure Affichage :
 Résultat : affichage des éléments du tableau bin
 Traitement : Pour j de i à 1 ( pas –1) faire
                 Ecrire ( bin[j])
                 Fin Pour
L’algorithme de la procédure Affichage :
0) Procédure Affichage ( bin :Tab ; i :entier )
1) Pour j de i à 1 ( pas –1) faire
   Ecrire ( bin[j] )
   Fin Pour
2) Fin Affichage
 Tableau de Déclaration des Objets Locaux :

 Objets       Types          Rôles
                                                                                              8
 ChapVI : Les algorithmes arithmétiques                                  Prof : Hichem Klouz

 j             Entier          compteur
15) Activité 2 :
 Ecrire la spécification et l’algorithme d’un programme qui permet la conversion d’un entier N
 positif de la base décimal ( base 10 ) à la base hexadécimal ( base 16 ).
Solution:
La spécification du programme principal :
 Résultat : Affichage ( hexa ,i)
 Traitement : Conversion ( hexa, i, n )
              Saisie( n )
L’algorithme du programme principal :
 5) Début Conversion_10_16
 6) Saisie( n )
 7) Conversion ( hexa, i, n )
 8) Affichage (hexa, i )
 9) Fin Conversion_10_16
T.D.N.T
             Types
 Tab = Tableau de 100 entiers


 Tableau de Déclaration des Objets Globaux

 Objets                      Types                        Rôles
 hexa                        Tab
 n                           Entier
 Affichage                   Procédure                    Affichage de hexa
 Conversion                  Procédure                    Conversion de la base 10 à base 16
 Saisie                      Procédure                    Saisie d’un entier n
La spécification de la procédure Saisie :
 Résultat : n
 Traitement : Répéter
              n = donnée (‘donnez un entier’)
              jusqu’à n > 0
L’algorithme de la procédure Saisie :
 0) Procédure Saisie ( var n :entier )
 1) Répéter
    Lire ( n )
    Jusqu’à n > 0
 2) Fin Saisie
La spécification de la procédure Conversion :
 Résultat : hexa
 Traitement : i  0
              Tant que n ≠ 0 faire
               ii+1
               hexa[i]  n mod 16
               n  n div 16
               Fin tant que
L’algorithme de la procédure Conversion :
0) Procédure Conversion ( var hexa : Tab ; var i :entier ; n :entier )
1) i  0
2) Tant que n ≠ 0 faire
                                                                                               9
 ChapVI : Les algorithmes arithmétiques                     Prof : Hichem Klouz
    ii+1
   hexa[i]  n mod 16
   n  n div 16
   Fin tant que
3) Fin Conversion
La spécification de la procédure Affichage :
 Résultat : affichage des éléments du tableau hexa
 Traitement : Pour j de i à 1 ( pas –1) faire
                 Si hexa [j] dans [1, 9] alors
                 Ecrire ( hexa [j] )
                 Sinon
                 Ecrire( chr( ord( ‘A’)+ hexa [j] – 10 ))
                 Fin si
                 Fin Pour
L’algorithme de la procédure Affichage :
0) Procédure Affichage ( hexa :Tab ; i :entier )
1) Pour j de i à 1 ( pas –1) faire
   Si hexa [j] dans [1, 9] alors
   Ecrire ( hexa [j] )
   Sinon
   Ecrire( chr( ord( ‘A’)+ hexa [j] – 10 ))
   Fin si
   Fin Pour
2) Fin Affichage
 Tableau de Déclaration des Objets Locaux :

 Objets      Types           Rôles
 j           Entier          compteur

Application
 Exercice 3 du livre à la page 205.




                                                                             10

				
DOCUMENT INFO
Stats:
views:37
posted:1/26/2013
language:
pages:10