Numérique et Sciences Informatiques > Algorithmique : Concepts de Base > Fonctions et Procédures > Portée des variables

Exemples pratiques de portée des variables en algorithmique

Illustrations concrètes de l'utilisation des variables locales et globales dans divers scénarios algorithmiques. Ces exemples vous aideront à mieux comprendre comment gérer la portée des variables pour écrire des programmes plus clairs et efficaces.

Exemple 1 : Calcul de la factorielle

Considérons le calcul de la factorielle d'un nombre. On peut utiliser une fonction pour effectuer ce calcul. Dans cette fonction, on utilisera une variable locale pour stocker le résultat partiel.

fonction factorielle(n) {
  variable locale resultat = 1
  pour i de 1 à n faire
    resultat = resultat * i
  fin pour
  retourner resultat
}

variable globale nombre = 5
variable globale fact = factorielle(nombre)
afficher("La factorielle de ", nombre, " est ", fact)
Dans cet exemple, la variable *resultat* est locale à la fonction *factorielle()*. Elle est utilisée pour stocker le résultat du calcul. La variable *nombre* et *fact* sont globales.

Exemple 2 : Compteur dans une boucle

Illustrons l'utilisation d'une variable locale dans une boucle *for*. Cette variable est utilisée comme compteur.

pour i de 1 à 10 faire
  variable locale carre = i * i
  afficher("Le carré de ", i, " est ", carre)
fin pour

// i et carre ne sont plus accessibles ici
Dans cet exemple, la variable *i* est souvent implicitement locale à la boucle *pour* (cela peut dépendre du langage ou de l'implémentation). La variable *carre* est locale à chaque itération de la boucle. Après la fin de la boucle, ces variables ne sont plus accessibles.

Exemple 3 : Modification d'une variable globale depuis une fonction

Montrons comment une fonction peut modifier une variable globale, et les conséquences que cela peut avoir. Il est important de maîtriser ce comportement pour éviter des bugs.

variable globale compteur = 0

fonction incrementer() {
  compteur = compteur + 1
  afficher("Compteur incrémenté à ", compteur)
}

incrementer()
incrementer()
afficher("Compteur final : ", compteur)
Dans cet exemple, la variable *compteur* est globale. La fonction *incrementer()* modifie sa valeur. Chaque appel à la fonction incrémente la variable globale, et cela se reflète dans l'affichage final.

Exemple 4 : Erreur courante : variable non déclarée

Voici un exemple d'erreur courante liée à la portée des variables : tenter d'accéder à une variable qui n'est pas définie dans la portée actuelle.

fonction exempleErreur() {
  variable locale message = "Bonjour"
}

exempleErreur()
afficher(message) // Erreur : message n'est pas définie dans cette portée
Dans cet exemple, la variable *message* est locale à la fonction *exempleErreur()*. La tentative d'afficher *message* en dehors de la fonction génère une erreur, car *message* n'est pas accessible dans cette portée.

Ce qu'il faut retenir

  • Les exemples illustrent l'utilisation des variables locales et globales dans des cas concrets.
  • L'accès aux variables dépend de leur portée (locale ou globale).
  • La modification des variables globales depuis une fonction peut avoir des conséquences importantes.
  • Il est important d'éviter les erreurs liées à la portée des variables, comme tenter d'accéder à une variable non définie.

FAQ

  • Dans l'exemple du calcul de la factorielle, pourquoi la variable 'resultat' est-elle locale ?

    La variable 'resultat' est locale car elle n'est utilisée que pour stocker le résultat du calcul à l'intérieur de la fonction 'factorielle()'. Elle n'a pas besoin d'être accessible depuis l'extérieur de la fonction.
  • Si je modifie une variable globale à l'intérieur d'une fonction, cette modification est-elle visible en dehors de la fonction ?

    Oui, si une fonction modifie une variable globale, cette modification est visible depuis n'importe quelle autre partie du programme qui accède à cette variable globale.
  • Comment éviter les erreurs liées à la portée des variables ?

    Pour éviter les erreurs liées à la portée des variables, il est important de bien comprendre la portée de chaque variable et de s'assurer que vous n'essayez pas d'accéder à une variable en dehors de sa portée. Il est également conseillé d'utiliser des noms de variables clairs et descriptifs pour éviter les confusions.