Ajoutez une boucle

Comment faire pour rĂ©aliser une mĂȘme action plusieurs fois ? 

Dans le cas de notre systĂšme, nous souhaitons que l’utilisateur dĂ©place son joueur pour terminer le jeu, sans connaĂźtre les dĂ©placements ni le nombre de dĂ©placements Ă  l’avance.

Laissez-moi vous prĂ©senter les boucles ! 

Une boucle est une structure qui rĂ©pĂšte la mĂȘme action plusieurs fois de suite. Exactement comme lorsque vous Ă©coutez un morceau de musique en boucle.

Nous pouvons faire la mĂȘme chose dans un algorithme. C'est ce qu'on appelle l'itĂ©ration, qui nous permet « d'Ă©crire du code une fois » et de « l'exĂ©cuter plusieurs fois ». Dans la programmation, on parle de boucle !

Dans la plupart des langages de programmation, nous utilisons principalement deux types de boucles : la boucle Tant que (en anglais, while  ) et la boucle Pour  (en anglais, for  ). 

  • La boucleTant que  est utilisĂ©e pour exĂ©cuter le corps de la boucle jusqu'Ă  ce qu'une condition spĂ©cifique soit fausse. Nous appliquons principalement cette idĂ©e lorsque nous ne savons pas combien de fois la boucle s'exĂ©cutera.

  • Nous utilisons la boucle  Pour  lorsque nous savons combien de fois la boucle s'exĂ©cutera.  En d'autres termes, la boucle  Pour  nous aide Ă  exĂ©cuter un nombre d'Ă©tapes dĂ©fini par des instructions.

Utilisez la boucle Tant que

La boucle  Tant que  se compose :

  • d'une condition de boucle ;

  • d'un bloc de code en tant que corps de boucle, et qui contient les instructions Ă  exĂ©cuter itĂ©rativement. 

ConcrÚtement, la condition de la boucle est évaluée et si elle est vraie, le code dans le corps de la boucle sera exécuté. Ce processus se répÚte jusqu'à ce que la condition de la boucle devienne fausse.

Ainsi, nous pouvons naĂŻvement dire que la boucle while peut ĂȘtre considĂ©rĂ©e comme une instruction  Si  rĂ©pĂ©titive.

Voici le pseudo-code qui permet de dĂ©placer le joueur dans le labyrinthe tant qu’il n’a pas atteint la case d’arrivĂ©e ; nous utiliserons la fonction dĂ©placement créée dans le chapitre prĂ©cĂ©dent :  

Algorithme boucle_tant_que
Variable
    joueur_position_x ← 0 : ENTIER
    joueur_position_y ← 0 : ENTIER
    arrivĂ©e_position_x ← 5 : ENTIER
    arrivĂ©e_position_y ← 5 : ENTIER
Début
    Tant Que joueur_position_x != arrivée_position_x ET joueur_position_y != arrivée_position_y :
        déplacement(joueur_position_x, joueur_position_y)
    Fin Tant Que
Fin

GrĂące Ă  cette boucle, vous n’avez plus besoin d’écrire manuellement dans l’algorithme chaque dĂ©placement du joueur.

Vous vous dites sĂ»rement que c’est super gĂ©nial et super simple. Et c’est vrai, c’est le cas, mais il y a un “MAIS”.

Que se passe-t-il si vous demandez à lire en boucle une chanson ?

Elle pourra ĂȘtre jouĂ©e, potentiellement, jusqu’à la nuit des temps, car l’ordinateur ne sait pas quand il doit s’arrĂȘter. C’est ce que nous appelons une boucle infinie ! Ainsi, si la condition de la boucle est toujours vraie, votre programme sera bloquĂ© dans la boucle et ne s’arrĂȘtera jamais ! 

Utilisez la boucle “Pour”

À l'intĂ©rieur de la boucle  Pour  , nous utilisons une variable de boucle pour contrĂŽler l'exĂ©cution de la boucle, oĂč la valeur initiale de la variable dĂ©cide du point de dĂ©part.

  • Donc, nous commençons par initialiser la variable de boucle Ă  une certaine valeur.

  • Nous vĂ©rifions ensuite si la condition de boucle est vraie ou non. 

  • Si la condition de la boucle est vraie, le code Ă  l'intĂ©rieur du corps de la boucle s'exĂ©cutera. 

  • Enfin, nous mettons Ă  jour la variable de boucle et passons Ă  l'itĂ©ration suivante. Cette Ă©tape sera rĂ©pĂ©tĂ©e jusqu'Ă  ce que la condition de boucle devienne fausse.

