Fil d'Ariane
Mis à jour le vendredi 27 janvier 2017
  • 15 heures
  • Facile

Ce cours est visible gratuitement en ligne.

Ce cours existe en livre papier.

Ce cours existe en eBook.

Vous pouvez obtenir un certificat de réussite à l'issue de ce cours.

J'ai tout compris !

Les variables et opérateurs

Connectez-vous ou inscrivez-vous pour bénéficier de toutes les fonctionnalités de ce cours !

Et voilà, il était temps ! On va enfin passer à la programmation Swift.

Dans ce chapitre on abordera la notion de variables qui est fondamentale. En effet, il est très difficile de se passer de variables dans un programme et c'est pourquoi je commence là-dessus.

Ces variables vont permettre plusieurs choses : stocker toutes sortes d'informations, gagner du temps pour modifier un programme, etc.

Les commentaires

Avant d'aborder la notion de variable, je vais vous préparer en douceur et vous expliquer un concept incontournable dans un langage de programmation : les commentaires.

Qu'est-ce qu'un commentaire ? Il s'agit d'un texte, d'un code, de tout ce que vous voulez qui ne sera pas interprété par votre programme Swift. 

À quoi ça pourrait donc servir ? Quel en serait l'intérêt ?

L'intérêt, c'est le vôtre... ou tout du moins celui de tous ceux qui liront votre code source.

Un commentaire servira par exemple à vous repérer dans un code, à préciser certaines choses afin que si par exemple vous relisez votre code un mois plus tard, vous soyez capable de facilement comprendre ce que vous aviez voulu écrire à ce moment là.

Deux types de commentaires existent en Swift : les commentaires sur une ligne et les commentaires sur plusieurs lignes.

Commentaire sur une seule ligne

Pour écrire un commentaire sur une seule ligne, il vous suffit de taper deux slashs "//" et d'écrire à la suite ce que vous souhaitez. Vous pouvez placer un commentaire n'importe où dans votre code.

// Commentaire sur une seule ligne
print("Hello, World !") // Affichera "Hello, World !" à l'écran

Commentaire sur plusieurs lignes

Un commentaire sur plusieurs lignes est plus pratique si vous envisagez d'écrire beaucoup de texte. Toutefois avec cette méthode vous pourrez tout de même écrire un commentaire que sur une seule ligne. Il vous suffira de délimiter votre commentaire par : au début/*  et à la fin*/ . Ensuite, faites tout ce que vous voulez à l'intérieur, en l'occurence ici passez des lignes pour commenter sur plusieurs lignes.

/* Voici un exemple
d'un commentaire
sur plusieurs lignes */
print("Hello, World !") /* Affiche "Hello, World !" à l'écran */

Dans la suite du cours, j'utiliserai les commentaires. Ce sera pour vous l'occasion de constater de leur utilité.

Les variables

Passons maintenant à la notion de variable.

Qu'est-ce qu'une variable ?

Rien que par son nom, nous avons déjà une définition. Un "quelque chose" qui va varier, qui peut varier ou variera tout au long du programme. Une variable vous servira à stocker de l'information. Mais que peut-on stocker concrètement ? On peut stocker des chaînes de caractères comme votre prénom ou des nombres comme un âge, une moyenne générale, etc.

Des variables vous pourrez en créer autant que vous le souhaitez, dès que vous ressentirez le besoin de  retenir quelque chose en mémoire.

Déclaration d'une variable

Il faut savoir qu'une variable doit pouvoir être identifiée pour qu'on puisse y stocker une valeur : elle a un nom. Je vais donc vous montrer comment lui donner ce nom et lui affecter une valeur. On dit qu'on déclare une variable.

Prenons un exemple : vous voulez stocker le nombre de frères que vous avez. En Swift, vous allez procéder de la sorte :

var nombreDeFreres = 2

var est ici un mot clef défini par le langage Swift qui permettra de dire au programme quenombreDeFreres  sera une variable.
nombreDeFreres est ce qui permettra d'identifier votre variable. Pour nommer votre variable, vous pouvez utiliser n'importe quel caractère (même les caractères unicode et spéciaux, vous pouvez mettre un cœur, un signe chinois, ce que vous voulez en fait :lol: ) et ne pas comporter d'espaces (vous pouvez néanmoins utiliser des underscores pour espacer).

Sachez que par convention, les programmeurs évitent d'utiliser des accents ; cette habitude est surtout due au fait que les autres langages de programmation ne prennent pas en compte les accents, les caractères spéciaux et les caractères Unicode dans les noms de variables.

Dernière chose à savoir : le nom des variables respectent la casse.

Ainsi, les variables suivantes seront trois variables totalement différentes pour le programme. Faites donc bien attention.

