Procedures and 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 - วงเล็บเขียนไว้แม้ไม่มี parameters
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 เป็นค่าเริ่มต้น
- Parameter ที่ไม่มี mode จะถูกส่ง 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หมายความว่า parameter คือ ตัวแปรของผู้เรียกใช้. การเปลี่ยนแปลงยังคงอยู่หลังจากCALL- หากหลาย parameters ติดกันใช้ mode เดียวกัน คู่มืออนุญาตให้เขียน keyword ได้เพียงครั้งเดียว
- อย่าส่ง parameter ไปยัง function by reference. ใช้
BYREFกับ procedure เท่านั้น
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หน้า procedure. ห้ามใช้CALLกับ function- IGCSE 0478 ไม่มี
BYREF. ในข้อสอบนั้น ทุก parameter เป็นสำเนาทั้งหมด
English
Now you try
- Write a procedure that swaps two integers.
ไทย
ลองดูเลย
- เขียนกระบวนการสลับจำนวนเต็มสองตัว
Write a procedure Greet with no parameters that outputs Hi, then CALL it. · เขียน procedure Greet ที่ไม่มีพารามิเตอร์ที่เอาต์พุต Hi, แล้ว CALL มัน
Click Run to see the output here. · คลิก Run เพื่อดูผลลัพธ์ที่นี่
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. · คลิก Run เพื่อดูผลลัพธ์ที่นี่