Algorithme Fonction
Algorithme Fonction
Algorithme Fonction
2011/2012 1
Concept de sous-algorithme
Lors de la conception d’un algorithme résolvant un
problème donnée, il est nécessaire de décomposer le
problème en différents sous problèmes moins
complexe à résoudre «analyse descendantes». La
résolution de chacun de ces sous problèmes
correspond à l’écriture d’un sous-algorithme.
Un sous-algorithme est conçu pour faire un
traitement bien défini, bien délimité, si possible
indépendamment du contexte particulier de
l’algorithme appelant (un sous-algorithme peut en
appeler un autre).
25/05/21 2
Concept de sous-algorithme
Lorsqu’une séquence d’instructions se
répète
plusieurs fois, il est intéressant de faire un
sous-algorithme correspondant àce bloc
d’instructions et de l’utiliser autant de fois
que cela est nécessaire.
25/05/21
3
Problématique
4
Programmation procédurale
Principe:
◦ Il s’agit d’écrire des programmes en utilisant des
sous-programmes
Forme générale d’un programme
Programme P
Sous-programme SP1
…
Sous-programme SPn
FinP
5
Exemples:
◦ Intérêt :
Réaliser un découpage d’une tâche en sous-tâche.
Effectuer une seule description d’une tâche commune
Concevoir une application de manière descendante en entrant de plus
en plus dans les détails
25/05/21 8
Syntaxe
Sous-algorithme Nom(liste
Nom des paramètres)
déclarations des variables locales
Début
Corps du sous-algorihtme
Fin
Algorithme Nom
Déclaration des variables
Début
Instructions
Appel du sous-algorithme
Instructions
Fin
2011/2012 9
Procédures & Fonctions
En algorithmique, on distingue deux types de
sous-programmes
Les fonctions
◦ Paramètres
◦ Type retourné
Les procédures
Paramètres
◦ Appel par variable
◦ Appel par valeur
2011/2012 10
Les Fonctions
2011/2012 11
Forme d’une Fonction
Une fonction s'écrit en dehors du programme principal sous la forme
2011/2012 12
Exemple 1
2011/2012 13
Utilisation dans un algorithme
Algorithme ex1
Variables i, j: entier
Debut
Ecrire (« donner un nombre »)
Lire (i);
j carre(i);
Ecrire(j);
Fin
2011/2012 14
Fonctions : exemple 2
La fonction SommeCarre suivante calcule la somme des carrées de deux
réels x et y :
Fonction SommeCarre (x : réel, y: réel ) : réel
variable z : réel
Paramètres
Debut formels
z ←x*x+y*y;
retourne (z);
FinFonction
2011/2012 15
Exemple
Fonction qui retourne la surface d'un
rectangle à partir de sa longueur et de sa
largeur.
FONCTION surface (L: RÉEL, l :RÉEL) :RÉEL
VARIABLE S : RÉEL
DÉBUT FONCTION
S L ×l
RETOURN ( S )
FIN FONCTION
Remarque:
Une fonction possède trois aspects :
A- le prototype : c’est la déclaration nécessaire avant tout ;
B- l’appel : c’est l’utilisation d’une fonction à l’intérieur d’une
autre fonction (par exemple le programme principal) ;
C- la définition : Écriture proprement dite de la fonction.
Exemple
25/05/21 18
Utilisation des fonctions
L'utilisation d'une fonction se fera par simple écriture de son nom
dans le programme principale. Le résultat étant une valeur, devra
être affecté ou être utilisé dans une expression, une écriture, ...
Exemple :
Algorithme exepmleAppelFonction
variables z : réel
b : booléen
Début
b ←Pair(3);
z ←5*SommeCarre(7,2)+1;
Ecrire("SommeCarre(3,5)= ", SommeCarre(3,5));
Fin
Lors de l'appel Pair(3) le paramètre formel n est remplacé par le
paramètre effectif 3
2011/2012 19
Exercice
Question1
Écrire une fonction qui calcule la somme de 3
entiers fournis en arguments
Question2
Ecrire un programme se servant d'une fonction
MOYENNE du type float pour afficher la moyenne
arithmétique de deux nombres réels entrés au
clavier.
Question3
Ecrire deux fonctions qui calculent la valeur XN pour
une valeur réelle X (type double) et une valeur
entière positive N (type int) :
25/05/21 20
Solution
Question1
FONCTION Somme(A: entier , B : entier , C : entier) : entier
VARIABLE S : Entier
DÉBUT FONCTION
S A+B+C
RETOURN ( S )
FIN FONCTION
ALGORITHME SommeNombre
VARIABLE x, y, z,s :entier
DÉBUT
Ecrire ("Donnez trois nombres: ")
lire (x, y, z)
s Somme (x, y, z)
Ecrire (" la somme est: ", s)
25/05/21 24
Procédure: définition
Une procédure est un sous-programme qui ne
retourne pas de valeur
2011/2012 25
Procédure: structure
Tout comme les fonctions, une procédure
est un sous-programme qui :
◦ A un nom
◦ Peut avoir des paramètres
◦ Qui retourne une valeur d’un certain type
◦ Qui peut avoir besoin de variables
◦ Qui est composé d’instructions
2011/2012 26
Procèdure
Dans certains cas, on peut avoir besoin de répéter une tache dans plusieurs
endroits du programme, mais que dans cette tache on ne calcule pas de
résultats ou qu'on calcule plusieurs résultats à la fois
Dans ces cas on ne peut pas utiliser une fonction, on utilise une procédure
Une procédure est un sous-programme semblable à une fonction mais qui
ne retourne rien
Une procédure s'écrit en dehors du programme principal sous la forme :
2011/2012 27
Appel d'une procédure
L'appel d'une procédure, se fait dans le programme principale ou dans une autre procédure
par une instruction indiquant le nom de la procédure :
Algorithme exepmleAppelProcédure
Début
exemple_proc (…) …
Fin
Remarque : contrairement à l'appel d'une fonction, on ne peut pas affecter la procédure
appelée ou l'utiliser dans une expression. L'appel d'une procédure est une instruction
autonome
2011/2012 28
Paramètres d'une procédure
Les paramètres servent à échanger des données entre le programme
principale (ou la procédure appelante) et la procédure appelée
2011/2012 29
Exemple:
Une procédure qui ajoute 2 à un entier
2011/2012 30
Solution
Algorithme ex1
Variables i,n: entier
Procédure Aug2(..)
…
Fin Procédure
Début
Lire(n);
i 1;
Tant que (i n) Faire
Ecrire(i);
aug2(i);
Fin TantQue
Fin
2011/2012 31
Procédure et fonction: appels imbriqués
Exemple:
2011/2012 32
Variables locales et globales (1)
On peut manipuler 2 types de variables dans un module (procédure ou
fonction) : des variables locales et des variables globales.
globales Elles se
distinguent par ce qu'on appelle leur portée (leur "champ de
définition", leur "durée de vie")
2011/2012 33
Variables locales et globales (2)
• Conseil : Il faut utiliser autant que possible des variables locales plutôt que
des variables globales. Ceci permet d'économiser la mémoire et d'assurer
l'indépendance de la procédure ou de la fonction
2011/2012 34