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'