Truyền tham số dạng tham trị

Một phần của tài liệu Giáo trình lý thuyết ngôn ngữ lập trình (nghề lập trình máy tính) (Trang 74 - 75)

D. Truyền tham số dạng biến toàn cục

E. Truyền tham số dạng tham trị

Chúng ta cần nhắc lại rằng, đối với chương trình con có hai loại tham số. Tham số hình thức là các biến khai báo sau tên chương trình con, tham số thực là các giá trị hay biến truyền cho các tham số hình thức tương ứng khi gọi chương trình con.

Tham số hình thức được chia làm hai dạng: tham trị và tham biến. Trước hết chúng ta sẽ xét đến dạng tham trị.

Các tham số hình thức dạng tham trị được khai báo sau tên chương trình con giữa hai dấu ngoặc theo mẫu sau:

danh_sách_tham_số : kiểu; danh_sách_tham_số : kiểu; ...

Ví dụ:

Function ham (x, y : real; a, b : real) : real; Procedure thutuc (x : real; a, b, c : real);

Khi có lời gọi chương trình con, các tham số thực sẽ được truyền cho các tham số hình thức. Các tham số thực phải là một biểu thức cùng kiểu với tham số hình thức tương ứng. Chẳng hạn, nếu tham số hình thức có kiểu nguyên thì tham số thực phải là một biểu thức kiểu nguyên.

Bây giờ chúng ta viết lại chương trình giải phương trình bậc 2 sử dụng tham số dạng tham trị như sau:

Program Phuong_trinh_bac_2; Var x, y, z : real;

Procedure gptb2(a, b, c : real); Var

x1, x2, delta, r : real; Begin

delta := b*b – 4*a*c; if delta < 0 then

Writeln(”Phương trình vô nghiệm”); else Begin r := sqrt(delta); x1 := (-b-r)/(2*a); x2 := (-b+r)/(2*a); if (delta = 0) then Writeln(‘PT có nghiệm kép: ’, x1:5:2); if (delta > 0) then

Writeln(‘PT có hai nghiệm: x1 = ’, x1:5:2, ‘x2 = ’, x2:5:2); End;

End;

(* Thân chương trình chính *) Begin

Write(‘y = ’); readln(y); Write(‘z = ’); readln(z);

gptb2(x, y, z); (* gọi thủ tục gptb2 *) End.

Cơ chế hoạt động của một chương trình sử dụng tham số dạng tham trị là như sau: khi chương trình gặp một lời gọi tới chương trình con, máy sẽ:

- cấp phát bộ nhớ cho biến cục bộ và các tham số hình thức dạng tham trị của chương trình con, trong ví dụ trên là cấp phát cho các biến x1, x2, delta, r và các tham số hình thức a, b, c,

- truyền giá trị của các tham số thực cho các tham số dạng tham trị tương ứng, các giá trị x, y, z, được truyền vào tương ứng cho a, b, c,

- thực hiện các câu lệnh trong chương trình con,

- kết thúc chương trình con, máy sẽ giải phóng các biến cục bộ và các tham số hình thức, như thế các giá trị đặt trong các biến cục bộ và các tham số hình thức không thể đưa về để sử dụng trong một chương trình khác.

Nhận xét: các tham số hình thức dạng tham trị chỉ được sử dụng trong chương trình con khai báo chúng.

Một phần của tài liệu Giáo trình lý thuyết ngôn ngữ lập trình (nghề lập trình máy tính) (Trang 74 - 75)