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

PDF
Emploi p23emesemaine05 12-11classes
KEY
Science Des Réseaux
PDF
La parole aux moustiques
PDF
ShareConf 2013 - Implementierung von Hybridumgebungen mit SharePoint 2013 und...
ODP
Diferencias entre slideshare slideboom y authorstream
PPT
Evi kai lina ppt
DOC
1 reglamento sistema estatal becas, créditos y estímulos educativos
DOC
Kazan Gerbang Islam di Rusia
Emploi p23emesemaine05 12-11classes
Science Des Réseaux
La parole aux moustiques
ShareConf 2013 - Implementierung von Hybridumgebungen mit SharePoint 2013 und...
Diferencias entre slideshare slideboom y authorstream
Evi kai lina ppt
1 reglamento sistema estatal becas, créditos y estímulos educativos
Kazan Gerbang Islam di Rusia

En vedette (18)

PPT
Apfel
PDF
Cartes final
PPT
Liberalisme i nacionalisme
PPTX
Principito
PPS
Beethoven et la_lune
PDF
GIBT ES EINE WAHRE RELIGION?
PPT
Presentation De CVFax
PPTX
CBS Y LAS TABACALERAS
PPS
Buen día de trabajo
PDF
Freifunk für Helgoland
PDF
Seenovation Elektromobilität workshop, energievisionen 2014
PDF
FIFA Fussball-Weltmeisterschaft 2014
PPT
I xe
PPTX
Conceptos de datos e información
PPT
Synchro données instances
PPTX
Quel Web pour 2016 ? - Patatalk 2013
PPTX
Autoestima - Valores - Contravalores
PDF
Clinique
Apfel
Cartes final
Liberalisme i nacionalisme
Principito
Beethoven et la_lune
GIBT ES EINE WAHRE RELIGION?
Presentation De CVFax
CBS Y LAS TABACALERAS
Buen día de trabajo
Freifunk für Helgoland
Seenovation Elektromobilität workshop, energievisionen 2014
FIFA Fussball-Weltmeisterschaft 2014
I xe
Conceptos de datos e información
Synchro données instances
Quel Web pour 2016 ? - Patatalk 2013
Autoestima - Valores - Contravalores
Clinique
Publicité

Similaire à Presentation algo-irem-2x2 (20)

PDF
Emploi p23emesemaine05 12-11classes
DOCX
Activité n°2 chap2
KEY
Introduction rapide à 'objet et à UML
PDF
Conception de base_de_l_algorithme
PDF
Algorithme
PDF
éNoncés+corrections bac2008
PDF
Logique 1 Logiciel Controle De Gestion
PDF
Rreo 0512
PDF
éNoncés+corrections bac2009
PDF
Algorithme
PDF
Paper Bagarani Bonetti Aispe 2006
PDF
Paper bagarani bonetti aispe 2006
PPTX
Algorithmique et Programmation I - Lilia Ayadi.pptx
PDF
Ch7 algorithmes NP-Copmlétude
PDF
Coursalgorithmique
PDF
Algorithmique et Programmation I - Lilia Ayadi.pdf
KEY
Introduction à Uml
PDF
LMO08b.ppt
PDF
F Lopez Thales SQOP09 AFEIT
PDF
Ondas Radio
Emploi p23emesemaine05 12-11classes
Activité n°2 chap2
Introduction rapide à 'objet et à UML
Conception de base_de_l_algorithme
Algorithme
éNoncés+corrections bac2008
Logique 1 Logiciel Controle De Gestion
Rreo 0512
éNoncés+corrections bac2009
Algorithme
Paper Bagarani Bonetti Aispe 2006
Paper bagarani bonetti aispe 2006
Algorithmique et Programmation I - Lilia Ayadi.pptx
Ch7 algorithmes NP-Copmlétude
Coursalgorithmique
Algorithmique et Programmation I - Lilia Ayadi.pdf
Introduction à Uml
LMO08b.ppt
F Lopez Thales SQOP09 AFEIT
Ondas Radio
Publicité

Plus de Wael Ismail (20)

DOCX
Dc23 si
DOCX
Dc13 si
DOCX
DOCX
Dc23 si
DOCX
DOCX
DOCX
Devoir de synthèse N°1
DOCX
Devoir de contrôle N°1 Système et réseaux 2011-2012
DOCX
devoir de contrôle N° 1 TIC 2011-2012
PDF
Ch5 base de données
PDF
Ch4 internet
PDF
Ch3 eléments de présentation
PDF
Ch2 tableur
PDF
Ch1 traitement de texte
PPTX
Les algorithmes d’approximation
PDF
Presentation algo-irem-2x2 (1)
PDF
Les structures en c++
PDF
Les structures en c++ (1)
PDF
PDF
Jmc habile
Dc23 si
Dc13 si
Dc23 si
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 TIC 2011-2012
Ch5 base de données
Ch4 internet
Ch3 eléments de présentation
Ch2 tableur
Ch1 traitement de texte
Les algorithmes d’approximation
Presentation algo-irem-2x2 (1)
Les structures en c++
Les structures en c++ (1)
Jmc habile

Presentation algo-irem-2x2

  • 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