Archives Wild Code School
JavaScript

đŸ‘©â€đŸ« JS Basics 08 - Les boucles

QuĂȘte 10 sur 11 · 6 images archivĂ©es

Objectifs

  • CrĂ©er des boucles en JavaScript
  • Parcourir des tableaux

Pré-requis

Avoir validĂ© les quĂȘtes suivantes :

Introduction

Comme mentionnĂ© dans les quĂȘtes prĂ©cĂ©dentes, l'un des grands principes en dĂ©veloppement est de ne pas se rĂ©pĂ©ter (en anglais "D.R.Y.", comme Don't Repeat Yourself). Pour Ă©viter d'Ă©crire le mĂȘme code encore et encore, nous pouvons utiliser quelque chose appelĂ© boucle.

Commençons!

Escaliers

Sommaire

Qu'est-ce qu'une boucle ?

La boucle de la course

Une boucle est un moyen d'exĂ©cuter le mĂȘme code plusieurs fois jusqu'Ă  ce qu'une certaine condition soit remplie.

Par exemple, imagine une voiture sur une piste de course, la voiture doit faire x fois le tour de la piste avant d'atteindre la fin du parcours.

Exemple d'une boucle:

javascript
for (let i = 0; i < 5; i++) {
  console.log("Turn number " + i);
}

/*
Turn number 0
Turn number 1
Turn number 2
Turn number 3
Turn number 4
*/

Différents types de boucles

image

La boucle "for"

Boucle for

for nécessite 3 paramÚtres pour fonctionner:

  • Le premier est une variable appelĂ©e itĂ©rateur, que nous devons crĂ©er et fixer Ă  une valeur (ici nous voulons partir de zĂ©ro). Cette variable sera notre "compteur".
  • La seconde est la condition que nous voulons vĂ©rifier avant chaque tour de boucle (itĂ©ration).
  • Et la troisiĂšme est l'incrĂ©ment. L'incrĂ©ment sera exĂ©cutĂ© Ă  la fin de chaque boucle et, gĂ©nĂ©ralement, nous ajoutons un Ă  l'itĂ©rateur.

Voici un exemple:

javascript
for (let i = 0; i < 5; i++) {
  console.log("Turn number " + i);
}

Dans cet exemple, nous créons d'abord la variable i qui est fixée à la valeur zero.

javascript
let i = 0

Par convention, nous appelons souvent cette variable "i" (signifie itérateur ou index)

Ensuite, nous voulons que les instructions dans la boucle soient répétées tant qu'une certaine condition est vérifiée. Dans ce cas, nous voulons faire une boucle jusqu'à ce que la valeur de "i" atteigne 5 (donc cinq fois).

javascript
i < 5

Pour chaque tour de boucle, nous augmentons la valeur de "i" de un (afin que la boucle s'arrĂȘte Ă  un moment donnĂ©).

javascript
i++

De cette façon, la boucle partira de 0, et vérifiera à chaque tour si "i" est inférieur à 5.

Si Oui ⇒ Elle exĂ©cutera le code et augmentera la valeur de un. Et ensuite, on recommence.

Si Non ⇒ la boucle s'arrĂȘte.

replit
https://repl.it/@WildCodeSchool/FickleGrownGlobalarrays
Info

Clique sur "Play" pour lancer le code. Tu peux Ă©galement modifier le code et tester diffĂ©rents scĂ©narios par toi-mĂȘme.

🔬 Fais une expĂ©rience

Crée une boucle for qui affiche "Number" + la valeur de l'itérateur 10 fois dans la console.

replit
https://repl.it/@WildCodeSchool/Empty-project
Voir la solution
javascript
for (let i = 0; i < 10; i++) {
  console.log(`Number ${i}`);
}

Parcourir un tableau

Tu peux utiliser une boucle pour parcourir un tableau :

javascript
const fruits = ["Apple", "Peach", "Banana"];

for (let i = 0; i < fruits.length; i ++) {
  console.log(fruits[i]);
}

Ici, tu peux voir que nous avons un tableau qui contient 3 éléments.

Nous crĂ©ons une boucle for, dont l'itĂ©rateur va de 0 Ă  fruits.length - 1 (soit 2, il faut bien comprendre que c'est l'opĂ©rateur < qui est utilisĂ© ici, donc i < fruits.length retourne false quand i atteint 3 et la boucle s'arrĂȘte).

Au premier tour, elle affichera fruits[0], puis fruits[1] et enfin fruits[2].

replit
https://repl.it/@WildCodeSchool/ArtisticChocolateBusinesssoftware

🔬 Fais une expĂ©rience

Maintenant, c'est à ton tour ! Essaye de parcourir avec une boucle le tableau suivant et d'afficher chaque élément dans la console.

replit
https://repl.it/@WildCodeSchool/ArtisticChocolateBusinesssoftware-2
Voir la solution
javascript
for (let i = 0; i < animals.length; i++) {
  console.log(animals[i]);
}

Les boucles "while" et "do...while"

