SlideShare une entreprise Scribd logo
Introduction : le cadre


                   `
      Introduction a l’Algorithmique en classe de Seconde                                                                                                                                                                       ´               ´
                                                                                                                                                                                       Algorithme : Suite d’instructions bien definies, dont l’execution avec
                                                                                                                                                                                                            ´               ´                `
                                                                                                                                                                                       chaque jeu de donnees permet de resoudre un probleme. La description
                                   ´
                 IREM – Universite Montpellier 2                                                                                                                                            ˆ
                                                                                                                                                                                       doit etre finie.
                                                                                                                                                                                                                          ´                ´
                                                                                                                                                                                       Dans le cadre que nous avons fixe, le calcul effectue par un algorithme
                                                                                                                                                                                                                              ´                   ´
                                                                                                                                                                                       est celui d’une fonction qui a des donnees et renvoie un resultat.
           Philippe J ANSSEN Philippe P HAM - BA - NIEN Nicolas S ABY Michel
                                                                                                                                                                                       La composition des algorithmes nous paraˆt essentielle.
                                                                                                                                                                                                                                 ı
                  `                                 ´
            L ECL E RE Jacques S ALLES Marie-Jose VALERO Jean-Francois¸
                                       V ILAREM                                                                                                                                                ´
                                                                                                                                                                                       Les entrees–sorties ne font pas partie des algorithmes !
                                                                                                                                                                                       Distinction nette entre langage d’algorithme, et codage dans un langage
                                                                           ´
                                                           IREM — Universite Montpellier 2
                                                                                                                                                                                       de programmation.
                                                                        Mai 2010                                                                                                                              `
                                                                                                                                                                                       Pour donner un sens a nos algorithmes, nous utiliserons la notion
                                                                                                                                                                                                                         ´                    ´
                                                                                                                                                                                       d’environnement et de trace d’execution, avec les entrees-sorties
                                                                                                                                                                                              ´
                                                                                                                                                                                       associees.




                                                                           `       `
Philippe J ANSSEN, Philippe P HAM - BA - NIEN, Nicolas S ABY, Michel LIntroduction a l’algorithmique       ´                                                    ´                                                                                    `       `
                                                                                                                                                                          Philippe J ANSSEN, Philippe P HAM - BA - NIEN, Nicolas S ABY, Michel LIntroduction a l’algorithmique
                                                                       ECL E RE Jacques S ALLES , Marie-Jose VALERO , Jean-Francois V ILAREM ( IREM — Universite Montpellier 2)
                                                                                                                               ¸                  05/10    1 / 24                                                                                                                    ´                                                    ´
                                                                                                                                                                                                                                                 ECL E RE Jacques S ALLES , Marie-Jose VALERO , Jean-Francois V ILAREM ( IREM — Universite Montpellier 2)
                                                                                                                                                                                                                                                                                                         ¸                  05/10    2 / 24



                      ´          ´ ´
   Algorithmes simplifies : quels elements ?                                                                                                                                                       ´
                                                                                                                                                                             Environnement et mathematiques

                ´ ´
            Les elements (constantes) de base : nombres, Vrai,Faux, les vecteurs
                                 ´
            de nombres, et les operations et fonctions “classiques” en                                                                                                        Soit        f : Z −→                     Z
                 ´
            Mathematiques.                                                                                                                                                                    x −→                     x2 + x
            Des variables.
                                                                                                                                                                                ´
                                                                                                                                                                              Definition L’environnement est un ensemble de couples (nom, valeur )
            Des algorithmes : langage assez libre, mais avec un nom, une                                                                                                       ´             ´ ´                             `       ´
                                                                                                                                                                              definissant les elements auxquels nous avons acces pour evaluer des
              ´                ´      ´
            specification (donnees et resultats) et un corps pour le calcul.                                                                                                   expressions.
                                                      ´ `
            Des expressions combinant ce qui precede, notamment les algorithmes.
                                                                                                                                                                                       L’environnement de base en maths contient :
                                    ´
            Des instructions basees sur : l’affectation ( ← ), l’instruction renvoyer.                                                                                                                 ´
                                                                                                                                                                                                Les operations classiques, notamment +
                                         ´           ´
            Des instructions composees par la sequence ;, la conditionnelle si,                                                                                                                 Les fonctions classiques, notamment x → x 2
                ´                 ´
            l’iteration pour, l’iteration tant que.                                                                                                                                             Les constantes classiques π,...
                  ´                         ´ `
            La semantique de ce qui precede : que vaut une expression ? Quel est                                                                                                            ´ ´                  ´
                                                                                                                                                                                       Il a ete enrichi par la definition de f .
                                                      ´ `
            l’effet d’une instruction ? Le tout est lie a la notion d’environnement.                                                                                                                           ´    ´
                                                                                                                                                                                       L’expression f (5) est evaluee dans l’environnement enrichi en calculant
                              ´
            La trace de l’execution d’un algorithme : sur papier ? En codant avec un                                                                                                   l’expression 52 + 5.
                                               ´
            langage ? En utilisant des entrees-sorties ?


                                                                           `       `
Philippe J ANSSEN, Philippe P HAM - BA - NIEN, Nicolas S ABY, Michel LIntroduction a l’algorithmique       ´                                                    ´                                                                                    `       `
                                                                                                                                                                          Philippe J ANSSEN, Philippe P HAM - BA - NIEN, Nicolas S ABY, Michel LIntroduction a l’algorithmique
                                                                       ECL E RE Jacques S ALLES , Marie-Jose VALERO , Jean-Francois V ILAREM ( IREM — Universite Montpellier 2)
                                                                                                                               ¸                  05/10    3 / 24                                                                                                                    ´                                                    ´
                                                                                                                                                                                                                                                 ECL E RE Jacques S ALLES , Marie-Jose VALERO , Jean-Francois V ILAREM ( IREM — Universite Montpellier 2)
                                                                                                                                                                                                                                                                                                         ¸                  05/10    4 / 24
Environnement et algorithmes                                                                                                                                               Variables

                                                                         L’environnement de base contient : Les                                                                                                                                             Une variable : un nom, un type,
1   Algorithme : f                                                                       ´
                                                                         “nombres”, operations et fonctions                                                                1   Algorithme : f                                                               ´
                                                                                                                                                                                                                                                            eventuellement une valeur.
          ´
    Donnees : Un nombre x                                                usuelles, les vecteurs de nombres, les                                                                     ´
                                                                                                                                                                               Donnees : Deux nombres x, y                                                        ´
                                                                                                                                                                                                                                                            La declaration fixe le nom et le type.
     ´
    debut                                                                      ´                          ´
                                                                         booleens Vrai, Faux, les operations                                                               2   Variables : a, b nombres,                                                    Ligne (a), ou localement dans
       renvoyer x 2 + x;                                                       ´
                                                                         booleennes et,ou, non, les operations ´                                                                          ´
                                                                                                                                                                                test booleen                                                                l’algorithme ligne (2).
    fin algorithme                                                        de comparaison.                                                                                         ´
                                                                                                                                                                               debut                                                                                                  ´
                                                                                                                                                                                                                                                            Type : nombre ( !), booleen ou vecteur
2                                                                             ´ ´                     `
                                                                         Il a ete enrichi, lignes (1) a (2), par la                                                        3        a ← x;                                                                  de nombres.
a     Variables : y un nombre                                               ´
                                                                         definition de l’algorithme f , puis en ligne                                                               ... ;                                                                                            ´ `
                                                                                                                                                                                                                                                            Une valeur est associee a une
b     y← 3;                                                                           ´
                                                                         (a) par la declaration de y.                                                                                test ← (a > b) ;
                                                                                                                                                                           4                                                                                variable par une instruction