var nombreDeFreres = 2
var nombredefreres = 2
var nombreDEFRERES = 2

Enfin, utilisez le signe égal et indiquer à la suite la valeur à stocker dans votre variable. De cette manière, il est obligatoire en Swift de toujours affecter une valeur à sa variable.

Affecter une valeur à une variable

C'est bien beau tout ça, mais admettons que vous ayez maintenant 3 frères, comment je fais pour dire à ma variable de stocker cette nouvelle valeur ? Comme ceci, tout simplement.

nombreDeFreres = 3

Et voilà, vous avez associé la valeur 3 à votre variablenombreDeFreres grâce au signe égal. Toutefois, j'ai encore deux-trois choses à préciser :

  • La déclaration d'une variable ne doit se faire qu'une et une seule fois dans votre code. Dans cet exemple on écrira donc une seule fois : var nombreDeFreres = 2.

  • Une fois votre variable déclarée grâce au mot clefvar, il vous est toujours possible de modifier cette valeur par la suite et autant de fois que vous le souhaitez. Néanmoins, comme la variable aura déjà été déclarée, il vous faudra juste renseigner le nom de la variable sans le mot clefvar,=, et la valeur à associer.

Exemples :

var nombreDeFreres = 2
var nombreDeSoeurs = 3
nombreDeFreres = 3
nombreDeSoeurs = 4

Les types de valeurs qu'on peut associer à une variable

Bien entendu, comme je vous l'ai dit tout à l'heure, vous pouvez stocker autre chose que des nombres. Je vais vous présenter ici ce que vous pouvez stocker. Comme on a commencé par les nombres, je vais poursuivre sur ma lancée.

Variables de type numériques

De type entier

var nombre = 72

De type réel (nombre à virgule). Notez ici que pour les nombres à virgule, il faut utiliser un point et non une virgule.

var nombre = 3.1412
Variable de type chaîne de caractères
var maChaine = "Voici une chaine de caractères !"

Pour indiquer une chaîne de caractères, la différence avec les nombres est la présence de doubles quotes autour de la valeur de la variable. 

Variable de type booléen

Un booléen ?! C'est quoi ?

 

C'est un type assez important dans un programme Swift. Il permettra de stocker soit vrai, soit faux. Cela permettra de savoir si une information est vraie ou fausse. Les deux seules valeurs possibles à affecter ici seront donc : true et false (respectivement vrai et faux en anglais). 

var monBooleen = true

Associer un type précis à une variable

Il est possible de mieux contrôler les valeurs des variables. Reprenons l'exemple du nombre de frères. Vous ne pouvez avoir qu'un nombre, qui plus est, entier. Vous ne pouvez pas avoir 2.5 frères ni la chaîne de caractères "Salut !". Eh bien sachez qu'avec Swift, vous pourrez éviter d'associer ces deux dernières valeurs. Ce système permettra par la suite d'assurer que vous entrez des données exactes dans vos variables, ce à quoi vous vous attendez réellement. Il permet aussi de déclarer des variables sans affecter de valeurs directement.

Par défaut, si vous ne précisez rien, Swift reconnaitra de lui même le type de la variable. On parlera de type implicite. Il choisira le type qui conviendra le mieux et le plus général. Vous pouvez toutefois préciser de vous même le type de la variable, on parlera cette fois-ci de type explicite. Avec un type implicite, lorsque que l'affectation est effectuée, le type de la variable est gardé en mémoire. Ainsi, par la suite il ne sera pas possible d'affecter un autre type à cette même variable. Grâce au type explicite, vous vous assurez d'affecter exactement une valeur souhaité à votre variable.

Voici comment l'on pourrait procéder :

var nombreDeFreres: Int

Que s'est-il passé ici ? À la fin du nom de la variable, nous avons ajouté un deux-points: qui est suivi du motInt. Cela va permettre de préciser que la variable ne pourra contenir comme valeur que des nombres entiers (Int signifie Integer, qui veut dire Entier en français). De ce fait, si vous tentez d'associer autre chose que des valeurs entières à cette variable, quand vous lancerez votre programme on vous indiquera qu'il y a une erreur. Essayons tout simplement !

Créez un nouveau projet "VariablesOperateurs" et insérez ce code dans le main.swift.

var nombreDeFreres: Int = 2 
print(nombreDeFreres)

Vous constaterez alors que la console (en bas de fenêtre) vous affiche "2".‌

Testons maintenant ce code :

var nombreDeFreres: Int = 2.5
print(nombreDeFreres)

Vous n'avez même pas besoin de lancer votre programme que vous pouvez voir à gauche de la première ligne, un point rouge. Cela vous indique une erreur dans votre code, à savoir ici si vous cliquez dessus :

