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 !
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 laitOn peut faire ça en programmation. Et pour y arriver, nous allons découvrir un nouveau type !
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 = falseLe nom du type booléen est Bool en Swift. Donc pour déclarer un booléen, vous pouvez écrire :
var jeSuisUnBooleen: BoolEt voilà, vous connaissez un type de plus !
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 !
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 true2 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.
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 // TrueCes opérateurs permettent de combiner des expressions. Il en existe 2 :
expression1 || expression2 : Renverra vrai si expression1 est vraie OU si expression2 est vraie. || est l'opérateur OU.
expression1 && expression2 : Renverra vrai si expression1 ET expression2 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 falseOn 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 truetrue && false donne false . Il reste du coup false || true qui donne true .
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 falsePour 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 > 34Pour 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.
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 laitIl 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é"
Le contenu de l’exercice 1 se trouve dans le dossier Github P2C2.1.
Ouvrez un nouveau Playground Xcode.
Copiez le contenu du fichier “main.swift” dans votre Playground.
Suivez les instructions.
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 laitIndice : Nommez une variable day (pour jour) dans votre boucle for.
Le contenu de l’exercice 2 se trouve dans le dossier Github P2C2.2.
Ouvrez un nouveau Playground Xcode.
Copiez le contenu du fichier “main.swift” dans votre Playground.
Suivez les instructions.
Et voilà comment les conditions nous ont permis d'affiner notre modèle !
Nous avons découvert un nouveau type : Bool pour booléen, qui ne peut prendre que 2 valeurs : true ou false .
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 !