Chapitre 1 : Procédures et Fonctions
Introduction et Objectifs
Objectif général : Bien comprendre les procédures et les fonctions.
Objectifs spécifiques : Être capable de :
- Expliquer l’intérêt des procédures et fonctions.
- Connaître la signature des procédures et fonctions.
- Connaître la différence entre une procédure et une fonction.
- Connaître les notions de paramètre global, local, formel et effectif.
- Développer des procédures et les fonctions.
I. De quoi s’agit-il ?
Une application, surtout si elle est longue, a toutes les chances de devoir procéder aux mêmes traitements, ou à des traitements similaires, à plusieurs endroits de son déroulement. Par exemple, la saisie d’une réponse par oui ou par non (et le contrôle qu’elle implique), peuvent être répétés de nombreuses fois à des moments différents de la même application.
La manière la plus évidente, mais aussi la moins habile, de programmer ce genre de choses, c’est bien entendu de répéter le code correspondant autant de fois que nécessaire. Mais en procédant de cette manière, la pire qui soit, on se prépare des lendemains déchantants.
D’abord, parce que si la structure d’un programme écrit de cette manière peut paraître simple, elle est en réalité inutilement lourde. Elle contient des répétitions, et pour peu que le programme soit étoffé, il peut devenir parfaitement illisible. Or, c’est un critère essentiel pour un programme informatique d’être facilement modifiable, donc lisible.
En plus, à un autre niveau, une telle structure pose des problèmes considérables de maintenance : en cas de modification du code, il va falloir traquer toutes les apparitions de ce code pour faire la modification partout !
La solution : Modulariser le code
Il faut donc opter pour une autre stratégie, qui consiste à séparer ce traitement du corps du programme et à appeler ces instructions (qui ne figurent donc plus qu’en un seul exemplaire) à chaque fois qu’on en a besoin. Ainsi, la lisibilité est assurée ; le programme devient modulaire, et il suffit de faire une seule modification au bon endroit pour qu’elle prenne effet dans la totalité de l’application.
Le corps du programme s’appelle alors la procédure principale, et ces groupes d’instructions auxquels on a recours s’appellent des fonctions et des sous-procédures.
Reprenons l’exemple d’une question avec réponse par Oui ou par Non.
Mauvaise Structure :
Ecrire ("Etes-vous marié ?");
Rep1 ← "";
TantQue (Rep1 <> "Oui") et (Rep1 <> "Non")
Ecrire ("Tapez Oui ou Non");
Lire (Rep1)
FinTantQue
Ecrire ("Avez-vous des enfants ?");
Rep2 ← "";
TantQue (Rep2 <> "Oui") et (Rep2 <> "Non")
Ecrire ("Tapez Oui ou Non");
Lire (Rep2)
FinTantQue
La répétition est évidente. La solution consiste à isoler les instructions demandant une réponse par Oui ou Non en une fonction.
II. Les fonctions
Le but d’une fonction est de renvoyer une valeur. C’est exactement la même chose ici, sauf que c’est nous qui allons la créer.
Fonction RepOuiNon() :char;
Truc ← "";
TantQue (Truc <> "Oui") et (Truc <> "Non")
Ecrire ("Tapez Oui ou Non");
Lire (Truc);
FinTantQue
Renvoyer Truc;
Fin Fonction
On remarque l’apparition du mot-clé Renvoyer, qui indique quelle valeur doit prendre la fonction lorsqu’elle est utilisée.
Une fonction s’écrit toujours en-dehors de la procédure principale. Ces quelques lignes de codes sont à sa disposition et elle pourra y faire appel ainsi :
Ecrire ("Etes-vous marié ?");
Rep1 ← RepOuiNon();
Ecrire ("Avez-vous des enfants ?");
Rep2 ← RepOuiNon();
Les parenthèses sont obligatoires, et permettent le passage de paramètres étudiés par la suite.
Prêt à passer à la suite ?
Vous avez terminé cette leçon sur Chapitre 1 : Procédures et Fonctions. Continuez votre apprentissage avec la prochaine leçon ou explorez d'autres formations.