Page 1 Outils pour l`algorithmique #)`$ * ) $# ! $` ) " ) %`$ ` "" ) $# L

publicité
#)'$*) $#!$' )")%'$'"") $#
L’objectif de ce complément est de :
– découvrir ou revoir ce qu’est un algorithme, sa structure de base et ses instructions fondamentales ;
– mettre en œuvre quelques algorithmes à l'aide d'une machine (la calculatrice ou l’ordinateur) ;
– d’effectuer de la programmation.
0 # ) $#)'%'0(#)) $#.*#!$' )"
D É F I N I T I O N
Représentation d’un algorithme
à l’aide d’un organigramme :
Début
E X E M P L E S
Des algorithmes dans notre quotidien
Des algorithmes déjà connus
a. Déterminer
graphiquement
l’image d’un nombre par une fonction dont la courbe est connue.
b. Tracer un triangle équilatéral
dont la longueur du côté est
donnée.
c. Déterminer si un triangle dont
on connaît la longueur des côtés
c. Une recette de cuisine est un algorithme est rectangle.
avec ses données (les ingrédients), ses d. Algorithme d’Euclide.
instructions (les différentes étapes de la e. Crible d’Eratosthène.
confection) et sa sortie (le plat à déguster).
f. Calculer la moyenne d’une série
d. Indiquer son chemin à quelqu’un.
statistique.
a. Nouer ses lacets.
b. Envoyer un mail :
Allumer l’ordinateur.
Ouvrir son client de messagerie électronique.
Rédiger un nouveau message.
Sélectionner les destinataires.
Ajouter (éventuellement) une pièce jointe.
Envoyer.
Pour constater qu’il s’agit bien d’un algorithme, on doit vérifier que, pour parvenir
au résultat recherché, on a bien une méthode constituée d’un nombre fini
d’instructions et d’étapes, ne requérant qu’un nombre fini de données.
R E P R É S E N TAT I O N
Pour représenter de façon commune les algorithmes, on utilise deux méthodes :
un organigramme, réservé aux algorithmes les plus simples (voir la fiche sur le
logiciel LARP, page 390) ;
le pseudo-code, qui ressemble à un vrai langage de programmation dans lequel
on aurait retiré les problèmes de syntaxe (grammaire) et que l’on peut écrire dans la
langue de son choix. Cette façon de présenter les algorithmes présente l’avantage
d’être très structurée, facilement traduisible dans n’importe quel langage de
programmation.
À ce stade, l’algorithme n’est pas destiné à être interprété directement par un
ordinateur.
Outils pour l’algorithmique
Les algorithmes ne sont pas en lien direct avec l’informatique. Leur but est de fournir
une solution (réponse) à un problème posé. Leur particularité est d’être constitués
d’un nombre fini d’instructions simples, appelées instructions élémentaires, qu’il
est parfois nécessaire de répéter un certain nombre (parfois très grand) de fois.
Le principe est simple mais la tâche peut s’avérer laborieuse. C’est là qu’intervient
la nécessité d’utiliser l’ordinateur, capable d’exécuter des instructions très simples
autant de fois que nécessaire.
Il reste néanmoins le problème de la communication : une fois l’algorithme
construit, une étape importante est de « l’expliquer » à l’ordinateur.
Un algorithme est une suite finie de règles que l’on applique dans un ordre
déterminé, à un nombre fini de données pour arriver à un certain résultat, en
un nombre fini d’étapes.
Cette définition donne un sens au mot algorithme qui dépasse largement le
cadre des mathématiques et de l’informatique. En effet, on peut constater que de
nombreux algorithmes émaillent notre vie quotidienne. En mathématiques, on
utilise déjà des algorithmes sans en avoir conscience.
'$'"") $#)! #+!. #$'") &*
ÉCRIRE "Entrer la première note"
LIRE N
Cette communication se fait à l’aide de divers langages de programmation. Tous
ces langages ont leur propre sémantique (vocabulaire) et leur propre syntaxe
(grammaire), mais reposent sur les bases fondamentales de l’algorithmique, les
instructions élémentaires suivantes :
la lecture ou l’écriture ;
l’affectation de variables ;
les tests ;
les boucles.
Voir les fiches logiciel,
pages 386 à 391.
Voir la fiche calculatrices,
page 398.
E X E M P L E S
L’algorithme présenté sous forme d’organigramme et de pseudo-code au
paragraphe , qui a pour but de calculer la moyenne de deux notes données,
est décrit ci-dessous dans divers langages de programmation s’appliquant sur
calculatrices ou sur ordinateurs.
Ca si o
TI
XC AS
L a n ga ge P yt h o n
S C R ATC H
L a n gag e C
ÉCRIRE "Entrer la seconde note"
LIRE M
ÉCRIRE "La moyenne est :
",(M+N)/2
FIN
Représentation d’un algorithme
à l’aide du pseudo-code :
Début
Écrire "Entrer la première
note"
Lire N
Écrire "Entrer la seconde
note"
Lire M
Écrire "La moyenne est :
",(M+N)/2
Fin
Outils pour l’algorithmique
0$"%$('# #()'*) $#(0!0"#) '(
( #()'*) $#(0!0"#) '(
Avant de pouvoir écrire un algorithme, il faut réussir à décomposer la résolution du problème
posé en instructions élémentaires.
On peut ranger des instructions très diverses en quatre grandes familles :
entrée/sortie : elles permettent d’entrer une donnée ou d’afficher un résultat ;
les affectations de variables : elles modifient la valeur d’un nombre, la forme d’un objet ;
les instructions conditionnelles : elles permettent de tester et de proposer des choix ;
les boucles : elles permettent de répéter des instructions.
4 Tant que la chasse continue, on fait avancer les animaux d’un saut, puis on regarde :
a. si la grenouille est à plus de 10 cm derrière la sauterelle, alors les 2 animaux refont un saut ;
b. sinon la chasse est finie.
5 a. Si la grenouille est à moins de 10 cm derrière la sauterelle, alors elle mange la sauterelle.
b. Si la grenouille a dépassé la sauterelle, alors la sauterelle s’est échappée.
6 Penser à donner la réponse à la question posée.
0 # ) $#(
#!-()'$ (!$' )"(
Lire les deux entiers a et b
Calculer le reste r de la division
euclidienne de a par b
TANT QUE r est différent de 0
– Remplacer a par b
– Remplacer b par r
– Remplacer r par le reste de la
division euclidienne de a par b
Afficher la valeur de b
3 On crée également une variable qui contient la valeur 1 tant que la chasse continue et
la valeur 0 lorsque celle-ci doit s’arrêter.
Lire le nombre n
Écrire tous les entiers entre 2 et n
Pour chacun de ces entiers, en
commençant par 2 :
– Si il n’est pas rayé
Alors rayer tous ses multiples
sauf lui-même
Écrire la liste des entiers non
rayés
Lire le nombre de données N
Lire toutes les données
Calculer la somme des données
Diviser cette somme par N
Afficher le résultat.
2 Reproduire les algorithmes 1, 2 et 3, puis souligner à l’aide de couleurs différentes, les quatre grandes familles d’instructions :
a. entrée/sortie : en rouge ;
b. affectation de variables : en bleu ;
c. instruction conditionnelle : en vert ;
d. boucle : en noir.
En
s’inspirant
des
décompositions
en
instructions
élémentaires
réalisées en 2 et en utilisant les familles
3
d’instructions vues au paragraphe , écrire un algorithme pour chacun des problèmes mathématiques suivant :
a. On connaît la courbe représentative d’une fonction f. On cherche à déterminer l’image d’un réel x par f.
b. On dispose d’une règle graduée et d’un compas. On cherche à construire un triangle équilatéral dont le côté mesure c.
c. On cherche à déterminer si un triangle dont les côtés mesurent respectivement a, b et c est rectangle.
(*)'!!)!'#$* !!
Une grenouille distraite chasse une sauterelle. La grenouille et la sauterelle se déplacent en ligne droite
en faisant des bonds simultanés mesurant respectivement 40 cm et 24 cm. Cette grenouille est capable
d’attraper avec sa langue tout insecte situé à moins de 10 cm devant elle, mais elle
est fort distraite et si elle dépasse la sauterelle, elle oublie son objectif. Ce jour-là, la
grenouille aperçoit la sauterelle à une certaine distance d comprise entre 2 m et 5 m. La
course s’engage. On souhaite écrire un algorithme qui, lorsqu’on lui donne la distance
initiale d répond à la question « la sauterelle réussira-t-elle à échapper à la grenouille ? »
Pour chacun des items ci-après, écrire la (ou les) instruction(s) élémentaire(s) correspondante(s).
1 Il faut demander au début l’avance de la sauterelle sur la grenouille.
Outils pour l’algorithmique
On constate généralement
trois (ou quatre) façons de
noter l’affectation d’une
valeur (par exemple 3) à une
variable (par exemple v) :
v:=3
ou v ! 3 ou v = 3
(dans les calculatrices,
on voit souvent : 3 " v ).
Affecter une valeur à une variable consiste à « ranger » cette valeur (ou cet
objet) dans la variable considérée. Toute nouvelle affectation remplace (et détruit)
la précédente.
Pour suivre l’évolution du contenu des variables d’un algorithme, on dresse
généralement un « tableau de suivi » dans lequel on indique le contenu de chaque
variable à chacune des étapes de l’algorithme :
Variable :
a, b, c : réel ;
Début
1 a=0;
2 b=2;
3 c=-7;
4 a=b+2;
5 b=b-4;
6 c=b+2;
Fin
a
b
c
À l’étape 4 , on a :
1
0
/
/
a
2
0
2
/
3
0
2
-7
4
4
2
-7
5
4
-2
-7
6
4
-2
0
=
b
+
2
2
2
2
+
2
4
a
=
4
%$ #)!*!)' TI
Cas i o
4 b. Ne pas oublier
d’actualiser la variable
permettant de savoir
si la chasse est finie,
sinon la boucle du 4
n’aura pas de fin.
Notation
Une variable est désignée par son nom (que le créateur de l’algorithme choisit) et
contient un objet (nombre, texte, tableau…) souvent appelé valeur de la variable.
1 Tester chacun des algorithmes ci-dessus, puis expliquer leur but.
Activité
Coup de pouce
)'*#+' !
) + )0(
Activité
2 Ensuite, on va placer dans des variables la position de la grenouille et celle de la sauterelle.
La séquence de touches :
P
permet d’affecter la valeur 2 à la variable P :
La séquence de touches :
P
permet d’affecter la valeur 2 à la variable P :
Sur les deux calculatrices, on constate que la valeur 2 a bien été « retenue » puisque le calcul de 3 # P donne bien 6.
Cependant les calculatrices Casio et Texas Instrument ne permettent pas d’affecter un texte à une variable. L’activité 2
du paragraphe , page 12, n’est donc pas possible avec ces calculatrices.
Outils pour l’algorithmique
Téléchargement