Logo de Swift en orange sur fond gris qui sert de hero de présentation de la formation sur les fondamentaux de Swift

Boucle For in

Logo de Swift en orange sur fond gris qui sert de hero de présentation de la formation sur les fondamentaux de Swift

Boucle For in

Avec la boucle for-in, on s’attaque à une notion essentielle de la programmation : les boucles. C’est un outil très utile puisqu’il va nous permettre de répéter automatiquement des opérations, sans avoir à les écrire manuellement plusieurs fois. Ça nous aide à gagner du temps et à rendre notre code plus clair et efficace.

Prenons un exemple simple, je veux afficher dans ma console 8 fois le message print("Pixel Swift, c’est trop bien !"). Avec les outils que tu connais actuellement, tu pourrais copier-coller le print 8 fois comme ceci :


print("Pixel Swift, c’est trop bien !")
print("Pixel Swift, c’est trop bien !")
print("Pixel Swift, c’est trop bien !")
print("Pixel Swift, c’est trop bien !")
print("Pixel Swift, c’est trop bien !")
print("Pixel Swift, c’est trop bien !")
print("Pixel Swift, c’est trop bien !")
print("Pixel Swift, c’est trop bien !")

Ça fonctionne, mais ce n’est pas optimal. Si je dois maintenant afficher ce message 300 fois, je devrais copier-coller la ligne 300 fois… et ça devient très fastidieux 🤯

Heureusement, Swift nous offre les boucles pour simplifier ce genre de tâche. Voici comment on peut écrire ça avec une boucle for-in


for index in 1...8 {
    print("Pixel Swift, c’est trop bien !")
}

Pour comprendre ce code, il faut s’intéresser à la ligne for index in 1...8. Ici, on donne à la boucle une plage de nombres allant de 1 à 8. La boucle va donc répéter l’instruction située à l’intérieur des accolades pour chaque valeur de cette plage. La variable index va prendre successivement les valeurs 1, 2, 3, …, jusqu’à 8. Ensuite, on trouve notre instruction print("Pixel Swift, c’est trop bien !"), qui est exécutée à chaque tour de la boucle, soit 8 fois.

L’avantage principal de cette approche est sa simplicité et sa flexibilité. Par exemple, si tu veux afficher ton message 300 fois au lieu de 8, il te suffit de changer la plage de 1…8 en 1…300.

Il n’y a plus besoin de copier-coller 300 fois la même ligne, tout est automatisé. Un autre point positif est la facilité pour modifier ton code. Si tu veux changer le texte dans ton print, il te suffit de le faire une seule fois, contrairement à l’exemple initial où tu aurais eu 8 modifications à réaliser.

Syntaxe


for index in collection {
    
}
  • index Une variable temporaire utilisable exclusivement dans la boucle, elle représente chaque élément dans la séquence.
  • collection Une séquence (comme un tableau, un dictionnaire, un set, une chaîne, une intervalle, etc..).

Tableau


let students = ["Claudia", "Romain", "Kamel", "Maxime"]

for student in students {
    print(student)
}

/* Lecture dans la console ->
Claudia
Romain
Kamel
Maxime
*/

La boucle for-in est particulièrement utile pour parcourir les index d’un tableau.
Comme on l’a vu, un array est constitué d’index allant de 0 à une possible infinité d’index.
Pour parcourir et lire chaque donnée d’un tableau, on peut donc utiliser la boucle for-in comme dans l’exemple.
On va donner en paramètre le nom du tableau, ici
students, et utiliser l’index pour afficher chaque valeur.
Par convention, on va renommer l’index avec le nom du tableau mais au singulier
(effectivement il représente un index unique).

Dictionnaire


let ages = ["Omar": 25, "Tristan": 30, "Boris": 35]

for (name, age) in ages {
    print("\(name) a \(age) ans")
}

/* Lecture dans la console ->
Omar a 25 ans
Tristan a 30 ans
Boris a 35 ans
*/

