Les boucles¶
Deux types de boucles sont très utilisés :
les boucles bornées (ou inconditionnelles ) avec for
les boucles non bornées (ou conditionnelles ) avec while
La boucle for¶
Deux types de boucles sont très utilisés :
les boucles bornées (ou inconditionnelles ) avec for
les boucles non bornées (ou conditionnelles ) avec while
Important
En algorithmique on peut être amené à répéter une instruction ou un bloc d’instruction. Lorsque l’on sait combien de fois on souhaite faire cette répétition alors on utilise un bloc Pour avec une variable qui sert de compteur.
Voici la syntaxe du bloc Pour en algorithmique
Avant de passer à la traduction sur Python, je vous propose 3 exercices pour bien comprendre la logique de ce type de boucle.
Exercices sans Python¶
Exercice 1¶
Quelle variable joue le rôle de compteur ?
Que fait cet algorithme ?
Exercice 2¶
Quelle variable joue le rôle de compteur ?
Quel sera l’affichage lors de l’exécution de cet algorithme ?
Que faut-il modifier pour obtenir l’affichage de toutes valeurs de u calculées ?
Exercice 3¶
Quelle variable joue le rôle de compteur ?
Quel sera l’affichage lors de l’exécution de cet algorithme ? ( on pourra utiliser le tableau suivant que l’on complétera autant que nécessaire )
a
None
1
…
S
0
1
…
Dans le tableau None signifie qu’au départ de l’algorithme la variable a n’a pas encore été affecté.
Seriez-vous modifier cet algorithme pour qu’il affiche la somme des 10 premiers carrés parfaits ?
Traduction en langage Python¶
Important
En Python la boucle « pour » se traduit par une instruction qui s’appelle for. La particularité c’est que la boucle for est conçue pour parcourir une liste et voici sa syntaxe :
1 2 3 4 for compteur in liste : instruction 1 instruction 2 ...
Danger
- Il ne faut pas jamais oublier les deux points à la fin de la première ligne ainsi que l’indentation :
les deux points indiquent le début du bloc for.
La fin de l’indentation indique la fin du bloc for.
Exemple¶
Voici la traduction de l’algorithme 1 :
1 2 3 for b in [0,1,2,3,4,5] : a=3*b print(a)Note
Si jamais le compteur devait parcourir tous les entiers de 0 à 1000 cela risque d’être très long à taper dans l’éditeur ! Heureusement, il existe des fonctions qui permettent de générer directement les listes dont nous avons besoin. Afin de vous les approprier, veuillez étudier les quelques exercices ci-dessous.
Exercices avec Python¶
Exercice 1¶
Recopier le script suivant dans l’éditeur puis exécuter celui-ci.
Quelle est la liste que génère la fonction range ?
1 2
for k in range(11) : print(k)
Exercice 2¶
Recopier le script suivant dans l’éditeur puis exécuter celui-ci.
Quelle est la liste que génère la fonction range ?
1 2
for k in range(74,90) : print(k)
Exercice 3¶
Recopier le script suivant dans l’éditeur puis exécuter celui-ci.
Quelle est la liste que génère la fonction range ?
1 2
for k in range(3,17,2) : print(k)
Exercice 4¶
Recopier le script suivant dans l’éditeur et exécuter celui-ci
Que fait ce script ?
1 2 3 4 5 6
def cp(x): z=x**2 return(z) for k in range(0,13) : print(cp(k),end="\t")
Exercice 5¶
Recopier le script suivant dans l’éditeur.
Exécuter celui-ci et analyser l’erreur
1 2
for k in range(0,10,0.5) : print(k)
Note
Pour corriger cette erreur,on va utiliser la bibliothèque numpy et sa fonction arange qui est plus complète.
Recopier le script suivant dans l’éditeur.
Exécuter celui-ci et expliquer ce qu’apporte la fonction arange
1 2 3
import numpy as np for k in np.arange(0.0,10,0.5) : print(k)
Exercice 6¶
Écrire un script qui affiche le table de multiplication de 7 sous cette forme :
Exercice 7¶
Écrire un script qui affiche « le tableau de valeurs » d’une fonction g définie par g(x)=x²-3x+1 sur l’intervalle [-5;4] avec un pas de 0.25 sous cette forme :
Exercice 8¶
Note
Dans cet exercice on va apprendre à tracer la représentation graphique d’une fonction avec la bibliothèque matplotlib et toutes ses « méthodes » pyplot ( pour faire simple une méthode est une fonction qui s’applique à une catégorie d’objets).
Recopier le script suivant dans l’éditeur.
Exécuter celui-ci et faites quelques modifications pour bien comprendre les commentaires.
1 2 3 4 5 6 7 8 9 10 11 12 13 | import numpy as np
import matplotlib.pyplot as plt
#plt.grid() # cette fonction affiche la grille
plt.title("Titre du graphique") #cette fonction affiche le titre : modifiez le pour voir !
plt.xlabel("abscisses") # cette fonction affiche une légende sur l'axe des abscisses :: modifiez la pour voir !
plt.ylabel("ordonnées") # cette fonction affiche une légende sur l'axe des ordonnées :: modifiez la pour voir !
for x in np.arange(-6,4.1,0.5): # vous pouvez modifier le pas pour voir ainsi que les bornes
y=x**2
plt.plot(x,y,'b+') # cette fonction crée la listes des points de coordonnées (x,y) et va le dessiner en bleu (b) avec une croix (+)
plt.show() # cette fonction affiche le graphique qui a été crée.
|
Note
Dans l’exercice qui suit on va améliorer la méthode de tracé sans utiliser la boucle for grâce à la fonction linspace de la bibiliothèque numpy .
Cette fonction génère une liste sur laquelle on peut directement faire tourner une fonction qui s’appliquera automatiquement à chacun des éléments de la liste.
Exercice 9¶
Recopier le script suivant dans l’éditeur.
Exécuter celui-ci et faites quelques modifications pour bien comprendre les commentaires.
1 2 3 4 5 6 7 8 9 10 11 12 13 | import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(-10,20,11) # la fonction linspace génère une liste de 11 flottants de l'intervalle [-10,10]
print(x) # avec cet affichage on voit la liste fabriquée par linspace
y=x**3-20*x**2+8*x+1250 # on effectue directement les calculs de tous les termes de la liste x
print(y) # on visualise la nouvelle liste obtenue
plt.plot(x, y)
plt.grid()
plt.title("Un polynôme du troisième degré")
plt.xlabel("axe des abscisses")
plt.ylabel("axe des ordonnées")
plt.show()
|
La boucle while¶
à venir…