Texte_3

publicité
Algorithmique
Quelques senarii pédagogiques
1
Université d'été de Saint-Flour 2009
Dans haque partie, nous proéderons en trois étapes :
1. Pour approher
2. Pour développer la démarhe algorithmique
3. Pour évaluer
Analyse de données
Quelles sont les instrutions algorithmiques mises en plae ?
On introduit ii l'instrution
1 Marie-Christine
Pour ... Variant de ... à .... Faire
Obert - Bernard Chrétien - Olivier Wantiez - Jean-Mar Duquesnoy
I
Approhe de l'algorithmique
Leture d'un algorithme
On onsidère une liste de nombres L.
Voii un algorithme.
Algorithm
Min et Max
Variable
m: nombre réel
L: liste de nombres réels
n: nombre entier
Begin
Saisir la liste L
n← la dimension de la liste L
m← L(1)
For i from 2 to n Do
If L(i) ≤ m Then
m←L(i)
Endif
EndFor
Afficher ‘‘le nombre m’’
End
1. Interpréter et algorithme.
2. Comment modier et algorithme pour qu'il herhe et ahe le plus grand élément de la liste L ?
3. Érire un algorithme qui détermine et ahe le plus petit et le plus grand élément d'une liste L donnée.
Remarque : un travail préparatoire doit être mené ave les élèves pour les familiariser à la notion de liste, au voabulaire et aux
notations assoiées.
II
Développement de la démarhe algorithmique
Calul de la moyenne
La liste L des notes obtenues en mathématiques à une épreuve ommune d'une lasse de seonde est :
7, 11, 14, 7, 13, 11, 11, 8, 2, 10, 11, 18, 8, 13, 15, 20, 5, 6, 7, 14, 11, 10, 8, 17, 19, 10, 8, 5, 18, 9, 9, 12, 15, 7, 10
1. Érire un algorithmea en langage naturel qui lit une liste L et qui détermine et ahe la moyenne arithmétique de
ette liste.
2. Programmer et algorithme dans le langage mahine de votre hoix et l'exéuter en l'appliquant à la liste L i-dessus.
a On pourra laisser aux élèves l'initiative d'employer l'une des deux méthodes : somme des éléments divisée par le nombre d'éléments ou bien
moyenne pondérée (dans le as de la moyenne pondérée se posera le problème du alul des eetifs)voir ii IV page 4.
Reherhe d'un élément dans une liste
On se pose le problème suivant : une liste de nombres réels étant donnée, omment proéder pour savoir si un réel V
appartient à ette liste.
Une solution nous vient naturellement à l'esprit, il sut de faire déler les éléménts de la liste pour savoir si V s'y trouve.
Le problème apparaît évidemment lorsque la liste ontient un très grand nombre d'éléments.
Il est don néessaire d'érire un algorithme demandant à la mahine d'eetuer le travail.a
a on
pourra en lasse laisser l'initiative aux élèves de déouvrir la néessité d'érire un algorithme en examinant plusieurs listes
Plusieurs senarii sont à envisager :
✓ les élèves proposent des idées à exploiter ou non, selon leurs intérêts, mais on prend le risque de onsarer beauoup de temps,
mais pourquoi pas.
✓ on oriente les élèves sur la méthode qui onsiste à soustraire à haque élément de la liste le réel que l'on herhe, puis à déteter
un zéro dans la nouvelle liste. C'est ette méthode que l'on va privilégier ii.
Titre ?
Algorithm
Variable
V : nombre réel
p: nombre réel
L: liste de nombres réels
n: nombre entier
Begin
Saisir la liste L
n← la dimension de la liste L
p← 1
For i from 1 to n Do
L(i)←L(i) − V
p←p ∗ L(i)
EndFor
If
p = 0 Then
Afficher ‘‘le nombre V se trouve dans la liste L’’
Else
Afficher ‘‘le nombre V ne se trouve pas dans la liste L’’
Endif
L←L + V
End
1. Compléter le tableau i-dessous qui orrespond au traitement de l'algorithme pour V = 10 et appliqué à la liste
L = {12; 23; 5; 10; 7}.
Étape n°
Traitement
V
1
2
·
·
·
i
L
{12; 23; 5; 10; 7}
p
Sortie
2. Déduire de e qui prééde une interprétation de l'algorithme et mettre un titre.
3. Programmer l'algorithme dans le langage mahine de votre hoix et exéuter le appliqué à la liste L = {12; 23; 5; 10; 7}
pour V = 11.
Commentaires :
On a privilégié le FOR plutt que le TANT QUE, ertes plus prohe du langage naturel, mais néessitant l'introdution d'un
ompteur et un test pour le dernier élèment.
Cela peut être abordé plus tard dans l'année.
Cet algorithme peut être mis en défaut selon la apaité de la mahine utilisée.
On peut amener les élèves à rééhir à la oneption d'un autre algorithme.
Calul de la médiane d'une liste ordonnée
Une liste L ordonnéea dans l'ordre roissant est donnée, le problème est de mettre en plae un algorithme qui détermine la
médiane de la liste.
a Dans un premier temps, on donnera la liste ordonnée, puis se posera la question du tri d'une liste, e qui pourra être l'oasion d'aller plus
loin. voir IV page 4
III
Évaluation
Calul des quartiles
Une liste L ordonnée dans l'ordre roissant est donnée.
1. Érire un algorithme en langage naturel qui lit une liste L ordonnée dans l'ordre roissant et qui détermine et ahe
les quartiles de ette liste.
2. Programmer et algorithme et l'exéuter pour L= on donne une liste de nombres
IV
Pour aller plus loin
Calul de la moyenne pondérée
Préédemment, on a mis en plae des algorithmes qui, en entrée, lisaient une liste et alulaient la moyenne arithmétique
de ette liste.
En fontion de la méthode utilisée, on pourra, mais 'est plus diile, demander d'érire un algorithme qui lit une liste et
détermine les eetifs pour haque valeur, pour enn aluler et aher la moyenne pondérée.
Tri d'une liste
Préédemment, on a mis en plae des algorithmes qui, en entrée, lisaient une liste ordonnée de réels pour en déterminer la
médiane ou les quartiles.
Comment faire si la liste n'est pas ordonnée ?
Tri d'une liste : méthodes diéreniées
On peut proéder de plusieurs façons diérentes :
On donne une liste L aux élèves.
✓ On laisse l'initiative à ertains, les plus à l'aise, qui doivent résoudre le problème en groupe, à la maison.
✓ Si, pour d'autres, auune méthode ne paraît évidente, on peut suggérer le tri à bulles en donnant la méthode (voir
i-dessous), puis l'algorithme érit en langage naturel, pour enn pouvoir le programmer et l'exéuter en l'appliquant à
L. On revient ensuite sur les méthodes proposées par les élèves et on leur demande de les programmer.
Mettre un titre
Algorithm
?
Variable
L: liste de nombres réels
n: nombre entier
temp: nombre réel
Begin
Saisir la liste L
Afficher la liste L à trier
n← la dimension de la liste L
For i from 1 to n-1 Do
For j from 1 to n-1 Do
If L(j + 1) < L(j) Then
temp←L(j) { on éhange L(j) et L(j + 1) }
L(j)←L(j + 1)
L(j + 1)←temp
Endif
EndFor
EndFor
Afficher la nouvelle liste L
End
Cet algorithme sera déjà programmé sur mahine an que les élèves puissent le faire fontionner sur plusieurs exemples
(listes ordonnées roissante, déroissante puis quelonque).
Pour aller plus loin, on pourra demander aux élèves d'interpréter les deux boules imbriquées.
Remarque :
Téléchargement