Variables et constantes

Introduction

Tous les langages de programmation utilisent la notion de variable. Une variable permet de stocker des valeurs d'un certain type. On peut affecter des valeurs à des variables et effectuer des opérations sur ces valeurs. Par exemple on peut additionner deux variables et stocker le résultat dans une troisième.

Ce module a pour objectif de présenter le concept de variable et de découvrir les principales opérations que l'on fait avec des variables.

Nous étudierons l'affectation, les opérations sur les nombres et les chaînes de caractères, ainsi que la notion de type. Nous définirons également les constantes, des variables dont la valeur n'est jamais modifiée.

Qu'est ce qu'une variable ?

Objectifs

  • Savoir ce qu'est une variable ;

  • Connaître les bonnes pratiques de nommage.

Mise en situation

Dans les programmes, les variables servent à stocker les données pour réaliser différentes opérations dessus. C'est un outil commun à tous les langages qui permet de faire l'interface entre le programme et la mémoire de l'ordinateur. Chaque variable a un nom ainsi qu'une valeur. Le nom d'une variable est défini par le développeur dans le code de son programme, mais de nombreuses règles existent pour contraindre les noms de variable à un format spécifique à chaque langage. La valeur est dynamique et peut évoluer en fonction de l'exécution du programme, d'où le terme de variable.

Définition

Un ordinateur est doté d'une mémoire, et cette mémoire est composée de nombreuses cases. Les programmes peuvent lire et écrire dans ces cases, grâce à des variables.

Une variable est une case mémoire avec un nom. On peut créer autant de variables que l'on veut dans un programme, pour mémoriser et retrouver des informations.

Une variable est une case dans la mémoire d'un ordinateur

Exemple

/** JavaScript : affiche un Hello World */
let aString = 'Hello World'
let aNumber = 1
console.log(aString)
console.log(aNumber)
"""Python : affiche un Hello World."""
a_string = "Hello World"
a_number = 1
print (a_string)
print (a_number)

SyntaxeDéclarer une variable avec let (JavaScript)

En JavaScript la première fois qu'une variable est utilisée, on la déclare avec le mot clé let :

let aString = 'Hello World'.

AttentionNommer une variable : règles syntaxiques

Il existe des règles pour donner des noms aux variables :

  • Un nom de variable ne peut pas commencer par un chiffre.

  • Un nom de variable ne contient pas d'espace.

MéthodeNommer une variable : conventions

