Module: Chương trình con: thủ tục và hàm - 1


Problem

12/12

Thay đổi đối số

Theory Click to read/hide

Bài toán:viết thủ tục hoán đổi giá trị của hai biến.
Điểm đặc biệt của tác vụ này là chúng ta cần những thay đổi được thực hiện trong quy trình để chương trình gọi được biết đến.

Hãy thử viết thủ tục như thế này:

var x, y: số nguyên; thủ tục Hoán đổi (a, b: số nguyên); // với mô tả như vậy về các tham số thủ tục, var c: số nguyên; begin // sẽ sao chép giá trị của các đối số (x và y) // biến a và b là biến độc lập không liên quan đến x và y c := a; một := b; b := c; kết thúc; bắt đầu x := 1;   y := 2; Hoán đổi (x, y); // giá trị của biến x và y (đối số) được sao chép vào tham số a và b writeln('x = ', x, ', y = ', y); // x=1, y=2 kết thúc. Nếu bạn chạy chương trình này, bạn có thể thấy rằng giá trị của các biến xy không thay đổi. Để các tham số thay đổi giá trị của đối số, bạn phải sử dụng truyền dữ liệu theo tham chiếu. Để làm điều này, sau tên của loại dữ liệu trong tiêu đề của chương trình con, bạn phải đặt từ var  thủ tục Hoán đổi(var a, b: số nguyên);   // bây giờ biến a và b lấy địa chỉ của biến x và y trong bộ nhớ var c: số nguyên;  bắt đầu c := a; một := b; b := c; kết thúc; Cách sử dụng: Nếu bạn truyền đối số bằng tham chiếu, thì chỉ có tên biến (KHÔNG phải số và KHÔNG phải biểu thức số học) có thể ở vị trí này khi gọi thủ tục!< br />
KHÔNG gọi thủ tục như thế này: Hoán đổi(x, 4); Hoán đổi(5+x, y);

Problem

Viết thủ tục hoán đổi giá trị của hai biến.

Tìm và sửa lỗi trong quy trình này