- Truyền bằng tên
6.3.2. Truyền bằng giá trị-kết quả
6.3.2. Truyền bằng giá trị - kết quả
• Truyền bằng giá trị - kết quả thực thi cho các tham số In-out mode, mà trong đó các tham số thực được sao chép lại.
• Đặc điểm của phương pháp truyền giá trị - kết quả:
- Có sự kết hợp của truyền bằng giá trị và truyền bằng kết quả.
- Giá trị của tham số thực được dùng như giá trị khởi đầu của tham số hình thức tương ứng, và các tham số này sau đó hoạt động như một biến cục bộ. - Khi truyền bằng giá trị - kết quả các tham số hình thức phải có bộ nhớ cục bộ
kết hợp với chương trình con được gọi
- Tại thời điểm dùng chương trình con, tham số hình thức được trả về lại cho tham số thực
6.3.2. Truyền bằng giá trị - kết quả
6.3.2. Truyền bằng giá trị - kết quả
• Phương pháp thực hiện:
- Tại thời điểm gọi: giá trị của tham số thực được sao chép vào trong ô nhớ của tham số hình thức.
- Trong quá trình thực hiện: mọi thao tác trên tham số hình thức là sự thao tác trên ô nhớ riêng của nó, không ảnh hưởng đến tham số thực tế.
- Khi kết thúc: giá trị cuối cùng của tham số hình thức được sao chép vào ô nhớ của tham số thực.
• Phương pháp này nhiều khi còn được gọi là truyền bằng cách sao chép.
• Hạn chế của cả 3 phương pháp này là việc đòi hỏi nhiều ô nhớ cho các tham số và thời gian sao chép các giá trị
6.3.1. Truyền bằng giá trị - kết quả
6.3.1. Truyền bằng giá trị - kết quả
Ví dụ 6.4: Xét chương trình đổi 2 số nguyên bằng ngôn ngữ giả tựa Pascal như sau:
var a, b: integer;
procedure hoanvi_2so(x: integer; y: integer);
var tg: integer; begin tg: = x; x: = y; y: = tg; a:=x; b:=y; …. end; begin a:= 50; b:= 100; hoanvi_2so(a,b); … end. 50 100 a b 50 100 x y 50 100 x y 100 50 x y Trước khi gọi
Tại thời điểm gọi
Trong thời điểm
CTC thực hiện
100 50