Numérique et Sciences Informatiques > Algorithmique : Concepts de Base > Fonctions et Procédures > Portée des variables
Portée des variables : Variables locales vs. Variables globales
Découvrez la notion de portée des variables en algorithmique, un concept fondamental pour comprendre comment les variables sont accessibles et modifiables dans différentes parties d'un programme. Nous explorerons les variables locales et globales avec des exemples concrets pour une compréhension approfondie.
Introduction à la portée des variables
La portée (ou *scope* en anglais) d'une variable définit les régions du code où cette variable est accessible et utilisable. Comprendre la portée des variables est essentiel pour écrire des programmes robustes et éviter des erreurs inattendues. En effet, une variable déclarée dans une zone spécifique du code n'est pas forcément accessible partout. Il existe principalement deux types de portée : locale et globale.
Variables Locales
Une variable locale est déclarée à l'intérieur d'une fonction ou d'un bloc de code spécifique (par exemple, une boucle *for* ou une instruction *if*). Elle n'est accessible qu'à l'intérieur de cette fonction ou de ce bloc. Une fois que l'exécution de la fonction ou du bloc est terminée, la variable locale est détruite et n'est plus accessible. Cela signifie que vous ne pouvez pas utiliser une variable locale en dehors de la fonction ou du bloc où elle a été définie. L'avantage des variables locales est qu'elles permettent de maintenir l'indépendance des différentes parties du code. Elles évitent les conflits de noms, car des variables locales avec le même nom peuvent exister dans différentes fonctions sans interférer les unes avec les autres.
Exemple :
Dans cet exemple, la variable *x* est locale à la fonction *exempleLocal()*. Elle n'est accessible que dans cette fonction. La tentative d'afficher *x* en dehors de la fonction génère une erreur.fonction exempleLocal() {
variable locale x = 10
afficher(x) // Affiche 10
}
exempleLocal()
afficher(x) // Erreur : x n'est pas définie dans cette portée
Variables Globales
Une variable globale est déclarée en dehors de toute fonction ou bloc de code. Elle est accessible depuis n'importe quelle partie du programme, y compris à l'intérieur des fonctions. Cela signifie que sa valeur peut être lue ou modifiée depuis n'importe où dans le code. Bien que les variables globales puissent sembler pratiques, elles peuvent rendre le code plus difficile à comprendre et à maintenir. En effet, une modification inattendue d'une variable globale dans une partie du code peut affecter le comportement d'autres parties du code.
Exemple :
Dans cet exemple, la variable *y* est globale. Elle est accessible et modifiable depuis la fonction *exempleGlobal()* et depuis l'extérieur de la fonction. La fonction modifie la valeur de *y*, ce qui affecte l'affichage ultérieur de *y*.variable globale y = 20
fonction exempleGlobal() {
afficher(y) // Affiche 20
y = 30 // Modifie la valeur de y
}
afficher(y) // Affiche 20
exempleGlobal()
afficher(y) // Affiche 30 (la valeur a été modifiée par la fonction)
Conflits de noms
Que se passe-t-il si une variable locale a le même nom qu'une variable globale ? Dans ce cas, la variable locale *masque* la variable globale à l'intérieur de la fonction ou du bloc où la variable locale est définie. Cela signifie que, dans cette fonction ou ce bloc, le nom fait référence à la variable locale, et non à la variable globale. En dehors de cette fonction ou de ce bloc, le nom fait toujours référence à la variable globale.
Exemple :
Dans cet exemple, à l'intérieur de la fonction *exempleConflit()*, la variable locale *z* masque la variable globale *z*. L'affichage de *z* à l'intérieur de la fonction affiche donc la valeur de la variable locale. En dehors de la fonction, l'affichage de *z* affiche la valeur de la variable globale.variable globale z = 5
fonction exempleConflit() {
variable locale z = 15
afficher(z) // Affiche 15 (la variable locale z masque la variable globale z)
}
afficher(z) // Affiche 5 (la variable globale z est toujours accessible ici)
exempleConflit()
afficher(z) // Affiche 5 (la variable globale z est toujours accessible ici)
Bonnes pratiques
Ce qu'il faut retenir
FAQ
-
Quelle est la différence entre une variable locale et une variable globale ?
Une variable locale est accessible uniquement à l'intérieur de la fonction ou du bloc de code où elle est définie, tandis qu'une variable globale est accessible depuis n'importe quelle partie du programme. -
Pourquoi est-il préférable d'utiliser des variables locales plutôt que des variables globales ?
Les variables locales rendent le code plus facile à comprendre, à tester et à maintenir, car elles limitent la portée des variables et évitent les effets de bord imprévus. -
Que se passe-t-il si je déclare une variable locale avec le même nom qu'une variable globale ?
Dans ce cas, la variable locale masque la variable globale à l'intérieur de la fonction ou du bloc où la variable locale est définie. En dehors de cette fonction ou de ce bloc, le nom fait toujours référence à la variable globale.