LỜI GỌI CHƢƠNG TRÌNH CON VÀ VẤN ĐỀ TRUYỀN THAM SỐ

Một phần của tài liệu Giáo trình Pascal 7.0 (Trang 29 - 31)

THAM SỐ.

Một chƣơng trình cĩ thể gồm một chƣơng trình chính và nhiều chƣơng trình con. Kèm theo đĩ là các biến, các tham số khai báo ở các vị trí khác nhau trong chƣơng trình. Khả năng từ một vị trí nào đĩ trong chƣơng trình “nhìn thấy” một chƣơng trình con, một biến đã đƣợc khai báo là rất quan trọng. Mặt khác khi làm việc theo nhĩm, các chƣơng trình con, các modune

Trang 29

Khi đĩ khả năng xảy ra các nhĩm khác nhau dùng cùng một tên biến, tên hàm, tên thủ tục cho các mục đích khác nhau là rất lớn. Vì vậy ngồi khả năng “nhìn thấy”, chƣơng trình cần cĩ một cơ chế cấu trúc sao cho cĩ thể “che khuất” các biến khi cần thiết. Phần sau đây, nhằm mục đích đĩ, nghiên cứu các khái niệm liên quan đến “tầm vực “ của biến và của chƣơng trình (con) cũng nhƣ các hiệu ứng lề (side effect) cĩ thể xảy ra.

KHỐI (block): Một khối bắt đầu từ Header (PROGRAM | FUNCTION | PROCEDURE) của khối đĩ cho đến từ khĩa END (END. hoặc END;) của thân chƣơng trình/chƣơng trình con tƣơng ứng.

Minh họa:

Trong minh họa trên ta cĩ các khối ứng với chƣơng trình chính, các khối ứng với các Procedure Proc1, Procedure Proc2, Function func1, trong đĩ Proc1 và Proc2 là hai khối con cùng cấp, func1 là khối con của khối Proc2.

PROGRAM ProgName; VAR a,b: type1; x:type2

BEGIN ……. ……. END.

PROCEDURE Proc1(t,h:type1; Var k:type2); VAR x,y Begin ……. ……. End; PROCEDURE Proc2 Var q BEGIN ……. ……. END;

FUNCTION func1(r:type): type; Var x

Begin ……. ……. End;

TẦM VỰC: Tầm vực của một biến hay một chƣơng trình con là phạm vi mà biến đĩ hoặc chƣơng trình con đĩ đƣợc nhìn thấy trong chƣơng trình (ie: cĩ thể gọi đƣợc biến đĩ hoặc chƣơng trình con đĩ). Tầm vực của một biến hay một chƣơng trình con bắt đầu từ chỗ nĩ đƣợc khai báo trong khối cho đến hết khối mà nĩ đƣợc khai báo trong đĩ, kể cả trong các khối con trừ khi trong khối con cĩ khai báo lại biến hoặc chƣơng trình con đĩ.8

Theo qui định trên, Và áp dụng cho hình minh họa trƣớc ta thấy:

- Các biến a,b là các biến tồn cục cĩ thể gọi đƣợc ở bất cứ nới đâu trong chƣơng trình. - Biến x của chƣơng trình chính cĩ thể gọi đƣợc ở bất cứ đâu trong chƣơng trình trừ

trong PROCEDURE Proc1 và trong FUNCTION func1vì trong procedure/function này cĩ khai báo lại biến x. Trong thân procedure/function đĩ khi gọi x là ta gọi đến biến x cục bộ của nĩ chứ khơng phải biến x tồn cục.

- Các biến t,h,k và y chỉ cĩ thể gọi đƣợc trong Proc1 mà thơi. - Biến x nếu gọi trong Proc1 là biến cục bộ của riêng nĩ mà thơi.

- Biến q cĩ thể gọi đƣợc trong Proc2 và trong func1 mà thơi. Biến r chỉ cĩ thể gọi đƣợc trong Func1 mà thơi. Biến x nếu gọi trong func1 là biến cục bộ của riêng func1, khơng liên quan gì đến biến x khai báo trong chƣơng trình chính và trong Proc1.

- Procedure Proc1 cĩ thể gọi đƣợc trong Proc2, Func1 và trong chƣơng trình chính. Trong Procedure Proc1 dĩ nhiên, theo qui định này, cũng cĩ thể gọi chính nĩ (Đây là trƣờng hợp gọi đệ qui mà ta sẽ nghiên cứu sau)

- Proc2 cĩ thể gọi đƣợc trong chƣơng trình chính, trong Func1 và trong chính nĩ. Proc1 khơng thể gọi đƣợc Proc2.

- Func1 chỉ cĩ thể gọi đƣợc bới Proc2.

- Proc1 và chƣơng trình chính khơng thể gọi đƣợc Func1. - Cĩ một ngoại lệ: Chƣơng trình chính khơng thể gọi chính nĩ.

Một phần của tài liệu Giáo trình Pascal 7.0 (Trang 29 - 31)

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

(42 trang)