L`objectif de ces quelques pages est simplement de commencer à

publicité
L’objectif de ces quelques pages est simplement de commencer à réfléchir sur ce qu’est un
algorithme, sans aucun formalisme au niveau de la rédaction. On dira que les algorithmes sont
écrits en langage courant. La seule exigence est que les instructions permettent au lecteur de
faire tourner l’algorithme "à la main" sans difficultés. Une première étape de formalisation
interviendra en écrivant les algorithmes en pseudo code puis une troisième en les traduisant
dans divers langages de programmation.
Des algorithmes en langage courant
Voici 10 algorithmes issus de problèmes que nos élèves pourront rencontrer entre la classe de
troisième et celle de terminale.
1. programme de calcul (1)
-
2. programme de calcul (2)
choisir un nombre réel,
L’élever au carré,
Retrancher 4,
Multiplier par 2,
Afficher le résultat final.
-
choisir un nombre réel,
Prendre son opposé,
ajouter 4,
élever au carré,
retrancher 3,
Afficher le résultat final.
3. programme de calcul (3)
-
x 0,
Calculer x 2 ,
Retrancher 3x ,
Ajouter 2,
Afficher la valeur de x et le résultat obtenu dans un tableau,
Si x  10 , l’algorithme est terminé,
Sinon, ajouter 1 à x, et recommencer depuis à la deuxième ligne.
4. Milieu d’un segment
-
Entrer les coordonnées d’un point A,
Entrer les coordonnées d’un point B,
Calculer la demi somme des abscisses de A et B,
Calculer la demi somme des ordonnées de A et B,
Afficher les résultats obtenus.
Stage Algorithmique- LFLNI-18 au 20 octobre 2010
1/8
5. PGCD : Algorithme d’Euclide
-
Choisir deux entiers naturels a et b tels que a  b ,
Effectuer la division euclidienne de a par b,
Si le reste est nul, b est le PGCD,
Sinon, remplacer a par b et b par le reste,
Recommencer jusqu’à ce que le reste devienne nul,
Le PGCD est le dernier reste non nul.
6. PGCD : Algorithme des soustractions
-
Choisir deux entiers naturels a et b tels que a  b ,
Effectuer la soustraction a  b ,
Si a  b  0 alors PGCD  a, b   a  b , l’algorithme est terminé,
Sinon, remplacer a par le plus grand des deux nombres b et a  b et b par le plus petit,
Recommencer à partir de la deuxième ligne.
7. Tri simple
L’objectif est de déterminer le plus grand nombre parmi trois réels deux à deux distincts.
-
Choisir trois nombres réels a, b et c deux à deux distincts,
Si a  b et si a  c , s prend la valeur a,
Si a  b et si a  c , s prend la valeur c,
Si b  a et b  c , s prend la valeur b,
Si b  a et c  b , s prend la valeur c,
Afficher s
Remarque : cet algorithme qui devra être amélioré servira pour de nombreux problèmes
relatifs aux triangles mais nous verrons qu’il est déjà présent par l’intermédiaire des
fonctions max et min dans la plupart des langages de programmation.
Stage Algorithmique- LFLNI-18 au 20 octobre 2010
2/8
8. Dichotomie
On suppose qu’on dispose d’une fonction f continue et strictement croissante sur un
intervalle  a; b et qui s’annule entre a et b. L’objectif est de trouver un encadrement
d’amplitude maximale e (donnée) de la racine.
-
ab
.
2
Si f  a   f  c   0 , remplacer b par c.
Sinon, remplacer a par c.
Tant que b  a  e , recommencer au début.
Afficher les valeurs finales de a et b.
Calculer c 
9. Approximation de la courbe d’une fonction par la méthode d’Euler
Lorsqu‘on connaît la dérivée f ' d’une fonction f sur un intervalle I de
et une valeur
particulière de f (condition initiale : f  x0   y0 , où x0 et y0 sont des réels donnés,
x0  I ), on ne peut pas toujours en déduire explicitement une expression de f.
La méthode d’Euler permet toutefois de construire une approximation de la courbe
représentative de la fonction f cherchée, à l’aide d’approximations affines locales.
Voici un exemple d’algorithme :
-
Placer le point M0  x0 ; y0  ,
Choisir un pas h,
Construire le point de coordonnées: x1  x0  h et y1  y0  hf '  x0  ,
-
Remplacer x0 par la valeur de x1 et y0 par la valeur de y1 ,
Recommencer autant de fois que l’on veut de points
10. Simulation d’un jeu de dé
On veut lancer un dé un certain nombre de fois et compter le nombre d’apparition de
chaque face. Faire tourner l’algorithme à la main signifie aussi qu’on lance un vrai dé.
-
Choisir le nombre de lancer, soit n ce nombre,
Lancer le dé n fois et compter le nombre d’apparition de chaque
face,
Stage Algorithmique- LFLNI-18 au 20 octobre 2010
3/8
Du langage courant au pseudo code
Ecrire un algorithme en pseudo code, c’est le présenter sous une forme plus proche des
langages de programmation mais sans les exigences de syntaxe de ces derniers.
Il n’existe donc pas de langage "pseudo code" à proprement parler, mais nous allons essayer à
travers les exemples suivants de respecter les principes suivants :
- toutes les variables seront déclarées, même si elles ne sont que des variables
auxiliaires,
- les algorithmes seront divisés en quatre parties : la déclaration des variables, les
entrées, le traitement puis les sorties. On ajoutera toutefois l’initialisation si l’on utilise
des boucles.
- Pour affecter une valeur à une variable, c’est la flèche "  " qui est utilisée ici (dans
certains manuels on trouve b  a à la place de a  b ; mais il va de soi que cela
signifie la même chose, à savoir "b prend la valeur a"…).
Remarque : nous n’utiliserons ici que des variables numériques mais il existe bien des
possibilités…
1. programme de calcul (1)
-
-
Variable : a nombre
Entrée :
saisir a
Traitement :
2   a2  4  a
ou
-
Sortie :
Afficher a
-
Variable : a nombre
Entrée :
saisir a
Traitement :
a2  a
a4a
2 a  a
Sortie :
Afficher a
2. programme de calcul (2)
-
Variable : a nombre
Entrée :
saisir a
Traitement :
2
4  a  3  a
Sortie :
Afficher a
Stage Algorithmique- LFLNI-18 au 20 octobre 2010
ou
-
-
Variables : a, b, c, d nombres
Entrée :
saisir a
Traitement :
4a b
b2  c
c 3  d
Sortie :
Afficher d
4/8
3. programme de calcul (3)
-
-
Variables : x, y nombres
Entrées : pas d’entrée ici
Traitement :
Pour x allant de 0 à 10 par pas de 1 faire
x 2  3x  2  y
Ecrire x et y dans la i ième ligne du tableau
Fin Pour
Sorties : (les sorties sont faites au fur et à mesure que la
boucle s’effectue)
4. Milieu d’un segment
-
-
Il existe un très grand
nombre de variantes
pour ce type de
problème…
Attention : on ne
demande pas
nécessairement de
construire le tableau
mais de faire afficher
les résultats sous
forme d’une ligne par
valeur de x
Variables : xa, ya, xb, yb, xi, yi nombres
Entrées :
saisir l’abscisse de A : xa
saisir l’ordonnée de A : ya
saisir l’abscisse de B : xb
saisir l’ordonnée de B : yb
Traitement :
 xa  xb  / 2  xi
 ya  yb / 2  yi
-
Sorties :
Afficher xi, yi
5. PGCD : Algorithme d’Euclide
-
-
Variables : a, b, r nombres
Entrées :
saisir a, b
Initialisation
br
Traitement :
Tant que r  0 faire
mod  a, b   r
ba
r b
Fin Tant Que
Sortie :
Afficher a
Stage Algorithmique- LFLNI-18 au 20 octobre 2010
L’instruction mod retourne le
reste dans la division
euclidienne. Elle existe sous
cette forme où une autre dans
la plupart des langages mais
elle peut être remplacée en
utilisant la partie entière du
quotient a/b puis une
soustraction…
5/8
6. PGCD : Algorithme des soustractions
-
Variables : a, b, d nombres
Entrées :
saisir a, b
Initialisation
a b  d
Traitement :
Tant que d  0 faire
a b  d
Si d  b Alors
d a
Sinon
ba
d b
-
FinSi
Fin Tant Que
Sortie :
Afficher a
7. Tri simple
-
-
Variables : a, b, c, s nombres
Entrée :
saisir a, b, c
Traitement :
Si a  b
Si a  c
Alors a  s
Sinon
c s
FinSi
Sinon
Si b  c
Alors b  s
Sinon
c s
Finsi
Finsi
Sortie :
Afficher "le plus grand est ", s
Stage Algorithmique- LFLNI-18 au 20 octobre 2010
6/8
8. Dichotomie
On suppose qu’on utilise une fonction f connue. Suivant le langage de programmation
utilisé, nous verrons que la fonction peut être définie indépendamment de l’algorithme
Cela est particulièrement pratique car il n’est pas nécessaire de changer le programme si
l’on change de fonction…
-
Variables : a, b, c, e nombres
Entrées :
Saisir a, b,e
Traitement :
Tant Que b  a  e faire
 a  b / 2  c
Si f  a   f  c   0
Alors c  b
Sinon c  a
-
De nombreuses versions de cet
algorithme
peuvent
être
réalisées, avec notamment un
contrôle de la cohérence des
valeurs de départ de a et b ou
un compteur du nombre de
boucles…
Finsi
FinTant Que
Sorties :
Afficher a, b
9. Approximation de la courbe d’une fonction par la méthode d’Euler
-
-
Variables : x, y, n, h, i nombres
Entrées :
saisir x, y, n, h
Initialisation
1i
Traitement :
Tant que i  n faire
Ecrire x et y dans la i ième ligne du tableau
y  h  f ' x  y
xh x
1 i  i
Fin Tant Que
Sortie : (les sorties sont faites au fur et à mesure que la
boucle s’effectue)
Stage Algorithmique- LFLNI-18 au 20 octobre 2010
7/8
10. Simulation d’un jeu de dé
-
Variables : a, b, c, d, e, f, n, i, r nombres
Entrées :
saisir n (nombre de lancers)
Initialisation :
a, b, c, d, e, f, i prennent la valeur 0
Traitement :
Tant Que i  n faire
 Int  6×Rand 
-
 +1   r
si r  1 , alors
1 a  a
Sinon
Si r  2 , alors
1 b  b
Sinon
Si r  3 , alors
1 c  c
Sinon
Si r  4 , alors
1 d  d
Sinon
Si r  5 , alors
1 e  e
Sinon 1  f  f
Finsi
Finsi
Finsi
Finsi
Finsi
1 i  i
Fin Tant Que
Sorties :
Afficher a, b, c, d, e, f
Stage Algorithmique- LFLNI-18 au 20 octobre 2010
8/8
Téléchargement