6

Commencer avec Swift : les variables

Cet article n'a pas été mis à jour depuis plus d'un an, il est possible que certaines informations ne soient plus à jour. Si vous rencontrez des erreurs ou des différences en le suivant, n'hésitez pas à commenter pour me le signaler.

Ca y est cette fois-ci nous allons faire chauffer nos claviers et taper quelques bonnes lignes de code ! La programmation, simplement, c’est l’automatisation de certaines opérations dans un certain ordre. Le code permet de décrire ces opérations et donne l’ordre dans lequel elles seront exécutées. Nous allons voir de quoi se compose le code et ce qu’il nous permet de faire.

A partir de maintenant nous aurons besoin d’exécuter du code, le moyen le plus simple pour cela est de créer un nouveau playground (Les bases d’Xcode : les playgrounds). Créons un nouveau playground vide (blank) sur la plateforme macOS (ce sera plus rapide à exécuter).

Les variables

En programmation, une variable est une donnée, stockée généralement dans la RAM d’un ordinateur. En swift, on déclare une variable avec le mot-clé var suivi du nom que l’on souhaite donner à cette variable. On peut ensuite lui attribuer la valeur de notre choix :

1
var monPrenom = "Onoulade"

Ici, je crée une nouvelle variable nommée monPrenom dans laquelle je stocke la valeur "Onoulade". On remarque que dans la fenêtre du rendu du playground, Xcode nous affiche la valeur de notre variable.

On peut utiliser la valeur de cette variable dans une autre chaine de caractères :

1
2
var monPrenom = "Onoulade"
"Bonjour, je m'apelle " + monPrenom

Ici, grâce à l’opérateur “+”, on colle les deux chaines de caractères l’une à la suite de l’autre, et le playground nous affiche aussitôt le résultat attendu :

Etoffons un peu notre présentation et ajoutons y notre âge

1
2
3
4
var monPrenom = "Onoulade"
var monAge = 23
"Bonjour, je m'apelle " + monPrenom
"J'ai " + monAge + " ans"

Si l’on entre ce code dans le playground, on obtient tout de suite une erreur en rouge sur la dernière ligne disant : Binary operator ‘+’ cannot be applied to operands of type ‘String’ and ‘Int’. Littéralement cette erreur veut dire : “L’opérateur binaire ‘+’ ne peut pas opérer les types ‘Chaine de caractère’ et ‘Nombre Entier'”. Concrètement, cela nous informe que swift est incapable de mettre bout à bout du texte et des nombres.

Ca semble un peu gros mais c’est pourtant vrai et cela nous mène tout droit à la deuxième partie

Les types de variables

Eh oui nous rentrons dans le vif du sujet, enfin quelque chose de compliqué ! En swift, comme dans la plupart des langages de programmation compilés, chaque variable possède un type de donnée qu’elle pourra stocker, et ne pourra jamais en changer. Cela permet au processeur de savoir quelle quantité de RAM il doit prévoir pour cette variable (entre autre). Et par défaut swift ne peut pas effectuer d’opérations entre deux types de variables différents. Si l’on veut afficher une chaîne de caractère (du texte), on ne pourra y ajouter qu’une autre chaine de caractère. On pourrait par conséquent régler cette simple erreur de cette façon :

1
2
3
4
var monPrenom = "Onoulade"
var monAge = "23"
"Bonjour, je m'apelle " + monPrenom
"J'ai " + monAge + " ans"

En entourant le 23 avec des guillemets, la variable n’est plus considérée comme un nombre, mais comme une chaine de caractères contenant 2 et 3. Alors Xcode est capable de compiler notre code et de nous afficher le résultat.

Mais comment fait-on pour connaitre le type d’une variable ?

Voilà une excellente question. Normalement, il faut toujours déclarer le type de variable en même temps que son initialisation en donnant son type précédé de deux points :

1
var monPrenom:String = "Onoulade"

Dans notre exemple, cela ne change rien mais nous donnons explicitement le type de cette variable. Lorsque le type de variable n’est pas défini, Xcode va le déduire depuis son contenu, mais cela n’est pas toujours possible. Swift intègre plusieurs types de variables par défaut, en voici quelques uns :

  • Int pour integer : nombre entier (pas de virgule) compris entre -9223372036854775808 et 9223372036854775807 sur 8 bytes pour un système 64 bits.
  • Float pour floating point : un nombre a virgule flottante sur 4 bytes. Il peut contenir un nombre à 7 chiffres avec une virgule quelque part.
  • Double pour double floating point : le même que Float mais en 8 bytes et avec 15 chiffres
  • Character pour character (ouaip) : un caractère Unicode (Wikipedia) soit une lettre ou un caractère spécial.
  • String pour character string : une chaîne (suite) de caractères. Ce sont des types char mis bout à bout.
  • Bool pour boolean : type de variable pouvant contenir true (vrai) ou false (faux). C’est l’équivalent d’une checkbox, soit cochée soit décochée. Elle ne peut pas avoir d’autres valeurs.