c     y ← y + f (5) ;                                                         ´ ´         ´
                                                                         Il a ete modifie par l’affectation de y en                                                                 ... ;                                                                                                           `
                                                                                                                                                                                                                                                            d’affectation, ligne (b) est la premiere
                                                                         ligne (b)                                                                                                 renvoyer a;                                                              fois pour z : on parle d’initialisation.
                                                                         En ligne (c), l’expression y + f (5) est                                                              fin algorithme                                                                Une affectation n’a pas de valeur !
                                                                         ´     ´
                                                                         evaluee dans l’environnement modifie en  ´                                                         5
                                                                                                                                                                                                                                                            C’est une instruction qui a un effet (on
                                                                         calculant successivement f (5), y , y + f (5).                                                                                                                                     parle d’effet de bord) de modification
                                                                                                                                                                           a   Variables : z, t nombres
                                                                         L’environnement est encore modifie, fin ´                                                                                                                                            de l’environnement. t ← (z ← 3) n’a
                                                                         de ligne (c).                                                                                     b    z ← 3;                                                                      pas de sens.
                                                                                                                                                                           c    z ← z + f (5, 17) ;
                                                                           `       `
Philippe J ANSSEN, Philippe P HAM - BA - NIEN, Nicolas S ABY, Michel LIntroduction a l’algorithmique       ´                                                    ´
                                                                       ECL E RE Jacques S ALLES , Marie-Jose VALERO , Jean-Francois V ILAREM ( IREM — Universite Montpellier 2)
                                                                                                                               ¸                  05/10    5 / 24                                                                                    `       `
                                                                                                                                                                          Philippe J ANSSEN, Philippe P HAM - BA - NIEN, Nicolas S ABY, Michel LIntroduction a l’algorithmique       ´                                                    ´
                                                                                                                                                                                                                                                 ECL E RE Jacques S ALLES , Marie-Jose VALERO , Jean-Francois V ILAREM ( IREM — Universite Montpellier 2)
                                                                                                                                                                                                                                                                                                         ¸                  05/10    6 / 24



                        `
    Type nombre et problemes en vue                                                                                                                                                           ´
                                                                                                                                                                               Algorithme = specification + corps

                                                                                                                                                                                                                    ´                          ´
                                                                                                                                                                                                                  Specification = Nom + les donnees +
                                                                                                                                                                            Algorithme : SommePairs
                                                                                                                                                                                                                                  ´
                                                                                                                                                                                                                  description du resultat
                                                                                                                                                                                 ´
                                                                                                                                                                            Donnees : Le nombre entier positif n
                                                                                     ´
                                                                     La valeur de x depend de :
                                                                                                                                                                             ´
                                                                                                                                                                            Resultat : La somme des entiers pairs
       Variables : x un nombre                                         1                 ´
                                                                         La valeur des operations + et / :                                                                                ´          ´     `
                                                                                                                                                                                       inferieurs ou egaux a n
       x ← (4 + 1)/2 ;                                                                  polymorphe (comme en maths). Type
                                                                                                           `
                                                                                        contextuel obtenu a partir du type
                                                                                        des arguments.                                                                                                                                                                  ´
                                                                                                                                                                                                                                                             Corps = Declaration des variables
                                                                                                     ´
                                                                                        fortement type : Z × Z → Z comme
                                                                                                                                                                            Variables : S un entier
       Variables : x un nombre                                                                                                                                                                                                                               locales + instructions dont l’une au
                                                                                        en Caml                                                                              ´
                                                                                                                                                                            debut
       x ← (4 + 1.)/2 ;                                                                                                                                                                                                                                      moins est renvoyer expression.
                                                                                                                                                                               S ← 0;
                                                                         2            ´
                                                                               Mode d’evaluation choisi :
                                                                                                                                                                               pour K de 1 ` n faire
                                                                                                                                                                                              a
                                                                                        calcul flottant (approximation
                                                                                                                                                                                  si ((K mod 2) = 0) alors
                                                                                          ´
                                                                                        decimale)
                                                                                                                `
                                                                                        calcul formel avec systeme de
                                                                                                                                                                                      S ← S+K;
                                                                                         ´´
                                                                                        reecriture                                                                                fin si;
                                                                                                                                                                               fin pour;
                                                                                                                                                                               renvoyer S;
                                                                                                                                                                            fin algorithme

                                                                           `       `
Philippe J ANSSEN, Philippe P HAM - BA - NIEN, Nicolas S ABY, Michel LIntroduction a l’algorithmique       ´                                                    ´
                                                                       ECL E RE Jacques S ALLES , Marie-Jose VALERO , Jean-Francois V ILAREM ( IREM — Universite Montpellier 2)
                                                                                                                               ¸                  05/10    7 / 24                                                                                    `       `
                                                                                                                                                                          Philippe J ANSSEN, Philippe P HAM - BA - NIEN, Nicolas S ABY, Michel LIntroduction a l’algorithmique       ´                                                    ´
                                                                                                                                                                                                                                                 ECL E RE Jacques S ALLES , Marie-Jose VALERO , Jean-Francois V ILAREM ( IREM — Universite Montpellier 2)
                                                                                                                                                                                                                                                                                                         ¸                  05/10    8 / 24
´
   Evaluer un appel d’algorithme                                                                                                                                                `
                                                                                                                                                                             Algebre des expressions
  L’environnement contient la
                                                                   Variables : X un nombre
    ´
  definition de l’algorithme
                                                                   X ← SommePairs(10);                                                                                                        ´                     ´
                                                                                                                                                                              Composition algebrique standard (operations, fonctions,
                        ´
  SommePairs et la declaration
  de X .                                                                                                                                                                                    ´
                                                                                                                                                                              algorithmes), evaluation classique (dans un environnement).
                       ´
  Remplacer la donnee n par                                                                                                                                                   Algorithme : SPairs
                                                                   Variables : S,K entiers                                                                                         ´
                                                                                                                                                                              Donnees : Les nombre entiers positifs a, b
  l’argument, ici 10, dans le
                                                                    ´
                                                                   debut                                                                                                       ´
  corps.                                                                                                                                                                      Resultat : La somme des entiers pairs compris entre a et b
                                                                      S ← 0;
      ´
  Executer la/les instructions du
                                                                      pour K de 1 ` 10 faire
                                                                                     a                                                                                        Variables : X , Y , Z : des nombres
  corps, avec ou sans
                                                                         si ((K mod 2) = 0) alors                                                                             X ← 5; Y ← 2 ;
  modification d’environnement,
                                                                             S ← S+K;
                                                                                                                                                                                          §                     ¤
         `
  jusqu’a rencontrer l’instruction
                                                                         fin si;
  renvoyer S ;
                                                                                                                                                                                          ¦                     ¥
                                                                      fin pour;                                                                                                Z←          SPairs(2 ∗ X , Y + 1)
                    ´     ´ `
  L’appel est alors evalue a la
                                                                                                                                                                              §                                                            ¤
  valeur de S. Cette valeur est                                       renvoyer S;

                                                                                                                                                                              ¦                                                            ¥
              ´ `
  enfin affectee a X . Les                                          fin algorithme                                                                                                                ´
                                                                                                                                                                              une expression algebrique composant des appels d’algorithmes
  variables locales sont
           ´
  supprimees de
  l’environnement courant.
                                                                           `       `
Philippe J ANSSEN, Philippe P HAM - BA - NIEN, Nicolas S ABY, Michel LIntroduction a l’algorithmique       ´                                                    ´                                                                                    `       `
                                                                                                                                                                          Philippe J ANSSEN, Philippe P HAM - BA - NIEN, Nicolas S ABY, Michel LIntroduction a l’algorithmique
                                                                       ECL E RE Jacques S ALLES , Marie-Jose VALERO , Jean-Francois V ILAREM ( IREM — Universite Montpellier 2)
                                                                                                                               ¸                  05/10    9 / 24                                                                                                                    ´                                                   ´
                                                                                                                                                                                                                                                 ECL E RE Jacques S ALLES , Marie-Jose VALERO , Jean-Francois V ILAREM ( IREM — Universite Montpellier 2)
                                                                                                                                                                                                                                                                                                         ¸                 05/10   10 / 24




   Composer des algorithmes                                                                                                                                                  Composer des algorithmes

                                                                                                                                                                              Autre exemple de composition d’algorithmes.
   Autre exemple de composition d’algorithmes.
  Algorithme : estPair                                                            Algorithme : Min2                                                                           Algorithme : SPairs
       ´
  Donnees : Un entier n                                                                ´
                                                                                  Donnees : Deux nombres a, b                                                                       ´
                                                                                                                                                                              Donnees : Les nombres entiers positifs a, b
   ´                 ´
  Resultat : Le booleen qui teste la                                               ´
                                                                                  Resultat : Le plus petit entre a et b                                                        ´
                                                                                                                                                                              Resultat : La somme des entiers pairs compris entre a et b
                  ´
             parite de n                                                                                                                                                      Variables : S,K entiers
                                                                                                                                                                               ´
                                                                                                                                                                              debut
  Algorithme : Max2                                                                                                                                                              S ← 0;
       ´
  Donnees : Deux nombres a, b                                                                                                                                                    pour K de Min2(a,b) ` Max2(a,b) faire
                                                                                                                                                                                                         a
   ´
  Resultat : Le plus grand entre a et b                                                                                                                                               si (estPair(K)) alors
                                                                                                                                                                                         S ← S+K;
   Algorithme : SPairs                                                                                                                                                                fin si;
        ´
   Donnees : Les nombres entiers positifs a, b                                                                                                                                   fin pour;
    ´
   Resultat : La somme des entiers pairs compris entre a et b                                                                                                                    renvoyer S;
                                                                                                                                                                              fin algorithme



                                                                           `       `