Cannot convert value of type 'Double' to specified type 'Int'

Cliquez sur le point et vous aurez alors une proposition de solution. Ici sur l'exemple, Xcode va vouloir convertir votre nombre à virgule en un entier pour que cela soit en adéquation avec le type proposé à la variable  nombreDeFreres .

De ce fait, vous ne pourrez pas exécuter votre programme tant que vous n'aurez pas corrigé cette erreur.

Bien sûr ici pour l'exemple j'ai associé le typeInt mais on peut très bien associer d'autres types. En fait on peut associer énormément de types possibles à une variable. Seulement, pour que vous puissiez bien comprendre le cours (et surtout parce que cela ne vous serait que très peu utile pour le moment), je vous présente uniquement ceux que j'ai cité ci-dessus :

  • Int : nombre entier

  • Float ou Double : nombre à virgule

  • String : chaîne de caractères

  • Bool : booléen

var nombreDeFreres: Int
var pi: Float
var phrase: String
var information: Bool

Les constantes : une variable spéciale

Il est possible de déclarer dans notre programme une variable dont la valeur ne changera jamais une fois affectée. Cette variable sera appelé "constante". Prenons par exemple le nombre pi. Il existe une et une seule valeur à lui attribuer, il serait bête de changer ce nombre par la suite non ?

Voici  donc comment déclarer une constante en Swift :

let pi = 3.1415

On utilisera cette fois-ci le mot cleflet et non plus le mot clefvar. Son utilisation reste la même à un détail près, dès l'instant où vous lui aurez affecté une valeur, vous ne pourrez plus la changer. Je vous laisse essayer, vous verrez ce que Xcode peut vous dire.

En clair : je ne vais pas changer la valeur de ma variable par la suite -> j'utilise une constante. Sinon j'utilise une variable.

Les tuples

Les tuples sont un type de variable particulier. En effet, un tuple peut contenir plusieurs valeurs. Une variable ou une constante peut être un tuple. Dans ce cas là, votre variable ou constante comprendra plusieurs valeurs. Voici la syntaxe d'un tuple :

let tuple = (valeur1, valeur2, ...)
// Ou
var tuple = (valeur1, valeur2, ...)

Vous listez les valeurs entre parenthèses et vous les séparez par des virgules. Joignez-y autant de valeurs que vous le souhaitez et de n'importe quel type. Voici un exemple pour mieux comprendre :

let erreur404Http = (404, "Not Found")

erreur404Htpp est de type(Int, String) .

Pour récupérer les valeurs d'un tuple, nous avons plusieurs méthodes. Nous pouvons extraire les valeurs dans des constantes ou variables de cette façon :

let (code, message) = erreur404Http
// Ou
var (code, message) = erreur404Http

Vous avez de cette façon créé une constante code qui contiendra la première valeur du tuple deerreur404Http  et une autre constante qui contiendra la deuxième valeur du tuple.

erreur404Http  comprend deux valeurs, il faut donc définir deux noms de variables ici. Si toutefois, juste une seule valeur vous suffit, il suffit de ne pas nommer une des valeurs et de remplacer par un underscore. 

let (code, _) = erreur404Http

Vous pouvez aussi directement donner un nom à vos valeurs lorsque vous déclarez un tuple.

let erreur404Http = (code: 404, message: "Not Found")

Ici, juste avant votre valeur, vous allez nommer vos valeurs et finir par un deux points:  . De cette façon, vous pourrez accéder à vos valeurs comme ceci :

let valeur1 = erreur404Http.code
let valeur2 = erreur404Http.message

 

 Les opérateurs

Nous n'avons pas encore réalisé de choses bien concrètes, c'est pourquoi je vais vous faire travailler un petit peu, mais surtout faire travailler votre ordinateur. Car vous allez voir que votre machine est une bête de calcul et que Swift aussi ! Rassurez-vous, on ne va pas effectuer des calculs complexes, mais les plus simples : l'addition, la soustraction, la multiplication et la division. Je pense que c'est à portée de tous !

On va pour cela utiliser la notion de variables pour réaliser des calculs. Et si vous avez bien saisi, il s'agira de variables qui prendront des types Int ou Float. :)

Les opérations de base : addition, soustraction, etc.

Pour indiquer à votre programme que vous souhaitez réaliser une addition, soustraction, multiplication ou division, il va falloir lui préciser. Voici le tableau des signes à connaître.

Signe

Signification

+

Addition

-

Soustraction

*

Multiplication

/

Division

Maintenant, comment s'en sert-on ? Rien de plus naturel ! Un exemple vaut mieux qu'un long discours pour comprendre.

