Difference between revisions of "Basic Pascal Tutorial/Chapter 4/Parameters/fr"

From Free Pascal wiki
Jump to navigationJump to search
m (bypass language bar/categorization template redirect [cf. discussion])
 
(5 intermediate revisions by 3 users not shown)
Line 1: Line 1:
{{Parameters}}
+
{{Basic Pascal Tutorial/Chapter 4/Parameters}}
  
4B - Paramètres (auteur: Tao Yue, état: traduit)
+
[[Basic Pascal Tutorial/fr|Tutoriel de Pascal Objet]] : Sous-programmes / '''Paramètres'''
  
 
+
Une liste de paramètres peut être ajoutée dans l'en-tête de la procédure. La liste permet de transférer des valeurs du programme principal vers la procédure. Le nouvel en-tête de la procédure est :
Une liste de paramètres peut être ajoutée dans l'entête de la procédure. La liste permet de transférer des valeurs du programme principal vers la procédure. La nouvelle entête de la procédure est:
+
<syntaxhighlight lang=pascal>
<syntaxhighlight>
 
 
procedure Name (formal_parameter_list);
 
procedure Name (formal_parameter_list);
 
</syntaxhighlight>
 
</syntaxhighlight>
  
La liste de paramètres consiste en plusieurs groupes de paramètres, séparés par des points-virgules:
+
La liste de paramètres consiste en plusieurs groupes de paramètres, séparés par des points-virgules :
 
  param_group_1; param_group2; ... ; param_groupn
 
  param_group_1; param_group2; ... ; param_groupn
  
Chaque groupe de paramètres a la forme:
+
Chaque groupe de paramètres a la forme :
 
  identifier_1, identifier_2, ... , identifier_n : data_type
 
  identifier_1, identifier_2, ... , identifier_n : data_type
  
La procédure est appelée en passant des arguments (liste appelée paramètres effectifs) identiques en nombre, type et position aux paramètres formels de la liste:
+
La procédure est appelée en passant des arguments (liste appelée paramètres effectifs) identiques en nombre, type et position aux paramètres formels de la liste :
<syntaxhighlight>
+
<syntaxhighlight lang=pascal>
 
procedure Name (a, b : integer; c, d : real);
 
procedure Name (a, b : integer; c, d : real);
 
begin
 
begin
Line 25: Line 24:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
Supposez que vous appelez la procédure du dessus depuis le programme principal comme suit:
+
Supposez que vous appelez la procédure du dessus depuis le programme principal comme suit :
<syntaxhighlight>
+
<syntaxhighlight lang=pascal>
 
alpha := 30;
 
alpha := 30;
 
Name (alpha, 3, 4, 5);
 
Name (alpha, 3, 4, 5);
 
</syntaxhighlight>
 
</syntaxhighlight>
  
Quand vous revenez au programme principal, quelle est la valeur d'<tt>alpha</tt>? 30. D'abord, <tt>alpha</tt> est passé par <tt>a</tt>, lequel est affecté de la valeur 10. Ce qui se passe là est que <tt>a</tt> et <tt>alpha</tt> sont totalement distinctes. La valeur dans le programme principal n'a pas été affectée par ce qu'il s'est passé dans la procédure.
+
Quand vous revenez au programme principal, quelle est la valeur d'<tt>alpha</tt> ? 30. D'abord, <tt>alpha</tt> est passé par <tt>a</tt>, auquel est affecté de la valeur 10. Ce qui se passe là est que <tt>a</tt> et <tt>alpha</tt> sont totalement distinctes. La valeur dans le programme principal n'a pas été affectée par ce qu'il s'est passé dans la procédure.
  
C'est un '''appel par valeur'''. La valeur est passsée à la procédure.
+
C'est un '''appel par valeur'''. La valeur est passée à la procédure.
  
Une autre façon de passer les paramètres est l&rsquo;'''appel par variable''' ('''appel par référence''' convient aussi). Cela crée un '''lien''' entre les paramètres formels et les paramètre effectifs. Quand le paramètre formel est modifié dans la procédure, le paramètre effectif l'est de la même manière. L&rsquo;''appel par variable'' est activé en faisant précéder le groupe de paramètre par <tt>VAR</tt>:
+
Une autre façon de passer les paramètres est l''''appel par variable''' ('''appel par référence''' convient aussi). Cela crée un '''lien''' entre les paramètres formels et les paramètre effectifs. Quand le paramètre formel est modifié dans la procédure, le paramètre effectif l'est de la même manière. L'appel par variable est activé en faisant précéder le groupe de paramètre par <tt>VAR</tt> :
<syntaxhighlight>
+
<syntaxhighlight lang=pascal>
 
VAR identifier1, identifier2, ..., identifiern : datatype;
 
VAR identifier1, identifier2, ..., identifiern : datatype;
 
</syntaxhighlight>
 
</syntaxhighlight>
  
Dans ce cas, les constantes et les littéraux ne sont pas admis ici pour être utilisés comme paramètres efffectifs car ils doivent pouvoir être changés dans la procédure.
+
Dans ce cas, les constantes et les littéraux ne sont pas admis ici pour être utilisés comme paramètres effectifs car ils doivent pouvoir être changés dans la procédure.
  
