Académique Documents
Professionnel Documents
Culture Documents
Chapitre 8
Les fonctions et les procédures
Niveaux: 1A
Equipe ALGO
1
Exemples Introductifs
EXEMPLE 1:
Problème: Éditer le relevé de notes d’un étudiant?
Il s’agit d’un problème complexe.
Pourquoi?
En effet, pour arriver à afficher la moyenne générale d’un étudiant ainsi que son rang, on doit passer par
les étapes suivantes :
1. Rechercher l’étudiant concerné par le relevé.
2. Chercher sa classe.
3. Pour la classe en question, on doit connaître les matières et les coefficients.
4. Pour chaque matière, on doit savoir la note obtenue par cet étudiant.
5. Une fois les notes connues, on doit calculer la moyenne.
6. Pour obtenir le rang, on doit obligatoirement passer par une étape de Tri.
2
7.C’est à ce moment là que nous puissions éditer le relevé de notes de cet étudiant.
Notion des sous-programmes:
Décomposer pour résoudre
■ Analyse descendante: Approche incrémentale consistant à
analyser la spécification d’un problème selon son arborescence
3
Avantages de la Programmation
Procédurale
■ La décomposition d’un problème en sous-problèmes faciles à résoudre, permet d’obtenir des algorithmes
qui sont :
● Réutilisable : dans la résolution d’un problème, on peut constater qu'une suite d'actions
4
Principes de la Programmation
Procédurale
■ Un sous-programme est obligatoirement caractérisé par un nom (un identifiant) unique.
■ En algorithmique il existe deux types de sous-programmes :
■ Les fonctions
■ Les procédures
■ Le programme qui utilise un sous-programme (fonction ou procédure) est appelé le programme appelant.
■ Le sous-programme (fonction ou procédure) qui est appelé par un programme est dit programme appelé.
5
Les fonctions
Définition:
■ Une fonction est un sous-programme contenant un certain nombre d’instructions, qui retourne un résultat
unique affecté à son nom.
■ Une fonction est un sous programme qui retourne obligatoirement une valeur. Cette dernière sera placée
dans une variable qui porte le même nom que la fonction.
Remarques:
● Une fonction retourne un résultat unique implique qu’une fonction possède obligatoirement un type.
● Dans une fonction, on trouve des actions qui produisent le résultat ; ce dernier doit être affecté en fin de
traitement au nom de la fonction.
6
Les fonctions
Représentation algorithmique:
Fonction nomfonct(param1:type1,param2:type2,…,paramN :TypeN) : typefonction
<partie déclarative>
Début (*fonction*)
<partie instructions>
nomfonct 🡨 Résultat
(* le résultat généré par les instructions doit être affecté au nom de la fonction *)
Fin (*fin fonction*)
Remarques:
● param1, param2, …, paramN sont appelés paramètres : Ce sont des variables qui permettent à la fonction
de communiquer avec l’extérieur.
● Ces paramètres déclarés lors de la définition de la fonction sont appelés paramètres formels.
● On peut trouver certaines fonctions sans paramètres : On déclare alors la fonction de la manière suivante :
Fonction nomfonct() : typefonction.
● Les paramètres de la fonction ne doivent jamais être lus à l’intérieur de la fonction sans que l’énoncé le
précise.
7
Les fonctions
Exemple 1:
■ Écrire une fonction qui retourne la valeur absolue d’un entier N.
Solution
Solution
9
Les fonctions
Appel d’une fonction:
■ L’appel d’une fonction est une expression, dont la valeur est le résultat retourné par cette fonction ; son appel doit
alors se faire soit dans une action d’affectation soit dans une action d’écriture.
● Nomvar 🡨 nomfonct(var1, var2,…, varN)
● Écrire (nomfonct(var1,var2,…..,varN))
Remarques:
● Nomvar et nomfonct doivent avoir le même type.
● On doit avoir autant de paramètres formels (param1, param2, …, paramN) que de paramètres utilisés par le
programme appelant (var1, var2,…., varN).
● Les paramètres utilisés dans le programme appelant sont appelés paramètres effectifs.
● L’ordre des paramètres formels doit être respecté lors de l’appel : les varI doivent correspondre aux paramI.
● Lors de l’appel, chacun des paramètres formels est remplacé par le paramètre effectif .
● La liste des paramètres effectifs doit être compatible avec la liste des paramètres formels de la déclaration de la
fonction.
● Une fonction peut ne pas avoir de paramètres (Fonction message() : chaine) 10
Les fonctions
Appel de la fonction:
▪ Exemple:
Algorithme Calcul (* programme appelant *)
Variable a,b : réel
11
Les fonctions
Appel de la fonction:
12
Les procédures
Définition:
■ Une procédure est un sous-programme qui peut produire zéro ou plusieurs résultats.
Représentation algorithmique:
13
Les procédures
Remarques:
● param1, param2, …, paramN sont appelés paramètres : Ce sont des variables qui permettent à la
procédure de communiquer avec l’extérieur.
● Ces paramètres déclarés lors de la définition de la procédure sont appelés paramètres formels.
● On peut trouver certaines procédures sans paramètres ; on déclare alors la fonction de la manière
suivante : Procédure nomproc().
● Les paramètres de la procédure ne doivent jamais être lus à l’intérieur de la procédure sans que
l’énoncé ne l’indique.
● Lors de l’appel, chacun des paramètres formels est remplacé par le paramètre effectif .
● La liste des paramètres effectifs doit être compatible avec la liste des paramètres formels de la
déclaration de la procédure.
14
Les procédures
Exemple 1:
■ Écrire une procédure permettant d’afficher la somme de deux entiers.
Solution
Procédure aff_somme(a :entier, b :entier)
Variable S : entier
Début
S🡨a+b
Écrire (S)
Fin
15
Les procédures
Exemple 2: Procédure sans paramètres
Procédure message()
Variable mess : chaine[20]
Début
Lire(mess)
Écrire(mess)
Fin
16
Les procédures
Appel de la procédure:
■ À la différence d’une fonction, une procédure est appelée par son nom et ses paramètres effectifs, dans le
programme appelant:
Remarques
(i) On doit avoir autant de paramètres formels (param1, param2, …, paramN) que de paramètres utilisés par le
programme appelant (var1, var2,…., varN).
(ii) Les paramètres utilisés dans le programme appelant sont appelés paramètres effectifs.
(iii)L’ordre des paramètres formels doit être respecté lors de l’appel : les varI doivent correspondre aux
paramI.
17
Les procédures
Appel de la procédure:
Algorithme affiche
▪ Exemple: Variable x,y : entier
Procédure aff_somme(a :entier, b :entier)
Variable S : entier
Début (*proc*)
S🡨a+b
Écrire(S)
Fin (*proc*)
Début (*algo*)
Écrire(‘donnez un entier x : ‘)
Lire(x)
Écrire(‘donnez un entier y : ‘)
Lire(y)
(* appel de la procédure aff_somme *)
aff_somme(x,y)
Finalgo
18
La portée d’une variable
❖ La portée d'une variable est l’étendue où cette variable est visible dans un programme (les
instructions de ces sous-programmes peuvent utiliser cette variable).
❖ Une variable définie au niveau du programme principal (celui qui résout le problème initial, le
problème de plus haut niveau) est appelée variable globale.
⮚ Sa portée est totale : Tout sous-programme du programme principal peut utiliser cette
variable.
❖ Une variable définie au sein d'un sous programme est appelée variable locale.
⮚ La portée d'un variable locale est uniquement le sous-programme qui la déclare.
19