Académique Documents
Professionnel Documents
Culture Documents
Chapitre N02 PDF
Chapitre N02 PDF
Module : Pascal
Semestre 2
Année : 2013/2014
-1-
Module : Pascal Chapitre 02 : analyse et décomposition
SOMMAIRE
3. Les Fonctions
3.1. Déclarations
3.2. Construction de procédure
3.3. Appel d’une procédure
3.4. Procédures paramétrées
3.5. Variables locales et globales
4. La récursivité
5. Résumé
6. QCM
7. Exercices
8. Bibliographie
-2-
Module : Pascal Chapitre 02 : analyse et décomposition
-3-
Module : Pascal Chapitre 02 : analyse et décomposition
En ce qui concerne la notion d'argument, nous verrons que celle-ci est plus
générale qu'en mathématiques; en particulier, elle interfère avec les notions
de "variables globales et locales". C'est pourquoi, nous allons commencer par
vous présenter une succession d'exemples introduisant progressivement les
notions fondamentales (variables globales, variables locales, arguments
muets et effectifs, arguments transmis par valeur, arguments transmis par
adresse). Nous parlerons des procédures en premier, les fonctions
apparaissant ensuite comme un cas particulier.
Exemple :
program LOCAL_VARIABLES (input, output);
var number1, number2 : integer; {elles sont toujours accessibles}
procedure add_numbers;
var result : integer; {result appartient à add_numbers}
begin
result := number1 + number2;
writeln('La réponse est ',result)
end;
program elec;
begin
writeln('Avant -> MonResultat = ', MonResultat); { Sortie -> 0 }
LoiOhm(15, 250, MonResultat); -4- { On passe notre
variable en argument}
writeln('Après -> MonResultat = ', MonResultat); { Sortie -> 0 }
end.
Module : Pascal Chapitre 02 : analyse et décomposition
Construction de procédure
Pour construire une procédure il faut agir comme suite :
1. Identifiez un bloc d’instruction dans l’exécution peut se répéter à plusieurs
reprise
2. Identifiez les données qui peuvent changée à chaque fois ou le bloc sera
exécuté
3. Le bloc instruction sera alors insérer dans une procédure dans nom est
proche de l’action réalise par le bloc , les données qui changent sont
remplacés par des paramètre appelée paramètre données
4. Si un résultat explicite doit être récupéré après la fin du bloc, ce résultat doit
être représenté par paramètre appel paramètre résultat
5. à chaque fois ou le bloc doit être exécuté on fait appel au procedure on
indiquant son nom et ses paramètres réels
program Nombres;
(* déclaration des variables *)
var A, B : integer;
var C : integer;
(* définition de la procédure *)
procedure Ordonne; (* toujours pas d'arguments pour la
procédure *)
var C : integer; (* variable locale à la procédure *)
begin
if (A > B) then
(* on ordonne les variables dans un ordre croissant
*)
begin
C := A;
A := B;
B := C;
end;
end;
(* traitement *)
Ordonne; // appel de la procedure
(* sorties *)
writeln; (* ligne vide *)
write('Vos nombres par ordre croissant : ');
writeln(A, ' ', B);
writeln; (* ligne vide *)
writeln('Variable C : ', C);
end. -5-
Module : Pascal Chapitre 02 : analyse et décomposition
Procédures paramétrées
Les échanges d'informations entre une routine(programme ou sous programme) appelant une
sous-routine peuvent se faire par l'intermédiaire des variables globales. Mais il est beaucoup
plus intéressant d'utiliser les PARAMETRES (arguments), donc les paramètres représentent
les point d’entrée pour un procédure ou fonction, permettant de fournir des données et dans
autres cas récupérer les résultats d’une procédure .
Dans le cas ou les paramètres fouinssent les données on les appels paramètre donnée, dans
l’autre cas on les appels paramètres résultats.
Paramètres formels : sont ceux qui figure dans la définition d’une procédure
Paramètres réel : sont ceux qui figurent dans les appels d’une procédure ;
Passage par adresse :( le paramètre formel reçoit une copie de la valeur du paramètre
réel),dans le cas d’un paramètre donné,
Passage par valeur : ( le paramètre formel reçoit une copie de l’adresse du paramètre réel)
Exemple :
la liste des paramètres (en général passés par valeur) est de la même forme que pour une
procédure, le type de la fonction étant le type du résultat retourné. On retourne le résultat par :
NOM_FONCTION := ... Cette affectation ne peut se faire qu'une seule fois par appel à la
fonction.
-7-
Module : Pascal Chapitre 02 : analyse et décomposition
program classer(input,output);
var a,b,c:real;
function MAX(x,y:real):real;
begin
if x>=y then MAX:=x else MAX:=y
end;
begin
writeln('entrez deux valeurs : ');
readln(a,b);
c:=max(a,b); {appel dans une affectation}
C :=max(c,max(b,10) ; {appel dans une affectation, et expression}
writeln('le plus grand est ',c)
end.
Fonctions paramétrées
Le même principe que les procédures
-8-
Module : Pascal Chapitre 02 : analyse et décomposition
4. La récursivité
C'est ainsi que l'on appelle le fait qu'une routine puisse s'appeler elle-
même
function factorielle(n:integer):integer;
begin
if n<=1 then factorielle:=1
else factorielle:=n*factorielle(n-1)
end;
-9-
Module : Pascal Chapitre 02 : analyse et décomposition
5. Résumé
-10-
Module : Pascal Chapitre 02 : analyse et décomposition
6. QCM
-11-
Module : Pascal Chapitre 02 : analyse et décomposition
7. Exercices
Exercices 1:TP
Exercices 2:
Exercices 3:TP
3) Écrire une fonction calculant la norme d’un vecteur à 3 composantes
réelles.
Exercices 4:
4) Écrire la fonction précédente sous forme d’une procédure.
Exercices 5:TP
5) Écrire une procédure supprimant tous les espaces d’une chaîne de
longueur maximale de 50 caractères
Exercices 6:TP
6) Écrire une fonction calculant le produit vectoriel de deux vecteurs à 3
composantes réelles.
Exercices 7:
7) Écrire une procédure simulant le lancé d’un dé à six faces.(facultatif)
Exercices 8:
-12-
Module : Pascal Chapitre 02 : analyse et décomposition
8. Bibliographie
SITES WEB :
• www.developpez.com
• www.commentçamarche.com
• www.codesource.com
• www.emagister.fr
-13-