Les fonctions
CHAPITRE 8
148
mise au point une seule fois et c’est cette hypothèse que nous ferons dans la suite de
l’ouvrage.
Dans ces conditions, on comprend que les instructions de la fonction n’auront aucune
connaissance des variables définies dans le programme (ou des programmes) susceptible de
l’appeler. On dit que la « portée » de ces variables (c’est-à-dire l’ensemble des instructions
où elle sont utilisables) est limitée à ce programme.
De même, le programme n’aura aucune connaissance des variables (locales) définies dans la
fonction. La portée des variables locales est limitée à la fonction où elles sont définies.
En définitive, la seule voie de communication entre le programme et la fonction sera l’utilisation de paramètres et d’un résultat (en toute rigueur, une exception aura lieu dans le cas des
langages disposant de ce que l’on nomme des « variables globales », que nous évoquerons un
peu en fin de chapitre).
C’est cette indépendance qui permet de développer des « bibliothèques de fonctions »
d’intérêt général, utilisables par de nombreux programmes. Nous verrons que cette indépendance se généralisera au cas des objets...
Remarques
1 En pratique, cette indépendance entre programme et fonction s’exprime de la façon
suivante :
– avec les langages compilés, vous pourrez compiler la fonction une fois pour toutes, indépendamment de la traduction du programme ;
– avec les langages interprétés, vous pourez utiliser dans un fichier contenant un programme, une fonction située dans un autre fichier.
2 Certains anciens langages, comme le Basic des années 1980, ne disposaient que d’une
notion de fonction très rudimentaire dans laquelle n’apparaissait ni paramètres, ni
valeur de retour, ni indépendance par rapport au programme. Son seul avantage était
d’éviter la duplication d’instructions identiques...
Exercice 8.1 Soit la fonction suivante :
fonction faitCalculs (entier x, entier y)
{ écrire «somme : », x+y
écrire «produit : », x*y
}
Que fourniront ces instructions ?
entier n := 4, p := 5, q := 8
faitCalculs (n, p+2)
faitCalculs (2*n, q)
CHAPITRE 8
148
mise au point une seule fois et c’est cette hypothèse que nous ferons dans la suite de
l’ouvrage.
Dans ces conditions, on comprend que les instructions de la fonction n’auront aucune
connaissance des variables définies dans le programme (ou des programmes) susceptible de
l’appeler. On dit que la « portée » de ces variables (c’est-à-dire l’ensemble des instructions
où elle sont utilisables) est limitée à ce programme.
De même, le programme n’aura aucune connaissance des variables (locales) définies dans la
fonction. La portée des variables locales est limitée à la fonction où elles sont définies.
En définitive, la seule voie de communication entre le programme et la fonction sera l’utilisation de paramètres et d’un résultat (en toute rigueur, une exception aura lieu dans le cas des
langages disposant de ce que l’on nomme des « variables globales », que nous évoquerons un
peu en fin de chapitre).
C’est cette indépendance qui permet de développer des « bibliothèques de fonctions »
d’intérêt général, utilisables par de nombreux programmes. Nous verrons que cette indépendance se généralisera au cas des objets...
Remarques
1 En pratique, cette indépendance entre programme et fonction s’exprime de la façon
suivante :
– avec les langages compilés, vous pourrez compiler la fonction une fois pour toutes, indépendamment de la traduction du programme ;
– avec les langages interprétés, vous pourez utiliser dans un fichier contenant un programme, une fonction située dans un autre fichier.
2 Certains anciens langages, comme le Basic des années 1980, ne disposaient que d’une
notion de fonction très rudimentaire dans laquelle n’apparaissait ni paramètres, ni
valeur de retour, ni indépendance par rapport au programme. Son seul avantage était
d’éviter la duplication d’instructions identiques...
Exercice 8.1 Soit la fonction suivante :
fonction faitCalculs (entier x, entier y)
{ écrire «somme : », x+y
écrire «produit : », x*y
}
Que fourniront ces instructions ?
entier n := 4, p := 5, q := 8
faitCalculs (n, p+2)
faitCalculs (2*n, q)