Plus concrÚtement, la boucle  Pour  nécessite 3 instructions pour itérer :

  1. Initialisation de la variable de boucle.

  2. Condition d’itĂ©ration.

  3. Mise Ă  jour de la variable de boucle.

Nous pouvons par exemple imaginer que l’utilisateur doit exactement dĂ©placer le joueur 10 fois.

Nous aurons ainsi le pseudo-code suivant :

Algorithme boucle_pour
Variable
    joueur_position_x ← 0 : ENTIER
    joueur_position_y ← 0 : ENTIER
    max_dĂ©placement ← 10 : ENTIER
Début
    Pour i ← 0 ; i < max_dĂ©placement; i = i + 1
        déplacement(joueur_position_x, joueur_position_y)
    Fin Pour
Fin

Dans ce pseudo-code, nous avons initialisĂ© la variable de boucle  i  Ă  0, ensuite la condition de boucle permet de spĂ©cifier qu’il faut itĂ©rer le bloc de code tant que la variable  i  est infĂ©rieure au maximum de dĂ©placements, et pour terminer nous mettons Ă  jour la variable  i  en ajoutant 1.

Vous pouvez simplifier la ligne concernant la commande  Pour  de cette maniÚre :

Pour i allant de 0 jusqu’à max_dĂ©placement

À vous de jouer

Contexte

Actuellement dans notre labyrinthe, nous sommes obligĂ©s de prĂ©ciser Ă  l’avance chaque dĂ©placement du joueur dans l’algorithme. Nous aimerions pouvoir laisser Ă  l’utilisateur le choix des dĂ©placements du joueur. Il va donc falloir utiliser une  boucle pour demander Ă  l’utilisateur quels dĂ©placements il souhaite faire.

Consigne

Vous devez crĂ©er un algorithme qui permet de dĂ©placer le joueur Ă  l’aide de la fonction  dĂ©placement  créée prĂ©cĂ©demment, de la case de dĂ©part Ă  l’arrivĂ©e. Attention, le joueur aura au maximum 15 dĂ©placements. Si le nombre de dĂ©placements dĂ©passe 15, le joueur perd.

Votre objectif :

  1. Créer une boucle qui permet de déplacer le joueur en prenant en compte la position du joueur et le nombre de déplacements.

  2. Créer ensuite une structure conditionnelle pour la boucle, pour afficher si le joueur a gagné ou perdu.

Vérifiez votre travail

Voici le résultat à obtenir à l'issue de l'exercice :

Algorithme Labyrinthe
Variable
    joueur_position_x ← 0 : ENTIER
    joueur_position_y ← 0 : ENTIER
    arrivĂ©e_position_x ← 5 : ENTIER
    arrivĂ©e_position_y ← 5 : ENTIER
    dĂ©placement ← 0 : ENTIER
    max_dĂ©placement ← 15 : ENTIER
Début
    Tant Que joueur_position_x != arrivée_position_x ET joueur_position_y != arrivée_position_y ET déplacement < 15 :
        déplacement(joueur_position_x, joueur_position_y)
        déplacement = déplacement + 1
    Fin Tant Que
    Si joueur_position_x == arrivée_position_x ET joueur_position_y == arrivée_position_y :
        afficher “Vous avez gagnĂ© !”
    Sinon
        afficher “Vous avez perdu !”
    Fin Si
Fin

En résumé 

  • Pour rĂ©soudre un problĂšme, nous rĂ©pĂ©tons parfois une instruction de code particuliĂšre plusieurs fois jusqu'Ă  ce qu'une condition spĂ©cifique soit satisfaite ; c’est ce qu’on appelle une boucle.

  • Il existe deux principaux types de boucles dans la programmation, la boucle Tant que et la boucle Pour  .

  • La boucle Tant que est utilisĂ©e pour rĂ©pĂ©ter une section de code un nombre inconnu de fois, jusqu'Ă  ce qu'une condition spĂ©cifique soit remplie.

  • La boucle Pour est utilisĂ©e pour rĂ©pĂ©ter une section de code un nombre de fois connu.

Nous avions vu dans le premier chapitre de cette partie comment classer les données avec des types de données simples. Nous allons maintenant nous intéresser à des données complexes. On y va !  

Et si vous obteniez un diplĂŽme OpenClassrooms ?
  • Formations jusqu’à 100 % financĂ©es
  • Date de dĂ©but flexible
  • Projets professionnalisants
  • Mentorat individuel
Trouvez la formation et le financement faits pour vous