Instructions itératives - LCQB

publicité
Introduction à l’Algorithmique et la Programmation
feuille de TD: Instructions itératives
Exercice - 1 Listes d’entiers et répétitions
1- Ecrire les algorithmes permettant de générer et d’afficher les séries de valeurs suivantes :
a) 5 5 5 5 5 5 5 5 5 5
b) 0 1 2 3 4 5 6 7 8 9
c) 20 21 22 23 24 25 26 27 28 29 30
d) 10 9 8 7 6 5 4 3 2 1 0
e) 1 2 4 8 16 32 64 128 256 512 1024
f) 1 1 2 3 5 8 13 21 34 55
Exercice - 2 Itérations déterministes
1- écrivez un algorithme utilisant une instruction itérative déterministe pour :
a- renvoyer le factoriel d’un naturel n saisi en début de programme
b- afficher à l’écran tous les nombres entiers compris entre 1 et 100 qui sont des multiples d’un
naturel n saisi en début de programme
c- afficher à l’écran tous les nombres de 3 à n (saisi en début de programme) avec la valeur de leur
factoriel
2- Pour chacune des 3 questions précédentes, écrivez la suite d’instruction en Python correspondante. Vérifiez le bon fonctionnement du programme.
Exercice - 3 Itérations non déterministes
Une structure itérative non déterministe répète l’exécution d’une série d’instructions en fonction
de la valeur d’une expression booléenne. Les deux instructions itératives non déterministes sont
TantQue et Répeter avec chacune leur spécifité d’interpétation :
• l’ordre d’exécution : dans une boucle TantQue la condition est évaluée avant d’exécuter
éventuellement les instructions à itérer alors que dans une boucle Répéter les instructions
sont exécutées avant l’interprétation de la condition.
1
feuille de TD: Instructions itératives
IAP 2016-2017
• l’évaluation de la condition : si la conditon est vraie, une nouvelle itération est effectuée
avec l’instruction TantQue alors qu’il faut que celle-ci soit fausse pour effectuer une nouvelle
itération avec l’instruction Répéter
1- écrivez un algorithme en utilisant l’instruction itérative indéterministe qui vous semble la plus
appropriée pour les taches suivantes :
a- afficher la partie entière inférieure de la racine carrée d’un entier n saisi en début de programme.
On suppose ici qu’on ne dispose pas de fonction racine
b- afficher la valeur u et le rang k du premier terme de la suite de Fibonacci dépassant une borne
entière positive donnée p (saisi en début de programme)
2- écrivez un programme en Python correspondant à chacun des 2 exercices précédents. Vérifiez
le bon fonctionnement de votre code.
Exercice - 4 La tortue
Une tortue effectue 100 pas sur un chemin rectiligne. A chaque pas, elle avance d’une distance
aléatoire d (en cm), avec 0 < d < 5.
1- Ecrire l’algorithme qui affiche, pour chacun des 100 pas, le numéro du pas et la distance
parcourue depuis le départ.
2- Ajouter un message qui indique si la tortue a parcouru au moins 250 cm après avoir marché
100 pas.
3- Modifier l’algorithme pour que la tortue s’arrête dès qu’elle a parcouru 250 cm, et afficher alors
le nombre de pas qui ont été nécessaires.
4- Ecrire les programmes correspondant aux questions 2 et 3.
Exercice - 5 Population
1- Une population a un effectif initial (année 0) de 100 individus. Chaque année, l’effectif augmente de 5%. On veut connaitre l’effectif au bout de 20 années (année 20). Ecrire l’algorithme
correspondant.
2- On suppose maintenant que l’effectif évolue selon la règle suivante : si l’effectif est inférieur à
500, il augmente de 10% ; s’il est supérieur ou égal à 500, il diminue de 5%. Ecrire l’algorithme
qui stocke dans une liste et affiche les valeurs de l’effectif au cours des années 1 à 50. Ecrire le
programme correspondant.
3- Ecrire l’algorithme qui détermine et affiche l’effectif maximal sur la période complète, et l’année
correspondante. Ecrire le programme correspondant.
4- Ecrire l’algorithme qui calcule et affiche la moyenne des effectifs sur la période complète (années
0 à 50). Ecrire le programme correspondant.
Exercice - 6 Dessiner un sapin de Noel (comp.)
Ecrire un code en python permettant de reproduire le dessin suivant dans votre fenêtre de
terminal tout en utilisant une boucle while (on pourra faire varier la longueur de la base du sapin
qui est ici de 21 caractères "˜") .
UPMC - License Biologie Mathématiques
2
feuille de TD: Instructions itératives
*
~ ~
* * *
~ ~ ~ ~
~
*
~
*
~
*
~
*
~
*
~
~
*
~
*
~
*
~
*
~
*
~
*
~
*
~
~
*
~
*
~
*
~
*
~
*
~
*
~
*
~
*
~
*
~
~
*
~
*
~
*
~
*
~
*
~
*
~
*
~
*
~
~
*
~
*
~
*
~
*
~
*
~
*
~
IAP 2016-2017
~
*
~
*
~
*
~ ~
* * *
~ ~ ~ ~
Exercice - 7 Climat (complémentaire)
Le tableau ci-dessous donne la température (en degrés Celsius) enregistrée au mois de mars à
Reykjavik (Islande) sur la période 1951-1960 :
Année
Temp.
1951
-3,9
1952
2,4
1953
-3,6
1954
-13,7
1955
4,5
1956
0,8
1957
5,3
1958
-1,9
1959
3,7
1960
-7,8
1- Ecrire l’algorithme permettant de calculer et afficher la température moyenne sur la période
considérée.
2- Ecrire l’algorithme permettant de trouver et afficher la température la plus élevée et l’année
de son enregistrement.
3- Modifier l’algorithme de la question 1 pour déterminer et afficher le nombre d’années ou la
température a été inférieure à la moyenne.
4- Ecrire les programmes correspondant aux algorithmes 2 et 3.
Rappels de Python
Structure de répétition conditionnelle (itération non déterministe)
Il s’agit de répéter (exécuter plusieurs fois) une ou plusieurs instructions. La répétition est dite
conditionnelle. C’est en effet la valeur : vrai ou faux d’une expression booléenne qui conditionne
l’entrée dans le corps de la boucle et donc l’exécution du bloc d’instructions correspondant.
Afin de répéter une action ou une série d’instructions plusieurs fois, la boucle while peut être
utilisée. Le principe est simple : la série d’instructions est répétée tant que la condition est
vraie.
Exemple 1 :
i=1
while (i <= 10):
print i
i=i+1
UPMC - License Biologie Mathématiques
3
feuille de TD: Instructions itératives
IAP 2016-2017
Exemple 2 :
Connaissant la taille actuelle d’une population et sachant que celle-ci double tous les 10 ans, on
veut en connaitre l’effectif dans 60 ans.
pop = 1376
an = 0
while (an < 60):
an = an + 10
pop = pop * 2
print "Au bout de 60 ans =", pop
Trois éléments sont nécessaires au bon fonctionnement de la boucle while :
1. initialiser au moins une variable la boucle (dans l’exemple 1, la variable i est initialisée
telle que i = 1)
2. faire tourner la boucle avec un test, on boucle tant que la condition est vraie (dans l’exemple
1, le test est i <= 10)
3. la variable du test doit être ré-affectée dans le corps de la boucle afin que la condition de
sortie de boucle soit atteinte pour éviter que la boucle ne tourne infiniment. (dans l’exemple
1, i est augmenté à chaque tout de 1 : i = i + 1) 1 .
Boucle for
En Python, la boucle for permet de définir une variable qui prendra successivement toutes les
valeurs d’une liste (c’est un itérateur). La déclaration de la boucle for permet de nommer cette
variable et est suivie du bloc d’instruction (indenté) à répéter pour chaque itération. Remarque :
une boucle de répétition sur une liste vide n’a pas d’éléments sur lesquels itérer et donc ne s’éxécute
pas.
for i in <liste d’éléments>:
instruction1
instruction2
...
Remplissage d’une liste
Les trois propositions suivantes sont équivalentes :
l = [0, 1, 2, 3, 4, 5]
l = []
for i in range(6):
l.append(i)
Pour utiliser append() il faut avoir au moins une liste vide en paramètre.
1. Au besoin, on peut stopper la boucle avec les touches Ctrl-C.
UPMC - License Biologie Mathématiques
4
l = []
i = 0
while (i<6):
l.append(i)
i = i + 1
Téléchargement