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