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를 실행함
- procedure는 이름이 붙은 블록입니다. 작업을 수행하고 값을 반환하지 않습니다.
PROCEDURE…ENDPROCEDURE로 정의하고CALL로 실행합니다.- 매개변수가 없어도 parentheses를 적어야 합니다.
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.
한국어
by value가 기본값임
- 모드가 없는 매개변수는 by value로 전달되며, procedure는 복사본을 얻습니다.
- 복사본을 변경해도 호출자의 변수는 변하지 않습니다.
- 이름 앞에
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이후에도 변경사항이 유지됩니다.- 여러 매개변수가 연속해서 같은 모드를 사용할 경우, 가이드에서는 키워드를 한 번만 적도록 허용합니다.
- function에 매개변수를 reference로 전달하지 마십시오. procedure에서는
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.
한국어
흔한 실수
- procedure 앞에는
CALL을 쓰십시오. function에는 절대CALL을 쓰지 마십시오. - IGCSE 0478에는
BYREF이 없습니다. 해당 시험에서는 모든 매개변수가 복사본입니다.
English
Now you try
- Write a procedure that swaps two integers.
한국어
이제 직접 해보기
- 두 정수 스왑하는 procedure를 작성하십시오.
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. · 출력을 보려면 '실행'을 클릭하세요.