Lyc´ee Benjamin Franklin PTSI−2012-2013
D. Blotti`ere Algorithmique
TD n˚1 Introduction
1. Qu’est-ce que l’algorithmique ?
L’articleAlgorithmiquede l’Encyclopædia Universalis d´ebute comme suit.
L’objet de l’algorithmique est la conception, l’´evaluation et l’opti- misation des m´ethodes de calcul en math´ematiques et en informa- tique. Un algorithme consiste en la sp´ecification d’un sch´ema de calcul, sous forme d’une suite d’op´erations ´el´ementaires ob´eissant
`
a un enchaˆınement d´etermin´e.
En math´ematiques, on peut par exemple s’int´eresser `a des algorithmes r´epondant aux probl`emes suivants.
– Calculer ungrand nombre de d´ecimales de nombres tels queπoue.
– R´esoudre un syst`eme lin´eaires d’´equations (e.g. algorithme du pivot de Gauß).
– ´Etant donn´ee une fonctionf d´efinie sur un intervalleI, telle que l’´equationf(x) = 0 admette une unique solutionαdansI, d´eterminer une valeur approch´ee (avec une pr´ecision fix´ee `a l’avance) deα(cf. m´ethode de dichotomie).
– Calculer une valeur approch´ee d’une int´egrale (cf. m´ethode des rectangles, m´ethode des trap`ezes).
2. Un premier exemple d’algorithme
(a) ´Enonc´e du probl`eme `a r´esoudre
On se propose de construire un algorithme, sans utiliser la fonction racine carr´ee, qui ´etant donn´e un entier naturel nfix´e, affiche 1 sinest le carr´e d’un entier naturel et 0 sinon.
(b) Analyse du probl`eme
Dans un premier temps, on peut penser `a calculer les carr´es de tous les entiers naturels : 02= 0, 12= 1, 22= 4, 32= 9, 42= 16, 52= 25, 62= 36, 72= 49, . . .
puis `a regarder si l’entier n donn´e au d´epart apparaˆıt dans cette liste. Le probl`eme de cette approche quelque peu na¨ıve est que la liste des carr´es est infinie, or un algorithme doit s’arrˆeter apr`es un nombre fini de calculs.
Pour corriger ce d´efaut, on observe quenest le carr´e d’un entier si et seulement s’il apparaˆıt dans la liste des carr´es des entiers naturelsktels quek2≤n. Le nombre d’entiers naturelsktels quek2≤n´etant fini, on a bien r´esolu le probl`eme soulev´e pr´ec´edemment.
Voici donc comment on peut proc´eder.
1. On calcule la liste desk2, o`uk est un entier naturel tel quek2≤n(nombre fini de calculs).
2. On regarde si l’entier napparaˆıt dans la liste pr´ec´edente : si c’est le cas, alors on affiche 1, sinon on affiche 0.
(c) Un algorithme r´epondant au probl`eme pos´e, bas´e sur l’analyse pr´ec´edente On commence par dresser la liste des variables qui seront utiles :
– variablesi, j,nbeltcontenant un entier ; – variableres contenant un bool´een ; – variableL contenant une liste.
1
On donne alors un algorithme ´ecrit en m´etalangage (langage `a mi-chemin entre le fran¸cais et un langage de programmation).
Algorithme 1 1 i←0
2 res←0 3 L←liste vide 4
5 Tant que (i2≤n) Faire
6 L←(L augment´ee de l’´el´ementi2 plac´e en bout de liste)
7 i←i+ 1
8 Fin du Faire 9
10 nbelt←nombre d’´el´ements de la listeL 11 j←1
12
13 Tant que ((j ≤nbelt)et(res= 0)) Faire
14 Si lej-i`eme ´el´ement de listeLest ´egal `a nalors
15 res←1
16 Fin du Si
17 j←j+ 1
18 Fin du Faire 19
20 Afficher(res)
Question 1 :Commenter ligne `a ligne l’algorithme 1 et le critiquer.
(d) Impl´ementation de l’algorithme pr´ec´edent en Maple
A titre d’exemple, on traduit ci-dessous l’algorithme 1 en Maple.` Programme 1 1 i :=0 :
2 res :=0 : 3 L :=[ ] : 4
5 while (i**2<= n) do 6 L := [op(L),i**2] :
7 i :=i+1 :
8 od : 9
10 nbelt :=nops(L) : 11 j :=1 :
12
13 while ((j<= nbelt) and (res=0)) do
14 if (L[j]=n) then
15 res :=1 :
16 end if :
17 j :=j+1 :
18 od : 19
20 print(res) :
Question 2 :Comparer ligne `a ligne le programme 1 et l’algorithme 1.
2
3. Exercices
Exercice 1
Soienti, j deux variables contenant chacune un entier. On consid`ere l’algorithme suivant.
Algorithme 2 1 i←2 2 j←1 3 i←2∗i−j 4 i←2∗i−j 5 i←j 6 j←i
Donner ligne `a ligne les valeurs des variablesietj.
Exercice 2
Soienta,b deux variables contenant des valeurs enti`eres que l’on ne connaˆıt pas.
Ecrire un algorithme qui ´´ echange les valeurs contenues dansaetb.
Exercice 3
Soientx,y deux variables contenant chacune un nombre r´eel.
Ecrire un algorithme qui affiche 1 si le produit des deux valeurs contenues dans´ xety est positif et 0 sinon.
Exercice 4
On introduit des variables :
– variablei contenant un entier ; – variableres contenant un bool´een ; et on consid`ere l’algorithme suivant.
Algorithme 3 1 i←0
2 res←0 3
4 Tant que (i2≤n) Faire 5 Si (i2=n) alors
6 res←1
7 Fin du Si
8 i←i+ 1
9 Fin du Faire 10
11 Afficher(res)
1. Que fait cet algorithme ?
2. Comparer les algorithmes 1 et 3 (nombres de variables, tailles des variables, temps d’ex´ecution, . . . ).
3