CHAPITRE C : LES BOUCLES

Informatique et sciences du numérique
Lycée P.E Martin
CHAPITRE C : LES BOUCLES
BOUCLE « TANT QUE »
La résolution de certains problèmes conduit parfois à répéter un bloc d’instructions tant qu’une condition
est vérifiée ( termes d'une suites par exemple). C'est une itération conditionnelle.
Algorithme (langage usuel)
Tant que condition vérifiée faire
bloc d'instruction1
Programme (langage Python)
while condition vérifiée :
bloc d'instruction1
Fin tant que
Comme pour les tests
- Les « : » associés sont obligatoires et correspondent au mot « faire »
- Le décalage (indentation) du début de ligne est obligatoire :
NB : while(1) boucle à l'infinie (1 est toujours vrai) . Attention à son utilisation !!
En cas de plantage de Python à cause d'une boucle infinie, stopper le programme avec Ctrl F2 .
C1: Révisions.
- Deviner ce que fait le petit programme suivant. Vérifier
table=0
while table <=90:
print (table)
table=table+9
- Le modifier pour afficher les multiples de 11 inférieurs à 200.
- Deviner l'effet la modification ci-contre. Vérifier
table=0
while table <=90:
print (table)
table=table+9
- Faire un programme qui affiche « 0 fois 11 vaut 0 », puis « 1 fois 11 vaut 11 » etc jusqu'à 198.
Ex C2 : Punition.
Faire un programme écrivant 100 fois « Je ne copie pas sur mon voisin », en numérotant les lignes.
Ex C3 : Rebonds
Une balle tombe d'une hauteur de 2 m et rebondi de 90 % de sa hauteur de chute.
Elle ne rebondit plus si elle chute de 2 cm soit 0,02 m ou moins.
Faire un programme affichant le nombre de rebonds de la balle et la hauteur des rebonds successifs.
Appeler le professeur pour validation
Ex C4 * : Fibonacci (pour les rapides)
La suite de Fibonacci est définie par u 0 =1 u 1 =1 puis u n =u n−1 +u n−2 pour tout entier n 2.
Faire afficher la listes des termes de cette suite, inférieurs à 50
Informatique et sciences du numérique
Lycée P.E Martin
LA BOUCLE « POUR»
La fonction range() de Python produit une liste d'entiers. On peut préciser un, deux ou trois
paramètres : range(fin), range (début,fin) et range (début,fin,pas). Tester les instructions suivantes.
>>>list( range(10))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# Par défaut range(n) va de 0 à n-1 avec un pas de 1
>>> list(range(270, 0, -30) )
# On va de 270 à 0 exclu. Le pas est ici -30.
[270, 240, 210, 180, 150, 120, 90, 60, 30]
Dans un problème on peut connaître à l'avance le nombre d'itérations ( tableau de valeurs d'une
fonction, …). Cette une itération bornée.
Algorithme (langage usuel)
Pour i variant de 1 à n faire
Programme (langage Python)
for i in range (1,n+1 ) :
bloc d'instruction
bloc d'instruction
Fin Pour
NB : Comme la borne supérieure est exclue, compter de 1 à n se fait avec range(1, n+1)
La boucle « for » est un cas particulier de boucle « while i <N» avec i= i+1 dans le bloc d'instruction.
Ex C5 : Calendrier
Écrire un programme qui affiche «1 janvier », jusqu'à « 31 janvier »
Ex C6 : Tables de multiplications
Écrire un programme qui affiche les tables de multiplications jusqu'à 10
sous la forme « 1 x 1 = 1 » jusqu'à « 10 x 10 = 100 » . Attention il faudra imbriquer deux boucles.
Ex C7 : Somme de carrés
Faire afficher la liste et la somme des carrés des entiers jusqu'à 100
sous la forme « 0²+1²+2²+.......+100² = ….....
Appeler le professeur pour validation
Ex C8* : Premiers (pour les rapides)
Écrire un programme qui affiche les 100 premiers nombres premiers
Opération utile : n%k donne le reste de la division de n par k.
Ainsi si n%2 vaut 0, c'est que n est pair, et si n%k vaut 0 alors k divise n.
Article sur les nombres premiers (wikipédia).
« Un nombre premier est un entier naturel qui admet exactement deux diviseurs distincts entiers et positifs (qui
sont alors 1 et lui-même). Cette définition exclut 1, qui n’a qu’un seul diviseur entier positif.
Par opposition, un nombre non nul produit de deux nombres entiers différents de 1 est dit composé.
Par exemple 6 = 2 x 3 est composé, tout comme 21 = 3 x7, mais 11 est premier car 1 et 11 sont les seuls diviseurs
de 11. Les nombres 0 et 1 ne sont ni premiers ni composés. »
Informatique et sciences du numérique
Lycée P.E Martin
Informatique et sciences du numérique
Lycée P.E Martin
Éléments de réponses
Si vous êtes bloqués ou pour comparer
Boucles While
C1 Révisions
C2 Punition
table=0
i=0
i=0
# compteur
# compteur
while i <=100:
print (i,'je ne copie pas sur mon voisin')
i=i+1
while table <=200:
print (i,'fois 11 vaut ',table)
table=table+11
i=i+1
C3 Rebonds
C4 Fibonacci
hauteur=200 # initialisations
rebond=0
U1,U2=1,1 # initialisation, premiers termes
print("U1=",U1," et U2=",U2)
while 0.9*hauteur>2: # il y aura rebond s'il dépasse 2cm
rebond=rebond+1
hauteur=0.9*hauteur
print("rebond n° ", rebond," :", hauteur)
Un=0
i=3
# terme à calculer
# indice du terme à calculer
while U1+U2<50: # tant que Un <50
Un=U1+U2
# Calcul et affichage de Un
print("U",i,"= ",Un)
U1=U2
U2=Un
i=i+1
# Préparation du calcul suivant
Boucles For
C5 : Calendrier
for i in range(1,32):
print(i,' Janvier')
C6 :Tables de multiplications
for i in range(1,11):
for j in range( 1,11):
print(i,'x',j,'=',i*j)
C7 : Somme de carrés
Somme=0
for i in range(0,101):
print(' +',i,'²',end='')
somme=somme+i**2
print('=',somme)
C8 : premiers
for n in range(2,101):
npremier=True
for k in range(2,n):
if n%k==0:
npremier=False
if npremier==True:
print(n,'est premier')
# on teste les entier de 2 à 100
# n est à priori premier
# On teste si n a des diviseurs entre 2 et n-1. On peut se contenter d'aller jusqu'à
# si oui il n'est pas premier
# Affichage
√n