Procedures and BYREF · Procédures et BYREF
This page needs a recent browser (with SharedArrayBuffer support). Please update Chrome, Edge, Firefox or Safari to the latest version. · Cette page nécessite un navigateur récent (avec support SharedArrayBuffer). Veuillez mettre à jour Chrome, Edge, Firefox ou Safari vers la dernière version.
English
CALL runs a procedure
- A procedure is a named block. It does a job and returns no value.
- Define it with
PROCEDURE…ENDPROCEDURE, and run it withCALL. - Parentheses are written even when there are no parameters.
Français
CALL exécute une procédure
- Une procédure est un bloc nommé. Elle effectue une tâche et ne retourne aucune valeur.
- Définissez-la avec
PROCEDURE…ENDPROCEDURE, et exécutez-la avecCALL. - Les parenthèses s'écrivent même lorsqu'il n'y a pas de paramètres.
PROCEDURE Greet()
OUTPUT "Hi"
ENDPROCEDURE
CALL Greet()
English
By value is the default
- A parameter with no mode is passed by value: the procedure gets a copy.
- Changing the copy does not change the caller's variable.
- You may also write
BYVALin front of the name. It means the same thing.
Français
Par défaut, c'est par valeur
- Un paramètre sans mode est transmis par valeur : la procédure reçoit une copie.
- Modifier la copie ne modifie pas la variable de l'appelant.
- Vous pouvez également écrire
BYVALdevant le nom. Cela signifie la même chose.
PROCEDURE Show(N : INTEGER)
N ← N + 1
OUTPUT N
ENDPROCEDURE
DECLARE A : INTEGER
A ← 5
CALL Show(A)
OUTPUT A
English
BYREF passes the real variable
BYREFmeans the parameter is the caller's variable. A change is still there afterCALL.- If several parameters in a row use the same mode, the guide lets you write the keyword once.
- Do not pass a parameter to a function by reference. Use
BYREFon a procedure.
Français
BYREF transmet la vraie variable
BYREFsignifie que le paramètre est la variable de l'appelant. Un changement reste présent aprèsCALL.- Si plusieurs paramètres consécutifs utilisent le même mode, le guide vous permet d'écrire le mot-clé une seule fois.
- Ne passez pas de paramètre à une fonction par référence. Utilisez
BYREFsur une procédure.
PROCEDURE Swap(BYREF X : INTEGER, BYREF Y : INTEGER)
DECLARE Temp : INTEGER
Temp ← X
X ← Y
Y ← Temp
ENDPROCEDURE
DECLARE A : INTEGER
DECLARE B : INTEGER
A ← 1
B ← 2
CALL Swap(A, B)
OUTPUT A & "," & B
English
Common mistakes
CALLbefore a procedure. NeverCALLa function.- IGCSE 0478 has no
BYREF. On that paper every parameter is a copy.
Français
Erreurs courantes
CALLdevant une procédure. JamaisCALLsur une fonction.- IGCSE 0478 n'a pas de
BYREF. Sur cette épreuve, chaque paramètre est une copie.
English
Now you try
- Write a procedure that swaps two integers.
Français
À vous maintenant
- Écrivez une procédure qui échange deux entiers.
Write a procedure Greet with no parameters that outputs Hi, then CALL it. · Rédigez une procédure Greet sans paramètres qui affiche Hi, puis CALL celle-ci.
Click Run to see the output here. · Cliquez sur Exécuter pour voir le résultat ici.
Write Swap so that BYREF exchanges A and · et B. Start from A ← 1 and · et B ← 2, and output 2,1. · Écrivez Swap de sorte que BYREF échange A et B. Commencez par A ← 1 et B ← 2, et sortez 2,1.
Click Run to see the output here. · Cliquez sur Exécuter pour voir le résultat ici.