Mis à jour le mercredi 4 octobre 2017
  • 30 heures
  • Facile

Ce cours est visible gratuitement en ligne.

Ce cours est en vidéo.

Vous pouvez obtenir un certificat de réussite à l'issue de ce cours.

J'ai tout compris !

Vous allez boucler !

Connectez-vous ou inscrivez-vous 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 traie 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...
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 !

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 ! Ecrivez 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
La console

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

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

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 pourrais lui dire :

avance !
avance !
avance !
avance !
avance !

Et si maintenant je dois le faire avancer de milles 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 prends la valeur suivante donc  2  :

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

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

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

  7.  i prends 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

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

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 . Et 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 parties 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 celui-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 

Je vous propose un petit exercice pour valider tout ça. Essayez de faire imprimer dans la console la phrase suivante :

Je souffle mes bougies pour mes X ans.

Il faut imprimer cette phrase autant de fois que vous avez soufflé vos bougies. Comme contrainte, vous devez utilisez un intervalle semi-ouvert. A vous de jouer !

// Ne trichez pas !















































for age in 1..<25 {
    print("Je souffle mes bougies pour mes \(age) ans.")
}

Si vous avez 24 ans, vous avez soufflé vos bougies de 1 à 24 ans. Donc avec un intervalle semi ouvert, vous allez jusqu'à 25 en excluant la 25ème année.

Et 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 ;) !

// A vous de jouer !





























var money = 0.0

for i in 1...30 {
    // Joe nourrit les vaches
    money = money - 4
    // Joe vends son lait
    money = money + 30 * 0.50
}

print("\(money) €") // 330.0 €

On crée donc une boucle sur 30 jours. A 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 petite astuces pour rendre ce code encore plus efficace et plus facile à lire.

Astuce 1 : Une boucle for sans variable

Tout d'abord, vous remarquez qu'on a créé un 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 a pas besoin de créer de variable dans une boucle for, on peut la remplace 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 essayez tout ça : prenez une variable noté  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, faîtes-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 !  :magicien:

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 vends son lait
    money += 30 * 0.50
}

print("\(money) €") // 330.0 €

 Vous êtes hyper FOR ! :p

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-ouvert :  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 suivant :

    •  += 

    •  -= 

    •  *= 

    •  /= 

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