III Chuyển tham số cho chơng trình con

Một phần của tài liệu tin hoc co ban TH khong chuyen (Trang 76 - 78)

Chơng trình con có thể đợc tính toán trực tiếp với các biến toàn cục hoặc tự khai báo biến cục bộ của nó và khi khai báo cục bộ thì phải truyền thâm số cho chơng trình con. Có hai cách truyền tham số: truyền tham biến (variable parameter) và truyền tham trị (value parameter). Sau đây là nội dung cụ thể.

28. III.1. Không cần biến cục bộ

Ta lấy một ví dụ đơn giản là: Vào hai số, tính tổng và in kết quả.

Program TongHaiSo; Uses Crt; Var S,a,b:Real; Procedure VaoHaiSo; Begin

Write(‘a=’); Readln(a); (*a là biến toàn cục*) Write(‘b=’); Readln(b); (*b là biến toàn cục*).

End;

Procedure TinhTong; Begin

S:=a+b; (*S là biến toàn cục*)

End; Begin

VaoHaiSo; TinhTong; Writeln(‘S=’,S);

End.

ở trên ta thấy a, b khai báo ở chơng trình chính (toàn cục ) và 3 biến đó đợc dùng trong cả hai thủ tục. Nghĩa là biến toàn cục có ý nghĩa trong toàn bộ chơng trình. Cách thiết kế theo kiểu đó có nhợc điểm là các chơng trình con phải biết biến khai báo ở chơng trình chính thì mới viết đợc chơng trình con. Điều đó sẽ bất tiện khi chơng trình lớn mà ta phải phân cho nhiều ngời viết (vì phải phụ thuộc biến ở chơng trình chính).

29. III.2. Dùng biến cục bộ và truyền tham số.

Ta viết lại chơng trình trên theo kiểu “ít lệ thuộc” vào chơng trình chính nh sau:

Program TongHaiSo; Uses Crt;

Var

S,a,b:Real; (*S,a,b là biến toàn cục *).

Procedure VaoHaiSo (Var x,y:Real); Begin

Write(‘x=’); Readln(x); (*x là biến toàn cục*). Write(‘y=’); Readln(y); (*y là biến toàn cục*).

End;

Procedure TinhTong (Var Tong:Real; P,Q:Real); Begin

Tong:=P+Q; (*Tong, P, Q là biến cục bộ*).

End; Begin VaoHaiSo(a,b); TinhTong(S,a,b); Writeln(‘S=’,S); End. Giải thích:

Giả sử khi chạy chơng trình gặp thủ tục VaoHaiSo(Var x,y:Real) ta gõ vào hai số 2 và 3 (nghĩa là x=2 và y=3).

• Thủ tục VaoHaiSo (Var x,y:Real), điều này nói lên là x,y là tham biến (hay còn gọi là tham biến biến), vì sao vậy? Bởi vì khi ta gọi: VaoHaiSo(a,b) thì x

chuyển giao giá trị cho a và y cho b. Nghĩa là trớc khi gọi a và b có ía trị 0 sau khi gọi a=2 và b=3 (giá trị do x và y chuyển giao cho) tức là a và b có thay đổi giá trị (chữ Var trớc x và y có ý nghĩa nh vậy). Gỉa sử ta bỏ chữ Var và thủ tục bây giờ là

VaoHaiSo(x,y:Real). Khi chạy chơng trình thì trớc và sau khi goi thì a và b đều có

giá trị 0, mặc dù ta vẫn gõ vào x=2 và y=3.

• Thủ tục TinhTong (Var Tong:Real; P,Q:Real); thì biến Tong cũng là tham biến biến vì trớc khi gọi s=0 và sau khi goi s=5. Còn P,Q là tham bién trị, vì sao vậy? Vì khi ta gọi:TinhTong(S,a,b) thì a và b trớc khi gọi có giá trị a=2, b=3 và sau khi gọi cũng vậy nghĩa là không thay đổi giá trị. Vởy là khi nào thì cần tham biến biến và khi nào thì cần tham biến trị là ở ý nghĩa trên.

Một phần của tài liệu tin hoc co ban TH khong chuyen (Trang 76 - 78)

Tải bản đầy đủ (DOC)

(99 trang)
w