Une condition if est une structure de contrôle fondamentale dans la programmation. Elle permet d'exécuter des blocs de code spécifiques en fonction d'une évaluation logique. En d'autres termes, elle permet de prendre des décisions dans un programme.

Prenons l'exemple d'un Barman. SI son client a plus de 18 ans (c'est la condition : age > 18 ans), alors il pourra lui servir un verre SINON il devra lui indiquer la sortie. C'est ce principe que nous allons découvrir.

Condition if

La condition IF en Swift est utilisée pour exécuter un bloc de code SI une condition donnée est vraie (true). Elle est écrite de la manière suivante :


if condition {
    // code à exécuter si la condition est vraie
}

Si la condition est vraie, le code entre les deux accolades sera exécuté. Sinon, il sera ignoré par votre programme.

Condition simple

La condition peut être n'importe quelle expression qui renvoie un booléen (true ou false). Pour reprendre notre exemple du Barman, la condition serait d'avoir un âge supérieur ou égal à 18 ans :


let age = 25
if age >= 18 {
    print("Bienvenue dans notre bar")
}

Dans cet exemple, si la variable age est supérieure ou égale à 18, le message "Bienvenue au bar" sera affiché. Ce qui est le cas. La variable age ayant pour valeur 25, la condition est donc vraie (booléen true). Si la condition est vraie, alors le code entre les accolades va s'exécuter. Cela affichera : "Bienvenue dans notre bar".

Il est également possible d'utiliser l'opérateur de comparaison == pour tester l'égalité entre deux valeurs :


let couleur = "rouge"
if couleur == "rouge" {
    print("La couleur est rouge")
}

Condition if else

Dans nos exemples précédents, le code entre accolade est ignoré si la condition est fausse. En rajoutant le mot-clé else, vous allez justement pouvoir effectuer une action uniquement si la condition est fausse. Elle s'écrit de la manière suivante :


if condition {
      // Si la condition est VRAIE (true), 
      // c'est uniquement cette partie du code s'exécutera
} else {
      // SINON, ce sera uniquement cette partie qui s'exécutera
}

Si la condition est vraie, seule la première partie sera exécutée et la seconde ignorée. En revanche, si la condition est fausse, ce sera l'inverse : seule la seconde partie sera exécutée et la première sera ignorée. La branche else n'est pas obligatoire dans une condition if.

L'instruction else permet donc d'exécuter un bloc de code si la condition n'est pas remplie (false) :


let age = 15
if age >= 18 {
    print("Bienvenue dans notre bar")
} else {
    print("Veuillez sortir")
}
// Affichera : "Veuillez sortir"

Dans l'exemple ci-dessus, si la variable age est supérieure ou égale à 18, le message "Bienvenue dans notre bar" sera affiché, sinon le message "Veuillez sortir" sera affiché. Ici, il sera affiché : "Veuillez sortir" car la valeur de la variable age vaut 15. Elle est donc inférieure à 18 : la condition n'est pas remplie (false).

Conditions multiples

On peut utiliser plusieurs conditions. Pour cela, il vous faudra utiliser le mot-clé else if juste après la première condition et avant la dernière condition. Cela vous permettra de vérifier plusieurs conditions :


let note = 15
if note < 10 {
    print("Insuffisant")
} else if note < 12 {
    print("Passable")
} else if note < 14 {
    print("Assez bien")
} else if note < 16 {
    print("Bien")
} else {
    print("Très bien")
}
// Affichera "Bien"

Dans cet exemple, on vérifie dans l'ordre les différentes conditions pour afficher le message correspondant. Il est important de noter que dès qu'une condition est remplie, les instructions suivantes ne sont pas exécutées.

Notre variable note a pour valeur 15. La première condition est fausse, car notre variable est supérieure à 10, donc le message "Insuffisant" ne sera pas affiché (cette partie du code sera donc ignorée). Ce sera identique pour la deuxième condition et pour la troisième, notre variable est supérieure à 12 et à 14. En revanche, la quatrième condition est exacte : notre variable age est bien inférieure à 16. Donc, le code entre les accolades va s'exécuter. Cette condition étant vraie (true), toutes les conditions suivantes seront ignorées.

Opérateurs logiques

Les opérateurs logiques modifient ou combinent les valeurs logiques booléennes true et false.

  • NON logique !a (si différent de a)
  • ET logique a && b (si a ET b)
  • OU logique a || b (si a OU b)

let heure = 12

if heure >= 9 && heure < 17 {
    print("Le bar est ouvert")
} else {
    print("Le bar est fermé")
}

// Affichera : Le bar est ouvert

Cet exemple vérifie si l'heure est bien supérieure ou égale à 9h ET EN MÊME TEMPS strictement inférieure à 17h. Notre variable heure a pour valeur 12. La condition est donc vraie car 12 est supérieur ou égal à 9 ET 12 est strictement inférieur à 17. C'est donc la première instruction entre les accolades qui sera exécutée et cela affichera : "Le bar est ouvert"

De la même manière, le code ci-dessous a une condition complexe composée de deux éléments. Si la variable jour a pour valeur "samedi" OU a pour valeur "dimanche" alors le premier bloc de code sera exécuté, SINON, ce sera le deuxième qui sera exécuté car il s'agira d'un autre jour de la semaine.


let jour = "samedi"

if jour == "samedi" || jour == "dimanche" {
    print("C'est repos")
} else {
    print("C'est boulot")
}

// Affichera : "C'est repos"

Opérateur conditionnel ternaire

L'opérateur ternaire est une forme concise de l'instruction if pour les situations où vous souhaitez attribuer une valeur en fonction d'une condition. Cela peut surprendre un peu au début de par sa syntaxe mais c'est un vrai raccourci que vous serez amené à utiliser assez souvent.

L'opérateur conditionnel ternaire est un opérateur spécial en trois parties : La condition, la valeur N°1 à assigner si la condition est vraie, et la valeur N°2 à assigner si la condition est fausse. Sa syntaxe se présente ainsi :

condition ? valeur1 : valeur2

On sépare la condition des deux résultats possibles avec le symbole du point d'interrogation (?). Les deux éléments de valeurs possibles sont eux séparés par le symbole des deux points (:).


let age = 25

let statut = (age >= 18 ? "Majeur" : "Mineur")
print(statut)

// Affichera : "Majeur"

La variable statut stockera la réponse de la condition : Si la variable age est supérieure ou égale à 18, alors la valeur stockée sera "Majeur" sinon, la valeur stockée sera "Mineur". La variable age ayant pour valeur 25, la variable statut stockera donc la valeur "Majeur".

Les premières lectures de la condition ternaire peuvent être un peu déroutantes, mais il faudra vous y habituer, votre code y gagnera en lisibilité. Dans l'exemple ci-dessous, si nous avions utilisé une syntaxe classique de la condition if, beaucoup plus de lignes de code auraient été nécessaire.


let hauteur = 180
let enTete = true
let hauteurTotal = hauteur + (enTete ? 50 : 20)
// hauteurTotal est égal à 230

Si vous repensez à vos débuts, vous vous rendrez compte que vous avez déjà parcouru pas mal de chemin. Vos connaissances et votre maîtrise du langage Swift ne cessent de grandir. Félicitations ! N'hésitez pas à partager vos progrès sur les réseaux sociaux, ainsi vous communiquerez avec d'autres développeurs et cela ne fera qu'accroitre votre motivation.

  • Une condition if exécute un bloc de code uniquement Si une condition donnée est vraie.
  • La branche else n'est pas obligatoire dans une condition if.
  • Dès qu'une condition est remplie, les instructions suivantes ne sont pas exécutées.
  • L'opérateur ternaire est une forme concise de l'instruction if.

Prenez quelques minutes pour faire cet exercice. Cela consolidera votre apprentissage de manière efficace en passant de la théorie à la pratique . N'hésitez pas à faire vos propres experiences, vous progresserez plus vite ainsi.

Dans cet exercice, vous allez déclarer une constante et une variable. La constante se nommera passwordEnregistre, sera de type String et aura pour valeur "pirate". La variable se nommera passwordUtilisateur, sera de type String et aura la valeur de votre choix. Si les deux variables sont identiques, vous afficherez "Accès accordé" sinon, vous afficherez "Accès interdit".


let passwordEnregistre = "pirate"

var passwordUtilisateur = "moussaillon"

if passwordEnregistre == passwordUtilisateur {
    print("Accès accordé")
} else {
    print("Accès interdit")
}

Pour la déclaration de la constante, comme pour la déclaration de la variable, je n'ai pas précisé le type. Grâce à l’interférence de type, Swift en déduit qu'il s'agit d'une valeur de type String.