Module: Sous-programmes : procédures et fonctions - 1


Problem

12/12

Changer les arguments

Theory Click to read/hide

Problème : écrire une procédure qui échange les valeurs de deux variables.
Les particularités de cette tâche sont que nous avons besoin que les modifications apportées à la procédure soient connues du programme appelant.

Essayons d'écrire la procédure comme ceci :

var x, y : entier ; procédure Swap(a, b : entier); // avec une telle description des paramètres de la procédure, var c : entier ; begin // va copier les valeurs des arguments (x et y) // les variables a et b sont des variables indépendantes non liées à x et y c := un; un := b; b := c; fin; commencer x := 1;   y := 2; Échange(x, y); //les valeurs des variables x et y (arguments) sont copiées dans les paramètres a et b writeln('x = ', x, ', y = ', y); //x=1, y=2 fin. Si vous exécutez ce programme, vous pouvez voir que les valeurs des variables x et y n'ont pas changé. Pour que les paramètres modifient les valeurs des arguments, vous devez utiliser passage de données par référence. Pour ce faire, après le nom du type de données dans l'en-tête du sous-programme, vous devez mettre le mot var  procédure Swap(var a, b : entier );   // maintenant les variables a et b obtiennent les adresses des variables x et y en mémoire var c : entier ;  commencer c := un; un := b; b := c; fin; Utilisation : Si vous passez un argument par référence, alors seul le nom de la variable (PAS un nombre et PAS une expression arithmétique) peut être à cet endroit lors de l'appel de la procédure !< br />
N'appelez PAS une procédure comme celle-ci : Échange(x, 4); Échange(5+x, y) ;

Problem

Écrivez une procédure qui échange les valeurs de deux variables.

Rechercher et corriger les erreurs dans cette procédure