Voici un exemple qui mélange ''appel par valeur'' et ''appel par variable'':
+
Voici un exemple qui mélange ''appel par valeur'' et ''appel par variable'' :
<syntaxhighlight>
+
<syntaxhighlight lang=pascal>
 
procedure Name (a, b : integer; VAR c, d : integer);
 
procedure Name (a, b : integer; VAR c, d : integer);
 
begin
 
begin
Line 58: Line 57:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
Tout de suite après que la procédure ait été exécutée, <tt>gamma</tt> a la valeur 3 car <tt>c</tt> était un paramètre par variable, mais <tt>alpha</tt> est encore 1 car c'était un paramètre par valeur.
+
Tout de suite après que la procédure a été exécutée, <tt>gamma</tt> a la valeur 3 car <tt>c</tt> était un paramètre par variable, mais <tt>alpha</tt> est encore 1 car c'était un paramètre par valeur.
  
 
Cela est un peu confus. Pensez que l'appel par valeur comme une copie de variable qui est donnée à la procédure. La procédure travaille sur la copie et l'abandonne quand c'est fini. La variable originale demeure inchangée.
 
Cela est un peu confus. Pensez que l'appel par valeur comme une copie de variable qui est donnée à la procédure. La procédure travaille sur la copie et l'abandonne quand c'est fini. La variable originale demeure inchangée.
Line 66: Line 65:
 
En d'autres mots, l'appel par valeur est un transfert de donnée dans un seul sens. L'appel par variables va dans les deux sens.
 
En d'autres mots, l'appel par valeur est un transfert de donnée dans un seul sens. L'appel par variables va dans les deux sens.
  
{|style=color-backgroud="white" cellspacing="20"
+
{{Tutorial page navigation/fr|Chapter 4/Procedures|Chapter 4/Functions}}
|[[Procedures/fr|précédent]] 
 
|[[Contents/fr|table des matières]]
 
|[[Functions/fr|suivant]]
 
|}
 

Latest revision as of 16:19, 20 August 2022

български (bg) English (en) español (es) français (fr) 日本語 (ja) 中文(中国大陆)‎ (zh_CN)

Tutoriel de Pascal Objet : Sous-programmes / Paramètres

Une liste de paramètres peut être ajoutée dans l'en-tête de la procédure. La liste permet de transférer des valeurs du programme principal vers la procédure. Le nouvel en-tête de la procédure est :

procedure Name (formal_parameter_list);

La liste de paramètres consiste en plusieurs groupes de paramètres, séparés par des points-virgules :

param_group_1; param_group2; ... ; param_groupn

Chaque groupe de paramètres a la forme :

identifier_1, identifier_2, ... , identifier_n : data_type

La procédure est appelée en passant des arguments (liste appelée paramètres effectifs) identiques en nombre, type et position aux paramètres formels de la liste :

procedure Name (a, b : integer; c, d : real);
begin
  a := 10;
  b := 2;
  writeln (a, b, c, d)
end;

Supposez que vous appelez la procédure du dessus depuis le programme principal comme suit :

alpha := 30;
Name (alpha, 3, 4, 5);

Quand vous revenez au programme principal, quelle est la valeur d'alpha ? 30. D'abord, alpha est passé par a, auquel est affecté de la valeur 10. Ce qui se passe là est que a et alpha sont totalement distinctes. La valeur dans le programme principal n'a pas été affectée par ce qu'il s'est passé dans la procédure.

C'est un appel par valeur. La valeur est passée à la procédure.

Une autre façon de passer les paramètres est l'appel par variable (appel par référence convient aussi). Cela crée un lien entre les paramètres formels et les paramètre effectifs. Quand le paramètre formel est modifié dans la procédure, le paramètre effectif l'est de la même manière. L'appel par variable est activé en faisant précéder le groupe de paramètre par VAR :

VAR identifier1, identifier2, ..., identifiern : datatype;

Dans ce cas, les constantes et les littéraux ne sont pas admis ici pour être utilisés comme paramètres effectifs car ils doivent pouvoir être changés dans la procédure.

Voici un exemple qui mélange appel par valeur et appel par variable :

procedure Name (a, b : integer; VAR c, d : integer);
begin
  c := 3;
  a := 5
end;

begin
  alpha := 1;
  gamma := 50;
  delta := 30;
  Name (alpha, 2, gamma, delta);
end.

Tout de suite après que la procédure a été exécutée, gamma a la valeur 3 car c était un paramètre par variable, mais alpha est encore 1 car c'était un paramètre par valeur.

Cela est un peu confus. Pensez que l'appel par valeur comme une copie de variable qui est donnée à la procédure. La procédure travaille sur la copie et l'abandonne quand c'est fini. La variable originale demeure inchangée.

L'appel par variable donne la variable réelle à la procédure. La procédure travaille directement sur la variable et la retourne au programme principal.

En d'autres mots, l'appel par valeur est un transfert de donnée dans un seul sens. L'appel par variables va dans les deux sens.

Sommaire