Passage d’arguments et Sous-Procédures
I. Passage d’arguments
Reprenons l’exemple précédent. Puisque avant chaque question, on doit écrire un message, autant que cette écriture du message figure directement dans la fonction appelée. Cela implique deux choses :
- Lorsqu’on appelle la fonction, on doit lui préciser quel message elle doit afficher avant de lire la réponse.
- La fonction doit être prête à recevoir ce message, et être capable de le récupérer.
En langage algorithmique, ce message devient un argument de la fonction.
Fonction RepOuiNon (Msg : char) : char
Ecrire (Msg);
Truc ← "";
TantQue (Truc <> "Oui") et (Truc <> "Non")
Ecrire ("Tapez Oui ou Non");
Lire Truc;
FinTantQue
Renvoyer Truc;
Fin Fonction
Dans la déclaration, la variable Msg signale qu’un argument doit lui être envoyé à chaque appel. Les appels se simplifient :
Rep1 ← RepOuiNon("Etes-vous marié ?");
Rep2 ← RepOuiNon("Avez-vous des enfants ?");
On peut passer autant d’arguments qu’on veut. Par exemple, une fonction calculant une moyenne sur un tableau a besoin d’au moins deux arguments (le tableau et sa taille).
II. Sous-Procédures
Il peut arriver d’avoir à réaliser des tâches répétitives qui n’ont pas pour rôle de générer une valeur particulière (ex: effacer l’écran ou saisir plusieurs valeurs dans un tableau). Une fonction ne peut renvoyer qu’une seule valeur à la fois, elle ne peut donc pas renvoyer un tableau entier.
Pour cela on utilise des sous-procédures. La fonction n’est qu’un cas particulier de la sous-procédure (celui où doit être renvoyée une valeur unique).
Structure
Procédure Bidule(...)
...
Fin Procédure
L’appel devient une instruction autonome :
Appeler Bidule(...)
Paramètres de transmission
Les valeurs qui circulent depuis la procédure appelante vers la sous-procédure se nomment des paramètres en entrée. Les valeurs retournées s’appellent des paramètres en sortie. On parlera de paramètres transmis :
- par valeur (correspondant à un paramètre en entrée)
- par référence (correspondant à un paramètre en sortie)
Une sous-procédure avec des paramètres par référence peut modifier des variables (ou des tableaux) de la procédure appelante.
Procédure SaisieTab(T() en numérique par référence, N en entier par valeur)
Pour i ← 0 à N-1
Ecrire ("Saisie de la valeur n° ", i + 1);
Lire T(i);
Fin Procédure
Appels :
Tableau Truc(5), Machin(12) en Entier
...
Appeler SaisieTab (Truc, 5)
Appeler SaisieTab (Machin, 12)
III. Travaux dirigés
Objectifs : Appliquer la démarche de programmation modulaire pour construire des algorithmes structurés en procédures et fonctions.
- Savoir le mode de passage de paramètre d’une procédure et une fonction.
- Apprendre et distinguer l’appel d’une procédure et d’une fonction.
- Exercice 1 : Ecrire une procédure puissance qui calcule
c = a^b = a × a × ... × a(bfois) ;aetbétant des entiers positifs. Tester. - Exercice 2 : Ecrire une procédure permut qui permet d’échanger les valeurs de 2 entiers
aetb. Tester. - Exercice 3 : Ecrire une fonction minimum qui retourne le minimum de 2 entiers
aetb. Tester. - Exercice 4 : On appelle bigramme une suite de deux lettres. Ecrire une procédure qui calcule le nombre d’occurrences d’un bigramme dans une chaîne de caractères. Peut-on la transformer en fonction ?
- Exercice 5 : Ecrire une fonction Triangle qui permet de vérifier si les 3 nombres
a,betcpeuvent être les mesures des côtés d’un triangle rectangle. - Exercice 6 : Ecrire une procédure ou fonction permettant de saisir deux nombres puis qui affiche la valeur absolue de leur différence.
- Exercice 7 : Ecrire une fonction qui récupère un réel
xpuis affiche la valeur d’une fonction mathématique donnée. - Exercice 8 (Suite) : Développer une fonction qui calcule la suite numérique
f(n + 1) = f(n) + 7. - Exercice 8 (Max) : Développer une fonction avec trois paramètres de type entier qui retourne le plus grand.
- Exercice 9 : Développer une procédure ou fonction calculant une fonction à intervalles.
- Exercice 10 : Développer une procédure qui résout une équation du premier degré.
Prêt à passer à la suite ?
Vous avez terminé cette leçon sur Passage d'arguments et Sous-Procédures. Continuez votre apprentissage avec la prochaine leçon ou explorez d'autres formations.