Xem mẫu

  1. Lý thuyết ngôn ngữ lập trình Chương 8 CHƯƠNG TRÌNH CON
  2. Nội dung Khái niệm Đặc tả và cài đặt chương trình con Phương pháp truyền tham số cho chương trình con chương trình con chung Đồng thường trình Thực thi chương trình con
  3. Khái niệm Có hai khả năng trừu tượng hoá cơ bản có thể được bao gồm trong một NNLT là: • sự trừu tượng hoá quá trình • sự trừu tượng hoá dữ liệu. Trong thời kỳ đầu của NNLT bậc cao, chỉ có sự trừu tượng hoá quá trình. Trong thập niên 80 của thế kỷ 20, nhiều người đã bắt đầu tin rằng sự trừu tượng hoá dữ liệu là cũng quan trọng như sự trừu tượng hoá quá trình.
  4. Khái niệm Máy tính có thể lập trình được đầu tiên, Babbages’s Analytical Engine, được xây dựng trong những năm 1940, đã có khả năng sử dụng lại các tập hợp của các thẻ đục lỗ mang lệnh trong các vị trí khác nhau của chương trình. Trong một NNLT hiện đại, những thẻ đục lỗ mang lệnh đó giống như là các tập hợp các câu lệnh được viết ra và được gọi là chương trình con. 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.
  5. Khái niệm (tt) Chương trình con có các đặc tính chung như sau: - Tất cả chương trình con đều chỉ có một điểm vào (entry point). - Chương trình gọi bị tạm dừng trong suốt thời gian nó gọi chương trình con thực thi, có nghĩa là chỉ có một chương trình con duy nhất (thuộc chương trình đó) được thực thi trong thời gian đó. - Điều khiển luôn luôn được trả về cho chương trình gọi khi việc thực thi chương trình con kết thúc.
  6. Đặc tả và cài đặt chương trình con Đặ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.
  7. Đặc tả và cài đặt 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 C như sau: < Tên hàm > (< danh sách các đối số>) < Khai báo biến > { < Các câu lệnh > }
  8. Đặc tả và cài đặt chương trình con (tt) Trong đó : + Tên hàm : buộc phải có. + Danh sách các đối số : không bắt buộc. Có hay không tuỳ theo chúng ta định dùng hàm đó làm gì. + Khai báo biến : Nếu Danh sách các đối số mà có thì phần này buộc phải có. Còn nếu không thì ngược lại có thể bỏ qua. + Phần trong { } : là thân hàm. Dấu { } là bắt buộc đối với mọi hàm. + < Khai báo tham biến > : ngay sau { và gọi là biến cục bộ dành riêng cho hàm sử dụng. + đối số luôn luôn truyền theo trị ( không thay đổi giá trị).
  9. Đặc tả và cài đặt chương trình con (tt) Ví dụ : Chương trình C tính giai thừa có sử dụng chương trình con. #include unsigned long giaithua(int n) { unsigned long ketqua = 1; int i; for (i=2; i
  10. Đặc tả và cài đặt chương trình con (tt) void main() { int n; printf("\nNhap vao gia tri N : "); scanf("%d", &n); printf("%d! = %lu", n, giaithua(n)); getch(); }
  11. Đặc tả và cài đặt chương trình con (tt) 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).
  12. Đặc tả và cài đặt chương trình con (tt) Chúng ta xét một thủ tục được viết trong ngôn ngữ lập trình Pascal như sau: Ví dụ: Procedure Docdl; Var i:integer; Begin Readln(fi,n); For i:=1 to n do read(fi,a[i]); end; Trong ví dụ 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.
  13. Đặc tả và cài đặt chương trình con (tt) 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 non-local 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 non-local hoặc thông qua việc thay đổi các tham số vào-ra của nó.
  14. Đặc tả và cài đặt chương trình con (tt) - Chương trình con có thể nhạy cảm với tiền sử (tự sửa đổi), có nghĩa là kết quả 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 cục bộ 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).
  15. Đặc tả và cài đặt chương trình con (tt) 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 đó.
  16. Đặc tả và cài đặt chương trình con (tt) 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.
  17. Đặc tả và cài đặt chương trình con (tt) 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.
  18. Đặc tả và cài đặt chương trình con (tt) Thông thường trong chương trình con còn 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 và các chương trình con đó chỉ dùng cho 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.
  19. Đặc tả và cài đặt chương trình con (tt) 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.
  20. Đặc tả và cài đặt chương trình con (tt) 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ữ.
nguon tai.lieu . vn