Previous Page Next Page

11.13 A propos des effets de bord

Exemple: Soit les déclarations de variables suivantes:

. . .

VAR T: ARRAY [1..100] OF Integer;

K, U, Tot: Integer;

. . .

et la procédure SumArray pour laquelle les paramètres sont transmis par référence:

PROCEDURE SumArray ( VAR I, N, Value: Integer );

BEGIN

Value := 0;

WHILE I<=N DO

BEGIN

Value:= Value+T[I];

I := I+1

END {-- WHILE, I>N}

END; {-- SumArray}

On voit sans difficulté que les paramètres I et N représentent l'intervalle de sommation. Le paramètre Value retourne la valeur du résultat obtenu, c'est-à-dire de la somme des N-I+1 composantes du tableau T, dans le programme appelant.

A l'activation de la procédure SumArray dans le segment de (sous-) programme suivant:

. . .

FOR K:=1 TO 100 DO

Readln( T[K] );

K := 3; U := 10;

SumArray( K, U, Tot );

Writeln( K, U, Tot );

. . .

on obtient schématiquement:

Undisplayed Graphic

Figure 11.21 Schéma d'exécution

Remarque:

Dans l'instruction SumArray( K, U, Tot ), la variable Tot ne doit pas nécessairement être définie avant d' être utilisée comme paramètre. Sa valeur sera définie dans le cours de l'exécution de la procédure et renvoyée vers la procédure appelante. L'effet parasite consiste ici dans le fait que, après exécution de la procédure SumArray, l'intervalle de sommation n'est plus défini pour les valeurs de ces mêmes variables.

Pour éviter ce genre de problème, il est prudent soit d'envisager un autre mode de transmission, par exemple passage de U et de K par valeur, soit de prendre des précautions dans l'écriture du texte de la procédure, par exemple par l'introduction d'une variable locale ICopy dans laquelle on va copier la valeur de I et sur laquelle on va travailler.

¨ TERMES TECHNIQUES

• effet de bord

• paramètre formel

• paramètre par adresse

• paramètre par nom

• paramètre par référence

• paramètre par valeur

• paramètre par variable

• mode de transmission par nom

• mode de transmission par référence

• mode de transmission par valeur

Previous Page Next Page


© Aflo Informatique , 2003-2004