Philippe J ANSSEN, Philippe P HAM - BA - NIEN, Nicolas S ABY, Michel LIntroduction a l’algorithmique       ´                                                   ´
                                                                       ECL E RE Jacques S ALLES , Marie-Jose VALERO , Jean-Francois V ILAREM ( IREM — Universite Montpellier 2)
                                                                                                                               ¸                 05/10   11 / 24                                                                                     `       `
                                                                                                                                                                          Philippe J ANSSEN, Philippe P HAM - BA - NIEN, Nicolas S ABY, Michel LIntroduction a l’algorithmique       ´                                                   ´
                                                                                                                                                                                                                                                 ECL E RE Jacques S ALLES , Marie-Jose VALERO , Jean-Francois V ILAREM ( IREM — Universite Montpellier 2)
                                                                                                                                                                                                                                                                                                         ¸                 05/10   12 / 24
´                 ´
    Evaluation d’une sequence, trace                                                                                                                                           ´                 ´
                                                                                                                                                                               Evaluation d’une sequence, trace
                                                                                                                                                                               Variables : S,K entiers
                                                                                                                                                                           1    ´
                                                                                                                                                                               debut                                                                      ´
                                                                                                                                                                                                                                                          Evaluation de MultiplierPar4(5)
    Algorithme : MultiplierPar                                                               ´
                                                                                        L’execution de l’affectation en ligne                                                     S ← 0;                                                                    En fin de ligne Val(K) Val(S)
                                                                                                      § ´                  ¤
                                                                                                                                                                           2
          ´
    Donnees : b, n entiers positifs                                                            ´
                                                                                        (8), necessite l’evaluation de                                                     3      pour K de 1 ` 4 faire
                                                                                                                                                                                                  a                                                                1          ×        ×
                                                                                                      ¦                    ¥
      ´
    Resultat : Le produit b ∗ n                                                         l’expression MultiplierPar (4, 5)                                                  4         S ← S+5;                                                                      2          ×        0
    Variables : S,K entiers                                                             Donc du corps de l’algorithme                                                      5      fin pour;                                                                         3           1       0
1    ´
    debut                                                                               dans lequel on remplace la donnee  ´                                               6      renvoyer S;                                                                      4           1       5
2       S ← 0;                                                                                             ´
                                                                                        n par 5 et la donnee b par 4.                                                      7   fin algorithme                                                                       5           2       5
3       pour K de 1 ` b faire
                       a                                                                                                                                                       Variables : X nombre                                                                3           2       5
4           S ← S+n;                                                                                                                                                       8   X ← MultiplierPar (4, 5);                                                           4           2       10
5       fin pour;                                                                                                                                                                                                                                                  ...         ...      ...
6       renvoyer S;                                                                                                                                                                                                                                                4           4       20
7   fin algorithme                                                                                                                                                                                                                                                  5           5       20
    Variables : X nombre                                                                                                                                                                                                                                           3           5       20
8   X ← MultiplierPar (4, 5);                                                                                                                                                                                                                                      6          ×        20
                                                                                                                                                                                                                                                                          ´
                                                                                                                                                                                                                                                          La valeur renvoyee est 20. La valeur
                                                                                                                                                                                                                                                                 ´ `
                                                                                                                                                                                                                                                          associee a X est 20. En ligne (8) pas
                                                                                                                                                                                                                                                          de valeur, pas d’affichage
                                                                           `       `
Philippe J ANSSEN, Philippe P HAM - BA - NIEN, Nicolas S ABY, Michel LIntroduction a l’algorithmique       ´                                                   ´                                                                                     `       `
                                                                                                                                                                          Philippe J ANSSEN, Philippe P HAM - BA - NIEN, Nicolas S ABY, Michel LIntroduction a l’algorithmique
                                                                       ECL E RE Jacques S ALLES , Marie-Jose VALERO , Jean-Francois V ILAREM ( IREM — Universite Montpellier 2)
                                                                                                                               ¸                 05/10   13 / 24                                                                                                                     ´                                                   ´
                                                                                                                                                                                                                                                 ECL E RE Jacques S ALLES , Marie-Jose VALERO , Jean-Francois V ILAREM ( IREM — Universite Montpellier 2)
                                                                                                                                                                                                                                                                                                         ¸                 05/10   14 / 24



              ´
    Trace d’execution d’un programme                                                                                                                                                             ´
                                                                                                                                                                               Programmes et entrees-sorties

                                                                            ´
    Pour tester, faire une trace de nos algorithmes, on utilisera un interpreteur :
    C AML, X CAS, TI XXX, P YTHON, ...                                                                                                                                                          `
                                                                                                                                                                               Les instructions a effet de bord n’ont pas de valeur, juste un effet sur
                                                        §                       ¤
                                         ´           ´
    Le fonctionnement de ces interpreteurs est base sur la boucle :                                                                                                            l’environnement :
                                                                                                                                                                               Variables X,Y nombres
            ´
      1 Iterer sans fin                                1 A ; B ;

      2       Lire une “expression”(E);                2 A :=   3;                                                                                                                 1    X ← 3;                                         1                               ´
                                                                                                                                                                                                                                            Pas de valeur, rien d’affiche ( !), juste un effet.
      3       ´
              Evaluer(E);                              3 A ; B ;                                                                                                                   2    print(X );                                     2    Pas de valeur, affiche 3, c’est un effet( !)
      4                     ´
              Afficher(Le resultat);                    4 B :=   4;                                                                                                                 3    read(Y );                                      3                                  ´
                                                                                                                                                                                                                                            Pas de valeur, rien d’affiche ( !), juste un
                ´                                      5 A ; B ;
      5 fin iterer ;
                                                                                                                                                                                        Y ← (X ← 3);                                                                                       ´
                                                                                                                                                                                                                                            effet : lire une valeur qui sera ensuite affectee
                                                       6 B := A + B ;
                                                                                                                                                                                   4
         Dans le cas ou l’expression est une
                         `                                                                                                                                                                                                                  `
                                                                                                                                                                                                                                            a la variable Y .
                                                        ¦                       ¥
                                                       7 A ; B ;                                                                                                                   5    Y ← print(X )
                                     ´     ´
         instruction, celle-ci est executee. Mais                                                                                                                                                                                      4                                      ´
                                                                                                                                                                                                                                            Erreur dans beaucoup d’interpreteurs. Pas
                             ´
         il se peut que l’execution ne renvoie                                                                                                                                                                                              tous !
         pas de valeur, qu’elle ait seulement un
         effet sur l’environnement. C’est le cas
                                                                                                                                                                                                                                       5    Erreur.
                                       ´
         des affectations et des entrees/sorties.



                                                                           `       `
Philippe J ANSSEN, Philippe P HAM - BA - NIEN, Nicolas S ABY, Michel LIntroduction a l’algorithmique       ´                                                   ´                                                                                     `       `
                                                                                                                                                                          Philippe J ANSSEN, Philippe P HAM - BA - NIEN, Nicolas S ABY, Michel LIntroduction a l’algorithmique
                                                                       ECL E RE Jacques S ALLES , Marie-Jose VALERO , Jean-Francois V ILAREM ( IREM — Universite Montpellier 2)
                                                                                                                               ¸                 05/10   15 / 24                                                                                                                     ´                                                   ´
                                                                                                                                                                                                                                                 ECL E RE Jacques S ALLES , Marie-Jose VALERO , Jean-Francois V ILAREM ( IREM — Universite Montpellier 2)
                                                                                                                                                                                                                                                                                                         ¸                 05/10   16 / 24
