Procedures
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
A PROCEDURE is a named block
- A procedure is a named set of steps you run with
CALL. - Define it once, then call it as many times as you like.
日本語
PROCEDURE(手続)とは名前の付いたブロック
- 手続は、
CALLを使って呼び出せる名前付きのステップのセットです。 - 一度定義すれば、好きなだけ呼び出せます。
PROCEDURE Greet
OUTPUT "Hello!"
ENDPROCEDURE
CALL Greet
CALL Greet // → Hello! (twice)
English
Parameters pass data in
- Put a parameter in brackets to send a value in.
日本語
パラメータはデータを渡す
- パラメータを括弧に入れて値を送り込みます。
PROCEDURE Greet(Name : STRING)
OUTPUT "Hi, ", Name
ENDPROCEDURE
CALL Greet("Ada") // → Hi, Ada
Explore · 探索
CALL runs it, then comes back
CALL jumps into the procedure, runs its steps, then returns to the next line.
English
A parameter is a copy
- A parameter is a copy of the value you passed in.
- Changing it inside the procedure does not change the caller's variable.
- To get an answer back, use a FUNCTION and
RETURNit (next lesson).
日本語
パラメータはコピー
- パラメータは送られた値の コピー です。
- 手続内で変えても、呼び出し元の变量には影響しません。
- 結果を戻すには、関数を使って
RETURNします(次回のレッスン)。
FUNCTION Double(N : INTEGER) RETURNS INTEGER
RETURN N * 2
ENDFUNCTION
DECLARE X : INTEGER
X ← 5
OUTPUT Double(X) // → 10
English
Local and global
- A variable declared in the main program is global. A procedure can read it and change it.
- A variable declared inside the procedure is local. It hides a global of the same name, and it disappears when the call ends.
- A parameter is local too. It is a copy, so changing the parameter does not change the caller's variable.
日本語
ローカルとグローバル
- メインプログラム内で宣言された変数は グローバル です。手続は読み書きできます。
- 手続の 内部 で宣言された変数は ローカル です。同名のグローバル変数を隠し、呼び出しが終わると消えます。
- パラメータもローカルです。コピーなので、パラメータを変えても呼び出し元の变量は変わりません。
DECLARE Total : INTEGER
Total ← 10
PROCEDURE ShowLocal
DECLARE Total : INTEGER
Total ← 3
OUTPUT Total // → 3, the local one
ENDPROCEDURE
CALL ShowLocal
OUTPUT Total // → 10, the global one
English
Watch out
- You must write
CALLbefore a procedure's name — but never before a function's. - A procedure cannot hand a value back; that is what a FUNCTION is for.
- (
BYREFmakes a parameter the real variable rather than a copy. It is in the AS 9618 guide, not in the IGCSE 0478 syllabus for 2026–2028, so do not use it in Paper 2.)
日本語
注意
- 手続の名前の前に
CALLを書かなければなりませんが、関数の前には書かないでください。 - 手続は値を戻せません。それが 関数 の役割です。
- (
BYREFはパラメータをコピーではなく実変数にします。AS 9618 ガイドにはありますが、IGCSE 0478 2026–2028カリキュラムには含まれていないため、Paper 2では使用しないでください。)
English
Common mistakes
PROCEDURE Name(...) ... ENDPROCEDURE; run it withCALL name(...).- A procedure does a job but returns no value.
日本語
よくあるミス
PROCEDURE Name(...) ... ENDPROCEDURE;CALL name(...)で実行します。- 手続はタスクを実行しますが、値は戻しません。
English
Now you try
- Define a procedure, then
CALLit. - Press Check answer to test it.
日本語
あなたも試してみよう
- 手続を定義し、
CALLで呼び出します。 - Check answer を押して確認する。
Define a PROCEDURE Greet that outputs Hello!, then CALL it twice (so Hello! prints on two lines).
Click Run to see the output here. · 実行ボタンをクリックして出力を確認してください。
Define PROCEDURE Greet(Name : STRING) that outputs Hi, then the name, then CALL Greet("Ada"). Output should be Hi, Ada.
Click Run to see the output here. · 実行ボタンをクリックして出力を確認してください。
Define FUNCTION Double(N : INTEGER) RETURNS INTEGER that returns twice N. Set X to 5, then output Double(X) (it should be 10).
Click Run to see the output here. · 実行ボタンをクリックして出力を確認してください。
Total is a global INTEGER starting at 10. Inside PROCEDURE AddFive, add 5 to that same Total. After the call, output Total (it is 15).
Click Run to see the output here. · 実行ボタンをクリックして出力を確認してください。