ÐỊNH NGHĨA CHƯƠNG TRÌNH CON

Một phần của tài liệu Giáo trình ngôn ngữ lập trình (Trang 68 - 70)

Chương trình con là một phép toán trừu tượng được định nghĩa bởi người lập trình.

Chương trình con có các đặc tính như sau:

- Mỗi chương trình con có một điểm vào duy nhất.

Chương trình gọi tạm ngừng việc thực hiện trong quá trình thực hiện chương trình con. - Ðiều khiển luôn được trả về chương trình gọi khi sự thực hiện chương trình con kết

thúc.

Khi nói đến chương trình con, chúng ta quan tâm đến hai khía cạnh: sự định nghĩa chương trình con và lời gọi thực hiện chương trình con.

Ðịnh nghĩa chương trình con là một đoạn chương trình nguồn được viết ra bởi người lập trình.

6.2.1 Ðặc tả chương trình con

Sựđặc tả chương trình con bao gồm: - Tên của chương trình con

- Số lượng các tham số, thứ tự của chúng và kiểu dữ liệu của mỗi một tham số . - Số lượng các kết quả, thứ tự của chúng và kiểu dữ liệu của mỗi một kết quả. - Hoạt động được thực hiện bởi chương trình con.

Chương trình con biểu diễn một hàm toán học, là một ánh xạ từ tập hợp các tham số đến tập hợp các kết quả. Chương trình con trả về một kết quả duy nhất trong tên chương trình con thường được gọi là một hàm. Cú pháp điển hình đặc tả hàm được quy định trong ngôn ngữ lập trình Pascal:

Function Ten_ham(Danh sách các tham s cùng vi kiu d liu tương ng): Kiu kết qu tr v

Ví dụ Function FN(x:real; y:integer) : real

Ðặc tả này xác định hàm FN : REAL x INTEGER -> REAL

Nếu chương trình con trả về nhiều hơn một kết quả hoặc không có kết quả trả về trong tên chương trình con thường được gọi là thủ tục (procedure hoặc subroutine). Cú pháp điển hình đặc tả thủ tục được quy định trong ngôn ngữ lập trình Pascal:

Procedure Ten_thu_tuc(Danh sách các tham scùng vi kiu d liu tương ng)

Ví dụ Procedure SUB(X:real; Y:Integer; Var Z:Real; Var U:boolean);

Trong sự đặc tả này, tham số có tên đứng sau VAR biểu thị một kết quả hoặc một tham số có thể bị thay đổi. Cú pháp của sựđặc tả này trong Ada là:

Procedure SUB(X: IN Real; Y: IN Integer; Z: IN OUT Real; U: OUT Boolean) Thủ tục này khai báo một chương trình con với sự xác định:

SUB : Real x Integer x Real -> Real x Boolean

Các từ IN, OUT và IN OUT phân biệt ba trường hợp sau đây: IN chỉđịnh một tham số không thể bị thay đổi bởi cương trình con, IN OUT chỉđịnh một tham số có thể bị thay đổi và OUT chỉđịnh một kết quả.

Mặc dù chương trình con biểu diễn một hàm toán học nhưng nó cũng có các vấn đề tương tự nhưđối với các phép toán nguyên thuỷ:

- Chương trình con có thể có các tham sốẩn trong dạng biến không địa phương mà nó tham chiếu.

- Chương trình con có thể có kết quả ẩn (hiệu ứng lề) được trả về thông qua sự thay đổi các biến không địa phương hoặc thông qua việc thay đổi các tham số IN-OUT của nó.

- Chương trình con có thể nhạy cảm với tiền sử (tự sửa đổi), vì vậy kết qủa của nó không chỉ phụ thuộc vào tham số được cho tại lần gọi đó mà còn phụ thuộc vào toàn bộ lịch sử các lần gọi trước đó. Nhạy cảm với tiền sử có thể do dữ liệu địa phương vẫn còn giữ lại giữa các lần gọi của chương trình con hoặc thông qua sự thay đổi mã riêng của nó (ít phổ biến hơn).

6.2.2 Cài đặt chương trình con

Các phép toán nguyên thuỷđược cài đặt bằng cách dùng cấu trúc dữ liệu và các phép toán được cung cấp bởi máy tính ảo bên dưới ngôn ngữ lập trình. Chương trình con biểu diễn một phép toán được xây dựng bởi người lập trình và do đó chương trình con được cài đặt bằng cách dùng cấu trúc dữ liệu và các phép toán được cung cấp bởi chính bản thân ngôn ngữ lập trình đó. Sự cài đặt được xác định bởi thân chương trình con, bao gồm cả việc khai báo dữ liệu cục bộ xác định cấu trúc dữ liệu được dùng cho chương trình con và các lệnh xác định hành động sẽ làm khi chương trình con thực hiện.

Sự khai báo và các lệnh thường được bao gói, người sử dụng chương trình con không thể truy xuất được tới dữ liệu cục bộ và các lệnh bên trong chương trình con. Người sử

dụng chỉ có thể gọi chương trình con với một tập hợp các tham số và nhận lại các kết quảđã được tính toán. Cú pháp của Pascal đối với chương trình con là điển hình: FUNCTION FN(x:REAL; y:INTEGER):REAL ; (Mô tả) VAR

m : ARRAY[1..10] OF REAL; (Khai báo các đối

n : INTEGER; tượng dữ liệu cục bộ) BEGIN . (Dãy các lệnh xác định . hành động của chương . trình con) END; (adsbygoogle = window.adsbygoogle || []).push({});

Thông thường trong chương trình con có thể có các chương trình con khác biểu thị các phép toán được định nghĩa bởi người lập trình dùng cho chỉ chương trình con chứa chúng. Những chương trình con "cục bộ" này được bao gói, nghĩa là chúng không thể được gọi tới từ bên ngoài chương trình con chứa chúng.

Kiểm tra kiểu cũng là một vấn đề quan trọng đối với chương trình con. Mỗi lần gọi chương trình con đòi hỏi các tham số có kiểu đúng nhưđã được xác định trong sựđặc tả chương trình con. Kiểu của kết quả được trả về của chương trình con cũng phải được biết đến. Vấn đề kiểm tra kiểu tương tự như đối với các phép toán nguyên thuỷ. Kiểm tra kiểu có thể được thực hiện một cách tĩnh trong quá trình dịch, nếu đã có sự khai báo kiểu cho các tham số và kết quả của mỗi một chương trình con. Mặt khác kiểm tra kiểu có thể là động trong quá trình thực hiện chương trình. Sự chuyển đổi kiểu ẩn các tham sốđể đổi chúng thành các kiểu đúng cũng có thểđược cung cấp một cách tựđộng bởi sự cài đặt ngôn ngữ.

Một phần của tài liệu Giáo trình ngôn ngữ lập trình (Trang 68 - 70)