0% ont trouvé ce document utile (0 vote)
47 vues19 pages

Leçon 5 - Les Fonctions Et Procédures

Transféré par

sanogooumar681
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
47 vues19 pages

Leçon 5 - Les Fonctions Et Procédures

Transféré par

sanogooumar681
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
Vous êtes sur la page 1/ 19

Leçon 5

Sous-algorithmes (ou routines):


fonctions et procédures
Plan
1. Sous-algorithmes: définition, intérêts et types
2. Fonctions et procédures
a. Déclaration d’une procédure
b. Déclaration d’une fonction

3. Appel d’une fonction/procédure


a. Passages de paramètres
b. Portée des variables (locale/globale)
c. Passage des tableaux en paramètre
d. Appel récursif

2
1) Sous-algorithmes: définition,
intérêts et types

3
1) Notion de sous-algorithme
Algorithme informations_etudiant
Variables nom, prenom, adresse : chaine; La solution à ce problème: Factoriser le code redondant
Début
j : entier;
• consiste à déclarer le code redondant une seule fois
Ecrire ("Nom: ") ; • et l’utiliser selon les besoins
lire (nom) ;
Pour j de 1 à 20 Faire

FinPour
Ecrire(" * ");
Sous-algorithme
Ecrire ("Prénom: ") ; Sous-algorithme ligne () Sous-algorithme ligne (nbre: entier, car: caractère)
lire (prenom) ; Variables k : entier; Variables k : entier;
Pour j de 1 à 20 Faire Début Début
Ecrire(" * ");
FinPour Pour k de 1 à 20 Faire Pour k de 1 à nbre Faire
Ecrire(" * "); Ecrire(car);
Ecrire ("Adresse: ") ; FinPour FinPour
lire (adresse) ;
Pour j de 1 à 20 Faire Fin Fin
Ecrire(" * ");
FinPour
4
Fin
1) Sous-algorithme: intérêts Algorithme informations_etudiant
Variables nom, prenom, adresse : chaine;
j : entier;
1. Décomposition un problème en modules Sous-algorithme ligne ()
Variables k : entier;
(sous-problèmes moins complexes) Début
Pour k de 1 à 20 Faire
• regrouper les séquences d’instructions Ecrire(" * ");
FinPour
redondantes Fin

2. Réduction de la taille de l’algorithme Début


Ecrire ("Nom: ") ;
lire (nom) ;
• Plus de lisibilité ligne();
Ecrire ("Prénom: ") ;
lire (prenom) ;
ligne();
3. Réutilisation des modules Ecrire ("Adresse: ") ;
lire (adresse) ;
ligne();
Fin
5
1) Sous-algorithme: définition
Définition: un sous-algorithme est
• une séquence d’instructions réutilisables Deux types de sous-algorithmes
• qui effectue un traitement spécifique bien défini.

Procédure Fonction
Un sous-algorithme est un algorithme :
• utilisé dans un algorithme principal
• identifié et paramétrable
• mais indépendant de cet algorithme principal

6
1) Sous-algorithme: types
On distingue deux types de sous-algorithme:
1. fonctions
Une fonction réalise un traitement spécifique Fonction
et retourne un résultat. 0àN Un résultat
entrées

1. Procédures
Une procédure réalise aussi un traitement Procédure
spécifique mais ne retourne pas de résultat. 0àN
entrées

7
2) Déclaration de fonction/procédure

8
2.1) Déclaration d’une procédure
Exemple:

Algorithme informations_etudiant
Variables nom, prenom, adresse : chaine;
PROCEDURE nom_procedure ( arg1: type , arg2 : type , … ) j : entier;

Variables nom_variable1: type; PROCEDURE ligne (nbre: entier, car: caractère)


Variables k : entier;
nom_variable2: type; Début
Pour k de 1 à nbre Faire
DEBUT Ecrire(car);
FinPour
<instruction>
Fin
FIN
Début
….
Fin 9
2.2) Déclaration d’une fonction

FONCTION nom_fonction ( arg1: type , arg2 : type , … ) : type_retour


Variables nom_variable1: type;
nom_variable2: type;
DEBUT
<instruction>
RETOURNE <résultat>
FIN

10
2.2) Déclaration d’une fonction: exemple

FONCTION factorielle( nbre: entier) : entier


Variables res , j: entier;
DEBUT
res ← 1;

Pour j de 1 à nbre Faire


res ← res * j ;
FinPour

RETOURNE res ;
FIN

11
3) Appel de fonction/procédure

12
Algorithme informations_etudiant