Pour le cas d’un dictionnaire, tu peux créer deux index, un qui représente la clé et l’autre la valeur.

Intervalle de valeur


for number in 1...5 {
    print(number)
}

/* Lecture dans la console ->
1
2
3
4
5
*/

La boucle for-in est également utile pour boucler sur une intervalle de valeurs, pour ça tu peux utiliser un range comme dans l’exemple 0…5 et utiliser l’index pour afficher chaque iteration. On le verra plus tard dans certain cas de figure, c’est très utile pour répéter certaine opération.

Set (ensemble)


let uniqueNumbers: Set = [1, 2, 3, 4, 5]

for number in uniqueNumbers {
    print(number)
}

Pour parcourir un Set, c’est exactement comme pour les tableaux, à ceci près que l’ordre sera aléatoire. Pour rappel, les Set ne fonctionnent pas avec un système d’index.


for number in 1...5 {
    if number == 3 {
        continue
    }
    print(number)
}

/* Lecture dans la console ->
1
2
4
5
*/

On peut empêcher d’afficher certaines itérations avec l’instruction continue. Quand la boucle rencontre cette instruction, elle arrête l’exécution en cours et passe directement à l’itération suivante.

Sortir de la boucle


for number in 1...5 {
    if number == 3 {
        break
    }
    print(number)
}

/* Lecture dans la console -> 
1
2
*/
Lorsqu’une boucle for-in rencontre une instruction break, elle arrête immédiatement l’exécution de la boucle, et l’exécution du programme reprend après la fin de la boucle.

Boucles imbriquées



let videoGames = [
["FPS" : ["Call of Duty", "Counter Strike", "Valorant"]],
["MMORPG" : ["Final Fantasy 14", "World of Warcraft", "Rift"]]
]


for genre in videoGames {
	for (category, games) in genre {
		print("🎮 Catégorie : \(category)") 
		for game in games {
			print("  - \(game)") 
		}
	}
}


/* Lecture dans la console -> 
🎮 Catégorie : FPS
  - Call of Duty
  - Counter Strike
  - Valorant
🎮 Catégorie : MMORPG
  - Final Fantasy 14
  - World of Warcraft
  - Rift
*/

Les boucles for-in peuvent être imbriquées les unes dans les autres, ce qui signifie qu’une boucle for-in peut contenir une autre boucle for-in en son sein. Ca permet de parcourir des structures plus complexes, comme des tableaux multidimensionnels.

Exercices Pratiques

Exo boucle for

Télécharger le playground

Accède aux consignes directement en téléchargeant le playground.

⚠️ Les consignes que tu trouveras dans le playground ne sont pas verrouillées. Fais attention à ne pas les effacer par inadvertance ! 

Objectif

La boucle for-in est un outil essentiel pour la suite de ton apprentissage. Comme pour les autres concepts, prends le temps de pratiquer afin de bien l’assimiler. Tu verras, c’est simple à utiliser et très efficace.

Note

Attention ! Ici, on a appris une nouvelle convention, et tu sais que j’insiste régulièrement là-dessus depuis le début. Si tu parcours un tableau (qui est écrit au pluriel), la variable utilisée dans la boucle prendra le même nom mais au singulier.

Exercices Pratiques

Exo boucle for

Télécharger le playground

Accède aux consignes directement en téléchargeant le playground.

⚠️ Les consignes que tu trouveras dans le playground ne sont pas verrouillées. Fais attention à ne pas les effacer par inadvertance ! 

Objectif

La boucle for-in est un outil essentiel pour la suite de ton apprentissage. Comme pour les autres concepts, prends le temps de pratiquer afin de bien l’assimiler. Tu verras, c’est simple à utiliser et très efficace.

 

Note

Attention ! Ici, on a appris une nouvelle convention, et tu sais que j’insiste régulièrement là-dessus depuis le début. Si tu parcours un tableau (qui est écrit au pluriel), la variable utilisée dans la boucle prendra le même nom mais au singulier.