السبت، 15 فبراير 2014

LES FONCTIONS ET PROCEDURES



8. LES FONCTIONS ET PROCEDURES
En programmation, donc en algorithmique, il est possible de décomposer le programme qui résout un
problème en des sous-programmes qui résolvent des sous parties du problème initial. Ceci permettra
d’améliorer la conception du programme et ainsi sa lisibilité.
L’utilisation des sous-programmes s’avère utile aussi dans le cas où on constate qu’une suite d’actions
se répète plusieurs fois.
Il existe deux types de sous-programmes les fonctions et les procédures. Un sous- programme est
obligatoirement caractérisé par un nom (un identifiant) unique.
Le nom d’un sous-programme comme le nom d’une variable doit :
􀀹 Contenir que des lettres et des chiffres
􀀹 Commencer obligatoirement par une lettre
Le programme qui utilise un sous- programme est appelé programme appelant. Un sous-programme
peut être invoqué n'importe où dans le programme appelant en faisant référence à son nom.
Un programme ainsi doit suivre la structure suivante :
Définition des constantes
Définition des types
Déclaration des variables
Définition des sous- programmes
DEBUT
Instructions du programme principal
FIN
8.1. Les fonctions
Une fonction est un sous-programme qui retourne un seul résultat. Pour définir une fonction on utilise
la syntaxe suivante :
FONCTION nom_fonction (Argument1 : Type , Argument2 : Type ,….) : Type
Déclarations
DEBUT
Instructions de la fonction
nom_fonction ← Valeur renvoyée
FIN
On constate que la déclaration d’une fonction revient à lui préciser un nom, un type ainsi qu’une liste
d’arguments.
Un argument (appelé paramètre formel) d’un sous- programme est une variable locale particulière
qui est associée à une variable ou constante du programme appelant. Puisque qu’un argument est une
variable locale, il admet un type.
Lorsque le programme appelant appelle le sous-programme il doit indiqué la variable ou la constante
de même type, qui est associée au paramètre.
Par exemple, le sous-programme sqr permet de calculer la racine carrée d’un réel. Ce sousprogramme
admet un seul paramètre de type réel positif.
Le programme qui utilise sqr doit donner le réel positif dont il veut calculer la racine carrée, cela peut
être :
- une variable, par exemple a
- une constante, par exemple 5.25
Les arguments d’une fonction sont en nombre fixe (≥ 0).
Une fonction possède un seul type, qui est le type de la valeur retournée qui est affecté au nom de la
fonction.
Une fois la fonction définie, il est possible (en fonction des besoins) à tout endroit du programme
appelant de faire appel à elle en utilisant simplement son nom suivi des arguments entre parenthèses.
Les parenthèses sont toujours présentes même lorsqu’il n’y a pas de paramètre.
Les arguments spécifiés lors de l’appel de la fonction doivent être en même nombre que dans la
déclaration de la fonction et des types prévus. Dans le programme appelant ces arguments sont appelés
paramètres effectifs.
Codification d’un algorithme et Programmation procédurale Filière : TSDI
OFPPT / DRIF / CDC Tertiaire & TIC Page : 43 Octobre 2005
La valeur ainsi renvoyée par la fonction peut être utilisée dans n’importante quelle expression
compatible avec son type.
Exemple :
FONCTION Calcul (x : Réel , y : Réel , z : Réel) : Réel
Variable a : Entier
DEBUT
a ← 3
Calcul ← (x + y + z) * a
FIN
Ça c’est un exemple de déclaration de fonction. Cette fonction appelée « Calcul » est de type réel et
elle admet trois arguments de type réel.
Maintenant voici un exemple de programme complet :
FONCTION Calcul (x : Réel , y : Réel , z : Réel) : Réel
Variable a : Entier
DEBUT
a ← 3
Calcul ← (x + y + z) * a
FIN
Variables i , j , k , b : Réels
DEBUT
Lire i
Lire j
Lire k
b ← Calcul (i , j , k) + 2
Ecrire b
FIN
Dans ce programme on fait appel a une fonction. Sa valeur est utilisée dans une expression.
Exercice
1. Définir la fonction « Somme » qu’on lui passe deux valeurs de type entier et qui renvoie comme
valeur la somme des valeurs reçues.
2. Définir la fonction « Absolue » qui renvoie la valeur absolue d’une valeur qu’on lui passe comme
paramètre.
3. Définir la fonction « Inverse » qui renvoie l’inverse d’une valeur qu’on lui passe comme paramètre.
4. Définir la fonction « Max » qui renvoie le maximum de deux valeurs.
5. Ecrivez un programme qui lit trois scores et qui utilise la fonction définie dans l’exercice précédent
pour déterminer le meilleur score et l’afficher après.
Solutions
1. La définition de la fonction « Somme » est :
FONCTION Somme (x : Réel , y : Réel ) : Réel
DEBUT
Somme ← x + y
FIN
2. La définition de la fonction « Absolue » est :
FONCTION Absolue (x : Réel) : Réel
DEBUT
SI x > 0 ALORS
Absolue ← x
Codification d’un algorithme et Programmation procédurale Filière : TSDI
OFPPT / DRIF / CDC Tertiaire & TIC Page : 44 Octobre 2005
SINON
Absolue ← -1 * x
FIN SI
FIN
3. La définition de la fonction « Inverse » est :
FONCTION Inverse (x : Réel) : Réel
DEBUT
SI x ≠ 0 ALORS
Inevrse ← 1 /x
FIN SI
FIN
4. La définition de la fonction « Max » est :
FONCTION Max (x : Réel , y Réel) : Réel
DEBUT
SI x > y ALORS
Max ← x
SINON
Max ← y
FIN SI
FIN
5. Le prgramme est :
FONCTION Max (x : Réel , y Réel) : Réel
DEBUT
SI x > y ALORS
Max ← x
SINON
Max ← y
FIN SI
FIN
Variables score1 , score2 , score3 , meil_score : Réels
DEBUT
Ecrire « Entrez les troix scores : »
Lire score1
Lire score2
Lire score3
meil_score ← Max (Max (score1 , score2) , score3)
Ecrire « Le meilleur score est : » , meil_score
FIN