Il est possible de convertir certains types de variables en certains autres. On aurait pu par exemple convertir notre variable monAge du type Int au type String de cette manière :

1
2
3
var monAge = 23
var monAgeString = String(monAge)
"J'ai " + monAgeString + " ans"

Ici nous appelons la fonction String() qui transforme pour nous la variable désirée et nous stockons la nouvelle valeur dans la variable monAgeString qui obtient par la même le type String. Dans la live view, on voit que le retour produit sur la ligne de la conversion la valeur 23 est entourée par des guillemets, la variable est donc bien convertie.

Modifier une variable

La modification d’une variable va se faire via l’opérateur “=”, simplement en appelant la variable et en lui assignant sa nouvelle valeur.

1
2
3
4
var monAge = 23
monAge = 20
var monAgeString = String(monAge)
"J'ai " + monAgeString + " ans"

Une variable ne peut pas changer de type, si on essaye d’assigner une valeur à une variable qui n’est pas du bon type, Xcode nous retournera une erreur similaire à celle que nous avons déjà eu.

Les constantes

En programmation il n’est pas nécessaire d’utiliser plus de ressources que nécessaires. Comme on l’a vu, les types de variables permettent de définir une taille de stockage en bytes dans la RAM. Selon le nombre de bytes alloués il y aura un nombre défini de valeurs possibles.

Faisons une halte et prenons le temp de bien comprendre. Les nombres en informatique (comme tout le reste d’ailleurs) sont stockés sous forme de 0 et de 1. Cela s’appelle le langage binaire. La mémoire RAM est divisée en millions de compartiments capables chacun de recevoir un 0 ou un 1. Ces compartiments s’appellent des bits. Si j’ai 1 bit, je peux stocker deux valeurs différentes : 0 et 1. Avec deux bits, je peux stocker 4 valeurs (00,01,10,11), etc, etc…

0
1
0
0
1
0
0
1
0
0
1
0

C’est ce nombre d’emplacements que réserve le programme dans la RAM en créant les variables. Au plus la variable va pouvoir accueillir de valeurs différents, au plus elle prendra de place dans la RAM. Mais Par exemple ici nous déclarons une variable de type Int qui peut donc contenir 18 446 744 070 000 000 000 nombres différents mais nous on ne stocke que 23 alors ca fait un très gros gâchis.

Il est possible donc de déclarer des variables qui ne changent pas, qui s’appellent par conséquent des constantes. Une fois déclarées elles ne pourront plus changer de valeur ni de type, elles sont inaltérables et très rapides à traiter.

1
2
3
4
5
let monPrenom = "Onoulade"
let monAge = 23
"Bonjour, je m'apelle " + monPrenom
let monAgeString = String(monAge)
"J'ai " + monAgeString + " ans"

Sur un programme de cette longueur la différence est parfaitement invisible mais sur un programme plus complexe il y a une différence non négligeable.

Nommer les variables & commentaires

Il est très important de nommer correctement ses variables. La plupart du temps vous en aurez des dizaines différentes dans un programme avec des contraintes liées aux fonctions, aux classes, et à tout un tas d’autres choses auxquelles vous devrez penser plutôt que d’essayer de vous rappeler à quoi correspond quelle variable. Ca semble évident mais parfois on préfère choisir des noms courts que des noms explicites. Il vaut mieux toujours que le nom des variables commence par une minuscule, pour les différencier des classes.

Il est également important de commenter son code, pour qu’il soit plus lisible. En swift un commentaire se déclare avec deux slashs : //

1
2
3
4
5
// Ceci est un commentaire

/*
Ceci est un commentaire sur plusieurs lignes
*/

Swift nous laisse nommer nos variables comme aucun autre langage, alors il faut en profiter ! quelques exemples :

1
2
3
let π = 3.14159
let 你好 = "你好世界"
let 🐶🐮 = "dogcow"

 

Bien ! J’espère que vous avez tout compris et que vous avez appris des choses. Pour beaucoup plus de détails je vous renvoie à la page du site Apple Developer parlant des variables en Anglais quand à moi je vous dis à la prochaine pour découvrir un peu plus le swift !

1 réponse à “Commencer avec Swift : les variables”

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *