Manipuler les variables
Qu’est-ce qu’une variable ?
Le concept de variable n’est pas propre au langage Kotlin puisque les variables existent dans la quasi-totalité des langages de programmation. Une variable permet, dans un programme, de stocker des informations comme des chiffres, des chaînes de caractères, des résultats de calcul, des saisies utilisateur, etc.
Déclarer une variable
En Kotlin, une variable est constituée de plusieurs éléments : un nom, un type et une valeur.
Le nom permet d’identifier la variable afin de la réutiliser tout au long d’un programme. Il doit être unique. Le type correspond au type d’élément que stocke la variable (un chiffre, un caractère, un nombre, etc.). La valeur correspond à ce qui est réellement stocké dans la variable, par exemple le nombre 5, la chaîne de caractères "toto" ou encore le chiffre décimal 5.7.
Nommer une variable
Une variable doit être nommée. Le but étant de pouvoir la manipuler et l’identifier tout au long du programme. En Kotlin, comme dans de nombreux langages de programmation, il y a quelques contraintes à respecter quant au nom que l’on donne aux variables d’un programme.
La première contrainte est l’utilisation de la notation lowerCamelCase. Cela signifie que le nom de la variable ne peut pas contenir d’espace ni aucun caractère de ponctuation. La première lettre du nom doit être une lettre en minuscule ; et si l’on souhaite utiliser plusieurs mots collés, la première lettre de chacun des mots (sauf le premier) doit être une lettre majuscule.
La deuxième contrainte concerne les caractères utilisables pour nommer la variable : il ne peut y avoir que des lettres minuscules et majuscules, des chiffres et des underscores (_).
En outre, le nom de la variable doit commencer par une lettre.
Comme de nombreux langages de programmation, Kotlin est sensible à la casse et fait donc la différence entre les majuscules...
Les types de variables
En Kotlin, on distingue généralement deux types de variables : des variables de type primitif et des variables de type objet.
Les types primitifs sont les types fondamentaux du langage Kotlin. Il s’agit des nombres entiers, des nombres réels, des booléens ou encore des caractères.
Nous reviendrons plus loin sur le second type : les objets.
1. Les nombres entiers
En Kotlin, comme dans de nombreux langages de programmation, il existe plusieurs types de variables permettant de stocker des nombres entiers. Il est important de tous les connaître, car ils permettent d’optimiser un programme en choisissant le type le plus adapté à la situation :
Type |
Occupation en mémoire (en bits) |
Minimum |
Maximum |
Long |
64 |
-9223372036854775808 |
9223372036854775807 |
Int |
32 |
-2147483648 |
2147483647 |
Short |
16 |
-32768 |
32767 |
Byte |
8 |
-128 |
127 |
2. Les nombres flottants
En Kotlin, comme dans de nombreux langages de programmation, il existe plusieurs types de variables permettant de stocker des nombres flottants, c’est-à-dire des nombres décimaux.
Type |
Occupation en mémoire (en bits) |
Double... |
Déclarer une variable (suite)
Jusqu’à maintenant, nous avons surtout vu la théorie sur les variables, mais nous ne nous sommes pas encore penchés sur la syntaxe à utiliser. Pour déclarer une variable, il convient d’écrire, dans l’ordre, le mot-clé var (comme "variable"), suivi du nom de la variable, du caractère : et du type de la variable.
Exemples
fun main()
{
var nombreDeVoitures: Int
var argent: Long
var age: Byte
var prixAspirateur: Short
var prenom: String
var estVrai: Boolean
var resultatDivision: Double
var resultatSoustraction: Float
var lettre: Char
}
Affecter une valeur à une variable
Maintenant que nous savons déclarer des variables, nous pouvons leur affecter des valeurs. Pour cela, il suffit d’écrire, dans l’ordre, le caractère =, suivi de la valeur à affecter.
Exemples
fun main()
{
var nombreDeVoitures: Int = 35000
var argent: Long = 1001L
var age: Byte = 100
var prixAspirateur: Short = 123
var prenom: String = "Ludovic"
var estVrai: Boolean = true
var resultatDivision: Double = 0.3456314786114552145211
var resultatSoustraction: Float = 0.365f
var lettre: Char = 'A'
}
Pour les valeurs de type Long et Float, vous remarquerez l’utilisation des caractères L et f.
Il est également possible de changer à tout moment la valeur d’une variable ou encore de lui affecter une valeur après l’avoir déclarée :
fun main()
{
var nombreDeVoitures: Int
nombreDeVoitures = 6
nombreDeVoitures = 10
var age: Int = 6 ...
Les variables de type "lecture seule"
Outre les variables déclarées avec le mot-clé var et dont il est possible de changer la valeur à tout moment, il existe les variables en lecture seule. Elles ne peuvent prendre qu’une seule valeur. Une fois cette valeur affectée, il n’est plus possible de la changer.
La syntaxe est très proche de la précédente. La seule différence est que nous utilisons le mot-clé val à la place du mot-clé var.
fun main()
{
val nombreDeVoitures: Int
nombreDeVoitures = 6
val age: Int = 6
}
Les constantes
Parfois, il est nécessaire d’utiliser des variables dont la valeur ne doit pas changer pendant toute la durée du programme. Ces variables particulières sont appelées constantes.
Du point de vue de la syntaxe, la déclaration d’une constante est comparable à la déclaration de variable en lecture seule, à ceci près qu’on ajoute le mot-clé supplémentaire : const.
Les constantes sont globales. Il convient donc de les déclarer en dehors de la fonction main.
Par ailleurs, il est obligatoire de donner à une constante sa valeur dès sa déclaration.
const val age: Int = 6
fun main()
{
//...
}
Quelle est alors la différence entre une constante et une variable en lecture seule ?
Nous venons de voir une différence fondamentale : une constante doit être initialisée avec une valeur dès sa déclaration. Ce n’est pas le cas d’une variable en lecture seule. En outre, contrairement aux constantes les variables en lecture seule permettent...
Formater des nombres
Le langage Kotlin offre la possibilité de formater les variables de types numériques avec le séparateur underscore (_). Si ce formatage n’est pas obligatoire, il permet de rendre le code source d’un programme plus lisible dans le cas de l’utilisation de grands nombres.
val grandNombre: Int = 27_000
val tresGrandNombre: Double = 1_000_000_000_000.0
L’inférence de type
L’inférence de type est un mécanisme qui permet au compilateur de rechercher automatiquement le type d’une variable en fonction de la valeur affectée. Pour le développeur, cela signifie qu’il n’est pas systématiquement nécessaire de déclarer le type d’une variable, ce qui simplifie grandement la tâche.
L’inférence de type n’est possible que si la valeur de la variable est affectée au moment de sa déclaration !
val nombreDeVoitures = 35000
val argent = 1001L
val age = 100
val prixAspirateur = 123
val prenom = "Ludovic"
val estVrai = true
val resultatDivision = 0.3456314786114552145211
val resultatSoustraction = 0.365f
val lettre = 'A'
Si précédemment les variables age et prixAspirateur étaient de type Short et Byte, avec l’inférence de type, elles sont dorénavant de type Int toutes les deux.
Pour forcer l’utilisation des types Short et Byte, nous pouvons utiliser la syntaxe suivante :
val age = 100.toByte() ...
Afficher le contenu d’une variable
Au début de cet ouvrage, nous avons vu qu’il est possible d’afficher du texte dans le terminal via les fonctions println et print.
Pour afficher le contenu d’une variable, nous utilisons les mêmes fonctions :
fun main()
{
val age = 10
print("la variable age a pour valeur : ")
print(age)
}
L’exécution du code permet d’afficher la phrase suivante dans le terminal :
la variable age a pour valeur : 10
Il est également possible d’afficher la même phrase grâce à une seule instruction print. Pour cela, il convient d’utiliser ce qu’on appelle les templates de chaînes de caractères (string templates). Dans cet exemple, nous écrivons le nom de la variable (age) dans la chaîne de caractères en le faisant précéder du symbole $.
fun main()
{
val age = 10
print("la variable age a pour valeur : $age")
}
Via ce système, il est possible d’afficher plusieurs variables dans...
Place aux calculs !
1. Les calculs de base
Dans cette section, nous allons manipuler les variables afin de réaliser des calculs comme des additions, des multiplications, des divisions, etc. Commençons par des opérations simples, à savoir les additions, les soustractions, les multiplications, les divisions et le modulo.
a. L’addition
Pour faire une addition, il convient, comme en mathématiques, d’utiliser le symbole +. Le résultat de cette addition peut être stocké dans une variable.
Par exemple, le code suivant additionne deux nombres entiers et affiche le résultat dans le terminal :
val resultat = 1 + 2
print(resultat)
b. La soustraction
Le principe de la soustraction est en tout point identique à celui de l’addition, si ce n’est qu’il convient d’utiliser le symbole -.
Par exemple, le code suivant soustrait deux nombres entiers et affiche le résultat dans le terminal :
val resultat = 5 - 2
print(resultat)
c. La multiplication
Le principe reste le même. Cependant, ici, c’est le symbole * qui doit être utilisé.
Par exemple, le code suivant multiplie deux nombres entiers et affiche le résultat dans le terminal :
val resultat = 5 * 2
print(resultat)
d. La division
Pour exprimer une division, c’est le symbole / que l’on utilise.
Par exemple, le code suivant divise deux nombres entiers et affiche le résultat dans le terminal :...
En résumé
-
Les variables sont indispensables pour écrire un programme informatique.
-
Il existe plusieurs types de variables.
-
Pour affecter une valeur à une variable, on utilise le caractère =.
-
Pour déclarer une variable, on peut utiliser les mots-clés var et val.
-
L’inférence de type permet de se dispenser de l’écriture du type de la variable.
-
Il est possible d’effectuer divers calculs mathématiques avec les variables, de la simple addition au logarithme népérien.
-
Il existe des écritures raccourcies qui permettent de rendre le code que l’on écrit moins verbeux.