Ce matin, Joe a décidé de passer vous voir. Au fur et à mesure de la discussion, Joe vous parle de son blé qui va apparemment très fort en ce moment.

Tout à coup, vous réalisez :
Mais Joe, voilà une nouvelle activité dont tu ne m'avais pas parlé ! Quand moissonnes-tu ?
Tous les débuts de mois.
Et qu'en rapportes-tu ?
En général 100 bottes de blé.
Que tu vends... ?
0,30 € l'unité.
Pendant qu'on y est, il y a d'autres choses ?
Oui, le 10 et le 20 de chaque mois, je tonds mes moutons. J'en récupère 30 pelotes de laine que je vends sur le marché à 1 €.
Nous voilà donc repartis avec de nouvelles informations pour améliorer notre programme !
Découvrez les conditions
Nous allons découvrir dans ce chapitre les conditions ! Et vous allez voir, c'est très facile !
Reprenons notre code :
for _ in 1...30 {
// Joe nourrit les vaches
money -= 4
// Joe vend son lait
money += 30 * 0.50
}
On aimerait bien rajouter les nouvelles rentrées d'argent de Joe. Mais à la différence des précédentes, elles n'ont pas lieu tous les jours :
1er de chaque mois : il récupère 100 bottes de blé vendues 0,30 € l'unité.
10 et 20 de chaque mois : il récupère 30 pelotes de laine vendues 1 € l'unité.
Nous aimerions donc pouvoir rajouter dans notre programme :
SI nous sommes le 1er:
ajoute l'argent du blé
SI nous sommes le 10 ou le 20:
ajoute l'argent de la laine
SINON :
ajoute l'argent du lait
On peut faire ça en programmation. Et pour y arriver, nous allons découvrir un nouveau type !
Le booléen
Le booléen va bientôt s'ajouter à la liste des types que nous connaissons maintenant.
Je sais ! Il y a :
Int
Float
Double
String
Range
Bravo ! Vous me réjouissez ! Ajoutons donc maintenant le booléen.
Le booléen est le type le plus simple puisqu'il ne peut prendre que 2 valeurs : true
ou false
(vrai ou faux).
Par exemple :
var ceCoursEstExcellent = true
var lAuteurEstModeste = false
Le nom du type booléen est Bool
en Swift. Donc pour déclarer un booléen, vous pouvez écrire :
var jeSuisUnBooleen: Bool
Et voilà, vous connaissez un type de plus !
Appréhendez les opérateurs
C'est le grand retour des opérateurs ! Eh oui, certains types ont le droit à des opérateurs. Rappelez-vous : on a vu les 4 basiques : +
-
*
/
pour les types Int
, Double
et Float
. Le +
pour concaténer des types String
. Voyons ceux du Bool
!
Opérateurs d'égalité
Il y en a 2 : ==
et !=
. Ils permettent de vérifier si une expression est égale ou différente d'une autre. Par exemple, essayez les commandes suivantes dans le Playground :
2 == 2 // Playground affiche true
2 == 3 // Playground affiche false
4 != 4 // Playground affiche false
4 != 5 // Playground affiche true
2 est bien égal à 2, et 4 est bien différent de 5 ; donc ces opérations affichent true
. Et inversement pour les deux autres cas.
Opérateurs de comparaison
Ce sont les opérateurs que l'on utilise pour comparer des nombres. Il y en a 4 :
<
Strictement inférieur<=
Inférieur ou égal>
Strictement supérieur>=
Supérieur ou égal
Quelques exemples :
1 < 2 // True
1 < 1 // False
1 <= 1 // True
3 > 4 // False
5 > 4 // True
5 >= 4 // True
Opérateurs logiques
Ces opérateurs permettent de combiner des expressions. Il en existe 2 :
expression1 || expression2
: Renverra vrai siexpression1
est vraie OU siexpression2
est vraie.||
est l'opérateur OU.expression1 && expression2
: Renverra vrai siexpression1
ETexpression2
sont vraies.&&
est l'opérateur ET.
Par exemple, testez les expressions suivantes dans le Playground :
true || false // Playground affiche true
true && false // Playground affiche false
On peut également combiner plus de 2 expressions. Comme pour les calculs, on peut utiliser des parenthèses pour gérer les priorités :
(true && false) || true // Affiche true
true && false
donne false
. Il reste du coup false || true
qui donne true
.
Opérateur négation
L'opérateur négation, c'est le point d'exclamation !
. Placé avant une expression, il en donne le résultat opposé. Par exemple :
!true // Affiche false
Pour vous familiariser avec les opérateurs, essayez de deviner les résultats des expressions suivantes :
!true && false
!(true && false)
4 < 3 || 4 >= 4
(!(1 == 2) || 3 != 3) && 35 > 34
Pour la correction, je vous laisse les copier dans votre Playground ! Mais cherchez d'abord les résultats par vous-même ! Le conseil, c'est de démarrer toujours par les expressions entre parenthèses.
Utilisez if / else
Bon c'est bien rigolo, les booléens et les opérateurs, mais ça sert à quoi ?
Pour y répondre, rappelons-nous notre objectif. Nous voulons transformer notre programme pour qu'il écrive ceci :
SI nous sommes le 1er:
ajoute l'argent du blé
SI nous sommes le 10 ou le 20:
ajoute l'argent de la laine
SINON :
ajoute l'argent du lait
Il se trouve qu'on peut rajouter ces fameux SI
en programmation. C'est même la traduction littérale en anglais : if
. Ce mot-clé s'utilise de la façon suivante :
if expression logique {
instruction1
instruction2
instruction3
etc.
}
Si l' expression logique
est évaluée à true
, les instructions entre les accolades {}
seront exécutées. Sinon elles seront ignorées.
Par exemple, essayez ceci :
if true {
print("Je suis executé").
}
if false {
print("Je suis ignoré")
}
Le Playground affiche dans la console "Je suis exécuté".
L'expression précédente peut être simplifiée avec le mot-clé else pour sinon. Cela donne :
if true {
print("Je suis executé")
} else {
print("Je suis ignoré")
}
On peut le lire de la façon suivante :
Si VRAI :
Affiche "Je suis exécuté"
Sinon :
Affiche "Je suis ignoré"
À vous de jouer
Entraînez-vous avec l'exercice suivant.
Super ! Je suis certain que vous avez réussi. Sinon réessayez ! Puis, pour accéder à la solution :
Soumettez votre projet avec le bouton "Submit" en haut à droite,
Cliquez sur le titre de l'exercice en haut à gauche de la fenêtre,
Puis sur "OCfondamentauxdeswift",
Cliquez sur "Fork the solution".
Et si je suis né en 1961 ? Je ne suis ni plus jeune, ni plus vieux !
En effet ! Parfois, on ne peut pas résumer une logique à seulement si / sinon. Parfois, on a besoin de plus de cas. C'est la raison pour laquelle on a inventé le else if
. Il permet de rajouter une troisième condition qui se positionne obligatoirement entre la première et la dernière. Par exemple ici :
var maDateDeNaissance = 1992
var laDateDeNaissanceDeBarack = 1961
if maDateDeNaissance > laDateDeNaissanceDeBarack {
// Ma date de naissance est après donc je suis plus jeune
print("Je suis un jeune premier !")
} else if maDateDeNaissance == laDateDeNaissanceDeBarack {
// Nos dates de naissance sont égales
print("J'ai le même âge qu'Obama !")
} else {
// Ma date de naissance est avant donc je suis plus âgé
print("J'ai plus d'expérience qu'un président !")
}
Vous pouvez rajouter autant de else if
que vous voulez, pour gérer autant de cas que vous le souhaitez.
Par exemple :
var name = "Pierre"
if name == "Pierre" {
print("Salut Pierre, tu vas bien ?")
} else if name == "Joe" {
print("Hey Joe, comment va Marguerite ?")
} else if name == "Jean" {
print("Bonjour Monsieur Jean !")
} else {
print("Je ne vous connais pas, désolé.")
}
Si le nom n'est ni Pierre
, ni Joe
, ni Jean
, les instructions dans le else
seront exécutées.
Avec tout ça, on va pouvoir compléter notre modèle de ferme ! Alors à vous de jouer. Transformez le contenu de notre boucle for avec ceci :
SI nous sommes le 1er :
ajoute l'argent du blé
SI nous sommes le 10 ou le 20 :
ajoute l'argent de la laine
SINON :
ajoute l'argent du lait
Indice : Nommez une variable day
(pour jour) dans votre boucle for.
Essayez dans cet exercice sur Replit !
Et voilà comment les conditions nous ont permis d'affiner notre modèle !
En résumé
Nous avons découvert un nouveau type :
Bool
pour booléen, qui ne peut prendre que 2 valeurs :true
oufalse
.Ce type a plusieurs opérateurs :
Pour créer des booléens :
==
égalité
!=
différence
>
Strictement supérieur
>=
Supérieur ou égal
<
Strictement inférieur
<=
Inférieur ou égal
Pour combiner ou modifier des booléens :
&&
ET logique
||
OU logique
!
Négation
La déclaration
if
/else if
/else
permet de gérer différentes conditions dans un programme. Sa syntaxe est la suivante :
if expressionLogique1 {
// instructions
} else if expressionLogique2 {
// instructions
} else {
// instructions
}
Maintenant que vous savez poser vos conditions, je vous propose de devenir les maîtres des boucles while ! Ehhhhh c’est parti !