Nous avons vu la boucle for. Il existe d'autres façons de créer des boucles.

image

While

Pour utiliser une boucle while, tu dois créer l'itérateur avant la déclaration de la boucle.

Passe la condition que tu veux remplir (c'est Ă  dire i < 5) dans les parenthĂšses ().

Avec une boucle while et do...while, il faut faire attention de ne pas oublier d'incrémenter (augmenter) la valeur de i. Sinon, cela pourrait provoquer une boucle infinie. Si i n'augmente pas, il n'atteint jamais 5, donc la boucle continue et ton ordinateur peut planter.

javascript
let i = 0; 

while (i < 5) {
  console.log(`turn number ${i}`);
  i++;
}

🔬 Fais une expĂ©rience

Essaye d'Ă©crire une boucle while, qui commence Ă  10 et affiche le nombre de 10 Ă  0 - donc cette fois i doit ĂȘtre dĂ©crĂ©mentĂ© (diminuer).

replit
https://repl.it/@LonardFlachs/Empty-project
Voir la solution
javascript
let i = 10; 

while (i >= 0) {
  console.log(`turn number ${i}`);
  i--;
}

Do...While

do...while est similaire à while mais l'action est exécutée avant de vérifier la condition (la boucle fait donc toujours au moins un tour).

replit
https://repl.it/@WildCodeSchool/ShadowyTalkativeOutput

Que faire en cas de boucle infinie ?

image Si tu as lancé une boucle infinie par erreur, ferme immédiatement l'onglet de ton navigateur pour y mettre fin.

Tu peux également utiliser le gestionnaire de tùches chrome pour finir le processus ou utiliser le débogueur du navigateur.

↗
Comment mettre en pause une boucle JavaScript infinie dans Chrome
dev.to
▶
Vidéo YouTube
https://youtu.be/haFYwEBjaTo

Portée (scope) / Contexte

En Javascript, dÚs que l'on écrit du code, le contexte est trÚs important : on ne peut pas utiliser une variable déclarée à l'intérieur d'une boucle en dehors de cette derniÚre.

Les accolades { } définissent un contexte local.

Exemple 1 :

javascript
let sum = 0;

for (let i = 0; i < 10; i++) {
  const name = "Pierre";
  console.log(name + " saw " + sum + " StarWars movies.");
  sum++;
  // fonctionne correctement dans le contexte de la boucle
}

console.log(sum);
// tu verras la valeur de sum
   
console.log(name);
// tu verras une erreur 'reference error: name is not defined'

Par exemple, dans ce cas, la variable name sera disponible uniquement dans le contexte de la boucle (à l'intérieur des accolades {}) et elle ne sera pas disponible en dehors.

La variable sum est disponible dans toute la boucle et en dehors, car elle a été créée en dehors du contexte de la boucle.

Si tu crées une variable à l'intérieur d'accolades {}, cette variable sera disponible uniquement à l'intérieur de ces accolades.

Sachant cela maintenant, nous devrions ĂȘtre capables de crĂ©er des boucles qui fonctionnent pour nos projets en tenant compte du contexte.

Une vidéo géniale à propos du scope:

▶
Vidéo YouTube
https://www.youtube.com/watch?v=iJKkZA215tQ

Résumé

  • On peut utiliser des boucles en Javascript pour rĂ©pĂ©ter l'exĂ©cution d'un bloc de code plusieurs fois
  • Il y a diffĂ©rentes boucles, "for" est la plus utilisĂ©e mais il y a aussi "while" et "do...while".
  • Faire des erreurs dans tes boucles peut entraĂźner une boucle infinie qui peut faire planter ton programme.

Challenge

Es-tu prĂȘt Ă  relever un dĂ©fi ?

Ton objectif est de décoder un message en utilisant les boucles :

javascript
// Use a loop to remove the 'X' and use console.log to reveal the message 
const hiddenMessage = ["X", "X", "X", "X", "W", "X", "E",  "X", "X", "X", "X", "X", "L", "X", "X", "X", "X", "X", "X", "X", "X", "X", "X", "X", "X", "X", "X", "X", "X", "X", "X", "X", "X", "L", "X", "X", "X", "X", "X", "X", "X", "X", "X", " ","X", "X", "X", "X", "X", "X", "X", "X", "D", "X", "X", "X", "X", "X", "X", "X", "X", "X", "X", "X", "X", "X", "X", "X", "X", "X", "X", "X", "X", "X", "X", "X", "X", "X", "X", "X", "X", "X", "X", "X", "X", "X", "O", "X", "X", "X", "X", "X", "X", "N", "X", "X", "X", "X", "E", "X", "X", "X", "X", "X", "X", "X", "X", "X", "X", " ", "X", "!", "X"];

Ici, nous avons un tableau avec beaucoup de string différentes. Ta mission est d'utiliser une boucle pour ignorer la lettre "X" (en utilisant une condition) et console.log pour révéler le message.

Poste ton code en solution.

CritĂšres d'acceptation

  • [ ] Le message secret est dĂ©codĂ©