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

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

Pour compteur allant de début à fin faire
instruction 1
instruction 2
Fin Pour

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

Algo 1

Pour b allant de 0 à 5 faire :
a prend 3*b
Afficher a
Fin Pour
  1. Quelle variable joue le rôle de compteur ?

  2. Que fait cet algorithme ?

Exercice 2

Algo 2

u prend 10
Pour i allant de 1 à 4 faire :
u prend u+4
Fin Pour
Afficher u
  1. Quelle variable joue le rôle de compteur ?

  2. Quel sera l’affichage lors de l’exécution de cet algorithme ?

  3. Que faut-il modifier pour obtenir l’affichage de toutes valeurs de u calculées ?

Exercice 3

Algo 3

S prend 0
Pour a allant de 1 à 5 faire :
S prend S+a
Fin Pour
Afficher S
  1. Quelle variable joue le rôle de compteur ?

  2. 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é.

  3. 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

  1. Recopier le script suivant dans l’éditeur puis exécuter celui-ci.

  2. Quelle est la liste que génère la fonction range ?

    1
    2
    for  k in  range(11) :
        print(k)
    

Tester votre code Python ci-dessous avec trinket.io

Exercice 2

  1. Recopier le script suivant dans l’éditeur puis exécuter celui-ci.

  2. Quelle est la liste que génère la fonction range ?

    1
    2
    for  k in  range(74,90) :
       print(k)
    

Tester votre code Python ci-dessous avec trinket.io

Exercice 3

  1. Recopier le script suivant dans l’éditeur puis exécuter celui-ci.

  2. Quelle est la liste que génère la fonction range ?

    1
    2
    for  k in  range(3,17,2) :
       print(k)
    

Tester votre code Python ci-dessous avec trinket.io

Exercice 4

  1. Recopier le script suivant dans l’éditeur et exécuter celui-ci

  2. 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")
    

Tester votre code Python ci-dessous avec trinket.io

Exercice 5

  1. Recopier le script suivant dans l’éditeur.

  2. Exécuter celui-ci et analyser l’erreur

    1
    2
    for  k in  range(0,10,0.5) :
        print(k)
    

Tester votre code Python ci-dessous avec trinket.io

Note

Pour corriger cette erreur,on va utiliser la bibliothèque numpy et sa fonction arange qui est plus complète.

  1. Recopier le script suivant dans l’éditeur.

  2. 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,10,0.5) :
        print(k)
    

Tester votre code Python ci-dessous avec trinket.io

Exercice 6

Écrire un script qui affiche le table de multiplication de 7 sous cette forme : ex6

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 : ex7

Tester votre code Python ci-dessous avec trinket.io

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).

  1. Recopier le script suivant dans l’éditeur.

  2. 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.

Tester votre code Python ci-dessous avec trinket.io

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

  1. Recopier le script suivant dans l’éditeur.

  2. 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()

Tester votre code Python ci-dessous avec trinket.io

La boucle while

à venir…