NetHelp, Thèmes, boutons et headers pour IceBlue
  algo8
 

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  sous- programme 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.

 

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.

 

8.2. Les variables locales et globales

 

La portée d’une variable est l’ensemble des sous- programmes où cette variable est connue c'est-à-dire que les instructions de ces sous-programmes peuvent utiliser cette variable.

Une variable définie au niveau du programme principal (problème appelant) est appelée  variable globale.  Sa  portée  est  totale  :  tout  sous-programme  du  programme  principal  peut  utiliser  cette variable.

Cependant, une variable définie au sein d’un sous-programme est appelée variable locale. La portée d’une variable locale est uniquement le sous-programme qui la déclare.

 

Remarque :

Lorsque le nom d’une variable  locale est identique à une variable globale,  la variable globale est localement masquée. Dans ce sous-programme la variable globale devient inaccessible.

 

Exemple

 

Soit le programme suivant :

 

Fonction Surface (a : Réel) : Réel

Variables valeur , resultat : Réels

DEBUT

valeur ← 3.14

resulat ← valeur * a

Surface ← resultat

FIN

            Variable rayon : Réel

DEBUT

 Ecrire « Entrez le rayon du cercle : »

Lire rayon

Ecrire « La surface de cette cercle est : » , Surface (rayon)

FIN

 

 

Les variables valeur et resultat déclarées dans la fonction Surface sont locales.

Considérons presque le même programme sauf que la variable valeur est déclarée maintenant dans le programme appelant.

 

Fonction Surface (a : Réel) : Réel

Variables resultat : Réels

DEBUT

resulat ← valeur * a

Surface ← resultat

FIN

            Variable valeur , rayon : Réel

DEBUT

valeur ← 3.14

Ecrire « Entrez le rayon du cercle : »

Lire rayon

Ecrire « La surface de cette cercle est : » , Surface (rayon)

FIN

 

Dans ce deuxième programme seule la variable resultat est locale. Tandis que la variable valeur est devenue globale. On peut par conséquent accéder à sa valeur dans la fonction Surface.

 

 

 

 

 

8.3. Les passage de paramètres

 

Il existe deux types d’association (que l’on nomme passage de paramètre) entre le(s) paramètre(s) du sous-programme (fonction ou procédure) et variable(s) du programme appelant :

-  Passage par valeur

-  Passage par adresse

Dans le cas où l’on choisit pour un paramètre effectif un passage par valeur, la valeur de ce paramètre effectif  ne  change  pas même si lors de  l’appel du sous-programme la valeur du paramètre  formel correspondant change. On peut dire que dans ce cas le paramètre effectif et le paramètre formel ont font deux variables différents qui ont seulement la même valeur. C’est la type de passage par défaut. Dans le cas où l’on choisit pour un paramètre effectif un passage par adresse, la valeur de ce paramètre effectif change si lors de l’appel du sous-programme  la valeur du paramètre formel correspondant change. On  peut dire que dans ce cas le paramètre effectif et  le paramètre formel ont  font deux variables qui ont le même adresse (par conséquent valeur). Pour préciser qu’il s’agit d’un passage par adresse, il faut soulignés les paramètres concernés lors de la définition du sous-programme.

 

Exemple

Considérons les deux programmes suivants :

 

Programme1 :

 

Fonction Calcul (a : Réel) : Réel

DEBUT

Calcul ← a * 2

a ← a – 1

FIN

Variable x : Réel

DEBUT

 x ← 3

Ecrire Calcul (x)

Ecrire x

FIN

 

Programme2 :

 

Fonction Calcul (a : Réel) : Réel

DEBUT

Calcul ← a * 2

a ← a – 1

FIN

Variable x : Réel

DEBUT

x ← 3

Ecrire Calcul (x)

Ecrire x

FIN

 

Dans le premier programme on a un passage de paramètre par valeur et  dans le deuxième on a un passage de paramètre par adresse. Le premier programme affichera le résultat suivant :

            6

            3

Car même si la valeur de a change celle de x ne changera pas. Tandis que le deuxième programme affichera :

            6

            2

la valeur de x changera car celle de a a changée.

 

8.4. Les procédures

 

Les procédures sont des sous- programmes qui ne retournent aucun résultat. Elles admettent comme les fonctions des paramètres.

On déclare une procédure de la façon suivante :

 

            PROCEDURE nom_procedure (Argument1 : Type , Argument2 : Type ,….)

            Déclarations

DEBUT

Instructions de la procédure

FIN

Et on appelle une procédure comme une fonction, en indiquant son nom suivi des paramètres entre parenthèses.

 
 
  49 visiteurs (52 hits)
Accueil - Forum - Plan du site - Livre d'or - Contact

© 2008 - 2009 - NetHelp.fr.gd - Tous droits réservés
 
 
Ce site web a été créé gratuitement avec Ma-page.fr. Tu veux aussi ton propre site web ?
S'inscrire gratuitement