0% ont trouvé ce document utile (0 vote)
66 vues34 pages

Algorithme Fonction

Télécharger au format ppt, pdf ou txt
Télécharger au format ppt, pdf ou txt
Télécharger au format ppt, pdf ou txt
Vous êtes sur la page 1/ 34

Partie 4

Sous algorithme et Fonctions

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.

Un sous-algorithmes peut être modifier sans


changer le corps de l’algorithme appelant
(modularité).

L’utilisationdes sous-algorithmes rendre


l’algorithme de résolution plus
compréhensible (lisibilité). 

25/05/21
 3
Problématique

Dès qu’on commence à écrire des programmes


sophistiqués, il devient difficile d’avoir une vision
globale sur son fonctionnement

Difficulté de trouver des erreurs

Solution: décomposer le problème en sous


problèmes
◦ Trouver une solution à chacun
◦ La solution partielle donne lieu à un sous-programme

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:

Un Algorithme qui teste si M est la matrice


inverse de N
Algorithme A
A1: Lecture de M
A2: Lecture de N
A3: Affecter à O le résultat de M*N
A4: Tester si O est l’identité
A5: Affichage du message adéquat
Fin A
6
Sous-algorithme
 Définition
◦ Un sous-algorithme est un élément d’algorithme nommé et
éventuellement paramétré que l’on définit afin de pouvoir ensuite
l’appeler par son nom en affectant, s’il y a lieu, des valeurs aux
paramètres.

◦ 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

◦ Structure : un sous-algorithme est composé


 D’une tête nom sous-algorithme, paramètres(arguments) avec leur
type
 D’un corps des déclarations d’objets locaux aux sous-algorithme,
instructions à exécuter
2011/2012 7
Utilisation des fonctions
L'utilisation(appel) d'une fonction se fait
par simple écriture de son nom. Le
résultat étant une valeur qui devra être
affecté ou être utilisé dans une expression,
une écriture, ...
On associe, au moment d’exécution d’une
fonction, les valeurs de ces paramètres
grâce aux paramètres d’appel.

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

Fonction identificateur (paramètres et leurs types) : type_fonction


Déclaration des variables
Début
Instructions constituant le corps de la fonction
Retourne(resultat);
FinFonction
 type de fonction : le type du résultat renvoyé par la fonction
 Identificateur : le nom que l’on a donné à la fonction
 liste de paramètres : la liste des paramètres formels donnés en entrée
avec leurs types
 corps de la fonction : un bloc d’instructions, pouvant comprendre la
déclaration des « variables locales » a la fonctions
Remarque : le corps de la fonction doit comporter une instruction de la
forme : Retourne(expression); où expression est du type du résultat de
la fonction

2011/2012 12
Exemple 1

Fonction qui retourne le carré d’un entier :

Fonction carre(n : entier): entier


Variables res: entier
Début
res  n * n;
Retourne(res);
FinFonction

2011/2012 13
Utilisation dans un algorithme

Fonction carre(n : entier): entier


Variables res: entier
Début
res  n * n;
Retourne(res);
FinFonction

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

La fonction Pair suivante détermine si un nombre est pair :


Fonction Pair (n : entier ) : booléen
Debut
retourne (n%2=0);
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

L’algorithme suivant utilise la fonction


surface pour calculer la surface d’un rectangle.
Les dimensions L et l sont lit à partir


du
25/05/21 16
ALGORITHME surfaceRect
VARIABLE aire, long, larg : RÉEL
DÉBUT
Ecrire ("Donnez la longueur et la largeur de votre rectangle : ")
lire (long, larg)
aire  surface(long, larg) // appel de la fonction surface
Ecrire ( "Voici sa surface : ", aire)
FIN

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) :

a) EXP1 retourne la valeur XN comme résultat.


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) 

FIN 25/05/21  21


Solution
 Question 2
FONCTION Moyenne (A: Réel, B : Réel) : Réel
VARIABLE M : Réel
DÉBUT FONCTION
M  (A+B)/2
RETOURN ( M )
FIN FONCTION
ALGORITHME MoyenneNombre
VARIABLE x, y, M: Réel
DÉBUT
Ecrire ("Donnez Deux nombres: ")
lire (x, y)
M Moyenne (x, y,)
Ecrire (" la Moyenne est: ", M)
FIN
Solution
Question 3
FONCTION EXP (double X, int N) : Réel ;
VARIABLE X , N,I ,RES : Réel
RES1
DÉBUT FONCTION
Pour i  1 a N faire
RESX*RES
Fin pour
RETOURN (RES)
FIN FONCTION
ALGORITHME EXPOSANT
VARIABLE A, B,EX: Réel
DÉBUT
Ecrire ("Donnez Deux nombres: ")
lire (A,B)
EX EXP(A, B)
Ecrire (" l’exposant est: ", EX)
FIN
TD1

25/05/21  24
Procédure: définition
Une procédure est un sous-programme qui ne
retourne pas de valeur

C’est donc un type particulier de fonction

En général, une procédure modifie la valeur de ses


paramètres
Je dis bien « en général », ce n’est pas toujours le cas

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 :

Procédure nom_procédure (paramètres et leurs types)


Déclaration des variables
Début
Instructions constituant le corps de la procédurei
FinProcédure
 Remarque : une procédure peut ne pas avoir de paramètres

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 :

Procédure exemple_proc (…)


Début

FinProcé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

 Comme avec les fonctions :


◦ Les paramètres placés dans la déclaration d'une procédure sont appelés
paramètres formels.
formels Ces paramètres peuvent prendre toutes les
valeurs possibles mais ils sont abstraits (n'existent pas réellement)

◦ Les paramètres placés dans l'appel d'une procédure sont appelés


paramètres effectifs.
effectifs ils contiennent les valeurs pour effectuer le
traitement

 Le nombre de paramètres effectifs doit être égal au nombre de paramètres


formels. L'ordre et le type des paramètres doivent correspondre

2011/2012 29
Exemple:
 Une procédure qui ajoute 2 à un entier

Procédure aug2(n : entier)


Début
n  n+2;
FinProcédure

Exercice: Ecrire un algorithme qui Lit un entier positif


n puis affiche tous les nombres impaires inférieurs à n

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

 Dans la définition d’une procédure, on peut faire appel à


une autre procédure ou fonction déjà définie . Même
remarque pour les fonctions

Exemple:

Fonction Puiss4(n : entier) : entier


Début
Retourne( carre(carre(n))) ;
FinFonction

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")

 Une variable locale n'est connue qu'à l'intérieur du module ou elle a


été définie. Elle est créée à l'appel du module et détruite à la fin de son
exécution

 Une variable globale est connue par l'ensemble des modules et le


programme principale. Elle est définie durant toute l’application et
peut être utilisée et modifiée par les différents modules du programme

2011/2012 33
Variables locales et globales (2)

 La manière de distinguer la déclaration des variables locales et globales


diffère selon le langage

◦ En général, les variables déclarées à l'intérieur d'une fonction ou


procédure sont considérées comme variables locales

• En pseudo-code, on va adopter cette règle pour les variables locales et on


déclarera les variables globales dans le programme principale

• 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

Vous aimerez peut-être aussi