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...
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.
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 !".
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.
Le programme crée une variable nommée
i
de typeInt
, et qui démarre à la valeur1
:var i = 1
Ensuite, il effectue l'instruction entre les accolades
{}
:print("Avance !")
Puis,
i
prend la valeur suivante, donc2
:i = 2
Il effectue ensuite à nouveau l'instruction entre les accolades :
print("Avance !")
i
prend la valeur3
. On effectue encore l'instruction entre accolades.i
prend la valeur4
. On effectue encore l'instruction entre accolades.i
prend la valeur5
. 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" :
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
Vous êtes partant pour un exercice ? Le contenu de l’exercice se trouve dans le dossier Github P2C1.
Ouvrez un nouveau Playground Xcode.
Copiez le contenu du fichier “main.swift” dans votre Playground.
Suivez les instructions.
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 25e année.
Prenez des nouvelles de Joe
N'oublions pas Joe ! Essayons de calculer ce qu'il gagne avec ses vaches. Le contenu de l’exercice se trouve dans le dossier Github P2C1.2.
Ouvrez un nouveau Playground Xcode.
Copiez le contenu du fichier “main.swift” dans votre Playground.
Suivez les instructions.
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 :
Fais le calcul :
money - 4
.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 :
Multiplier par 4.
Ajouter 8.
Diviser par 2.
Soustraire 4.
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 ! ;)