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
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 lait
Indice : 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 !
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 !