Manuel D'algorithmique de La Graph 35 E À La Fx-CP400 E
Manuel D'algorithmique de La Graph 35 E À La Fx-CP400 E
Manuel D'algorithmique de La Graph 35 E À La Fx-CP400 E
Les algorithmes sont partout dans la technologie qui nous entoure : téléphones portables, ordinateurs,
internet,… Bien évidemment le présent manuel, introduction aux bases de l’algorithmique, ne prétend pas
expliquer le fonctionnement d’un smartphone. Mais une initiation au fonctionnement des algorithmes est
une clé utile à la compréhension du monde actuel.
Le mot « Algorithme » vient du nom du mathématicien perse Al-Khwârizmî (environ 780-850 après JC).
Un algorithme est une succession d’instructions permettant la résolution d’un problème donné.
Il comporte jusqu'à quatre étapes (généralement dans cet ordre mais ce n'est pas toujours le cas) :
Entrée(s) : On entre les données, cela permet de réutiliser plusieurs fois l'algorithme
Traitement : Le "cœur" de l'algorithme, on travaille les données pour obtenir le résultat voulu.
Cela fonctionne donc un peu à la manière d’une recette de cuisine : nous avons à notre disposition des
ingrédients (données entrées) que nous mélangeons, cuisons (étape de traitement), pour obtenir notre plat
(résultat de sortie).
Toutes les étapes ne sont pas toujours présentes dans un algorithme, il arrive fréquemment qu'il n'y ait
pas, par exemple, d'étape d'initialisation. De plus il peut y avoir plusieurs fois la même étape dans un seul
algorithme (par exemple plusieurs étapes de sortie).
Le langage algorithmique est une écriture plus efficace, car plus concise, de l’algorithme. Il est une sorte
de résumé du langage naturel (lorsqu’il y a un langage naturel). Les actions de base du langage
algorithmique sont : Saisir, affecter, afficher, calculer … (liste non exhaustive).
Les programmes de calcul, vus depuis le collège, sont un bon moyen de commencer à manipuler des
algorithmes. En voici quelques exemples :
Exemple 1 :
Prendre un nombre, lui ajouter 7, mettre le résultat au carré puis retrancher 3. Annoncer le résultat obtenu.
ǫ՜ ܰ
ሺܰ ሻʹ െ ͵
ܣ
Enfin, terminer le
Ensuite accéder à programme. Pour
[PRGM] :Lo. Puis l’exécuter, sortir de l’éditeur Sélectionner ensuite
sélectionner le point de programme en appuyant l’onglet {EXE}: q.
d’interrogation : r. deux fois sur d.
Langage naturel : On donne trois nombres. Calculer la somme de ces trois nombres, diviser cette somme
par 3 et annoncer le résultat obtenu.
Pour la suite du manuel, nous nous concentrerons sur les langages algorithmiques et de programmation.
Nous avons pu constater, au travers des deux exemples précédents, qu'une des actions de base d'un
algorithme est l'affectation. Affecter consiste à attribuer une valeur (très souvent numérique) à une variable
(généralement une lettre).
- ܣprend la valeur ʹ
Exemple 1 : - ܤprend la valeur െ͵
- Affecter ܤà ܣ
Qu'affiche l'algorithme suivant ? - Affecter ʹ ܣà ܤ
- Afficher ܣet ܤ
Ecrire un algorithme qui "inverse" les valeurs de ࢄ et de ࢅ, c’est-à-dire que si on saisit pour ࢄ et
pour ࢅ l'algorithme affiche au final pour ࢄ et pour ࢅ.
Comme nous l’avons déjà vu, un algorithme permet d’exécuter une liste d’instructions les unes à la suite
des autres. Mais on peut aussi demander à l’algorithme de n’exécuter des instructions que si une certaine
condition est remplie. C’est la structure conditionnelle « Si… Alors… Sinon… » qui permet de remplir cette
fonction.
Exemple 1 :
Un magasin de photos propose le développement au prix de 0,16 € l’unité. Pour une commande
d’au moins 75 photos, le prix passe à 0,12 € l’unité.
Ecrire un algorithme qui, lorsqu'on entre le nombre de photos à développer, nous donne le prix à
payer pour la commande.
Entrée : Saisir ܰ
Traitement : Si ܰ ͷ
Nous stockons dans ܰ le nombre de
photos commandées. Sortie : Alors Afficher ܰ ൈ Ͳǡͳʹ
Sortie : Sinon Afficher ܰ ൈ Ͳǡͳ
FinSi
Les commandes If, Then, Else et IfEnd sont dans [PRGM] (Lo) puis dans l’onglet {COM} (q). Le
symbole "" ainsi que toutes les autres relations d'ordre se trouvent dans l'onglet {REL} : dans [PRGM]
faire défiler à l’aide de l’onglet { } (u) puis sélectionner {REL} (e)
36 photos
coûtent 5,76€.
L'Indice de Masse Corporel (IMC) est un indicateur (pas forcément toujours fiable) permettant de
voir si une personne est en surpoids, en état de maigreur… L'IMC est donné par la formule
ࡼࢊ࢙ሺࢋࢍሻ
ࡵൌ .
࢚ࢇࢋ¸ሺࢋ°࢚࢘ࢋሻ
Si l'IMC est inférieur strictement à 18,5, la personne est considérée en état de maigreur. S’il est
strictement supérieur à 25, la personne est considérée en surpoids. Sinon on considère que la
corpulence est "normale".
Ecrire un algorithme qui, lorsqu’on entre le poids et la taille d’une personne, affiche « surpoids »,
« normal » ou « maigreur » selon la valeur de son IMC.
On stocke dans ܲ le poids de la personne, dans ܶsa taille et dans ܫla valeur de son IMC. La particularité
ici est qu'il faut imbriquer l'une dans l'autre deux structures conditionnelles :
?՜ ܲ
Entrée : Saisir ܲ et ܶ
?՜ ܶ
ܲ
Traitement : Affecter ܶ; à ܫ
ܲ
Si ܫ൏ ͳͺǡͷ ՜ܫ
ܶ²
Sortie : Alors Afficher « MAIGREUR » If ܫ൏ ͳͺǡͷ
Sinon Si ܫ ʹͷ Then "MAIGREUR"
Sortie : Alors Afficher « SURPOIDS » Else If ܫ ʹͷ
Sortie : Sinon Afficher « NORMALE » Then "SURPOIDS"
FinSi Else "NORMALE"
FinSi IfEnd
IfEnd
Une boucle permet de répéter une instruction (ou une liste d'instructions) plusieurs fois. Il y a
principalement deux types de boucle :
x Les boucles pour répéter une instruction un certain nombre de fois, il s'agit des boucles « Pour ».
x Les boucles pour répéter une instruction jusqu'à une condition d'arrêt, il s'agit des boucles
« Tant que ».
1. Boucles Pour
Les boucles « Pour » permettent de répéter une instruction un nombre donné de fois. Elles se
caractérisent par le fait que l'on connaît à l'avance le nombre d'itérations que l'on va devoir effectuer.
Exemple 1:
For 0՜ ܫTo 10
ܫ
Next
Les commandes For, To et Next se trouvent dans [PRGM] (Lo) puis dans l'onglet {COM} (q). Il
suffit ensuite de faire défiler le menu à l’aide de l’onglet { } (u).
Ne reste plus qu'à l'exécuter. Appuyer à chaque fois sur l pour avoir la valeur suivante.
Exécuter le programme en
prenant 7 comme valeur.
Exemple 3 :
Ecrire un algorithme donnant la valeur du capital au bout de ࡺ années, la valeur de ࡺ étant donnée.
Utiliser cet algorithme pour déterminer la valeur du capital au bout de 10 ans puis de 20 ans.
On utilise ici une boucle « Pour » avec ݅allant de 1 à ܰ. La variable ܥstocke les différentes valeurs du
capital, il faut donc l'initialiser à 10 000. Augmenter de 4 % revient à multiplier par 1,04.
Entrée : Saisir ܰ
Initialisation : ܥprend la valeur 10 000
Traitement : Pour i allant de 1 à ܰ
Affecter Cൈ ͳǡͲͶ à C
Fin Pour
Sortie : Afficher ܥ
Exécuter le programme en
entrant les valeurs 10 puis
20.
Donc au bout de dix ans le capital est de 14 802,44 € et au bout de vingt ans, il a plus que doublé pour
atteindre 21 911,23 € (sommes arrondies au centime).
Les boucles « Tant que » permettent d’effectuer des itérations tant qu’une certaine condition est vérifiée.
On ne connait pas le nombre d’itérations à effectuer, mais à chaque itération, on vérifie si la condition est
vraie ou fausse. Dès que cette condition est fausse, on sort de la boucle. Il est souvent important d'intégrer
un "compteur" dans l'algorithme afin de dénombrer le nombre d'itérations effectuées.
Exemple 1 :
On fait la somme des entiers consécutifs à partir de 1, combien en faut-il pour dépasser 10 000?
On stocke la somme dans la variable ܵ. A chaque itération il faut lui ajouter le compteur, que l'on stocke
dans la variable ݅et que l'on incrémente de 1 au fur et à mesure. On commence par initialiser ݅et ܵ à 0.
En exécutant le
programme on
obtient 141.
Il faut donc faire la somme des 141 premiers entiers consécutifs pour dépasser 10 000.
Paul souhaite acheter une voiture coûtant 20 000 €. Pour cela il sollicite un prêt à sa banque pour
cette somme au taux mensuel de 0,4 %. Il ne peut rembourser plus de 300 € par mois.
Dans l’algorithme, ܴ est la variable comptabilisant le montant restant. Pour passer d'une année à l'autre il
faut donc affecter à ܴl'expression ܴ ൈ ͳǡͲͲͶ െ ͵ͲͲpuisque l'on doit ajouter les intérêts (0,4%) et retrancher
la mensualité payée par Paul c’est-à-dire 300 euros. Au départ le montant restant dû est de 20 000 €, donc
on initialise la variable ܴ à 20 000.
La variable ݅est notre compteur. Elle comptabilise le nombre de mensualités déjà payées. Au départ, elle
vaut donc 0.
En exécutant le programme
on obtient :
Pour réaliser ce programme, on commence par stocker la valeur choisie au hasard par la calculatrice dans
la variable ܰ.
ܲ représente la valeur choisie par le joueur. Le jeu ne s'arrête donc qu'une fois que ܲ est égal à ܰǤ
Enfin la variable ݅comptabilise le nombre d'essais. Elle est initialisée à 1.
Il y a une entrée pour débuter le jeu et une entrée dans la boucle « Tant que » qui est utilisée chaque fois
que le joueur retente sa chance.
Pour choisir un nombre au hasard il faut utiliser la commande RanInt#. Cette commande se trouve dans
OPTION (i). Faire défiler (u), choisir l'onglet {PROB} (e), sélectionner {RAND} (r) puis {Int}
(e). On peut aussi aller chercher cette commande dans [CATALOG] (L4).
Nous avons vu, dans les quatre premiers paragraphes, les actions de base des algorithmes notamment à
l'aide d'exemples d'algorithmes globalement assez simples. Dans cette partie nous nous intéresserons à
des algorithmes un peu plus complexes, ce qui nous permettra de voir au passage quelques nouvelles
actions, commandes et fonctionnalités.
Une année bissextile est une année dont le numéro est divisible par 4 mais pas par 100.
Ecrire un algorithme permettant de déterminer si une année de numéro donné est bissextile ou non.
Ici la complexité n'est en rien située dans le langage algorithmique qui est somme toute assez basique :
Entrée : Saisir ܰ
Traitement : Si ܰ est divisible par 4 et pas par 100
Sortie : Alors Afficher "Bissextile"
Sortie : Sinon Afficher "Non bissextile"
Fin Si
Le problème est que la calculatrice ne sait pas reconnaître directement si un nombre est divisible par 4 ou
par 100.
Pour tester si le quotient du nombre donné par 4 est un entier nous utiliserons la fonction partie entière. La
fonction partie entière est la fonction mathématique E qui, à tout réel, associe le premier entier inférieur ou
égal à celui-ci.
Exemples : ܧሺʹǡ͵ሻ ൌ ʹ
ܧሺͲǡͷሻ ൌ Ͳ
ܧሺെͲǡͻͻሻ ൌ െͳ.
La fonction partie entière se traduit en langage calculatrice par Intg. Cette commande se trouve dans
OPTION (i). Faire défiler (u), puis sélectionner l'onglet {NUM} (r).
L'algorithme va afficher de toute façon "BISSEXTILE" et il affichera avant "NON" si le numéro de l'année
n'est pas divisible par 4 ou s’il est divisible par 100.
?՜ ܰ
If Intg(ܰȀͶ)് ܰȀͶ
Then "NON"
Else If Intg(ܰȀͳͲͲ)ൌ ܰȀͳͲͲ
Then "NON"
IfEnd
IfEnd
"BISSEXTILE" Retrouvez le programme en
téléchargement gratuit sur :
www.casio-education.fr/resources
Extrêmement connue la suite de Fibonacci a un fonctionnement très simple. Pour calculer le terme
suivant de la suite, il suffit d'ajouter les deux précédents (les deux premiers termes sont égaux à 1).
Le début de la suite est donc 1 ; 1 ; 2 ; 3 ; 5 ; 8 ; 13 ; 21 …
Il faut, comme pour l'algorithme d'inversion de variables (vu précédemment), utiliser une variable de
transfert. Nous stockons dans ܸle terme précédent à celui que l'on va calculer et dans ܷle terme encore
précédent, enfin ܹ est la variable de transfert.
Entrée : Saisir ܰ
Initialisation : ܷprend la valeur 1
ܸ prend la valeur 1
Traitement : Pour ݅allant de 1 à N
Affecter ܷ ܸà ܹ
Affecter ܸ à ܷ
Affecter ܹ à ܸ Retrouvez le programme en
téléchargement gratuit sur :
Fin Pour www.casio-education.fr/resources
Sortie : Afficher ܸ
Soit ࢍ une fonction positive sur un intervalle ሾࢇǢ ࢈ሿ et ࢍ sa courbe représentative. Pour calculer
࢈
l’intégrale ࡵ ൌ ࢍ ࢇሺ࢞ሻࢊ࢞, il est parfois difficile voire impossible de déterminer une primitive de la
fonction ࢍ et donc de calculer ࡵ. On cherche alors à calculer une valeur approchée.
On considère le rectangle ABCD où A, B, C et D ont pour coordonnées respectives ሺࢇǢ ሻ, ሺ࢈Ǣ ሻ,
ሺ࢈Ǣ ሻ et ሺࢇǢ ሻ dans un repère orthonormé, étant le maximum de ࢍ sur ሾࢇǢ ࢈ሿ.
Construire un algorithme qui affiche une valeur approchée de l’intégrale ࡵ pour points testés, la
valeur de étant donnée.
Entrée : Saisir ݊
Initialisation : ܿ prend la valeur 0
Traitement : Pour ݅ allant de 1 à ݊
ݔprend la valeur ܽ ሺܾ െ ܽሻ ൈ ±Ͳ݁ͳݐ
ݕprend la valeur ݉ ൈ ±Ͳ݁ͳݐ
Si ݕest inférieur ou égal à ݃ሺݔሻ
Alors ܿ prend la valeur ܿ ͳ
Fin Si
Fin Pour
ܿ
Sortie : Afficher ݊ ൈ ݉ሺܾ െ ܽሻ
La variable ܿ comptabilise le nombre de points qui sont situés sous la courbe ݃ܥ.
ͳ
Nous allons utiliser cet algorithme pour estimer la valeur de Ͳξͳ െ ݔ݀¸ݔ.
On peut démontrer que le maximum de la fonction ݃ǣ ݔ՜ ξͳ െ ¸ݔsur ሾͲǢ ͳሿ est 1.
Donc la valeur de ݉ est 1. Celle de ܽ est 0 et celle de ܾ est 1.
On peut aussi demander à chaque élève de déterminer uniquement la proportion de points situés sous la
courbe et regrouper ensuite les résultats de la classe. Pour cela, au lieu de calculer la fréquence, on place
les points dans le rectangle ABCD. En rouge ceux qui sont situés sous la courbe ݃ܥet en bleu ceux qui
sont dessus.
ͳ
Dans notre exemple où l’on s'intéresse à Ͳξͳ െ ݔ݀¸ݔ, l'algorithme donne donc :
Entrée : Saisir ݊
Initialisation : Changer la fenêtre graphique : ܺ݉݅݊ ൌ ͲǢ ܺ݉ܽ ݔൌ ͳ ; ܺ݃ ݀ܽݎൌ Ͳǡͳ
Nous allons utiliser une fx-CP400+E pour réaliser le programme correspondant à l'algorithme.
Quelques changements sont à effectuer par rapport au langage des Graph 35+E et Graph 75+E.
"Saisir" se traduit Input. Aller dans l’onglet {E/S} et sélectionner Input.
La commande pour changer la fenêtre graphique se nomme ViewWindow. Aller dans l’onglet {Divers},
sélectionner Graphe&Table(1) puis ViewWindow.
Pour placer un point, la commande s'appelle PlotOn. Aller dans l’onglet {E/S}, sélectionner Dessin puis
Trc et enfin PlotOn.
Pour choisir la couleur, aller dans l’onglet {E/S}, sélectionner Coul. et enfin choisir la couleur voulue.
On peut aussi représenter graphiquement l’intégrale à l’aide de Monte-Carlo. Par exemple, pour la fonction
carrée, on a juste à faire quelques changements dans l’algorithme.
On va ouvrir une fenêtre où ݔvarie entre െͳ et ͳ pour pouvoir visualiser l’axe de symétrie de la parabole.
Pour obtenir un nombre aléatoire dans cet intervalle on calcule d’abord un nombre aléatoire entre Ͳ et ͳ
grâce à la fonction rand(), on multiplie par ʹ et on retranche ͳ.
On considère la suite ሺ࢛ ) définie par son premier terme ࢛ , un entier naturel, et par la relation de
récurrence :
࢛
࢛ ൌ si ࢛ est pair
࢛ ൌ ࢛ sinon
Il a été conjecturé (mais pas encore démontré à ce jour) que la suite de Syracuse ayant comme
premier terme n'importe quel entier strictement positif, atteint, au bout d’un certain nombre
d’itérations, 1.
Ecrire un algorithme donnant le temps de vol lorsque la valeur du premier terme est donnée.
Entrée : Saisir ܷ
Initialisation : ܰ prend la valeur 0
Traitement : Tant que ܷ ് ͳ Pour tester la parité nous utilisons la
même méthode que pour
Affecter ܰ ͳ à ܰ
l'algorithme sur l'année bissextile :
Si ܷ est pair on teste si
ܷ
est un entier ou non à
ʹ
ܷ
Alors Affecter àܷ l'aide de la fonction "partie entière"
ʹ
(Commande Intg).
Sinon Affecter ͵ܷ ͳ à ܷ
Fin Si
Fin Tant que
Sortie : Afficher ܰ
Retrouvez le programme en
téléchargement gratuit sur :
www.casio-education.fr/resources
Si deux nombres consécutifs obtenus par l'algorithme sont égaux alors l'algorithme répétera indéfiniment
ce même nombre. Nous utilisons donc une boucle « Tant que » qui s'arrête dès que deux nombres
obtenus consécutivement par l'algorithme sont égaux.
On stocke dans ( ܩpour Grand) le plus grand des trois chiffres et dans ܲ (pour Petit) le plus petit des trois
chiffres. Inutile de s'occuper du chiffre du milieu puisqu'en faisant la différence, il s'annule de toute façon.
La variable ܦsert à stocker le résultat de l'algorithme pour tester si deux résultats consécutifs sont égaux.
On l'initialise donc à 0.
Entrée : Saisir ܰ
Initialisation : ܦprend la valeur 0
Tant que ܰ ് ܦ
Affecter ܰ à ܦ
Affecter le plus grand des trois chiffres de ܰ à ܩ
Affecter le plus petit des trois chiffres de ܰ à ܲ
Affecter à ܰ le nombre ܩൈ ͳͲͲ ܲ െ ܲ ൈ ͳͲͲ െ ܩ
Fin Tant que
Sortie : Afficher ܰ
Pour extraire les chiffres nous allons diviser le nombre N par 100 puis
par 10 en prenant à chaque fois la partie entière (commande Intg) et
en retranchant les chiffres "extraits" petit à petit. C'est l'objet des
lignes 5 à 8 du programme ci-contre:
Un nombre parfait est un nombre ݊ dont la somme de tous les diviseurs est égale à ʹ݊ǡ
c’est-à-dire dont la somme de tous les diviseurs propres (diviseur distinct du nombre lui-
même) est égale à ݊.
Ecrire un algorithme qui détermine si un nombre donné est un nombre parfait ou non, puis modifier
cet algorithme pour qu'il affiche la liste de tous les nombres parfaits inférieurs ou égaux à une
valeur donnée.
Entrée : Saisir ݊
Initialisation : ݏprend la valeur 0
On teste les diviseurs jusqu'à la
݊ ݊
Traitement : Pour ݅allant de 1 à ܧቀʹ ቁ partie entière de (car un diviseur
ʹ
propre ne peut être plus grand que la
Si ݊ est divisible par ݅
moitié du nombre).
Alors
La variable ݏstocke la somme des
Affecter ݏ ݅ à ݏ
diviseurs.
Fin Si
Une fois testés tous les nombres de
Fin Pour ݊
1 à ܧቀʹ ቁ, il ne reste plus qu'à vérifier
Si ݏൌ ݊ si la somme des diviseurs est égale
Alors au nombre, c’est-à-dire si ݏൌ ݊ . Si
c'est le cas, le nombre est parfait.
Sortie : Afficher "Parfait"
Sinon
Sortie : Afficher "Non parfait"
Fin Si
Entrée : Saisir ݇
Initialisation : ݏprend la valeur 0
Traitement : Pour ݊ allant de 1 à ݇
ݏprend la valeur 0
Pour ݅allant de 1 à ݊
Si ݊ est divisible à par ݅
Alors
Affecter ݏ ݅à ݏ
Fin Si
Fin Pour
Si ݏൌ ݊
Alors
Sortie : Afficher ݊
Fin Si
Fin Pour
Retrouvez le programme en
téléchargement gratuit sur :
www.casio-education.fr/resources
Ecrire un algorithme permettant de trier, dans l'ordre croissant, une liste donnée dont on aura
précisé la longueur : .
La méthode de tri utilisée sera celle du tri par sélection : on commence par chercher le plus grand
élément de la liste que l'on met en dernier, puis on recommence l'opération avec les െ premiers
termes… Cette méthode de tri n'est pas, loin s'en faut, la plus efficace mais c'est sûrement la plus
simple.
Retrouvez le programme en
téléchargement gratuit sur :
www.casio-education.fr/resources
Le système binaire est un système de numération en base 2. Celui utilisé par les ordinateurs est
composé uniquement de 0 et 1 : ce sont les fameux bits (de l'anglais binary digit.
Les processeurs des ordinateurs ne reconnaissent que ces deux nombres. Comment traduire un
nombre en base décimale dans le langage binaire ?
Tout d'abord, il faut commencer par initialiser à 0 la variable ܤqui stockera le nombre en binaire.
Ensuite, il faut déterminer la plus grande puissance ݅ de 2 contenue dans le nombre.
On initialise donc ݅ à 0, on demande la valeur du nombre puis on augmente la valeur de ݅ jusqu'à ce que la
division de ܰ par ʹ݅ͳ donne un résultat plus petit que 1.
Pour construire le nombre en binaire nous allons utiliser ܧ, la fonction partie entière.
Fin Pour
Sortie : Afficher ܤ
Voici l'algorithme programmé sur la Graph 35+E : On peut le tester avec par
exemple 57 et 654 :
Retrouvez le programme en
téléchargement gratuit sur :
www.casio-education.fr/resources
Bob a un peu trop célébré son augmentation de salaire, du coup il n'arrive plus à marcher droit. A
chaque pas il avance d'un mètre mais se décale aussi d'un mètre vers la gauche ou d'un mètre vers
la droite (à égale probabilité.
Bob arrive sur un pont d'une largeur de 6 mètres et d'une longueur de 15 mètres. Au départ il est au
milieu du pont.
Ecrire un algorithme simulant le passage sur le pont (deux résultats possibles : Bob tombe à l'eau
ou arrive sain et sauf au bout du pont puis un autre permettant d'illustrer le trajet.
Chacun des prisonniers agite alors un bel os pour attirer le chien, qui choisit au hasard de se
diriger lentement vers l'un d'entre eux. Mais, arrivé à mi-chemin, fatigué, le vieux chien se couche et
creuse un trou.
Les prisonniers agitent alors de plus belle leurs appâts : le chien se réveille et avance à nouveau au
hasard vers l'un d'eux. Arrivé à la moitié du chemin il s'arrête encore et fait un autre trou... et ainsi
de suite un très grand nombre de fois.
Construire et programmer un algorithme qui permet d'obtenir une vue aérienne de la figure obtenue
avec les trous progressivement creusés par le chien.
Indications : on pourra modéliser la position des prisonniers par le triangle ܥܤܣavec ܣሺͲǢ Ͳሻ, ܤሺͲǡͷǢ ͳሻ,
ܥሺͳǢ Ͳሻ et la position initiale du chien par le point ܯmilieu du segment ሾܤܣሿ. On se limitera aux 10 000
premiers trous creusés par le chien.
Variables :
ܣݔǢ ܣݕǢ ܤݔǢ ܤݕǢ ܥݔǢ ܥݕǢ ܯݔǢ ܯݕréels
Ǣ ܿ entiers
Initialisation :
ܣݔൌ Ͳ; ܣݕൌ Ͳ (le 1¶ prisonnier)
Pour ݊ ൌ ͷͲͲ, on
obtient :
La suite de Conway, vous connaissez ? Dans cette suite dite "audioactive", un terme se détermine
en annonçant les chiffres formant le terme précédent. Le premier terme vaut 1.
Voici les premiers termes de la suite de Conway :
1
11 (car le terme précédent est composé d'un 1)
21 (car le terme précédent est composé de deux 1)
1211 (car le terme précédent est composé d'un 2 et d'un 1)
111221
Construire un algorithme donnant la liste des ࡼ premiers termes de la suite avec un premier terme
ࡺ donné.
L'algorithme étant relativement long, nous allons détailler étape par étape la construction d'un terme par
rapport au précédent. Pour faire la liste de termes, il suffira d'itérer le processus à l'aide d'une boucle
« Pour ».
Nommons ܰ le terme précédent. Tout d'abord, il faut extraire les chiffres composant ܰ et les stocker un à
un, dans l'ordre, dans une liste que nous nommerons ͳܮ. Pour extraire les chiffres il faut déjà déterminer le
nombre de chiffres présents. On divise donc ܰ par ͳͲ ܮjusqu'à ce que l'on obtienne un nombre plus petit
strictement que 1. La dernière valeur de ܮutilisée est donc la "Longueur" de ܰ, c’est-à-dire le nombre de
chiffres que contient ܰ.
Ensuite on peut extraire les chiffres un à un en commençant par la gauche, pour cela on prend la partie
ܰ
entière (fonction E) de ͳͲ ܮെܭ
pour ܭallant de 1 à ܮet on retranche ce même nombre multiplié par ͳͲܮെ ܭà
ܰ. On les stocke dans la liste ͳܮqu'il faut commencer par initialiser.
Fin Pour
Fin Pour
Tant que ܮest différent de 0
Si =ܮ1
Alors Affecter ܰ ሺͳͲ ܥ ݇-èmechiffre de ) ͳܮൈ ͳͲ ܯà ܰ
Sinon Si le ܭet le ܭ-1-èmechiffre de ͳܮsont égaux
Alors Affecter ܥ+1 à ܥ
Sinon Affecter ܰ ሺͳͲ ܥ ݇-èmechiffre de ) ͳܮൈ ͳͲ ܯà ܰ
Affecter ܯ+2 à ܯ
Affecter 1 à ܥ
Fin Si
Fin Si
Affecter ܮ-1 à ܮ
Fin Tant que
Sortie : Afficher ܰ
Fin Pour
Le jeu se termine lorsque le joueur fait une erreur ; à ce moment-là la calculatrice affiche le score,
c’est-à-dire le nombre de touches qu'il a réussi à mémoriser.
Pour poursuivre l'algorithme, on doit choisir au hasard une nouvelle touche à afficher à la suite de la
séquence précédemment choisie. On choisit donc au hasard un nombre entre 1 et 4, que l'on stocke dans
B.
Sur la Graph 35+E, la touche "Gauche" correspond à la valeur 38, "Haut" à 28, "Droite" à 27 et "Bas" à 37.
Il faut donc faire correspondre les entiers de 1 à 4 à une de ces valeurs et la stocker en ܫ-ème position
dans la Liste 1.
Cela donne :
A l'aide d'une boucle « Pour », l'algorithme lit une à une les valeurs de la Liste 1 et affiche à chaque fois la
touche correspondante puis l'efface (afin que l'on puisse voir la suivante).
On a donc :
Pour ܶ allant de 1 à ܰ
Si le ܶ-ième chiffre de la liste 1 est 38 alors Afficher une flèche vers la gauche Fin Si
Si le ܶ-ième chiffre de la liste 1 est 28 alors Afficher une flèche vers le haut Fin Si
Si le ܶ-ième chiffre de la liste 1 est 27 alors Afficher une flèche vers la droite Fin Si
Si le ܶ-ième chiffre de la liste 1 est 37 alors Afficher une flèche vers le bas Fin Si
Effacer
Fin Pour
Pour ܫallant de 1 à ܰ
Affecter 0 à ܣ
Si ܫ=ܬ-1
Alors Tant que =ܣ0
Affecter la valeur de la touche appuyée à ܣ
Si ܣest égal à laܫ-ème valeur de la List 1
Alors Affecter ܬ+1 à ܬ
Fin Si
Fin Tant que
Fin Si
Fin Pour
Effacer
Si ܬൌ ܰAlors Afficher "Bien, On continue ?"
Pause
Fin Tant que
Sortie : Afficher au milieu "Perdu, Votre Score est"
Afficher ܰ-1
NB : La boucle "Pour ܮallant de 1 à 10" sert à allonger la durée de l'affichage de chaque flèche. Sans cela
la flèche disparaîtrait trop vite de l'écran et le joueur n'aurait pas le temps de la mémoriser.
La boucle "Pour ܱ allant de 1 à 15" sert à faire patienter la calculatrice avant l'appui de la touche par le
joueur. Sans cette boucle la calculatrice considérerait le dernier l comme la touche appuyée par le
joueur et celui-ci perdrait immédiatement.
ࢌ en un point ࢇ à
Construire un algorithme qui donne un développement limité d’une fonction
l’ordre ; ࢌǡ ࢇࢋ࢚ étant entrés par l’utilisateur.
Pour cet algorithme, nous utilisons une variable ݏinitialisée à 0 dans laquelle nous stockons
successivement chaque terme du développement de Taylor grâce à une boucle « Pour ».
Fin Pour
Sortie : Afficher ݏ ሺ ݔെ ܽሻ݊
www.casio-education.fr education-france@casio.fr
CASIO FRANCE Société Anonyme au capital de 6 000 000€ - SIREN 431 870 906 - RCS EVRY
Siège social : Immeuble Phénix 1 - 24, rue Emile Baudot - F-91120 PALAISEAU - www.casio.fr