Vous êtes sur la page 1sur 19

Module: ALGORITHMIQUE 1

Chapitre 8
Les fonctions et les procédures
Niveaux: 1A
Equipe ALGO

Année universitaire: 2022/2023

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

■ Décomposition / combinaison: à chaque niveau de


l’arborescence :

◆ Décomposer le problème en un certain nombre de sous-problèmes


qu’on supposera résolus.

◆ Combiner les solutions des sous-problèmes pour résoudre le


problème courant.

◆Résoudre les sous-problèmes par la même approche.

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 :

● Lisibles et faciles à comprendre.

● Facile à maintenir : détection rapide de l’erreur et correction sans difficultés.

● Facile à faire évoluer : ajout facile d’autres fonctionnalités.

● Réutilisable : dans la résolution d’un problème, on peut constater qu'une suite d'actions

revient plusieurs fois.

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

Fonction Val_abs(N : entier) : entier


Variable a : entier
Début
Si (N > 0) Alors a 🡨 N
Sinon a 🡨 -N
FinSi
Val_abs 🡨 a (* affecter le résultat au nom de la fonction : Val_abs *)
Fin
8
Les fonctions
Exemple 2:
■ Écrire une fonction qui retourne la moyenne de deux réels x et y.

Solution

Fonction Moyenne(x : réel, y : réel) : réel


Début
Moyenne 🡨 (x+y)/2
Fin

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

Fonction Moyenne(x : réel, y : réel) : réel


Début
Moyenne 🡨 (x+y)/2
Fin

Début (* programme appelant *)


Lire (a)
Lire (b)
Écrire (Moyenne(a,b))
Fin

11
Les fonctions
Appel de la fonction:

▪ Exemple: Fonction sans paramètres


Écrire une fonction qui retourne le message ‘Bonjour’

Fonction message() : chaine[7]


Début
Message 🡨 "Bonjour"
Fin

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:

Procédure nomproc(param1:type1,param2:type2,…,paramN :TypeN)


<Partie déclarative>
Début (*procédure*)
<Partie instructions>
Fin (*fin procédure*)

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:

Nomproc(var1, var2, …., varN)

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

Vous aimerez peut-être aussi