Variables nom, prenom, adresse : chaine;


3.1) Appel d’une procédure x,y : entier;
symbole : caractère;

PROCEDURE ligne (nbre: entier, car: caractère)


Une procédure est appelé Variables k : entier;
Début
Pour k de 1 à nbre Faire
• par son nom Ecrire(car);
FinPour
• avec des valeurs réelles (ou paramètre effectifs) Fin
entre parenthèses Début
x ← 25; y ← 20; symbole ←’+’;
Ecrire ("Nom: ") ;
lire (nom) ;
Syntaxe: ligne(20, ‘*’);
Ecrire ("Prénom: ") ;
nom_procedure (valeur1,.. valeurN); lire (prenom) ;
ligne(x, ‘_’);
Ecrire ("Adresse: ") ;
valeur1,.. valeurN : sont des expressions
lire (adresse) ;
NB: les parenthèses sont obligatoires même sans paramètres ligne(y-2, symbole);
Fin 13
3.2) Appel d’une fonction
Algorithme calcul

Une fonction est appelé comme une procédure Variables x, res : entier;

• mais sa valeur de retour doit être récupérée FONCTION au_carre (a: entier) : entier
Variables p : entier;
Début
p ← a*a;
Méthode 1: récupération par affectation Retourne p;
Fin
variable1 ← nom_fonction (valeur1,.. valeurN); Début
Ecrire ("Entrer un nombre positif") ;
lire (x) ;
res ← au_carre(x);
Méthode 2: récupération par affichage
Ecrire ("La puissance de", x , " est: ", res) ;
Ecrire(nom_fonction (valeur1,.. valeurN));
Ecrire ("La puissance de", x , " est: ", au_carre(x)) ;

NB: les parenthèses sont obligatoires même sans paramètres Fin


14
3.3) Paramètres formels / paramètre effectifs
Algorithme calcul

Variables a, res : entier;


Paramètres formels:
FONCTION au_carre (a: entier) : entier
• variables fictives utilisées lors de la déclaration de Variables p : entier;
la fonction ou de la procédure Début
p ← a*a;
Retourne p;
Fin
Paramètres effectifs: Début
Ecrire ("Entrer un nombre positif") ;
• variables réelles utilisées lors de l’appel de la lire (a) ;
fonction ou de la procédures res ← au_carre(a);
Ecrire ("La puissance de", x , " est: ", res) ;

NB: Les paramètres formels et effectifs ne Ecrire ("La puissance de", x , " est: ", au_carre(x)) ;
représentent pas la même variable même s’ils ont le
même nom. Fin
15
3.4) Portée des variables
Variables globales: Algorithme calcul

• Sont des variables définies dans l’algorithme principal ( Variables x, res : entier;
à l’extérieur d’une fonction/procédure).
FONCTION au_carre (a: entier) : entier
Variables p : entier;
Début
Variables locales: p ← a*a;
Retourne p;
• Sont des variables définies et accessibles à l’intérieur
Fin
d’une fonction ou d’une procédure Début
• Les paramètres formels sont aussi considérés comme Ecrire ("Entrer un nombre positif") ;
lire (x) ;
des variables locales.
res ← au_carre(x);
Ecrire ("La puissance de", x , " est: ", res) ;
NB: Si une variable locale porte le même nom qu’une
variable globale, la priorité est donnée à la variable locale Ecrire ("La puissance de", x , " est: ", au_carre(x)) ;
à l’intérieur de la fonction.
Fin
16
3.5) Mode de transmission de paramètres

1. Passage par valeur (ou par copie):


• Les valeurs des paramètres effectifs sont copiées dans les paramètres formels
• Les paramètres transmis ne sont pas affectés

2. Passage par variable (ou par adresse):


• Les adresses des paramètres effectifs sont copiées dans les paramètres formels
• Les paramètres transmis peuvent être affectés

17
3.5) Mode de transmission de paramètres (1)
Passage par valeur Passage par variable

PROCEDURE permuter1 (x,y: entier) PROCEDURE permuter2 ( VAR x,y: entier)


Variables tmp : entier; Variables tmp : entier;
Début Début
tmp ← x; tmp ← x;
x ← y; x ← y;
y ← tmp; y ← tmp;
Fin Fin

Algorithme calcul
Variables A, B : entier;
Début
lire(A); lire (B);
permuter1 (A, B) ; // pas de permutation
permuter2 (A, B) ; // il y a permutation

Fin
18
3.6) Appel récursif
• Notion de récursivité

À suivre….

19

Vous aimerez peut-être aussi