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
© Copyright 2024 ExpyDoc