• 10 heures
  • Facile

Ce cours est visible gratuitement en ligne.

course.header.alt.is_video

course.header.alt.is_certifying

J'ai tout compris !

Mis à jour le 18/02/2022

Ajoutez des boucles

Connectez-vous ou inscrivez-vous gratuitement pour bénéficier de toutes les fonctionnalités de ce cours !

Salut, c'est Joe !

Tu vas bien ?

J'ai un petit peu regardé mon organisation. Notamment concernant mes vaches. Je les trais tous les jours. Ce qui me permet de récupérer 30 bidons de lait. Je vends chaque bidon 0,50 €. J'espère que ça t'aide.

Aussi je les nourris tous les matins. Ça me coûte environ 4 €.

D'ailleurs, Marguerite va très bien en ce moment. Elle vient de...

Joe vous parle de ses vaches... Et il est très bavard à ce sujet...

Super, on a de nouvelles informations ! On va pouvoir affiner notre modèle !

Utilisez la fonction print et la console

Comme son nom l'indique, la fonction print  est une fonction. Nous reverrons en détail ce concept à la fin du cours. Cette fonction permet d'afficher ce que l'on veut dans la console. Le plus simple, c'est d'essayer ! Écrivez l'instruction suivante dans votre Playground.

print("Bonjour !")

Quand vous avez terminé de le taper, le Playground s'exécute, et vous voyez apparaître un panneau en bas.

La console affiche

Ce panneau, c'est la console ! Son rôle est, entre autres, d'afficher les informations que vous passez à la fonction  print  .  En l'occurrence, la console affiche ici "Bonjour !".

En cliquant sur le bouton à droite sur la console, elle s'affiche et disparaît
La console s'affiche et disparaît
En cliquant sur Activate Console, depuis View > Debug Area, affichera la console si elle n'est pas affichée dans Xcode
Activate Console

Vous pouvez aussi lui passer des nombres et des variables (essayez !) :

var x = 3
print(x) // Affiche 3
print(54) // Affiche 54
print("Coucou") // Affiche Coucou

Découvrez la boucle for-in

Pour affiner notre modèle de ferme, nous avons besoin d'une nouvelle notion : les boucles !

Moi je préfère les cheveux lisses...

Je respecte votre préférence, mais on ne va pas avoir de débat capillaire maintenant !

Une boucle, en programmation, c'est une technique qui permet de répéter une ou plusieurs instructions à l'ordinateur.

Par exemple, si je veux qu'un pion avance de 5 cases vers l'avant dans un jeu, je peux lui dire :

avance !
avance !
avance !
avance !
avance !

Et si maintenant je dois le faire avancer de mille cases ?! Ça va être assez fastidieux. C'est la raison pour laquelle on a inventé les boucles. Avec une boucle, je vais pouvoir demander :

Fais 5 fois la chose suivante :
avance !

Et mon pion va donc avancer 5 fois. C'est quand même plus clair et plus simple comme ça, non ?

Alors comment fait-on cela avec Swift ? Avec l'instruction  for-in  .

Un exemple vaut mieux que de longues phrases :

for i in 1...5 {
print("Avance !")
}

Vous pouvez consulter la console, et vous verrez l'instruction   Avance !   affichée 5 fois.

Alors détaillons ce qu'il se passe. Tout d'abord, cette instruction pourrait s'écrire en français :

Pour une variable i allant de 1 à 5 :
Affiche "Avance !"

Voilà précisément ce qu'il se passe dans le programme.

  1. Le programme crée une variable nommée   i    de type Int  , et qui démarre à la valeur   1    :

    var i = 1
  2. Ensuite, il effectue l'instruction entre les accolades    {}  : 

    print("Avance !")
  3. Puis,   i   prend la valeur suivante, donc   2  :

    i = 2
  4. Il effectue ensuite à nouveau l'instruction entre les accolades :

    print("Avance !")
  5. i   prend la valeur   3    . On effectue encore l'instruction entre accolades.

  6. i   prend la valeur   4    . On effectue encore l'instruction entre accolades.

  7. i   prend la valeur   5   . On effectue encore l'instruction entre accolades.

Vous avez saisi la logique ? Pour bien comprendre, essayons d'afficher   i   à chaque tour de boucle.

for i in 1...5 {
print("Avance !")
print("Le pion a avancé de \(i) cases.")
}

Vous devriez voir ceci dans la console :

Avance !
Le pion a avancé de 1 cases.
Avance !
Le pion a avancé de 2 cases.
Avance !
Le pion a avancé de 3 cases.
Avance !
Le pion a avancé de 4 cases.
Avance !
Le pion a avancé de 5 cases.

On voit bien qu'à chaque tour de boucle :

  • On exécute toutes les instructions entre accolades en recommençant à la première.

  • i    s'incrémente de 1.

for nombreDeMoutons in 1...5 {
print("Je compte \(nombreDeMoutons) moutons...")
}

Voici un petit schéma pour résumer la boucle "for" :

Pour l'expression for x in 1...10 {instruction 1, instruction 2, instruction 3}, x est une variable ; 1 est le minimum ; 10 est le maximum ; après chaque boucle, x incrément d'un jusqu'à ce que x = 10.

Déclarez les intervalles

Après les types numériques et les chaînes de caractères, je vous propose de découvrir un nouveau type : les intervalles – en anglais, range. 

Et en fait, vous les connaissez déjà ! Ils ressemblent à ça :   1...5   . Eh oui ! C'est ce qu'on utilise dans les boucles for-in.

