Téléchargement d'épreuves

et

Cours gratuits

Procédures et fonctions

Généralités

En Pascal lorsqu'un programme devient beaucoup plus complexe il est nécessaire d'utiliser une écriture modulaire permettant de scinder en plusieurs parties ou module le programme correspondant. Chaque module peut également être décomposé en module plus élémentaire, il existe deux sortes de module: les procédures et les fonctions.
Généralement une écriture modulaire permet:

  • D'éviter de recopier un segment de code plusieurs fois dans un même programme.
  • De décomposer un programme ou un module en petits modules, chacun effectuant un travail bien précis.
  • De constituer une bibliothèque de sous programme.

Définitions

Fonction: C'est une entité qui calcule un résultat unique en fonction d'un ou de plusieurs paramètres. La valeur calculée est mise à la disposition de l'utilisateur par l'intermédiaire du nom de la fonction, qui est une variable d'un type donné: celui de la valeur calculée.
Procédure: C'est une entité pouvant calculer et mettre à la disposition de l'utilisateur plusieurs valeurs ou aucune. Une procédure ou une fonction peut comporter toutes les parties d'un programme principal.


Déclaration

Les fonctions et les procédures sont déclarées juste après la déclaration des variables.

Déclaration d'une procédure

procedure nom([liste des paramètres]);
déclaration des variables locales;
Begin
corps de la procédure;
end;

Déclaration de la fonction

function nom([paramètres]): type;
déclaration des variables;
begin
corps de la fonction;
nom := valeur calculée;
end;

Exemple 1:

Ecrivons une procédure qui permet de lire un nombre strictement positif.
procedure Lecture(var a: real);
begin
write('Entrez un nombre positif');
repeat
read(a);
until a>0;
end;

Exemple 2:

Ecrivons une fonction booléenne qui est fausse lorsque le nombre est négatif, vraie lorsque le nombre est positif.
function Positif(b: real):boolean;
begin
if (b<0) then
Positif := false;
else
if (b>0) then
Positif := true;
else
write('Ce nombre est nul');
end;

Exemple 3:

Ecrivons un programme qui permet de lire deux nombres qui calcule et affiche la somme et la moyenne de ses nombres.
program calcul;
var nombre1, nombre2, S, M: real;

Procedure Lecture(var a, b: real);
begin
read(a);
read(b);
end;

function somme(x, y: real): real
begin
somme := x+y;
end;

function moyenne(i, j: real):real;
begin
moyenne := (i+j)/2;
end;

begin
write('Entrez deux nombres');
Lecture(nombre1, nombre2);
S := somme(nombre1, nombre2);
M := moyenne(nombre1, nombre2);
writeln('La somme est ', S);
write('La moyenne est ', M);
readln;
end.


Passage de paramètre

On distingue les effectifs et les paramètres formels:

  • Un paramètre formel est un paramètre utilisé dans la définition d'un sous-programme.
  • Un paramètre effectif ou réel ou actuel est un paramètre utilisé lors de l'appel d'un sous-programme, exemple: nombre1 et nombre2

Le paramètre actuel doit être compatible au paramètre formel correspondant (doit être de même type).
Un paramètre peut être:

  • Paramètre d'entré c'est-à-dire qu'il fournit les données au sous-programme, exemple: x, y
  • Paramètre de sortie c'est-à-dire qu'il contient le résultat à la fin du déroulement du sous-programme, exemple: a, b
  • Paramètre d'entrée sortie c'est-à-dire qu'il joue deux rôles: le rôle de paramètre d'entrée et le rôle de paramètre de sortie.

Les paramètres d'un sous-programme peuvent être transmis sous plusieurs formes. Les plus courant sont: la passage par valeur et le passage par adresse.

Passage par valeur

Il concerne les paramètres d'entrée. Lors du passage par valeur toute modification de la variable formelle n'affecte pas la variable actuelle correspondante.
Les paramètres transmis par valeur ne sont pas précédés par le mot var.

Le passage par adresse

Encore appelé passage par référence, il concerne les paramètres de sortie. Lors du passage par adresse, les paramètres sont des alias des paramètres actuels correspondants, c'est-à-dire qui partage le même emplacement mémoire.
Toute action effectuée sur le paramètre formel affecte le paramètre actuel correspondant.
Les paramètres transmis par adresse sont précédés par le mot var

Exercice 1:

program X

procedure A(i, j: integer);
begin
.
.
.
.
.
end;