Il existe aussi des conventions, qui permettent de rendre un programme plus lisible et plus compréhensible.

  • Choisir des noms clairs et précis (en lisant le nom d'une variable, il doit être possible de savoir à quoi elle sert dans le programme).

  • Écrire le nom des variables en anglais.

  • Ne pas utiliser de caractères spéciaux (on se restreint aux 26 lettres en minuscules et majuscules, aux 10 chiffres et à l'underscore _).

  • Pour être explicite le nom d'une variable peut contenir plusieurs mots, pour cela on peut :

    • remplacer les espaces par des underscores (méthode snake_case préférée en Python).

    • ou commencer chaque nouveau mot par une lettre majuscule (méthode camelCase préférée en JavaScript).

MéthodecamelCase (variables en JavaScript)

multipleWordsVariable

Méthodesnake_case (variables en Python)

multiple_words_variable

AttentionLa différence entre majuscules et minuscules

Le langage Python, le JavaScript et la majorité des autres langages différencient les majuscules et les minuscules (ils respectent la casse).

Ainsi, totalprice et totalPrice correspondent à deux variables différentes.

SyntaxeÀ retenir

/** JavaScript */
let variableName = value
"""Python."""
variable_name = value

ComplémentPourquoi let ?

Let signifie « soit » en anglais, au sens mathématique de « soit i un entier compris entre... ».

let name = 'Alice' peut donc être traduit par « prenons une variable name qui a pour valeur initiale Alice... »

ComplémentPourquoi pas var ?

En fait, var existe aussi et sert aussi à déclarer des variables. Le terme est antérieur à let et sert à déclarer des variables globales. Mais comme en programmation on n'aime pas beaucoup les variables globales, en 2015 lors d'une évolution de JavaScript let a été introduit pour déclarer des variables locales (ça on aime bien).

Depuis, il est globalement conseillé de ne plus utiliser var et d'utiliser let à la place.

Exercice

Écrire un programme qui déclare une variable qui a pour nom superVariable avec la valeur 42 et qui affiche le contenu de superVariable.

En JavaScript, on déclare une variable avec le mot-clé let.

/** JavaScript : affecte et affiche superVariable */
let superVariable = 42
console.log(superVariable)
"""Python : affecte et affiche superVariable."""
superVariable = 42
print (superVariable)

Créer trois variables initialisées à zéro qui doivent respectivement servir à calculer un nombre de pommes, une quantité de farine en kilogramme et un nombre de gâteaux vendus.

Le nommage des variables doit permettre de comprendre le sens de ce qu'elles stockent.

/** JavaScript : création des trois variables */
let apples = 0
let flour = 0
let cakes = 0
"""Python : création des trois variables."""
apples = 0
flour = 0
cakes = 0

Remarque

On aurait aussi pu choisir un nommage du type appleNumber, flourQuantity et cakeSold. Le choix dépend de l'utilisation des variables dans le programme : est-ce-qu'il est toujours explicite que la variable apples référence un nombre de pomme et pas un nom de pommes ?

Affectation

Objectifs

  • Savoir déclarer et affecter une variable ;

  • Savoir affecter la valeur d'une variable à une autre variable.

Mise en situation

La syntaxe qui permet d'affecter une valeur à une variable dépend du langage de programmation.

Définition

On appelle affectation le fait de donner une certaine valeur à une variable. Affecter une valeur à une variable signifie écrire cette valeur dans la case mémoire représentée par la variable.

Pour réaliser une affectation en JavaScript ou en Python on utilise le signe =.

Exemple

ExempleJavaScript

/** JavaScript : déclarations, affectations et affichages */
let x = 1
console.log(x)
x = 2
console.log(x)
let y = x
console.log(y)
// Affiche 1, 2 et 2

ExemplePython

"""Python : affectations et affichages."""
x = 1
print(x)
x = 2
print(x)
y = x
print(y)
// Affiche 1, 2 et 2

Remarque

Il est possible d'affecter la valeur stockée dans une variable à une autre variable.

SyntaxeÀ retenir

/** JavaScript */
let variableName = value
console.log(variableName)
"""Python."""
variable_name = value
print (nom_variable)

Exercice

Écrire un programme JavaScript qui contient une variable qui a le nom superVariable avec la valeur 42 et qui affiche cette variable. Ensuite, affecter la nouvelle valeur 43 à superVariable et l'afficher à nouveau.

let superVariable = 42
console.log(superVariable)
superVariable = 43
console.log(superVariable)

Type

Objectif

  • Comprendre l'utilité des types.

Mise en situation

L'affectation d'une valeur à une variable permet de stocker la valeur en question en mémoire, durant l'exécution du programme. Cependant l'espace mémoire nécessaire pour le stockage va fortement dépendre de cette valeur. En effet, stocker le chiffre 4 demandera beaucoup moins d'espace que de stocker une phrase complète. C'est pour cela que de nombreux langages associent un type à une variable, qui doit être définie lors de sa déclaration. De plus, le type d'une variable permet de définir la manière d'effectuer des opérations dessus. En effet il est possible de réaliser des opérations mathématiques sur des nombres, mais pas sur du texte.

Définition

Une variable est associée à un type, qui fixe la taille de la case mémoire et les opérations que l'on peut faire sur cette variable.

Méthode

Pour afficher le type d'une variable appelée mot :

  • En JavaScript : console.log(typeof mot)

  • En Python : print(type(mot))

DéfinitionTypes courants en JavaScript

  • Les nombres : number

  • Les chaînes de caractères : string

  • Les booléens (une variable qui peut uniquement être vraie (true) ou fausse (false)) : boolean

DéfinitionTypes courants en Python

  • Les nombres entiers : int

  • Les nombres décimaux : float

  • Les chaînes de caractères : str

Exemple

/** JavaScript : affiche le type de variables */
let aString = 'Hello World'
console.log(typeof aString)
let aNumber = 1
console.log(typeof aNumber)
string
number
"""Python : affiche le type de variables."""
a_string = "Hello World"
print(type(a_string))
a_number = 1
print(type(a_number))
<class 'int'>
<class 'float'>

SyntaxeÀ retenir

"""Python."""
type(variable_name)
/** JavaScript */
typeof variableName

Exercice

En JavaScript :

  • Créer une variable superVariable et lui affecter la valeur 42.

  • Créer une autre variable superVariable2 et lui affecter la valeur 42.1.

  • Créer une autre variable superVariable3 et lui affecter la valeur '42.1'.

Afficher le type de ces trois variables.

let superVariable = 42
let superVariable2 = 42.1
let superVariable3 = '42.1'
console.log(typeof superVariable)
console.log(typeof superVariable2)
console.log(typeof superVariable3)
number
number
string

Remarque

Le langage Python différencie les nombres entiers des nombres décimaux alors que le langage JavaScript associe le même type à tous les nombres (le type number).

Qu'est ce qu'une constante ?

Objectifs

  • Savoir quand utiliser une constante ;

  • Connaître la syntaxe de déclaration de constante en JavaScript.

Mise en situation

Dans un programme, il arrive que certaines données ne changent pas. Ce sont des constantes dont la déclaration et l'initialisation est un peu différente de celles des variables.

DéfinitionConstance

Dans un programme, certaines valeurs sont fixées à l'avance et ne changent pas.

Le calcul du périmètre d'un cercle fait intervenir son diamètre (qui dépend du cercle) et le nombre Pi (qui ne change pas).

Pour s'assurer que dans le programme la valeur qu'on aura associée à Pi ne change pas, on déclare que Pi est une constante.

SyntaxeConstantes en JavaScript

Pour indiquer qu'une variable est constante en JavaScript, on utilise le mot-clé const au lieu du mot-clé let. Tenter de modifier une variable déclarée const provoquera une erreur.

// diameter pourra être modifiée, pour un autre cercle, mais pi est une constante
let diameter = 10
const pi = 3.14159

AttentionInitialisation

Il est possible de séparer la déclaration d'une variable et son initialisation.

En revanche il est impossible de séparer déclaration et initialisation d'une constante : elle doit toujours être initialisée lors de sa déclaration.

// Ce code ne fonctionne pas : la constante n'est pas
// initialisée lors de sa déclaration.
const pi
pi = 3.14

ComplémentConstantes en Python

Il n'est pas possible de définir des constantes en Python, il faut donc faire attention à ne jamais modifier une variable dont la valeur est sensée être fixe.

Comment créer la constante Phi en JavaScript ?

let phi = 1.618 

const phi 

phi = 1.618 

const phi = 1.618 

Il est possible de déclarer des constantes en Python.

Vrai

Faux

Quel programme calcule et affiche correctement l'aire d'un disque de rayon 10 cm ?

let ray = 10 

const pi = 3.14159 

let area = ray * ray * pi 

console.log(area + " cm²") 

let ray = 10 

const pi

pi = 3.14159 

let area = ray * ray * pi 

console.log(area + " cm²") 

let ray

const pi = 3.14159

let area = ray * ray * pi 

console.log(area + " cm²") 

Comment créer la constante Phi en JavaScript ?

let phi = 1.618 

const phi 

phi = 1.618 

const phi = 1.618 

Il est possible de déclarer des constantes en Python.

Vrai

Faux

Python n'a pas de mécanisme pour forcer une variable à être constante. Une convention entre développeurs est d'indiquer le nom de la pseudo-constante en majuscules, mais rien n'empêchera techniquement sa modification.

Quel programme calcule et affiche correctement l'aire d'un disque de rayon 10 cm ?

let ray = 10 

const pi = 3.14159 

let area = ray * ray * pi 

console.log(area + " cm²") 

let ray = 10 

const pi

pi = 3.14159 

let area = ray * ray * pi 

console.log(area + " cm²") 

let ray

const pi = 3.14159

let area = ray * ray * pi 

console.log(area + " cm²") 

let ray = 10 

const pi = 3.14159 

let area = ray * ray * pi 

console.log(area + " cm²") 

Ici, ray et area pourront être modifié pour effectuer d'autres calculs. En revanche, pi ne changera jamais : sa valeur est fixe.

let ray = 10 

const pi

pi = 3.14159 

let area = ray * ray * pi 

console.log(area + " cm²") 

Il faut initialiser une constante lors de sa déclaration.

let ray

const pi = 3.14159

let area = ray * ray * pi 

console.log(area + " cm²") 

Il y a une erreur de syntaxe, ray n'est associé à aucune valeur.

Opérations sur les nombres

Objectif

  • Savoir faire des opérations simples sur des variables de type numérique.

Mise en situation

Il est possible d'effectuer des opérations mathématiques sur les variables.

Les variables de type nombres entiers ou décimaux peuvent être manipulées avec les fonctions mathématiques classiques, comme :

  • La somme : +

  • La soustraction : -

  • La multiplication : *

  • La division : /

Exemple

/** JavaScript : effectue la somme 42 + 1 */
const x = 42
const y = 1
const z = x + y
console.log(z)
"""Python : effectue la somme 42 + 1."""
x = 42
y = 1
z = x + y
print (z)

Les deux programmes affichent 43.

SyntaxeÀ retenir

/** JavaScript */
const x = 1 + 2
const y = x - 1
let z = x / y
z = z * 2
"""Python."""
x = 1 + 2
y = x - 1
z = x / y
z = z * 2

Exercice

Écrire un programme JavaScript qui affiche le résultat du calcul 42 * 43.

console.log(42 * 43)

En JavaScript :

  • Créer les variables x et y de valeurs 42 et 43.

  • Affecter la valeur x multipliée par y à une variable z.

  • Afficher z.

Les variables ne sont pas ré-affectées, penser à utiliser le mot-clé const.

const x = 42
const y = 43
const z = x * y
console.log(z)

En JavaScript :

  • Créer la variable x avec la valeur initiale 42.

  • Ajouter 1 à x et stocker le résultat dans x (on utilise ici une seule variable).

  • Afficher x.

let x = 42
x = x + 1
console.log(x)

Opération sur les chaînes de caractères

Objectif

  • Savoir faire des opérations simples sur des variables de type chaîne de caractères.

Mise en situation

Il existe de nombreuses opérations pour manipuler les chaînes de caractères, par exemple :

  • Connaître le nombre de caractères de cette chaîne.

  • Retourner le caractère qui est à la position x.

  • Retourner une sous-chaîne de caractère qui commence à la position x et se termine à la position y.

SyntaxeJavaScript

  • myString.length permet de connaître le nombre de caractères de myString,

  • myString[x] permet de retourner le caractère qui est à la position x,

  • myString.substring(x, y) permet de retourner une sous-chaîne de caractères qui commence à la position x et se termine à la position y.

Python

  • len(my_string) permet de connaître le nombre de caractères de my_string,

  • my_string[x] permet de retourner le caractère qui est à la position x,

  • my_string[x:y] permet de retourner une sous-chaîne de caractères qui commence à la position x et se termine à la position y.

Attention

En Python, en JavaScript, comme dans la plupart des langages informatiques, on commence à compter à partir de 0 et non à partir de 1. Le premier caractère d'une chaîne est donc le caractère numéro 0.

Exemple

/** JavaScript : manipule la chaîne Hello World */
let s = 'Hello World'
console.log(s.length)
console.log(s[0])
console.log(s.substring(6, 11))
"""Python : manipule la chaine Hello World."""
s = "Hello World"
print(len(s))
print(s[0])
print(s[6:11])

Les deux programmes affichent :

11
H
World

Exercice

En JavaScript, créer la chaîne correspondant au vers « A stone Troll sat on his seat of stone », puis :

  • Compter le nombre de caractères.

  • Afficher le 9e caractère (les espaces sont des caractères comme les autres).

  • Et afficher la sous-chaîne correspondant à Troll.

La numérotation des caractères commence à 0. Ainsi, le premier A est à l'indice 0 et non 1.

const verse = 'A stone Troll sat on his seat of stone'
console.log(verse.length)
console.log(verse[8])
console.log(verse.substring(8, 13))

Essentiel

Quiz

Quiz - Méthode

Quels noms de variables sont autorisés ?

nbFruitsVendus

total_pommes_restantes

somme Pasteques

1er_choix

Quels noms de variables sont en camel case, la syntaxe conseillée en JavaScript ?

nbFruitsSold

total_bananas

SumPeaches

firstChoice

Quelle opération peut réaliser le programme suivant ?

const a = 9.81
const b = 74.56
const c = a * b
console.log(c)

Il affiche le résultat de la multiplication de 9,81 par 74,56.

Il affiche le nombre moyen de grenouilles vertes qui a été multiplié par 9,81 dans les étangs d'une commune.

Il calcule le poids d'un objet dont la masse est de 74,56 kg.

Quiz - Code

Qu'affiche le programme JavaScript suivant ?

const book = "Les Misérables"
console.log(book)

Qu'affiche le programme suivant ?

const word = 'ananas'
console.log(typeof word)
console.log(word[0], word[3], word[5])
console.log(word.substring(4, word.length))

string

a a a

nas

string

n n s

nas

string

a n s

as

string

a a s

nas

Qu'affiche le programme suivant ?

const firstName = 'Marie'
const name = 'Curie'
console.log(firstName, name)

Marie

Curie

Marie Curie

MarieCurie

Qu'affiche le programme suivant ?

const firstName = 'Marie'
const name = 'Curie'
console.log(name + firstName)

Marie

Curie

Marie Curie

CurieMarie

Soit le programme suivant. Par quoi doit-on remplacer les « ... » pour obtenir les initiales d'Alan Turing ?

const name = 'Alan Turing'
console.log(name[0] + name[...])

Que fait le programme suivant ?

const firstVehicle = 'voiture'
const secondVehicle = 'avion'
if (firstVehicle.length > secondVehicle.length) {
  console.log(secondVehicle, firstVehicle)
} else {
  console.log(firstVehicle, secondVehicle)
}

Le programme compare les mots selon l'ordre alphanumérique et les affiche triés.

Le programme ne fait rien, on ne peut pas comparer des constantes.

Le programme compare la longueur des mots et affiche le mot le plus court en premier et le plus long en deuxième.

Quelle opération permet de calculer le nombre de paires que je peux faire avec 51 chaussettes ?

const numberOfPairs = 51 / 2

const numberOfPairs = 51 - 1/2

numberOfPairs = Math.floor(51 / 2)

Quiz - Méthode

Quels noms de variables sont autorisés ?

nbFruitsVendus

total_pommes_restantes

somme Pasteques

1er_choix

nbFruitsVendus

total_pommes_restantes

somme Pasteques

Un nom de variable ne peut pas contenir d'espaces.

1er_choix

Un nom de variable ne peut pas commencer par un chiffre.

Quels noms de variables sont en camel case, la syntaxe conseillée en JavaScript ?

nbFruitsSold

total_bananas

SumPeaches

firstChoice

La convention camelCase sépare les mots par une majuscule, mais le premier mot est toujours en minuscules.

Il affiche le résultat de la multiplication de 9,81 par 74,56.

Il affiche le nombre moyen de grenouilles vertes qui a été multiplié par 9,81 dans les étangs d'une commune.

Il calcule le poids d'un objet dont la masse est de 74,56 kg.

Ce programme est sensé calculer le poids d'un objet dont la masse est de 74,56 kg mais les noms des variables (a pour pour la constante de gravitation, b pour la masse, c pour le poids) ne permettent pas de le comprendre facilement.

Par conséquent ce programme pourrait tout aussi bien servir à afficher le résultat de la multiplication de 9,8 par 74,56 ou à calculer et à afficher le nombre de grenouilles vertes.

C'est pour cela qu'il est très important de nommer de façon claire et précise toutes les variables et constantes d'un programme.

Quiz - Code

Qu'affiche le programme JavaScript suivant ?

const book = "Les Misérables"
console.log(book)
Les Misérables

string

a a a

nas

string

n n s

nas

string

a n s

as

string

a a s

nas

string

a a a

nas

string

n n s

nas

string

a n s

as

La variable est de type string, ses premier, quatrième et sixième caractères (indices 0, 3 et 5) sont a, n et s. Aussi, la chaîne partant du cinquième caractère (indice 4) et allant jusqu'à la fin du mot est as.

string

a a s

nas

Marie

Curie

Marie Curie

MarieCurie

La fonction console.log ajoute automatiquement une espace entre les différentes valeurs qu'on lui demande d'afficher.

Marie

Curie

Marie Curie

CurieMarie

L'opérateur « + » permet de concaténer (coller) des chaînes de caractères qui sont donc affichées les unes à la suite des autres, sans espace.

Pour séparer les chaînes et rendre le texte plus lisible, on peut ajouter une espace.

const firstName = 'Marie'
const name = 'Curie'
console.log(name + ' ' + firstName)

Soit le programme suivant. Par quoi doit-on remplacer les « ... » pour obtenir les initiales d'Alan Turing ?

const name = 'Alan Turing'
console.log(name[0] + name[...])
5

La lettre T est la sixième lettre de la variable name. Comme les indices commencent à 0, il faut utiliser l'indice 6 - 1 = 5.

const name = 'Alan Turing'
console.log(name[0] + name[5])

Le programme compare les mots selon l'ordre alphanumérique et les affiche triés.

Le programme ne fait rien, on ne peut pas comparer des constantes.

Le programme compare la longueur des mots et affiche le mot le plus court en premier et le plus long en deuxième.

Quelle opération permet de calculer le nombre de paires que je peux faire avec 51 chaussettes ?

const numberOfPairs = 51 / 2

const numberOfPairs = 51 - 1/2

numberOfPairs = Math.floor(51 / 2)

L'opération 51 / 2 renvoie un nombre décimal : 25.5. Or le nombre de paires doit être un nombre entier.

Il faut donc retirer la partie décimale, ce que permet de faire la fonction Math.floor(). floor signifie sol ou plancher en anglais.

Le programme suivant permet de calculer et d'afficher le nombre de paires faisables.

const numberOfSocks = 51
const division = numberOfSocks / 2
const numberOfPairs = Math.floor(division)
console.log(numberOfPairs)

Défi

Alice et Bob font leurs courses au supermarché. Chaque fois qu'ils ajoutent un article dans le caddie, ils calculent le prix total des articles présents dans le caddie.

Liste des articles entrées au fur et à mesure :

  • 3 pastèques à 3 € pièce,

  • 2 kilos de sucre à 1 € par kilo,

  • 4 litres d'huile de noix à 2 € le litre,

  • 1 tarte aux pommes à 5 €,

  • 2 paquets de riz à 2 € le paquet,

Écrire un programme qui commence par créer la variable total en l'initialisant à la valeur 0.

Puis, pour chaque article de la liste le programme doit :

  • affecter le nom de l'article à une variable article,

  • affecter le prix de l'article à une variable price,

  • affecter la quantité à une variable quantity,

  • calculer le nouveau total,

  • afficher les trois premières lettres de l'article, puis le prix unitaire de l'article, puis la quantité, puis le prix total cumulé dans le caddie depuis le début des achats.

On utilisera les variables :

  • total,

  • article,

  • price,

  • quantity.

let total = 0
let article = 'Pastèque'
let price = 3
let quantity = 3
total = total + price * quantity
console.log(article.substring(0, 3), price, quantity, total)
article = 'Sucre'
price = 1
quantity = 2
total = total + price * quantity
console.log(article.substring(0, 3), price, quantity, total)
article = 'Huile de noix'
price = 4
quantity = 2
total = total + price * quantity
console.log(article.substring(0, 3), price, quantity, total)
article = 'Tarte aux pommes'
price = 5
quantity = 1
total = total + price * quantity
console.log(article.substring(0, 3), price, quantity, total)
article = 'Riz'
price = 2
quantity = 2
total = total + price * quantity
console.log(article.substring(0, 3), price, quantity, total)

Conclusion

Les variables sont essentielles au fonctionnement d'un programme. Sans elles, il ne serait pas possible de traiter des données ou de stocker des informations temporairement. Ces variables sont créées par le développeur dans un programme, et des valeurs sont ensuite affectées, en fonction de son déroulement. Les variables ont systématiquement un type, qui permet de définir à quoi ressemble la valeur qui sera stockée : un nombre, une chaîne de caractères, etc. De plus ce type permet de définir les opérations qu'il est possible de réaliser sur la variable, chaque type ayant des opérations qui lui sont propres.

Portée des variables

Objectif
  • Comprendre la notion de portée locale et de bloc de définition.

Mise en situation

Un programme est séparé en blocs afin d'être plus lisible. Par exemple si on veut écrire un programme qui affiche une suite de nombres puis qui calcule leur somme, on peut séparer le programme en deux parties : deux blocs, qui ont chacun leurs variables. En effet chaque variable ne sera utilisable que dans le bloc de code où elle a été définie. On appelle portée d'une variable la zone de code dans laquelle une variable sera définie et utilisable.

DéfinitionPortée d'une variable

Lorsqu'on définit une variable elle est associée au bloc où elle se trouve et n'est visible que dans celui-ci. On parle de portée locale.

Cela signifie qu'il est impossible d'afficher ou d'utiliser cette variable dans un autre bloc : elle n'existe tout simplement pas.

Si une variable est déclarée dans le bloc principal (c'est à dire en dehors de toute boucle ou fonction) elle est visible dans toute la partie du programme située après sa déclaration.

Exemple

Dans le programme suivant la variable numberApple est visible dans tout le programme y compris dans le bloc if.

En revanche la variable enoughApple est déclarée dans le bloc if, donc visible uniquement dans celui-ci.

La dernière instruction génère donc une erreur.

/** JavaScript */
const numberApple = 30
console.log(numberApple)
if(numberApple === 30) {
  let enoughApple = true
  console.log(enoughApple)
}
console.log(enoughApple)
Remarque

La portée des variables fonctionne de la même manière avec d'autres boucles ou dans des fonctions.

Une variable définie dans une fonction n'est visible que dans celle-ci.

À retenir

En fonction du bloc où sont déclarées les variables, elles n'ont pas la même portée et ne sont donc pas visibles et utilisables dans la même partie du programme.

Variables globales

Objectifs
  • Savoir ce que sont et à quoi servent les variables globales ;

  • Adopter les bonnes pratiques.

Mise en situation

Les variables ont généralement une portée locale, c'est à dire qu'elles ne sont accessibles que dans le bloc de code où elles ont été définies. C'est la plupart du temps largement suffisant, mais il peut arriver d'avoir besoin d'une variable soit accessible dans la totalité du programme. Par exemple une variable qui contiendrait une information de configuration régulièrement utilisé à des endroits très différents du code. Pour cela, il est possible d'utiliser une variable de portée globale, qui ne sera donc pas limitée de la même manière qu'une variable locale.

DéfinitionVariable globale en JavaScript

En JavaScript, on définit habituellement une variable avec let nameV = value.

En remplaçant le mot-clé let par le mot-clé var on change la portée de la variable.

La variable aura une portée globale et sera donc visible dans toute la partie du programme située après sa définition.

En Python le mot-clé global, suivi du nom de la variable indique que la variable à utiliser a été préalablement définie dans un autre bloc du programme et que c'est cette variable qu'il faut modifier.

Exemple
/** JavaScript : programme erroné */
const numberApple = 30
console.log(numberApple)
if(numberApple === 30)
{
  let enoughApple = true
  console.log(enoughApple)
}
console.log(enoughApple)

L’exécution de ce programme renvoie une erreur car la dernière instruction fait référence à une variable qui n'existe pas : enoughApple est locale au bloc if.

/** JavaScript  : programme corrigé */
const numberApple = 30
console.log(numberApple)
if(numberApple === 30)
{
  var enoughApple = true
  console.log(enoughApple)
}
console.log(enoughApple)

Si on remplace let par var dans la définition de enoughApple, il n'y a plus d'erreur car la variable est visible hors de la boucle if.

Ce code fonctionne, mais c'est une mauvaise pratique !

AttentionÀ consommer avec modération

Les variables globales sont source de nombreux problèmes.

En effet, une variable déclarée globale pourra être modifiée dans n'importe quelle autre partie du programme, ce qui peut provoquer des erreurs difficiles à détecter, comme l'écrasement inattendu de la valeur d'origine (on appelle cela un effet de bord).

Il est recommandé de ne jamais utiliser de variables globales par défaut, et de les utiliser avec parcimonie uniquement dans des cas bien identifiés.

Complément

Si on veut inverser la valeur de deux variables avec une fonction, on peut utiliser des variables globales (mais ce n'est pas une bonne façon de faire).

"""Python."""
fruit_1 = ' pear '
fruit_2 = ' pineapple '
def inversion():
    global fruit_1
    global fruit_2
    temp = fruit_2
    fruit_2 = fruit_1
    fruit_1 = temp
print(fruit_1 + fruit_2)
inversion()
print(fruit_1 + fruit_2)

Le programme affiche « pear pineapple » puis « pineapple pear ».

À retenir

Il est possible de créer des variables dont la portée s’étend au delà de leur bloc de définition, avec le mot-clé var en JavaScript et le mot-clé global en Python, il s'agit des variables globales. Cependant il est recommandé de les utiliser avec prudence car cela peut provoquer des résultats inattendus.

Liste des raccourcis clavier

Liste des fonctions de navigation et leurs raccourcis clavier correspondant :

  • Bloc Suivant : flèche droite, flèche bas, barre espace, page suivante, touche N
  • Bloc Précédent : flèche gauche, flèche haut, retour arrière, page précédente, touche P
  • Diapositive Suivante : touche T
  • Diapositive Précédente : touche S
  • Retour accueil : touche Début
  • Menu : touche M
  • Revenir à l'accueil : touche H
  • Fermer zoom : touche Échap.