Procedures and BYREF · Hàm con và BYREF
This page needs a recent browser (with SharedArrayBuffer support). Please update Chrome, Edge, Firefox or Safari to the latest version. · Trang này cần trình duyệt gần đây (hỗ trợ SharedArrayBuffer). Vui lòng cập nhật Chrome, Edge, Firefox hoặc Safari lên phiên bản mới nhất.
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.
Tiếng Việt
CALL thực thi một thủ tục
- Một thủ tục là một khối có tên. Nó làm một việc gì đó và không trả về giá trị nào.
- Định nghĩa nó với
PROCEDURE…ENDPROCEDURE, và gọi nó vớiCALL. - Dấu ngoặc đơn được viết ngay cả khi không có tham số nào.
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.
Tiếng Việt
By value là mặc định
- Một tham số không có chế độ sẽ được truyền by value: thủ tục nhận được bản sao.
- Thay đổi bản sao sẽ không làm thay đổi biến của người gọi.
- Bạn cũng có thể viết
BYVALphía trước tên. Nó mang ý nghĩa giống nhau.
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.
Tiếng Việt
BYREF truyền biến thật
BYREFcó nghĩa là tham số là biến của người gọi. Sự thay đổi vẫn còn nguyên sauCALL.- Nếu nhiều tham số liên tiếp sử dụng cùng một chế độ, hướng dẫn cho phép bạn viết từ khóa chỉ một lần.
- Đừng truyền tham số cho một hàm bằng tham chiếu. Hãy dùng
BYREFtrên một thủ tục.
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.
Tiếng Việt
Lỗi thường gặp
CALLđứng trước một thủ tục. Tuyệt đối khôngCALLmột hàm.- IGCSE 0478 không có
BYREF. Trong đề đó, mọi tham số đều là bản sao.
English
Now you try
- Write a procedure that swaps two integers.
Tiếng Việt
Bây giờ bạn thử
- Viết một thủ tục để hoán đổi hai số nguyên.
Write a procedure Greet with no parameters that outputs Hi, then CALL it. · Viết một hàm con Greet không có tham số nào nhưng xuất ra Hi, sau đó gọi CALL nó.
Click Run to see the output here. · Nhấn Chạy để xem kết quả ở đây.
Write Swap so that BYREF exchanges A and B. Start from A ← 1 and B ← 2, and output 2,1. · Viết Swap sao cho BYREF hoán đổi A và B. Bắt đầu từ A ← 1 và B ← 2, và xuất 2,1.
Click Run to see the output here. · Nhấn Chạy để xem kết quả ở đây.