Notion de type
On associe à une variable la notion de « type » pour désigner la « forme du contenu » elle permet de s’assurer que l’on affecte pas à une variable une valeur ou une donnée à un contenu incompatible avec son contenant. Chaque donnée a une classification son « type », celle-ci influe sur la plage de valeurs possibles, les opérations qui peuvent être effectuées, et la représentation de la donnée en mémoire.
– Un type définit l’ensemble des valeurs que peut prendre un objet informatique ainsi que les opérations permises sur ses valeurs. Par exemple : l’ensemble N de valeurs entières est muni des opérations (+,-,*,/,=,:=,…) sur ces valeurs.
– Chaque type possède un nom.
– Un type est associé à une variable au moyen d’une déclaration.
Type Explicite & Implicite
Dans notre dernier article nous avons initialisé et affecté des variables et constantes avec des valeurs sans en indiquer le type. Bien que Swift soit un langage fortement typé, le compilateur de Swift reconnait le type d’une valeur sans avoir à la spécifier. On parle de « Inferred Typing » dans la documentation anglaise de Swift.
Cependant il est possible d’indiquer le type d’une variable ou d’une constante comme dans la plupart des langages de programmation.
let numeroDeSecu : Int = 1345
On peut se poser la question de savoir si l’on doit déclarer le type d’une variable ou constante explicitement. Dans la plupart des cas il est préférable de laisser le compilateur attribuer un type à une variable ou constante de façon implicite, principalement pour adhérer à la philosophie de Swift d’être un langage concis dont le code est facile à lire.
On écrira donc
let numeroDeSecu = 1345
Types de base
Le langage Swift comme la plupart des langages de programmation offre une gamme de types primitifs, incorporés dans le langage. Les types de données primitifs courants sont:
- le Nombre entier ou réel
- le Caractère
- la Chaîne de caractères
- le Booléen qui n’a que deux valeurs : vrai et faux..
Nous avons utilisé dans l’exemple précédent le type Int qui permet de déclarer variable et constante comme un nombre entier.
Nombre Entier
Un nombre entier est un nombre dont la partie décimale est toujours à zéro, en d’autres termes il ne nécessite pas l’usage d’une virgule (ou point en notation anglaise) suivie d’un chiffre ou plusieurs chiffres. Un nombre entier peut être positif ou négatif, par conséquent peut comporter le signe plus(+) ou moins(-). Pour le langage Swift les entiers sont codés en mémoire suivant plusieurs formes 8, 16, 32 et 64 bits avec signe ou sans signe.
Par exemple, un entier sans signe en 8 bits est du type UInt8, et un entier en 32 bits dont le signe est connu est du type Int32. La lettre U de UInt8 voulant exprimer le mot anglais Unsigned (sans signe).
Dans la plupart des cas on ne spécifie pas une taille spécifique pour un entier car le langage Swift propose un type d’entier additionnel, Int, qui aura la taille par défaut du système d’exploitation sur lequel est déclaré une variable, ainsi Int possède la même taille que Int64 sur les plateformes 64 bits.
var Prix = 234 // Le type implicit est Int let Age : UInt8 = 14 /* Pour connaitre le nombre maximum que l’on peut affecter à une variable en fonction du type du nombre entier on procède de la façon suivante */ let minValue = UInt8.min //minValue vaut 0 et est du type UInt8 let maxValue = UInt8.max //maxValue vaut 255 et est du type UInt8
Nombre à virgule flottante
Ce que l’on appelle en programmation nombre à virgule flottante est un nombre positif ou négatif ayant une partie décimale comme 3.14159 ou -273.15. La virgule est en en fait un point puisqu’on utilise ici la nomenclature anglo-saxonne pour séparer les décimales de l’entier.
Swift propose deux types de nombres à virgules dont le signe est connu :
- Le type Double représente un nombre à virgule en 64 bits. Il permet de déclarer une variable dont la valeur doit être très grande ou particulièrement précise
- Le type Float représente un nombre à virgule en 32 bits. Il permet de déclarer une variable dont la valeur ne requiert pas la précision d’un nombre en 64 bits.
let Prix = 19.99 // Déclaration de variable dont le type implicite est Double let PrixSolde : Double = 17.99 var pi : Float = 3.1416
Booléen
Swift possède le type Booléen, appelés Bool. Les valeurs booléennes sont des valeurs logiques qui ne peuvent qu’être vraies ou fausses. Pour représenter ces deux valeurs Swift définit deux constantes booléennes : true et false
Dans l’exemple suivant on définit deux variables de type booléen. la première leCielEstBleu est définie de manière explicite sans mentionner le type Bool. La deuxième est déclarée explicitement avec la notation typée.
let leCielEstBleu = true let leJustePrix: Bool = false // Déclaration explicite du type booléen
Renommage de type
Pour renommer un type prédéfini dans le langage on utilise le mot typealias « on parle donc de « alias de type »
Les alias de types sont utilisés pour personnaliser un type existant en utilisant un nom plus approprié pour la lisibilité d’un programme.
typealias Entier = UInt16
Une fois l’alias du type défini, on peut donc l’utiliser dans une instruction de déclaration de variable ou constante.
var entierMax = Entier.max // la proprièté "max" définie dans Swift indique la valeur // maximale d'un entier 16 bits let hauteur : Entier = 34
Afficher variable & constante
Pour afficher la valeur courante d’une constante ou d’une variable on utilise la fonction println. La fonction println est une fonction globale qui affiche une valeur, suivie d’un retour à la ligne ( cette fonction ne fait plus partie du langage à parir de la version 2 de Swift). Une seconde fonction, print, réalise exactement la même opération mais sans le retour à la ligne après l’affichage de la valeur.
var bonjour = "Hello"
let hi = "Have a nice day"
let prix = 24.99
print (bonjour)
print ("Le t-shirt est soldé à \(prix)")
Swift print convertit systématiquement les valeurs des variables et les constantes de type entier ou flottant en chaîne de caractères en précédant le nom de la variable d’un anti-slash et en l’entourant de parenthèses
Résumé
Dans le prochain article nous abordons la notion de type String et Tuple. Un type collection permet de regrouper sous une même variable ou constante un ensemble de valeurs.
copyright A rchitectures A pplicatives A vancées A3-Soft