´
    Entrees-sorties et composition d’algorithmes                                                                                                                                  ´
                                                                                                                                                                              Entrees-sorties et composition d’algorithmes
                                                                                                                                                                                 §                                                                    ¤ §                                                                           ¤
                    ´ `                                    ´
     Vu ce qui precede, remplacer l’expression renvoyee par un algorithme par                                                                                                  Composons maintenant :

       §                                    ¤ §                                       ¤
                                 `
     une sortie (une fonction a effet de bord) semble anodin. Ce n’est pas le cas :                                                                                            1 Max2 ( A , B)    := {                                                  1 Max2 ( A , B)   := {
     1 Max2 ( A , B )   := {                   1 Max2 ( A , B)  := {                                                                                                           2    l o c a l maxi ;                                                    2    l o c a l maxi ;
     2    l o c a l maxi ;                     2    l o c a l maxi ;                                                                                                           3     i f ( A>B) then                                                    3    i f ( A>B) then
     3     i f ( A>B ) then                    3    i f ( A>B) then                                                                                                            4    maxi : = A ;                                                        4    maxi : = A ;
     4    maxi : = A ;                         4    maxi : = A ;                                                                                                               5    else                                                                5    else
     5    else                                 5    else                                                                                                                       6    maxi : = B ;                                                        6    maxi : = B ;
     6    maxi : = B ;                         6    maxi : = B ;                                                                                                               7    end if                                                              7    end if
     7    end if                               7    end if                                                                                                                     8    return ( maxi ) ;                                                   8    print ( maxi ) ;
                                                                                                                                                                               9 }                                                                      9 }
     8    return ( maxi ) ;                    8    print ( maxi ) ;
                                                                                                                                                                              10 Max3 ( A , B ,C)   := {                                               10 Max3 ( A , B ,C)   := {
     9 }                                       9 }

    10 Max2(7,3)          valeur ? afficher ? 10 Max2(7,3)          valeur ? afficher ?                                                                                         11    r e t u r n Max2 ( Max2 ( A , B ) ,                                11    r e t u r n Max2 ( Max2 ( A , B ) ,
    11               7                        11              7                                                                                                               12                       C) ;                                            12                       C) ;
                                                                                                                                                                              13 }                                                                     13 }
    12 print(Max2(7,3))        non ambigu     12 X := Max2(7,3)
                                                                                                                                                                              14 Max3(7,10,3)                                                          14 Max3(7,10,3)

       ¦                                    ¥ 14 X
    13               7                        13              7
                                                                                                                                                                                                                                                          ¦                                                                         ¥
                                                                                                                                                                              15               10                                                      15 ? ? ? ?             1
                                                                                                                                                                              16 print(Max3(7,10,3))

                                                 ¦                                    ¥
                                              15 ? ? ? ?             1
                                                                                                                                                                                 ¦                                                                    ¥
                                                                                                                                                                              17               10
                                                                           `       `
Philippe J ANSSEN, Philippe P HAM - BA - NIEN, Nicolas S ABY, Michel LIntroduction a l’algorithmique       ´                                                   ´                                                                                     `       `
                                                                                                                                                                          Philippe J ANSSEN, Philippe P HAM - BA - NIEN, Nicolas S ABY, Michel LIntroduction a l’algorithmique
                                                                       ECL E RE Jacques S ALLES , Marie-Jose VALERO , Jean-Francois V ILAREM ( IREM — Universite Montpellier 2)
                                                                                                                               ¸                 05/10   17 / 24                                                                                                                     ´                                                   ´
                                                                                                                                                                                                                                                 ECL E RE Jacques S ALLES , Marie-Jose VALERO , Jean-Francois V ILAREM ( IREM — Universite Montpellier 2)
                                                                                                                                                                                                                                                                                                         ¸                 05/10   18 / 24




    Structuration conditionnelle                                                                                                                                                             ´
                                                                                                                                                                              Alternative = sequence de conditionnelles ?
                                                                                                                                                                            §                                                                                                                                                           ¤
                                                                                                                                                                          1  au cas ou
                                                                                                                                                                          2    cas ( x = 1 ) : renvoyer 4 ;
1   si Condition alors                                                                                                                                                    3    cas ( ( 1 < x ) e t ( x < 2 ) ) :
2       Instr 1                                                                                                                                                           4            renvoyer 5 ;
3   sinon                                                                                                                                                                 5    autre cas : renvoyer 6 ;
                                                                                                                                                                            ¦                                                                                                                                                           ¥
                                                                                                                                                                          6 fin cas
4       Instr 2
5   fin si;
6   InstrSuite ;                                                                                                                                                              1   si (x=1) alors                                                           1   si (x=1) alors
                                                                                                                                                                              2       renvoyer 4;                                                          2       renvoyer 4;
                                                                                                                                                                              3   sinon                                                                    3   fin si;
                                                                                                                                                                              4       si ((1 < x) et (x < 2))                                              4   si ((1 < x) et (x < 2))
                                                                                                                                                                                      alors                                                                    alors
                                                                                                                                                                              5           renvoyer 5;                                                      5       renvoyer 5;
     ´
    Semantique “classique”.                                                                                                                                                   6       sinon                                                                6   fin si;
                                                                                                                                                                              7           renvoyer 6;                                                      7   renvoyer 6;
                                                                                                                                                                              8       fin si;
                                                                                                                                                                              9   fin si;

                                                                           `       `
Philippe J ANSSEN, Philippe P HAM - BA - NIEN, Nicolas S ABY, Michel LIntroduction a l’algorithmique       ´                                                   ´                                                                                     `       `
                                                                                                                                                                          Philippe J ANSSEN, Philippe P HAM - BA - NIEN, Nicolas S ABY, Michel LIntroduction a l’algorithmique
                                                                       ECL E RE Jacques S ALLES , Marie-Jose VALERO , Jean-Francois V ILAREM ( IREM — Universite Montpellier 2)
                                                                                                                               ¸                 05/10   19 / 24                                                                                                                     ´                                                   ´
                                                                                                                                                                                                                                                 ECL E RE Jacques S ALLES , Marie-Jose VALERO , Jean-Francois V ILAREM ( IREM — Universite Montpellier 2)
                                                                                                                                                                                                                                                                                                         ¸                 05/10   20 / 24
´
   Sequence de conditionnelles avec effet de bord                                                                                                                               ´                        `
                                                                                                                                                                              Iteration pour : quelques regles


                                                                                                                                                                              1   pour K de E1 ` E2 faire
                                                                                                                                                                                               a                                                                        K variable de type entier
                                                                                                                                                                              2      Inst ;                                                                              ´     ´
                                                                                                                                                                                                                                                                        declaree,
   1   x ← 1;                                                                    1   x ← 1;                                                                                   3   fin pour;                                                                              E1, E2 sont des expressions
   2   si (x < 3) alors                                                          2   si (x < 3) alors                                                                         4   InstSuite ;                                                                           `             `
                                                                                                                                                                                                                                                                        a valeurs entieres,
   3       x ← x + 10 ;                                                          3       x ← x + 10 ;                                                                                                                                                                   On s’interdit de modifier la
   4   sinon                                                                     4   fin si;                                                                                                                                                                             variable K dans le corps
   5       x ← x - 10 ;                                                          5   si (x >= 3) alors                                                                                  ´    ´                         `
                                                                                                                                                                              (a) E1,E2 evaluees, une fois pour toutes a V1,V2,
   6   fin si;                                                                    6       x ← x - 10 ;
                                                                                                                                                                                                ´   ´
                                                                                                                                                                              (b) K ← V1 est executee.
   7   renvoyer x;                                                               7   fin si;
                                                                                 8   renvoyer x;                                                                                                                        ´            ˆ                `
                                                                                                                                                                              (c) Soit VK la valeur de K Si VK > V2 l’iteration s’arrete, et on passe a la
                                                                                                                                                                                  ligne 4.
                                                                                                                                                                                               ´
                                                                                                                                                                                         (i) Executer Inst;
                                                                                                                                                                                               ´
                                                                                                                                                                                        (ii) Executer K ← K + 1 (en ligne 3)
                                                                                                                                                                                                          ` ´
                                                                                                                                                                                       (iii) Recommencer a l’etape (c)




                                                                           `       `
Philippe J ANSSEN, Philippe P HAM - BA - NIEN, Nicolas S ABY, Michel LIntroduction a l’algorithmique       ´                                                   ´                                                                                     `       `
                                                                                                                                                                          Philippe J ANSSEN, Philippe P HAM - BA - NIEN, Nicolas S ABY, Michel LIntroduction a l’algorithmique
                                                                       ECL E RE Jacques S ALLES , Marie-Jose VALERO , Jean-Francois V ILAREM ( IREM — Universite Montpellier 2)
                                                                                                                               ¸                 05/10   21 / 24                                                                                                                     ´                                                   ´
                                                                                                                                                                                                                                                 ECL E RE Jacques S ALLES , Marie-Jose VALERO , Jean-Francois V ILAREM ( IREM — Universite Montpellier 2)
                                                                                                                                                                                                                                                                                                         ¸                 05/10   22 / 24



     ´
   Iteration tant que, exemple, preuve                                                                                                                                          ´
                                                                                                                                                                              Iteration tant que, exemple, preuve

                                                                                                                                                                                                                                                                        ´
                                                                                                                                                                                                                                                                        Evaluation de Russe(5, 13)
                                                                                                                                                                              Algorithme : Russe
   1   tant que Cond faire                                                                     ´
                                                                                              Semantique classique, Inst                                                            ´
                                                                                                                                                                              Donnees : a,b deux entiers strictement positifs                                             I RI AI BI
                                                                                              doit modifier Cond.                                                               ´                                         ´
                                                                                                                                                                              Resultat : a*b par additions, test de parite et                                             0 0      5 13
   2      Inst ;
                                                                                              On autorise renvoyer ...;                                                                 divisions par 2                                                                   1 5 10 6
   3   fin tq;
                                                                                                                   ´
                                                                                              dans Inst (simplicite).                                                         Variables : A,B,R entier                                                                    2 5 20 3
                                                                                                                                                                          1    ´
                                                                                                                                                                              debut                                                                                       3 25 40 1
                                                                                                              ´
                                                                                              On simule une iteration pour                                                        A ← a; B ← b; R ← 0 ;
                                                                                                                                                                          2                                                                                               4 65 80 0
                                                                                                                                                                          3      tant que ( B = 0 ) faire                                                                        Terminaison : (BI ) suite                           0,
   1   pour K de 1                      ` n faire
                                        a                                        1   K ← 1;                                                                                                                                                                                 1
                                                                                                                                                                          4          si ( estImpair(B) ) alors
   2       Instr ;                                                               2   tant que K   n faire                                                                                                                                                                         ´
                                                                                                                                                                                                                                                                                 decroissante strict de I.
                                                                                                                                                                          5              R ← R + A; B ← B - 1 ;
   3   fin pour;                                                                  3       Inst;                                                                            6          fin si;                                                                                 2    Invariant :
   4   InstSuite ;                                                               4       K ← K+1;                                                                         7          B ← B / 2; A ← A + A ;                                                                      ∀I 0 : RI + AI ∗ BI = a ∗ b
                                                                                 5   fin tq;                                                                               8      fin tq;                                                                                     3    Preuve : Terminaison, donc
                                                                                 6   InstrSuite ;                                                                         9      renvoyer R;                                                                                     B = 0 faux et invariant
                                                                                                                                                                         10   fin algorithme                                                                                      R + A ∗ B = a ∗ b.



                                                                           `       `
Philippe J ANSSEN, Philippe P HAM - BA - NIEN, Nicolas S ABY, Michel LIntroduction a l’algorithmique       ´                                                   ´
                                                                       ECL E RE Jacques S ALLES , Marie-Jose VALERO , Jean-Francois V ILAREM ( IREM — Universite Montpellier 2)
                                                                                                                               ¸                 05/10   23 / 24                                                                                     `       `
                                                                                                                                                                          Philippe J ANSSEN, Philippe P HAM - BA - NIEN, Nicolas S ABY, Michel LIntroduction a l’algorithmique       ´                                                   ´
                                                                                                                                                                                                                                                 ECL E RE Jacques S ALLES , Marie-Jose VALERO , Jean-Francois V ILAREM ( IREM — Universite Montpellier 2)
                                                                                                                                                                                                                                                                                                         ¸                 05/10   24 / 24

Contenu connexe

Plus de Wael Ismail

Devoir de synthèse N°1
Devoir de synthèse N°1 Devoir de synthèse N°1
Devoir de synthèse N°1
Wael Ismail
 
Devoir de contrôle N°1 Système et réseaux 2011-2012
Devoir de contrôle N°1 Système et réseaux 2011-2012Devoir de contrôle N°1 Système et réseaux 2011-2012
Devoir de contrôle N°1 Système et réseaux 2011-2012
Wael Ismail
 
devoir de contrôle N° 1 TIC 2011-2012
devoir de contrôle N° 1 TIC 2011-2012devoir de contrôle N° 1 TIC 2011-2012
devoir de contrôle N° 1 TIC 2011-2012
Wael Ismail
 
Ch5 base de données
Ch5   base de donnéesCh5   base de données
Ch5 base de données
Wael Ismail
 
Ch3 eléments de présentation
Ch3   eléments de présentationCh3   eléments de présentation
Ch3 eléments de présentation
Wael Ismail
 
Ch1 traitement de texte
Ch1   traitement de texteCh1   traitement de texte
Ch1 traitement de texte
Wael Ismail
 
Les structures en c++
Les structures en c++Les structures en c++
Les structures en c++
Wael Ismail
 
Les structures en c++ (1)
Les structures en c++ (1)Les structures en c++ (1)
Les structures en c++ (1)
Wael Ismail
 
Cours intro05 06
Cours intro05 06Cours intro05 06
Cours intro05 06
Wael Ismail
 
Bilan gpf algorithmique_site
Bilan gpf algorithmique_siteBilan gpf algorithmique_site
Bilan gpf algorithmique_site
Wael Ismail
 
Acq iut nov06-avr07
Acq iut nov06-avr07Acq iut nov06-avr07
Acq iut nov06-avr07
Wael Ismail
 

Plus de Wael Ismail (20)

Dc2cc
Dc2ccDc2cc
Dc2cc
 
Dc2
Dc2Dc2
Dc2
 
Devoir de synthèse N°1
Devoir de synthèse N°1 Devoir de synthèse N°1
Devoir de synthèse N°1
 
Devoir de contrôle N°1 Système et réseaux 2011-2012
Devoir de contrôle N°1 Système et réseaux 2011-2012Devoir de contrôle N°1 Système et réseaux 2011-2012
Devoir de contrôle N°1 Système et réseaux 2011-2012
 
devoir de contrôle N° 1 TIC 2011-2012
devoir de contrôle N° 1 TIC 2011-2012devoir de contrôle N° 1 TIC 2011-2012
devoir de contrôle N° 1 TIC 2011-2012
 
Ch5 base de données
Ch5   base de donnéesCh5   base de données
Ch5 base de données
 
Ch4 internet
Ch4   internetCh4   internet
Ch4 internet
 
Ch3 eléments de présentation
Ch3   eléments de présentationCh3   eléments de présentation
Ch3 eléments de présentation
 
Ch2 tableur
Ch2  tableurCh2  tableur
Ch2 tableur
 
Ch1 traitement de texte
Ch1   traitement de texteCh1   traitement de texte
Ch1 traitement de texte
 
Les structures en c++
Les structures en c++Les structures en c++
Les structures en c++
 
Les structures en c++ (1)
Les structures en c++ (1)Les structures en c++ (1)
Les structures en c++ (1)
 
L2006
L2006L2006
L2006
 
Jmc habile
Jmc habileJmc habile
Jmc habile
 
Cours intro05 06
Cours intro05 06Cours intro05 06
Cours intro05 06
 
Cours1 1
Cours1 1Cours1 1
Cours1 1
 
C66
C66C66
C66
 
Bilan gpf algorithmique_site
Bilan gpf algorithmique_siteBilan gpf algorithmique_site
Bilan gpf algorithmique_site
 
Acq iut nov06-avr07
Acq iut nov06-avr07Acq iut nov06-avr07
Acq iut nov06-avr07
 
A1s1
A1s1A1s1
A1s1
 

Presentation algo-irem-2x2 (1)

  • 1. Introduction : le cadre ` Introduction a l’Algorithmique en classe de Seconde ´ ´ Algorithme : Suite d’instructions bien definies, dont l’execution avec ´ ´ ` chaque jeu de donnees permet de resoudre un probleme. La description ´ IREM – Universite Montpellier 2 ˆ doit etre finie. ´ ´ Dans le cadre que nous avons fixe, le calcul effectue par un algorithme ´ ´ est celui d’une fonction qui a des donnees et renvoie un resultat. Philippe J ANSSEN Philippe P HAM - BA - NIEN Nicolas S ABY Michel La composition des algorithmes nous paraˆt essentielle. ı ` ´ L ECL E RE Jacques S ALLES Marie-Jose VALERO Jean-Francois¸ V ILAREM ´ Les entrees–sorties ne font pas partie des algorithmes ! Distinction nette entre langage d’algorithme, et codage dans un langage ´ IREM — Universite Montpellier 2 de programmation. Mai 2010 ` Pour donner un sens a nos algorithmes, nous utiliserons la notion ´ ´ d’environnement et de trace d’execution, avec les entrees-sorties ´ associees. ` ` Philippe J ANSSEN, Philippe P HAM - BA - NIEN, Nicolas S ABY, Michel LIntroduction a l’algorithmique ´ ´ ` ` Philippe J ANSSEN, Philippe P HAM - BA - NIEN, Nicolas S ABY, Michel LIntroduction a l’algorithmique ECL E RE Jacques S ALLES , Marie-Jose VALERO , Jean-Francois V ILAREM ( IREM — Universite Montpellier 2) ¸ 05/10 1 / 24 ´ ´ ECL E RE Jacques S ALLES , Marie-Jose VALERO , Jean-Francois V ILAREM ( IREM — Universite Montpellier 2) ¸ 05/10 2 / 24 ´ ´ ´ Algorithmes simplifies : quels elements ? ´ Environnement et mathematiques ´ ´ Les elements (constantes) de base : nombres, Vrai,Faux, les vecteurs ´ de nombres, et les operations et fonctions “classiques” en Soit f : Z −→ Z ´ Mathematiques. x −→ x2 + x Des variables. ´ Definition L’environnement est un ensemble de couples (nom, valeur ) Des algorithmes : langage assez libre, mais avec un nom, une ´ ´ ´ ` ´ definissant les elements auxquels nous avons acces pour evaluer des ´ ´ ´ specification (donnees et resultats) et un corps pour le calcul. expressions. ´ ` Des expressions combinant ce qui precede, notamment les algorithmes. L’environnement de base en maths contient : ´ Des instructions basees sur : l’affectation ( ← ), l’instruction renvoyer. ´ Les operations classiques, notamment + ´ ´ Des instructions composees par la sequence ;, la conditionnelle si, Les fonctions classiques, notamment x → x 2 ´ ´ l’iteration pour, l’iteration tant que. Les constantes classiques π,... ´ ´ ` La semantique de ce qui precede : que vaut une expression ? Quel est ´ ´ ´ Il a ete enrichi par la definition de f . ´ ` l’effet d’une instruction ? Le tout est lie a la notion d’environnement. ´ ´ L’expression f (5) est evaluee dans l’environnement enrichi en calculant ´ La trace de l’execution d’un algorithme : sur papier ? En codant avec un l’expression 52 + 5. ´ langage ? En utilisant des entrees-sorties ? ` ` Philippe J ANSSEN, Philippe P HAM - BA - NIEN, Nicolas S ABY, Michel LIntroduction a l’algorithmique ´ ´ ` ` Philippe J ANSSEN, Philippe P HAM - BA - NIEN, Nicolas S ABY, Michel LIntroduction a l’algorithmique ECL E RE Jacques S ALLES , Marie-Jose VALERO , Jean-Francois V ILAREM ( IREM — Universite Montpellier 2) ¸ 05/10 3 / 24 ´ ´ ECL E RE Jacques S ALLES , Marie-Jose VALERO , Jean-Francois V ILAREM ( IREM — Universite Montpellier 2) ¸ 05/10 4 / 24
  • 2. Environnement et algorithmes Variables L’environnement de base contient : Les Une variable : un nom, un type, 1 Algorithme : f ´ “nombres”, operations et fonctions 1 Algorithme : f ´ eventuellement une valeur. ´ Donnees : Un nombre x usuelles, les vecteurs de nombres, les ´ Donnees : Deux nombres x, y ´ La declaration fixe le nom et le type. ´ debut ´ ´ booleens Vrai, Faux, les operations 2 Variables : a, b nombres, Ligne (a), ou localement dans renvoyer x 2 + x; ´ booleennes et,ou, non, les operations ´ ´ test booleen l’algorithme ligne (2). fin algorithme de comparaison. ´ debut ´ Type : nombre ( !), booleen ou vecteur 2 ´ ´ ` Il a ete enrichi, lignes (1) a (2), par la 3 a ← x; de nombres. a Variables : y un nombre ´ definition de l’algorithme f , puis en ligne ... ; ´ ` Une valeur est associee a une b y← 3; ´ (a) par la declaration de y. test ← (a > b) ; 4 variable par une instruction c y ← y + f (5) ; ´ ´ ´ Il a ete modifie par l’affectation de y en ... ; ` d’affectation, ligne (b) est la premiere ligne (b) renvoyer a; fois pour z : on parle d’initialisation. En ligne (c), l’expression y + f (5) est fin algorithme Une affectation n’a pas de valeur ! ´ ´ evaluee dans l’environnement modifie en ´ 5 C’est une instruction qui a un effet (on calculant successivement f (5), y , y + f (5). parle d’effet de bord) de modification a Variables : z, t nombres L’environnement est encore modifie, fin ´ de l’environnement. t ← (z ← 3) n’a de ligne (c). b z ← 3; pas de sens. c z ← z + f (5, 17) ; ` ` Philippe J ANSSEN, Philippe P HAM - BA - NIEN, Nicolas S ABY, Michel LIntroduction a l’algorithmique ´ ´ ECL E RE Jacques S ALLES , Marie-Jose VALERO , Jean-Francois V ILAREM ( IREM — Universite Montpellier 2) ¸ 05/10 5 / 24 ` ` Philippe J ANSSEN, Philippe P HAM - BA - NIEN, Nicolas S ABY, Michel LIntroduction a l’algorithmique ´ ´ ECL E RE Jacques S ALLES , Marie-Jose VALERO , Jean-Francois V ILAREM ( IREM — Universite Montpellier 2) ¸ 05/10 6 / 24 ` Type nombre et problemes en vue ´ Algorithme = specification + corps ´ ´ Specification = Nom + les donnees + Algorithme : SommePairs ´ description du resultat ´ Donnees : Le nombre entier positif n ´ La valeur de x depend de : ´ Resultat : La somme des entiers pairs Variables : x un nombre 1 ´ La valeur des operations + et / : ´ ´ ` inferieurs ou egaux a n x ← (4 + 1)/2 ; polymorphe (comme en maths). Type ` contextuel obtenu a partir du type des arguments. ´ Corps = Declaration des variables ´ fortement type : Z × Z → Z comme Variables : S un entier Variables : x un nombre locales + instructions dont l’une au en Caml ´ debut x ← (4 + 1.)/2 ; moins est renvoyer expression. S ← 0; 2 ´ Mode d’evaluation choisi : pour K de 1 ` n faire a calcul flottant (approximation si ((K mod 2) = 0) alors ´ decimale) ` calcul formel avec systeme de S ← S+K; ´´ reecriture fin si; fin pour; renvoyer S; fin algorithme ` ` Philippe J ANSSEN, Philippe P HAM - BA - NIEN, Nicolas S ABY, Michel LIntroduction a l’algorithmique ´ ´ ECL E RE Jacques S ALLES , Marie-Jose VALERO , Jean-Francois V ILAREM ( IREM — Universite Montpellier 2) ¸ 05/10 7 / 24 ` ` Philippe J ANSSEN, Philippe P HAM - BA - NIEN, Nicolas S ABY, Michel LIntroduction a l’algorithmique ´ ´ ECL E RE Jacques S ALLES , Marie-Jose VALERO , Jean-Francois V ILAREM ( IREM — Universite Montpellier 2) ¸ 05/10 8 / 24
  • 3. ´ Evaluer un appel d’algorithme ` Algebre des expressions L’environnement contient la Variables : X un nombre ´ definition de l’algorithme X ← SommePairs(10); ´ ´ Composition algebrique standard (operations, fonctions, ´ SommePairs et la declaration de X . ´ algorithmes), evaluation classique (dans un environnement). ´ Remplacer la donnee n par Algorithme : SPairs Variables : S,K entiers ´ Donnees : Les nombre entiers positifs a, b l’argument, ici 10, dans le ´ debut ´ corps. Resultat : La somme des entiers pairs compris entre a et b S ← 0; ´ Executer la/les instructions du pour K de 1 ` 10 faire a Variables : X , Y , Z : des nombres corps, avec ou sans si ((K mod 2) = 0) alors X ← 5; Y ← 2 ; modification d’environnement, S ← S+K; § ¤ ` jusqu’a rencontrer l’instruction fin si; renvoyer S ; ¦ ¥ fin pour; Z← SPairs(2 ∗ X , Y + 1) ´ ´ ` L’appel est alors evalue a la § ¤ valeur de S. Cette valeur est renvoyer S; ¦ ¥ ´ ` enfin affectee a X . Les fin algorithme ´ une expression algebrique composant des appels d’algorithmes variables locales sont ´ supprimees de l’environnement courant. ` ` Philippe J ANSSEN, Philippe P HAM - BA - NIEN, Nicolas S ABY, Michel LIntroduction a l’algorithmique ´ ´ ` ` Philippe J ANSSEN, Philippe P HAM - BA - NIEN, Nicolas S ABY, Michel LIntroduction a l’algorithmique ECL E RE Jacques S ALLES , Marie-Jose VALERO , Jean-Francois V ILAREM ( IREM — Universite Montpellier 2) ¸ 05/10 9 / 24 ´ ´ ECL E RE Jacques S ALLES , Marie-Jose VALERO , Jean-Francois V ILAREM ( IREM — Universite Montpellier 2) ¸ 05/10 10 / 24 Composer des algorithmes Composer des algorithmes Autre exemple de composition d’algorithmes. Autre exemple de composition d’algorithmes. Algorithme : estPair Algorithme : Min2 Algorithme : SPairs ´ Donnees : Un entier n ´ Donnees : Deux nombres a, b ´ Donnees : Les nombres entiers positifs a, b ´ ´ Resultat : Le booleen qui teste la ´ Resultat : Le plus petit entre a et b ´ Resultat : La somme des entiers pairs compris entre a et b ´ parite de n Variables : S,K entiers ´ debut Algorithme : Max2 S ← 0; ´ Donnees : Deux nombres a, b pour K de Min2(a,b) ` Max2(a,b) faire a ´ Resultat : Le plus grand entre a et b si (estPair(K)) alors S ← S+K; Algorithme : SPairs fin si; ´ Donnees : Les nombres entiers positifs a, b fin pour; ´ Resultat : La somme des entiers pairs compris entre a et b renvoyer S; fin algorithme ` ` Philippe J ANSSEN, Philippe P HAM - BA - NIEN, Nicolas S ABY, Michel LIntroduction a l’algorithmique ´ ´ ECL E RE Jacques S ALLES , Marie-Jose VALERO , Jean-Francois V ILAREM ( IREM — Universite Montpellier 2) ¸ 05/10 11 / 24 ` ` Philippe J ANSSEN, Philippe P HAM - BA - NIEN, Nicolas S ABY, Michel LIntroduction a l’algorithmique ´ ´ ECL E RE Jacques S ALLES , Marie-Jose VALERO , Jean-Francois V ILAREM ( IREM — Universite Montpellier 2) ¸ 05/10 12 / 24
  • 4. ´ ´ Evaluation d’une sequence, trace ´ ´ Evaluation d’une sequence, trace Variables : S,K entiers 1 ´ debut ´ Evaluation de MultiplierPar4(5) Algorithme : MultiplierPar ´ L’execution de l’affectation en ligne S ← 0; En fin de ligne Val(K) Val(S) § ´ ¤ 2 ´ Donnees : b, n entiers positifs ´ (8), necessite l’evaluation de 3 pour K de 1 ` 4 faire a 1 × × ¦ ¥ ´ Resultat : Le produit b ∗ n l’expression MultiplierPar (4, 5) 4 S ← S+5; 2 × 0 Variables : S,K entiers Donc du corps de l’algorithme 5 fin pour; 3 1 0 1 ´ debut dans lequel on remplace la donnee ´ 6 renvoyer S; 4 1 5 2 S ← 0; ´ n par 5 et la donnee b par 4. 7 fin algorithme 5 2 5 3 pour K de 1 ` b faire a Variables : X nombre 3 2 5 4 S ← S+n; 8 X ← MultiplierPar (4, 5); 4 2 10 5 fin pour; ... ... ... 6 renvoyer S; 4 4 20 7 fin algorithme 5 5 20 Variables : X nombre 3 5 20 8 X ← MultiplierPar (4, 5); 6 × 20 ´ La valeur renvoyee est 20. La valeur ´ ` associee a X est 20. En ligne (8) pas de valeur, pas d’affichage ` ` Philippe J ANSSEN, Philippe P HAM - BA - NIEN, Nicolas S ABY, Michel LIntroduction a l’algorithmique ´ ´ ` ` Philippe J ANSSEN, Philippe P HAM - BA - NIEN, Nicolas S ABY, Michel LIntroduction a l’algorithmique ECL E RE Jacques S ALLES , Marie-Jose VALERO , Jean-Francois V ILAREM ( IREM — Universite Montpellier 2) ¸ 05/10 13 / 24 ´ ´ ECL E RE Jacques S ALLES , Marie-Jose VALERO , Jean-Francois V ILAREM ( IREM — Universite Montpellier 2) ¸ 05/10 14 / 24 ´ Trace d’execution d’un programme ´ Programmes et entrees-sorties ´ Pour tester, faire une trace de nos algorithmes, on utilisera un interpreteur : C AML, X CAS, TI XXX, P YTHON, ... ` Les instructions a effet de bord n’ont pas de valeur, juste un effet sur § ¤ ´ ´ Le fonctionnement de ces interpreteurs est base sur la boucle : l’environnement : Variables X,Y nombres ´ 1 Iterer sans fin 1 A ; B ; 2 Lire une “expression”(E); 2 A := 3; 1 X ← 3; 1 ´ Pas de valeur, rien d’affiche ( !), juste un effet. 3 ´ Evaluer(E); 3 A ; B ; 2 print(X ); 2 Pas de valeur, affiche 3, c’est un effet( !) 4 ´ Afficher(Le resultat); 4 B := 4; 3 read(Y ); 3 ´ Pas de valeur, rien d’affiche ( !), juste un ´ 5 A ; B ; 5 fin iterer ; Y ← (X ← 3); ´ effet : lire une valeur qui sera ensuite affectee 6 B := A + B ; 4 Dans le cas ou l’expression est une ` ` a la variable Y . ¦ ¥ 7 A ; B ; 5 Y ← print(X ) ´ ´ instruction, celle-ci est executee. Mais 4 ´ Erreur dans beaucoup d’interpreteurs. Pas ´ il se peut que l’execution ne renvoie tous ! pas de valeur, qu’elle ait seulement un effet sur l’environnement. C’est le cas 5 Erreur. ´ des affectations et des entrees/sorties. ` ` Philippe J ANSSEN, Philippe P HAM - BA - NIEN, Nicolas S ABY, Michel LIntroduction a l’algorithmique ´ ´ ` ` Philippe J ANSSEN, Philippe P HAM - BA - NIEN, Nicolas S ABY, Michel LIntroduction a l’algorithmique ECL E RE Jacques S ALLES , Marie-Jose VALERO , Jean-Francois V ILAREM ( IREM — Universite Montpellier 2) ¸ 05/10 15 / 24 ´ ´ ECL E RE Jacques S ALLES , Marie-Jose VALERO , Jean-Francois V ILAREM ( IREM — Universite Montpellier 2) ¸ 05/10 16 / 24
  • 5. ´ Entrees-sorties et composition d’algorithmes ´ Entrees-sorties et composition d’algorithmes § ¤ § ¤ ´ ` ´ Vu ce qui precede, remplacer l’expression renvoyee par un algorithme par Composons maintenant : § ¤ § ¤ ` une sortie (une fonction a effet de bord) semble anodin. Ce n’est pas le cas : 1 Max2 ( A , B) := { 1 Max2 ( A , B) := { 1 Max2 ( A , B ) := { 1 Max2 ( A , B) := { 2 l o c a l maxi ; 2 l o c a l maxi ; 2 l o c a l maxi ; 2 l o c a l maxi ; 3 i f ( A>B) then 3 i f ( A>B) then 3 i f ( A>B ) then 3 i f ( A>B) then 4 maxi : = A ; 4 maxi : = A ; 4 maxi : = A ; 4 maxi : = A ; 5 else 5 else 5 else 5 else 6 maxi : = B ; 6 maxi : = B ; 6 maxi : = B ; 6 maxi : = B ; 7 end if 7 end if 7 end if 7 end if 8 return ( maxi ) ; 8 print ( maxi ) ; 9 } 9 } 8 return ( maxi ) ; 8 print ( maxi ) ; 10 Max3 ( A , B ,C) := { 10 Max3 ( A , B ,C) := { 9 } 9 } 10 Max2(7,3) valeur ? afficher ? 10 Max2(7,3) valeur ? afficher ? 11 r e t u r n Max2 ( Max2 ( A , B ) , 11 r e t u r n Max2 ( Max2 ( A , B ) , 11 7 11 7 12 C) ; 12 C) ; 13 } 13 } 12 print(Max2(7,3)) non ambigu 12 X := Max2(7,3) 14 Max3(7,10,3) 14 Max3(7,10,3) ¦ ¥ 14 X 13 7 13 7 ¦ ¥ 15 10 15 ? ? ? ? 1 16 print(Max3(7,10,3)) ¦ ¥ 15 ? ? ? ? 1 ¦ ¥ 17 10 ` ` Philippe J ANSSEN, Philippe P HAM - BA - NIEN, Nicolas S ABY, Michel LIntroduction a l’algorithmique ´ ´ ` ` Philippe J ANSSEN, Philippe P HAM - BA - NIEN, Nicolas S ABY, Michel LIntroduction a l’algorithmique ECL E RE Jacques S ALLES , Marie-Jose VALERO , Jean-Francois V ILAREM ( IREM — Universite Montpellier 2) ¸ 05/10 17 / 24 ´ ´ ECL E RE Jacques S ALLES , Marie-Jose VALERO , Jean-Francois V ILAREM ( IREM — Universite Montpellier 2) ¸ 05/10 18 / 24 Structuration conditionnelle ´ Alternative = sequence de conditionnelles ? § ¤ 1 au cas ou 2 cas ( x = 1 ) : renvoyer 4 ; 1 si Condition alors 3 cas ( ( 1 < x ) e t ( x < 2 ) ) : 2 Instr 1 4 renvoyer 5 ; 3 sinon 5 autre cas : renvoyer 6 ; ¦ ¥ 6 fin cas 4 Instr 2 5 fin si; 6 InstrSuite ; 1 si (x=1) alors 1 si (x=1) alors 2 renvoyer 4; 2 renvoyer 4; 3 sinon 3 fin si; 4 si ((1 < x) et (x < 2)) 4 si ((1 < x) et (x < 2)) alors alors 5 renvoyer 5; 5 renvoyer 5; ´ Semantique “classique”. 6 sinon 6 fin si; 7 renvoyer 6; 7 renvoyer 6; 8 fin si; 9 fin si; ` ` Philippe J ANSSEN, Philippe P HAM - BA - NIEN, Nicolas S ABY, Michel LIntroduction a l’algorithmique ´ ´ ` ` Philippe J ANSSEN, Philippe P HAM - BA - NIEN, Nicolas S ABY, Michel LIntroduction a l’algorithmique ECL E RE Jacques S ALLES , Marie-Jose VALERO , Jean-Francois V ILAREM ( IREM — Universite Montpellier 2) ¸ 05/10 19 / 24 ´ ´ ECL E RE Jacques S ALLES , Marie-Jose VALERO , Jean-Francois V ILAREM ( IREM — Universite Montpellier 2) ¸ 05/10 20 / 24
  • 6. ´ Sequence de conditionnelles avec effet de bord ´ ` Iteration pour : quelques regles 1 pour K de E1 ` E2 faire a K variable de type entier 2 Inst ; ´ ´ declaree, 1 x ← 1; 1 x ← 1; 3 fin pour; E1, E2 sont des expressions 2 si (x < 3) alors 2 si (x < 3) alors 4 InstSuite ; ` ` a valeurs entieres, 3 x ← x + 10 ; 3 x ← x + 10 ; On s’interdit de modifier la 4 sinon 4 fin si; variable K dans le corps 5 x ← x - 10 ; 5 si (x >= 3) alors ´ ´ ` (a) E1,E2 evaluees, une fois pour toutes a V1,V2, 6 fin si; 6 x ← x - 10 ; ´ ´ (b) K ← V1 est executee. 7 renvoyer x; 7 fin si; 8 renvoyer x; ´ ˆ ` (c) Soit VK la valeur de K Si VK > V2 l’iteration s’arrete, et on passe a la ligne 4. ´ (i) Executer Inst; ´ (ii) Executer K ← K + 1 (en ligne 3) ` ´ (iii) Recommencer a l’etape (c) ` ` Philippe J ANSSEN, Philippe P HAM - BA - NIEN, Nicolas S ABY, Michel LIntroduction a l’algorithmique ´ ´ ` ` Philippe J ANSSEN, Philippe P HAM - BA - NIEN, Nicolas S ABY, Michel LIntroduction a l’algorithmique ECL E RE Jacques S ALLES , Marie-Jose VALERO , Jean-Francois V ILAREM ( IREM — Universite Montpellier 2) ¸ 05/10 21 / 24 ´ ´ ECL E RE Jacques S ALLES , Marie-Jose VALERO , Jean-Francois V ILAREM ( IREM — Universite Montpellier 2) ¸ 05/10 22 / 24 ´ Iteration tant que, exemple, preuve ´ Iteration tant que, exemple, preuve ´ Evaluation de Russe(5, 13) Algorithme : Russe 1 tant que Cond faire ´ Semantique classique, Inst ´ Donnees : a,b deux entiers strictement positifs I RI AI BI doit modifier Cond. ´ ´ Resultat : a*b par additions, test de parite et 0 0 5 13 2 Inst ; On autorise renvoyer ...; divisions par 2 1 5 10 6 3 fin tq; ´ dans Inst (simplicite). Variables : A,B,R entier 2 5 20 3 1 ´ debut 3 25 40 1 ´ On simule une iteration pour A ← a; B ← b; R ← 0 ; 2 4 65 80 0 3 tant que ( B = 0 ) faire Terminaison : (BI ) suite 0, 1 pour K de 1 ` n faire a 1 K ← 1; 1 4 si ( estImpair(B) ) alors 2 Instr ; 2 tant que K n faire ´ decroissante strict de I. 5 R ← R + A; B ← B - 1 ; 3 fin pour; 3 Inst; 6 fin si; 2 Invariant : 4 InstSuite ; 4 K ← K+1; 7 B ← B / 2; A ← A + A ; ∀I 0 : RI + AI ∗ BI = a ∗ b 5 fin tq; 8 fin tq; 3 Preuve : Terminaison, donc 6 InstrSuite ; 9 renvoyer R; B = 0 faux et invariant 10 fin algorithme R + A ∗ B = a ∗ b. ` ` Philippe J ANSSEN, Philippe P HAM - BA - NIEN, Nicolas S ABY, Michel LIntroduction a l’algorithmique ´ ´ ECL E RE Jacques S ALLES , Marie-Jose VALERO , Jean-Francois V ILAREM ( IREM — Universite Montpellier 2) ¸ 05/10 23 / 24 ` ` Philippe J ANSSEN, Philippe P HAM - BA - NIEN, Nicolas S ABY, Michel LIntroduction a l’algorithmique ´ ´ ECL E RE Jacques S ALLES , Marie-Jose VALERO , Jean-Francois V ILAREM ( IREM — Universite Montpellier 2) ¸ 05/10 24 / 24