procedure B(i, j: real);
begin
.
.
.
.
.
end;

Est-ce que ce program X est possible ou pas?

Exemple 1:

Ecrire un programme qui fait appel à une procédure pour permuter le contenu de deux variables. Les valeurs des deux variables à permuter sont lues par le programme principal.

program Exemple1

procedure Permuter(var a, b: real);
var c: real;
begin
c := a;
a := b;
b := c;
end;

begin
writeln('Entrez deux nombres');
write('X= '); readln(x);
write('Y= '); readln(y);
Permuter(x, y);
writeln('Le resultat est: ');
write('X= ', x);
write('Y= ', y);
end.

Exemple 2:

Ecrire un programme qui fait appel à une fonction pour déterminer la plus grande valeur entre deux variables.

program exemple2
var nbre1, nbre2, G: interger;
function plusgrand(x, y: interger): interger
begin
if (x>y) then
plusgrand := x;
else
plusgrand := y;
end;

begin
writeln('Entrez deux nopmbres');
read(nbre1);
read(nbre2);
G := plusgrand(nbre1, nbre2);
writeln(le plus grand est ', G);
end.


La portée des variables

On distingue en général deux types de variables: les variables locales et les variables globales.

  • La variable locale ou privée: Elle est déclarée immédiatement après l'en-tête de la procédure.
    Une variable locale peut être globale pour une autre procédure.

    Exemple:
    procedure A()
    var x, y: type
    procedure B()
    var i, j: type
    fin
    fin
  • La variable globale publique: Elle est déclarée après les étiquettes, les constantes, les types et avant toute déclaration des procédures.

    Exemple:
    program
    label
    const
    type
    var
    procedure

Chaque sous-programme ne connaît que ses variables locales et ses variables globales. Mais le programme principal connaît uniquement les variables globales.

Exemple:

program X
var z, t: type

procedure A()
var x, y: type

procedue B()
var i, j: type
fin

fin

fin

Consultez gratuitement nos différents cours

  • Le magnétisme (Machines électriques)

    Constitution générale des machines Dans toutes machines électriques tournantes, nous avons 3 parties essentielles. Partie électrique Elle est chargée d'assurer la continuité du courant entre les réseaux d'énergie de la machine et produit le flux électromagnétique. Cette partie électrique comprend: Les enroulements: ensemble de bobine de la machine. Les baillais: pièces conductrices généralement fixes destinées à assurer par contact glissant la liaison électrique entre organes fixes et organes...

    Lire la suite : Le magnétisme

  • Produit vectoriel (Mathématique)

      Orientation d'un repère de l'espace Repère du bonhomme d'Ampère Soit R (O; i; j; k) un repère de l'espace E. Avec les notions de la figure ci-dessous, un observateur est placé sur [oz), les pieds en O, la tête en K et il a le point I droit devant lui. (o, i, j, k) est qualifié de repère direct lorsque i est à la gauche de l'observateur. Une permutation circulaire sur les vecteurs de base ne change pas l'orientation. L'échange de 2 vecteurs change l'orientation.   Produit vectoriel Si A, B et C...

    Lire la suite : Produit vectoriel

  • Les réseaux locaux: le réseau Ethernet (Réseaux informatiques)

    Présentation Ethernet est un réseau local en bande de base développé par la société Xeron depuis 1970. En 1980 Intel et DEC rejoignent Xeron. En 1985 il fait l'objet d'une spécification par la norme IEEE 802-3 (CSMA/CD). Le réseau Ethernet consistait en un réseau de micro-ordinateur reliés par un même câble coaxial passif (sans répéteur, sans amplificateur) selon une topologie en bus. Principe de fonctionnement de la topologie en bus Les stations (ordinateurs) sont connectées en multipoints en un...

    Lire la suite : Les réseaux locaux: le réseau Ethernet

  • Les types d'érosion (Géographie)

    Depuis l'époque plus moins lointaine où elles sont constituées les roches ont subies des déformations (plissement ou cassure). C'est ainsi que les formes de détail que nous observons aujourd'hui sont dues à l'action des agents d'érosion(les eaux courantes, la mer, les vents, le soleil, les glaciers) qui sculptent ou construisent les formes topographiques du paysage.   L'érosion se définie comme étant l'usure ou l'altercation du relief sous l'action des agents externes ou internes. Elles peut...

    Lire la suite : Les types d'érosion