Répétitive Conditionnelle

publicité
Informatique et Sciences du Numérique 2012
Répétitive Conditionnelle.
L'ordinateur comme toutes les machines est très fort dans l'exécution des tâches répétitives. Il
faut pourtant lui imposer de s'arrêter.
On aura donc répétition soumise à une condition.
Le tant que :
Langage naturel :
i=1
tant que i<6 faire
afficher_sans_passer_ligne('*')
i=i+1
# un compteur de boucle
# répétitive conditionnelle ; i<6 est la condition
# l'instruction à répéter
# incrémente le compteur de boucle
Résultat attendu :*****
Codage Python :
#tant que
i=1
# le compteur de boucle
while i<6:
print('*',end=' ')
#affiche sans passer à la ligne
i=i+1
# ne pas oublier!!
Déroulement du programme :
*
i=1
i=2
*
i=3
*
i=4
*
i=5
*
i=6
(sortie)
 Pourquoi ne faut il pas oublier i=i+1?
Taper ce programme Python et l'exécuter plusieurs fois en changeant la valeur initiale
du compteur, la valeur de la condition, la façon dont le compteur est incrémenté (dernière ligne).
Ne pas tout changer en même temps!
Il est possible que ça ne s'arrête plus alors utiliser Ctlr+C pour interrompre le déroulement
du programme et le corriger.
Le programme ne s'arrête plus si le programmeur a fait une erreur.
 Le programme donne un résultat inattendu ou catastrophique si :
Pourquoi?
i=10
# le compteur de boucle
while i<6:
print('*',end=' ')
i=i+1
# ne pas oublier!!
i=1
# le compteur de boucle
while i=6:
print('*',end=' ')
i=i+1
# ne pas oublier!!
i=1
# le compteur de boucle
while i<6:
print('*',end=' ')
i=i+1
# ne pas oublier!!
i=1
# le compteur de boucle
while i<6:
print('*',end=' ')
i=i+2
# ne pas oublier!!
Informatique et Sciences du Numérique 2012
Nombres pairs :
Un nombre est pair si c'est un multiple de 2.
Ecrire le programme Python qui affiche sur une même ligne les 10 premiers nombres
pairs (0 peut être considéré comme un nombre pair).
Faire de même avec Excel (plus facile).
Suite de Fibonacci :
On appelle suite de Fibonacci la séquence : 0 1 1 2 3 5 8 13 21 34...dans laquelle chaque
élément est la somme des deux précédents (13 = 5 + 8) . 0 1 sont les chiffres de départ.
Ecrire le programme Python qui affiche sur une même ligne les 20 premiers éléments de
la suite.
Faire de même avec Excel (plus facile). 4181 est le 20ème.
Répétitives imbriquées :
On peut, comme pour les conditionnelles, imbriquer les répétitives. Pour ne pas mélanger les
compteurs, il faut utiliser des compteurs différents : un pour chaque boucle.
Exemple :
On veut afficher une sorte de "drapeau américain" avec des étoiles.
Codage Python :
# drapeau américain
i=1 # initialisation du premier compteur appelé i
while i<7: # condition première boucle
j=1 # initialisation du deuxième compteur appelé j
while j<21: # condition deuxième boucle
print('*',end=' ') # affiche les étoiles sur la ligne
j+=1 # incrémentation cette notation est identique à j=j+1
print('') #crée une ligne nouvelle
i+=1 # incrémentation cette notation est identique à i=i+1
Taper ce programme Python et l'exécuter. Noter les indentations indispensables pour
distinguer les blocs d'instructions et la notation i+=1 pour incrémenter.
L'instruction 'Pour ...' (for)
Elle est plutôt utilisée lorsque le nombre de répétition est déterminé à l'avance et n'est pas
soumis à une condition.
exemple s:
sonnerie de début de cours : sonner deux fois ; déterminé à l'avance
sonnerie de début de cours soumise à condition : sonner tant que les élèves ne sont pas
rentrés
Informatique et Sciences du Numérique 2012
Langage naturel :
pour fois (1,2,3,4) # pour la 1° fois puis la 2° puis...jusqu'à la 4°- fois est une variable.
ecrire_sans_passer_ligne('-_-') # - tiret _ souligné (underscore)
Codage Python :
# répétitive for
for i in (1,2,3,4):
print('-_-',end=' ')
Taper ce programme Python et l'exécuter. Le modifier pour remplir la ligne de la fenêtre
de sortie de -_-.
La fonction range(valeur,valeur) ou range(valeur) :
Sur la ligne de commande, taper :
>>> for i in range(10):
print(i,end='')
0123456789
>>> for i in range(5,10):
print(i,end='')
56789
>>>
 Observer bien le résultat de chaque opération.
range(x) permet de générer une liste de valeur de 0 à x-1. Cela permet d'éviter la frappe de la
liste (0,1,2,3,.......,x-1). range(x,y) génère une liste de valeur de x à y-1.
 Comment modifier for i in (1,2,3,4): (voir ci dessus) la fonction range(..)?
Nombres impairs :
Un nombre impair est de la forme générale 2k+1 (k entier).
Ecrire un programme utilisant la fonction range() dans un for... pour afficher les 20
premiers nombres impairs.
Informatique et Sciences du Numérique 2012
Annexe Exercices difficiles
Sur ce modèle 'drapeau américain', écrire le programme (demi_drapeau.py) qui fasse :
ou, plus difficile, nuit_etoilee.py qui fasse :
ou la 'pyramide.py'
Téléchargement