Pour déclarer un Range, on utilise donc les   ...   . Par exemple, vous pouvez écrire :

var intervalle = 1...1000

Les deux types d'intervalles

Il existe deux types d'intervalles :

1. Les intervalles fermés. C'est ceux qu'on a utilisés jusqu'à présent. Les extrémités font partie de l'intervalle. On les déclare avec   ...    . Exemple :

for i in 1...3 {
print(i)
}
// Dans la console, vous pouvez lire :
// 1
// 2
// 3

2. Les intervalles semi-ouverts. On ne les a pas encore rencontrés. Dans ceux-là, l'extrémité supérieure ne fait pas partie de l'intervalle. On les déclare avec   ..<   . Par exemple :

for i in 1..<3 {
print(i)
}
// Dans la console, vous pouvez lire :
// 1
// 2

Pour résumer :

var intervalleFermé = 0...4 // Contient les valeurs : 0, 1, 2, 3, 4
var intervalleSemiOuvert = 0..<4 // Contient les valeurs : 0, 1, 2, 3
var range = 1..<5
for i in range {
print(i)
}

À vous de jouer

Console de code
Houston... ?
Il semblerait que votre ordinateur ne soit pas connecté à Internet.
Vous n'êtes pas connecté

Connectez-vous pour accéder aux exercices de codes et testez vos nouvelles compétences.

Pensez à vous entraîner avant de terminer ce chapitre.

Prenez des nouvelles de Joe

N'oublions pas Joe ! Essayons de calculer ce qu'il gagne avec ses vaches. En reprenant son message, on voit que chaque jour :

  1. Il les nourrit, cela lui coûte 4 €.

  2. Il les trait, cela lui rapporte 30 bidons de lait qu'il vend chacun 0,50 €.

Essayons de voir combien cela fait en un mois !

On va partir du principe qu'il démarre avec 0 €.

var money = 0.0

Je vous laisse calculer la suite avec une boucle "for" ! Après tout, c'est vous qui aidez Joe !

La solution :

var money = 0.0
for i in 1...30 {
// Joe nourrit les vaches
money = money - 4
// Joe vend son lait
money = money + 30 * 0.50
}
print("\(money)") // 330.0 €

On crée donc une boucle sur 30 jours. À chaque jour qui passe, on enlève 4 €, et ensuite on rajoute l'argent de la vente des bidons (30 * 0.50).

Mais je suis certain que vous aviez réussi sans moi ! Et on peut faire encore mieux ! Je vous propose 2 petites astuces pour rendre ce code encore plus efficace et plus facile à lire.

Astuce 1 : Une boucle for sans variable

Tout d'abord, vous remarquerez qu'on a créé une variable   i   dans la boucle for comme d'habitude. Mais cette fois-ci, on ne l'utilise pas ! Elle ne sert donc à rien. Lorsqu'on n’a pas besoin de créer de variable dans une boucle for, on peut la remplacer par   _   . Cela donne donc :

for _ in 1...30 {
// Les instructions
}

Astuce 2 : Ajouter ou soustraire des nombres à une variable

money = money - 4

Dans cette ligne, pour soustraire 4 à la variable  money  , on doit écrire 2 fois money  pour lui dire :

  1. Fais le calcul :   money - 4   . 

  2. Mets le résultat de ce calcul dans la variable  money  .

On peut faire ça plus simplement, avec un nouvel opérateur que l'on utilise comme ceci :

money -= 4

L'opérateur  -=  permet de soustraire à une variable le nombre que vous lui proposez.

Vous vous en doutez, il existe aussi l'opérateur  +=  pour additionner un nombre à une variable. Et vous avez également  *=  et  /=  .

Petit exercice pour essayer tout ça : prenez une variable notée   x   . Affectez-lui la valeur de votre choix. Puis appliquez-lui le protocole suivant :

  1. Multiplier par 4.

  2. Ajouter 8.

  3. Diviser par 2.

  4. Soustraire 4.

  5. Diviser par 2.

Bien sûr, faites-le en utilisant les opérateurs que vous venez d'apprendre !

Alakazam, je devine que le nom que vous avez trouvé est... votre nombre de départ !  L'informatique, c'est magique !

Avec tout ça, notre code final pour Joe ressemble maintenant à :

var money = 0.0
for _ in 1...30 {
// Joe nourrit les vaches
money -= 4
// Joe vend son lait
money += 30 * 0.50
}
print("\(money)") // 330.0 €

Vous êtes hyper FOR !

En résumé

  • Les boucles "for" permettent de répéter une instruction un certain nombre de fois. On les crée avec la syntaxe suivante :

for i in 0...10 {
// Les instructions sont répétées ici
}
  • On peut omettre la variable   i   ci-dessus en inscrivant à la place le caractère   _   .

  • Il existe 2 types d'intervalles (ou range, en anglais) :

    • Les intervalles fermés :   0...10    ; ils contiennent les deux extrémités.

    • Les intervalles semi-ouverts :   0..<10    ; ils ne contiennent pas l'extrémité supérieure.

  • On utilise les intervalles pour construire les boucles for.

  • On peut ajouter, soustraire, multiplier par ou diviser par un nombre une variable avec les opérateurs suivants :

    • += 

    • -= 

    • *= 

    • /= 

Maintenant que vous avez bien compris quelles sont les boucles, je vous propose d’apprendre à les utiliser avec les conditions… à condition que vous soyez d’accord ! Let’s go !  ;)

Exemple de certificat de réussite
Exemple de certificat de réussite