let addition = 1 + 2 // addition contiendra alors 3
let soustraction = 10 - 5 // soustraction contiendra alors 5
let multiplication = 6 * 7 // multiplication contiendra alors 42
let division = 100 / 10 // division contiendra alors 10

Il est possible aussi d'ajouter les parenthèses dans vos calculs afin de gérer les priorités de calculs.

// Parenthèses
let calcul1 = (7 + 3) * 2 // 20
let calcul2 = 7 + (3 * 2) // 13

Et il est aussi possible d'assigner une valeur à une variable et de l'utiliser dans vos calculs.

// Variables
let nombre1 = 7
let nombre2 = 2
let calcul3 = (nombre1 + nombre2) * nombre2 // 18

Et voilà ! Rien de bien compliqué comme je vous l'avez annoncé. Je vous propose maintenant de vérifier ces calculs, histoire de vous assurer que je ne vous raconte pas de bêtises. :-°

print(addition)
print(soustraction)
print(multiplication)
print(division)
print(calcul1)
print(calcul2)
print(calcul3)

Voici ce que la console vous répondra :

3
5
42
10
20
13
18
Program ended with exit code: 0

Le modulo

Voici un autre opérateur que j'ai volontairement omis ci-dessus : le modulo, représenté par le signe %.

Je dois vous avouer quelque chose, j'ai un peu menti sur la division. La division ne vous retournera pas le résultat exact de la division mais seulement son quotient. Le modulo lui vous retournera son reste.

let division = 100 / 11 // Dans 100 combien de fois 11 ?
let modulo = 100 % 11 // Quel est le reste de 100 / 11 ?

/* 
    Dans 100 il y a 9 fois 11
    Il reste alors 1
*/
print(division) // Affiche 9
print(modulo) // Affiche 1

D'autres opérations

Et pour les autres opérations alors ? La racine carrée, le carré, le cube, etc. ?

Eh bien il est tout à fait possible de réaliser ce genre d'opérations, mais nous verrons cela plus tard. En effet, il n'existe pas de signe pour ces calculs : on utilisera donc une autre notion, à savoir les fonctions, pour les réaliser. Soyez donc patients, un chapitre sera entièrement consacré aux fonctions, mais n'allons pas trop vite. Je n'ai pas envie de vous perdre dès le début. :p

Concaténer des variables et convertir un type

Cette partie va vous présenter deux astuces qui vous seront plutôt utiles par la suite.

Concaténer deux variables

Déjà, concaténer deux variables, c'est quoi ? C'est les mettre bout à bout afin de n'en former qu'une seule. Pour concaténer deux variables entre elles, on se servira du signe "+".

Ce signe ne sert pas à réaliser une addition comme dit plus haut ? o_O

Si si, rassurez-vous, je ne vous ai pas menti. La concaténation se fera avec ce signe pour tout ce qui n'est pas de type numérique. Mais vous pourrez néanmoins concaténer deux nombres entre eux par une autre astuce.

let hello = "Hello,"
let world = " World !"
let helloWorld = hello + world

print(helloWorld)
print(hello + world) // On aurait aussi pu écrire directement comme ceci

let nombre1 = 1
let nombre2 = 2
// Astuce pour concaténer deux entiers
let nombre = "\(nombre1)" + "\(nombre2)"
print(nombre)

Comme vous pouvez le voir, l'astuce pour concaténer des nombres entre eux est d'ajouter"\(  devant le nom de la variable et d'ajouter)"  à la fin du nom de la variable.

let nombre = 7

print("Le chiffre que vous avez choisi est \(nombre) !")

Convertir un type de variable en String

Pour ne rien vous cacher, pour effectuer une concaténation, il vous faudra concaténer deux chaînes de caractères. Ainsi, si vous voulez concaténer un nombre à une chaîne de caractères, il vous faudra dire à votre programme qu'au moment de la concaténation le nombre deviendra un String. Voici comment procéder.

let nombre = 72
let monTexte = "Mon nombre choisi est le nombre : " + String(nombre)
print(monTexte)

Vous pouvez alors trouver une nouvelle astuce pour concaténer deux nombres. De ce fait, si on reprend l'exemple plus haut, on pourrait tout aussi bien faire :

let nombre1 = 1
let nombre2 = 2
let nombre = String(nombre1) + String(nombre2)
print(nombre)

Pour résumer

  • Une variable est une information que l'on stocke en mémoire : elle possède un nom et une valeur.

  • Une variable peut contenir plusieurs types de valeurs : entier, décimal, chaîne de caractères, etc.

  • On déclare une variable par le mot clefvar  et une constante par le mot clef let.

  • On peut réaliser des opérations entre des variables : addition, soustraction, etc.

Exemple de certificat de réussite
Exemple de certificat de réussite