Boucles.

Introduction

En programmation les répétitions sont extrêmement importantes, les boucles for et while sont un des moyens permettant de la faire mais ils ne sont pas obligatoires. Les vieux langages utilisaient une instruction dite goto (souvent considéré comme le mal) et le langages fonctionnelles utilisent la récursivité (programme de terminale).

Boucle for

En python la syntaxe de la boucle for est assez différente des standards hérités du C, si on veut répéter n fois une opération elle se fait de cette manière :



			

La fonction range(début,fin,pas) génère une suite commençant au début et se terminant juste avant fin. De façon abrégée range(n) = range(0,n,1) et si le pas n'est pas définit alors par défaut il vaut 1.

Exemple

 


		
	

Nous verrons au moment des listes que le for est "fort" pratique en python.

Q.C.M.

Le code suivant va afficher combien de nombres ?


					



Q.C.M.

On reprend le code précédent. Le dernier nombre affiché sera ?





Q.C.M.

Le code suivant va afficher combien de nombres ?


					



Q.C.M.

On reprend le code précédent. La dernière paire de nombres sera ? :





Boucle while

La boucle while est à utiliser quand on ne sait pas à l'avance le nombre de boucle à effectuer, même si l'utilisation du while permet de se passer du for il est déconseillé de la faire pour au moins deux raisons :

La boucle while s'utilise de cette manière :


				
Exemple

Comme annoncé plus haut la boucle for est optionnelle, par exemple :


					

se code avec le while ainsi :


					

Le code est plus long (deux lignes de plus) avec le while, oui ce n'est pas beaucoup mais comme il y a beaucoup de boucles dans du code, à force la différence devient importante.

La variable i sert uniquement pour la répétition, c'est clairement indiqué par le for et pas par le while (en effet i est définit en dehors de la boucle). En plus on sait de suite les valeurs prises par i.

Enfin si on a des boucles imbriquées les effets s'ajoutent par exemple les deux codes suivants donnent les tables de multiplications (en binaire), l'un des codes est clairement plus simple à comprendre.


					

				

break, continue.

L'instruction break permet de sortir d'une boucle, l'instruction continue permet de passer à l'étape suivante.

Exemple

				

			
Exercice
  1. Écrire un script (le plus court possible) qui va afficher "2 3 4 5 6 7 8 9 10" à l'écran (en ligne ou en colonne qu'importe).
  2. Écrire un script (le plus court possible) qui va afficher "0 10 20 30 40 50 60 70" à l'écran (en ligne ou en colonne qu'importe).
  3. Écrire un script (le plus court possible) qui va afficher "69 64 59 54 49 44 39 34" à l'écran (en ligne ou en colonne qu'importe).
  4. Sans taper le code, donner ce que va afficher le programme suivant :
    
    					
  5. Faire un programme qui va demander un nombre entier naturel et afficher tous les nombres entiers naturels plus petits ou égaux, par exemple si on donne 5 il doit afficher 0 1 2 3 4 5.
  6. Faire un programme qui va demander un nombre entier naturel et afficher tous les nombres entiers naturels plus petits ou égaux mais dans l’ordre inverse, par exemple si on donne 5 il doit afficher 5 4 3 2 1 0.
  7. Faire un programme qui va demander un nombre entier naturel et afficher tous les nombres entiers naturels plus petits ou égaux et pairs, par exemple si on donne 5 il doit afficher 0 2 4.
  8. Faire un programme qui demande un nombre et affiche la table de multiplication du nombre. Par exemple si on donne 7 le programme doit afficher 0 * 7 = 0 ; 0 * 1 = 7 ;....
  9. On donne l'algorigramme suivant :
    1. Repérer l'endroit de la boucle.
    2. Faire le programme qui correspond avec une boucle while.
    3. Peut on savoir combien de fois la boucle va se faire (en fonction des paramètres) ? Faire une boucle for.
  10. On donne l'algorigramme suivant :
    1. Repérer l'endroit de la boucle.
    2. Faire le programme qui correspond avec une boucle while.
    3. Peut on savoir combien de fois la boucle va se faire (en fonction des paramètres) ?
  11. On donne l'algorigramme suivant :
    1. Repérer l'endroit de la boucle.
    2. Faire le programme qui correspond avec une boucle while.
    3. Peut on savoir combien de fois la boucle va se faire (en fonction des paramètres) ?
  12. On donne l'algorigramme suivant :
    1. Repérer l'endroit de la boucle.
    2. Faire le programme qui correspond avec une boucle while.
    3. Peut on savoir combien de fois la boucle va se faire (en fonction des paramètres) ? Faire alors le même algorithme mais avec une boucle for.
  13. On donne l'algorigramme suivant :
    1. Repérer l'endroit de la boucle.
    2. Faire le programme qui correspond avec une boucle while.
    3. Peut on savoir combien de fois la boucle va se faire (en fonction des paramètres) ?
  14. Faire un programme qui demande un nombre et qui calcul la factorielle d'un nombre demandé en utilisant le for. Exemple si on donne 5 le programme affiche 120.
  15. Même chose que précédemment mais en utilisant le while. Quelle version faut-il privilégier ?
  16. Considérons la suite de nombre suivante 1,2,4,8,16,32,64... sans utiliser les fonction puissances faire un programme qui demande un nombre entier et retourne le nombre de la suite qui correspond. Par exemple 0 affiche 1, 1 affiche 2, 2 affiche 4,...
  17. Faire un programme qui demande un nombre et affiche une pyramide de base ce nombre. Par exemple si on donne 5 le programme doit afficher :
    *
    **
    ***
    ****
    *****
  18. Faire un programme qui calcul la moyenne d'une série de notes, au début le programme doit demander des notes tant que la note données n'est pas négative, puis calcul la moyenne. Exemple 4 puis 8 puis -1 donne 6.
  19. Faire un programme qui demande un nombre et qui retourne si le nombre est premier. Par exemple si on donne 8 le programme doit retourner "8 n'est pas premier.".
  20. On donne l'algorigramme suivant :
    1. Repérer la boucle dans le programme.
    2. Trouver sur internet la tacon d'obtenir un entier aléatoire entre 0 et 1000.
    3. Coder le jeu.
Solutions