Vous êtes sur la page 1sur 7

Procdures et fonctions

I. Introduction

Lorsque l'on progresse dans la conception d'un algorithme, ce dernier peut prendre une taille et une
complexit croissante. De mme des squences d'instructions peuvent se rpter plusieurs endroits.
Un algorithme crit d'un seul tenant devient difficile comprendre et grer ds qu'il dpasse deux pages.
La solution consiste alors dcouper l'algorithme en plusieurs parties plus petites. Ces parties sont
appeles des sous-algorithmes.
Le sous-algorithme est crit sparment du corps de l'algorithme principal et sera appel par celui-ci quand
ceci sera ncessaire.
Il existe deux sortes de sous-algorithmes : les procdures et les fonctions.

II. Les procdures

Une procdure est une srie d'instructions regroupes sous un nom, qui permet d'effectuer des actions
par un simple appel de la procdure dans un algorithme ou dans un autre sous-algorithme.
Une procdure renvoie plusieurs valeurs (par une) ou aucune valeur.

A. Dclaration d'une procdure


Syntaxe :
Procdure nom_proc(liste de paramtres)
Variables identificateurs : type
Dbut
Instruction(s)
FinRoc
Aprs le nom de la procdure, il faut donner la liste des paramtres (s'il y en a) avec leur type respectif. Ces
paramtres sont appels paramtres formels. Leur valeur n'est pas connue lors de la cration de la
procdure.
Exemple :
Ecrire une procdure qui affiche l'cran une ligne de 15 toiles puis passe la ligne suivante.
Solution :
Procdure Etoile()
Variables i : entier
Dbut
Pour i Allant de 1 15 faire
Afficher("*")
FinPour
//\n : retour la ligne
Afficher("\n")
INFO4YOU - Training | Info4you2013@gmail.com - http://info4you13.blogspot.com/
Page |1

FinProc

B. L'appel d'une procdure


Pour dclencher l'excution d'une procdure dans un programme, il suffit de l'appeler.
L'appel de procdure s'crit en mettant le nom de la procdure, puis la liste des paramtres, spars par
des virgules.
A l'appel d'une procdure, le programme interrompt son droulement normal, excute les instructions de
la procdure, puis retourne au programme appelant et excute l'instruction suivante.
Syntaxe :
Nom_proc(liste de paramtres)
Les paramtres utilises lors de l'appel d'une procdure sont appels paramtres effectifs. Ces paramtres
donneront leurs valeurs aux paramtres formels.
Exemple :
En utilisant la procdure Etoiles dclare dans l'exemple prcdent, crire un algorithme permettant de
dessiner un carr d'toiles de 15 lignes et de 15 colonnes.
Solution :
Algorithme carr_toiles
Variables j : entier
//Dclaration de la procdure Etoiles()
Procdure Etoile()
Variables i : entier
Dbut
Pour i Allant de 1 15 Faire
Afficher("*")
FinPour
Afficher("/n")
FinProc
//Algorithme principal (Partie principale)
Dbut
Pour j Allant de 1 15 Faire
//Appel de la procdure Etoiles
Etoile()
FinPour
Fin
Remarque 1 :
Pour excuter un algorithme qui contient des procdures et des fonctions, il faut commencer l'excution
partir de la partie principale (algorithme principal)
Remarque 2 :
INFO4YOU - Training | Info4you2013@gmail.com - http://info4you13.blogspot.com/
Page |2

Lors de la conception d'un algorithme deux aspects apparaissent :

La dfinition (dclaration) de la procdure ou fonction.


L'appel de la procdure ou fonction au sein de l'algorithme principal.

C. Passage de paramtres
Les changes d'informations entre une procdure et le sous algorithme appelant se font par l'intermdiaire
de paramtres.
Il existe deux principaux types de passages de paramtres qui permettent des usages diffrents :

Passage par valeur :


Dans ce type de passage, le paramtre formel reoit uniquement une copie de la valeur du paramtre
effectif. La valeur du paramtre effectif ne sera jamais modifie.
Exemple :
Soit l'algorithme suivant :
Algorithme Passage_par_valeur
Variables N : entier
//Dclaration de la procdure P1
Procdure P1(A : entier)
Dbut
A
A * 2
Afficher(A)
FinProc
//Algorithme principal
Dbut
N
5
P1(N)
Afficher(N)
Fin
Cet algorithme dfinit une procdure P1 pour laquelle on utilise le passage de paramtres par valeur.
Lors de l'appel de la procdure, la valeur du paramtre effectif N est recopie dans le paramtres formel A.
La procdure effectue alors le traitement et affiche la valeur de la variable A, dans ce cas 10.
Aprs l'appel de la procdure, l'algorithme affiche la valeur de la variable N dans ce cas 5.
La procdure ne modifie pas le paramtre qui est pass par valeur.

Passage par rfrence ou par adresse :


Dans ce type de passage, la procdure utilise l' adresse du paramtre effectif. Lorsqu'on utilise l'adresse
du paramtre, on accde directement son contenu . La valeur de la variable effectif sera donc
modifie.
INFO4YOU - Training | Info4you2013@gmail.com - http://info4you13.blogspot.com/
Page |3

Les paramtres passs par adresse sont prcds du mot cl Var.

Exemple :
Reprenons l'exemple prcdent :
Algorithme Passage_par_rfrence
Variables N : entier
//Dclaration de la procdure P1
Procdure P1 (Var A : entier)
Dbut
A
A * 2
Afficher(A)
FinProc
//Algorithme Principal
Dbut
N
5
P1(N)
Afficher(N)
Fin
A l'excution de la procdure, l'instruction Afficher(A) permet d'afficher l'cran 10. Au retour dans
l'algorithme principal, l'instruction Afficher(N) affiche galement 10.
Dans cet algorithme le paramtre pass correspond la rfrence (adresse) de la variable N. Elle est donc
modifie par l'instruction :
A

A *2

Remarque :
Lorsqu'il y a plusieurs paramtres dans la dfinition d'une procdure, il faut absolument qu'il y en ait le
mme nombre l'appel et que l'ordre soit respect.

III.

Les fonctions

Les fonctions sont des sous algorithmes admettant des paramtres et retournant un seul rsultat (une seule
valeur) de type simple qui peut apparatre dans une expression, dans une comparaison, la droite d'une
affectation, etc.

A. Dclaration d'une fonction


Syntaxe :
Fonction nom_Fonct (liste de paramtres) : type
Variables identificateur : type
Dbut
Instruction(s)
Retourner Expression
INFO4YOU - Training | Info4you2013@gmail.com - http://info4you13.blogspot.com/
Page |4

Fin
La syntaxe de la dclaration d'une fonction est assez proche de celle d'une procdure laquelle on ajoute
un type qui reprsente le type de la valeur retourne par la fonction et une instruction Retourner
Expression. Cette dernire instruction renvoie au programme appelant le rsultat de l'expression place
la suite du mot cl Retourner.

Note :
Les paramtres sont facultatifs, mais s'il n'y pas de paramtres, les parenthses doivent rester prsentes.
Exemple :
Dfinir une fonction qui renvoie le plus grand de deux nombres diffrents.
Solution :
//Dclaration de la fonction Max
Fonction Max(X: rel, Y:rel) : rel
Dbut
Si X > Y Alors
Retouner X
Sinon
Retouner Y
FinSi
FinFonction

B. L'appel d'une fonction


Pour excuter une fonction, il suffit de faire appel elle en crivant son nom suivie des paramtres
effectifs. C'est la mme syntaxe qu'une procdure.
A la diffrence d'une procdure, la fonction retourne une valeur. L'appel d'une fonction pourra donc tre
utilis dans une instruction (affichage, affectation, ...) qui utilise sa valeur.
Syntaxe
Nom_Fonc(list de paramtres)
Exemple :
Ecrire un algorithme appelant, utilisant la fonction Max de l'exemple prcdent.
Solution :
Algorithme Appel_fonction_Max
Variables A, B, M : rel
//Dclaration de la fonction Max
Fonction Max(X: rel, Y: rel) : rel
Dbut
Si X > Y Alors
INFO4YOU - Training | Info4you2013@gmail.com - http://info4you13.blogspot.com/
Page |5

Retourner X
Sinon
Retourner Y
FinSi
FinFonction
//Algorithme principal
Dbut
Afficher("Donnez la valeur de A :")
Saisir(A)
Afficher("Donnez la valeur de B :")
Saisir(B)
//Appel de la fonction Max
M
Max(A,B)
Afficher("Le plus grand de ces deux nombres est : ", M)
Fin

C. Porte des variables


La porte d'une variable dsigne le domaine de visibilit de cette variable. Une variable peut tre dclare
dans deux emplacements distincts.
Une variable dclare dans la partie dclaration de l'algorithme principale est appele variable globale. Elle
est accessible de n'importe o dans l'algorithme, mme depuis les procdures et les fonctions. Elle existe
pendant toute la dure de vie du programme.
Une variable dclare l'intrieur d'une procdure (ou une fonction) est dite locale. Elle n'est accessible
qu' la procdure au sein de laquelle elle dfinit, les autres procdures n'y ont pas accs. La dure de vie
d'une variable locale est limite la dure d'excution de la procdure.

Remarque :
Les variables globales sont viter pour la maintenance des programmes.

IV.

La rcursivit

Une procdure (ou une fonction) est dite rcursive si elle s'appelle elle-mme.
Exemple :
Ecrire une fonction rcursive permettant de calculer la factorielle d'un entier positif.
INFO4YOU - Training | Info4you2013@gmail.com - http://info4you13.blogspot.com/
Page |6

Solution :
n != n * (n-1) ! : la factorielle de n est n fois la factorielle de n-1 :
//Dclaration de la fonction Factorielle (Fact)
Fonction Fact(n : entier) : entier
Dbut
Si n > 1 Alors
Retourner (fact(n-1)*n)
Sinon
Retourner 1
FinSi
FinFonction
Dans cet exemple, la fonction renvoie 1 si la valeur demande est infrieur 1, sinon elle fait appel ellemme avec un paramtre infrieur de 1 par rapport au prcdent. Les valeurs de ces paramtres vont en
dcroissant et atteindront un moment la valeur une (1). Dans ce cas, il n'y a pas d'appel rcursif et donc
nous sortons de la fonction.
Note :
Toute procdure ou fonction rcursive comporte une instruction (ou un bloc d'instructions) nomme
"point terminal" permettant de sortir de la procdure ou de la fonction.
Le "point terminal" dans la fonction rcursive Fact est : retourner 1.

V. Avantages des procdures et fonctions

Les procdures ou fonctions permettant de ne pas rpter plusieurs fois une mme squence
d'instructions au sein du programme (algorithme).
La mise au point du programme est plus rapide en utilisant des procdures et des fonctions. En
effet, elle peut tre ralise en dehors du contexte du programme.
Une procdure peut tre intgre un autre programme, ou elle pourra tre range dans une
bibliothque d'outils ou encore utilise par n'importe quel programme.

Pour vous envoyer ce cours sur votre boite

INFO4YOU - Training | Info4you2013@gmail.com - http://info4you13.blogspot.com/


Page |7