Table des matières
Exercices - Algorithmes
Exercice 1
Un point est sur une grille,
- sa position est donnée par ses coordonnées $(x; y)$ avec des axes évidents :
- l'axe $x$ pointe vers la droite,
- l'axe $y$ pointe vers le haut,
- la position initiale du point est toujours $(0; 0)$,
- les instructions disponibles consistent à déplacer le point vers la gauche, la droite, le
haut, le bas,
- dans tous les cas dites les coordonnées du point en fin d'algo.
algo a)
DÉBUT
haut 1
droite 2
bas 3
FIN
algo b)
DÉBUT
RÉPÉTER 10 FOIS
haut 1
droite 2
bas 3
FIN
haut 5
FIN
algo c)
DÉBUT
TANT QUE y du point < 100 RÉPÉTER
haut 3
droite 5
FIN
gauche 9
FIN
algo d)
DÉBUT
POUR i ALLANT DE 1 À 10 FAIRE
SI i pair ALORS
haut i
SINON
droite i
FIN
FIN
FIN
Remarque : Ces algorithmes précédent font toujours la même chose. Ils n'ont pas d'entrées.
Exercice 2
La Logo est un langage de programmation pédagogique dans lequel on anime la pointe d'un crayon qui dessine. Le crayon commence à la position (0,0) et il est orienté vers l'Est (droite). Il peut avancer et tourner à gauche ou à droite. Que font les programmes suivants ?
algo a)
DÉBUT
avancer de 100
tourner gauche de 90 degrés
avancer de 100
tourner gauche de 90 degrés
avancer de 100
tourner gauche de 90 degrés
avancer de 100
tourner gauche de 90 degrés
FIN
algo b)
DÉBUT
RÉPÉTER 6 FOIS
avancer de 100
tourner à droite de 60 degrés
FIN
FIN
algo c)
DÉBUT
RÉPÉTER 3 FOIS
RÉPÉTER 3 fois
avancer de 100
tourner à droite de 120 degrés
FIN
tourner à droite de 120 degrés
FIN
FIN
Exercice 3
Que font les deux algorithmes suivants ?
ENTRÉES n, entier > 0
DÉBUT
Soit t = 0,
POUR i ALLANT DE 1 À n FAIRE
ajouter i à t
FIN
RENVOYER t
FIN
ENTRÉES n, entier > 0
DÉBUT
POUR i ALLANT DE 2 À n-1 FAIRE
SI i est diviseur de n ALORS
RENVOYER non
FIN
FIN
RENVOYER oui
FIN
Exercice 4
On suppose que l'on peut utiliser un ensemble d'éléments, par exemple quelque chose comme $\left\lbrace 1, 14, 25, 8, 17\right\rbrace$. Il est notamment possible de parcourir cet ensemble pour en lire les éléments un à un.
ENTRÉES ens, un ensemble
DÉBUT
soit n = 0
POUR CHAQUE élément e DE ens FAIRE
ajouter 1 à n
FIN
RENVOYER n
FIN
- Que renvoie l'algorithme pour
ens = {1, 14, 25, 8, 17}? - Que renvoie l'algorithme en général ?
- Dans le cas où
ensne contient que des nombres, écrivez un algorithme semblable qui renvoie le total des éléments dee. - Dans le cas où
ensne contient que des nombres, écrivez un algorithme semblable qui renvoie la valeur maximum deens. Précisez la précondition dans ce cas.
Remarque : Cette structure permettant le parcours de tous les éléments d'un ensemble n'est pas présente dans tous les langages de programmation. Elle est par exemple absente en C. C'est en revanche la forme unique choisie pour la bouclePOURde Python.
Exercice 5 : Zune
Zune est le nom donné par Microsoft à son logiciel de gestion et de lecture de fichiers musicaux dans les baladeurs du même nom, commercialisé entre 2006 et 2011.
Le 31 décembre 2008, une grande partie des Zune de première génération a subi une panne critique bloquant le démarrage du lecteur. Le problème venait du module de mise à jour, contenant une conversion de date.
ENTRÉE jours: représente le nombre de jour à partir du 1er janvier 1980 (jour 1)
SORTIE année, jour: paire fournissant l'année et et le jour dans l'année
par ex: pour 14/01/1981, jours = 380 et la fonction doit renvoyer 1981, 14
DÉBUT
soit année = 1980
TANT QUE jours > 365 RÉPÉTER
SI année bissextile ALORS
SI jours > 366 ALORS
enlever 366 à jours
ajouter 1 à année
FIN
SINON
enlever 365 à jours
ajouter 1 à année
FIN
FIN
RENVOYER année, jours
FIN
- Pourquoi l'application a-t-elle subi une panne le 31/12/2008 ?
- Pourquoi pas avant ?
- Que faudrait-il changer pour éviter le problème ?
