Procedures and BYREF · 手続とBYREF(参照渡し)
This page needs a recent browser (with SharedArrayBuffer support). Please update Chrome, Edge, Firefox or Safari to the latest version. · このページには最新のブラウザ(SharedArrayBuffer対応)が必要です。Chrome、Edge、Firefox、Safariを最新バージョンに更新してください。
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.
日本語
CALL は手続きを実行
- 手続きは名前の付いたブロックです。タスクを遂行し、値を返しません。
PROCEDURE…ENDPROCEDUREで定義し、CALLで実行します。- 引数がなくても括弧を書きます。
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.
日本語
値渡しはデフォルト
- モードなしの引数は値渡しで渡され、手続きにはコピーが受け取られます。
- コピーを変更しても、呼び出し元の変数には影響しません。
- 名前の前に
BYVALを書くこともできます。同じ意味です。
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.
日本語
BYREF は本物の変数を渡す
BYREFは引数が呼び出し元の変数そのものであることを意味します。CALL後にも変更は反映されます。- 複数の引数が連続して同じモードを使用する場合、ガイドはキーワードを一度だけ記述することを許容します。
- 関数に引数を参照渡しで渡さないでください。手続きには
BYREFを使用します。
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.
日本語
よくあるミス
- 手続きの前に
CALL。関数に対して NEVERCALL。 - IGCSE 0478 に
BYREFはありません。その用紙ではすべての引数がコピーです。
English
Now you try
- Write a procedure that swaps two integers.
日本語
あなたも試してみよう
- 2つの整数を交換する手続きを書きなさい。
Write a procedure Greet with no parameters that outputs Hi, then CALL it. · パラメータなしの手続Greetを記述し、Hiを出力してからCALLで呼び出します。
Click Run to see the output here. · 実行ボタンをクリックして出力を確認してください。
Write Swap so that BYREF exchanges A and B. Start from A ← 1 and B ← 2, and output 2,1. · Swapを記述し、BYREFがAとBを入れ替えるようにします。A ← 1とB ← 2から始め、2,1を出力します。
Click Run to see the output here. · 実行ボタンをクリックして出力を確認してください。