Bài giảng Lý thuyết ngôn ngữ lập trình - Chương 6: Chương trình con - Trường Cao đẳng CNTT Việt - Hàn
Nội dung Chương 6
Trừu tượng hóa là một phương pháp giúp người lập trình biết cách:
- Tập trung vào những vấn đề, những thuộc tính bản chất
của chương trình
- Bỏ qua các thuộc tính không cần thiết.
- Mục đích của nó là đơn giản hóa quá trình lập trình.
Có hai loại trừu tượng hóa cơ bản trong ngôn ngữ lập trình:
- Trừu tượng hóa quá trình.
- Trừu tượng hóa dữ liệu.
Bài giảngLÝ THUYẾT NGÔN NGỮ LẬP TRÌNHChương 6CHƯƠNG TRÌNH CONNội dung Chương 6 Trừu tượng hóa là một phương pháp giúp người lập trình biết cách: - Tập trung vào những vấn đề, những thuộc tính bản chất của chương trình - Bỏ qua các thuộc tính không cần thiết. - Mục đích của nó là đơn giản hóa quá trình lập trình. Có hai loại trừu tượng hóa cơ bản trong ngôn ngữ lập trình: - Trừu tượng hóa quá trình. - Trừu tượng hóa dữ liệu. Nội dung Chương 6 Trừu tượng hoá dữ liệu là việc tạo ra kiểu dữ liệu trừu tượng: - Kiểu dữ liệu trừu tượng là một tập hợp các đối tượng dữ liệu - Tập hợp các phép toán, thao tác trên các đối tượng dữ liệu đó. Khi cài đặt một kiểu dữ liệu trừu tượng trên một ngôn ngữ lập trình cụ thể, chúng ta phải thực hiện hai nhiệm vụ: - Biểu diễn kiểu dữ liệu trừu tượng bằng một cấu trúc dữ liệu hoặc một kiểu dữ liệu trừu tượng khác đã được cài đặt. - Viết các chương trình con thực hiện các phép toán trên kiểu dữ liệu trừu tượng mà ta thường gọi là cài đặt các phép toán. Ví dụ: các cấu trúc dữ liệu: - Chuỗi ký tự - Ngăn xếp. - Hàng đợiNội dung Chương 6 Trừu tượng hóa quá trình: - Phân chia chương trình thành những chương trình con. - Mỗi chương trình con có tên, đảm nhiệm một tác vụ nào đó. Sự phân chia này sẽ che dấu tất cả các lệnh cài đặt chi tiết trong các chương trình con. Ở cấp chiều chương trình chính, ta chỉ thấy lời gọi các chương trình con và điều này được gọi là sự đóng gói. Ví dụ: như một chương trình quản lý sinh viên được viết bằng trừu tượng hóa : void main() { Nhap(); Sap_Xep (); Xuat(); } Nhap, Sap_Xep, Xuat là các phép toán trừu tượng. Chúng che dấu bên trong rất nhiều lệnh phức tạp mà ở cấp chiều chương trình chính ta không nhìn thấy được 6.1. Khái niệmChươ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.Thông thường khi tạo ra ngôn ngữ lập trình nào đó. Nhà sản xuất tạo sẵn các chương trình con đơn gian. Tạo thuận lợi cho người lập trình.Các chương trình con này thường gọi các hàm có sẵn hay các thủ tục có sẵn.6.1. Khái niệm Các đặc tính chung của chương trình con: 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: là chương trình có chứa lời gọi để cho chương trình con thi hành.Chương trình gọi bị tạm dừng trong thời gian chương trình con thi hành.Khi quá trình thực thi chương trình con kết thúc, quyền điều khiển sẽ trả về chương trình gọi để thực hiện các hoạt động khác nằm sau chương trình con bị gọi này Ví dụ: void main() { Nhap(); Sap_Xep (); Xuat(); } Chương trình gọiLời gọi chương trình con Nhap()Lời gọi chương trình con Sap_Xep()Lời gọi chương trình con Xuat()6.1. Khái niệm Chương trình con trả về một kết quả duy nhất trong lời gọi chương trình con thì thường được gọi là hàm (Function). 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 lời gọi chương trình con thì thường được gọi là thủ tục (procedure hoặc subroutine)6.2. Đặc tả và cài đặt chương trình con6.2.1. Đặc tả chương trình con6.2.2. Cài đặt chương trình con6.2.1. Đặc tả chương trình conSự đặc tả chương trình con bao gồm:Tên của chương trình conSố lượng, thứ tự các tham số và kiểu dữ liệu của mỗi tham sốSố lượng, thứ tự các kết quả trả về và kiểu dữ liệu của mỗi kết quảHoạt động được thực hiện bởi chương trình conTrong C, Chỉ có một loại chương trình con gọi là hàm6.2.1. Đặc tả chương trình conCú pháp điển hình đặc tả được quy định trong NNLT C:[Kiểu dữ liệu] Tên hàm ([Danh sách các tham số]) [Khai báo kiểu dữ liệu cho các tham số]; { [Khai báo kiểu cho các biến cục bộ]; Các câu lệnh; [return [biểu thức];] }Trong đó:Kiểu dữ liệu: nếu hàm phải trả về một giá trị thì trước hết phải khai báo kiểu dữ liệuTên hàm: là tên hợp lệ trong C, buộc phải cóDanh sách các tham số: là các tham số và được gọi là tham số hình thức. Có hoặc không tùy trường hợp cụ thể. Nếu có nhiều tham số thì phải có dấu phẩy (,) để phân cách chúng.6.2.1. Đặc tả chương trình conKhai báo kiểu cho các tham số: nếu hàm có các tham số hình thức và vẫn chưa được khai báo kiểu thì ta cần khai báo kiểu dữ liệu cho các tham số như khai báo với các biến. Nếu các tham số có cùng kiểu dữ liệu thì phải có dấu phẩy (,) để phân cách chúng.Phần trong { }: là thân hàm. Cặp dấu { } luôn phải có. Thân hàm gồm: Khai báo các biến cục bộ: là các biến chỉ có tác động và phạm vi ảnh hưởng đối vời hàm chứa nó.Các câu lệnh: có thể là câu lệnh đơn hoặc câu lệnh có cấu trúcTrong thân hàm có thể sử dụng câu lệnh return([biểu thức]); câu lệnh return có thể được dùng nhiều lần ở các vị trí khác nhau nhưng cũng có thể không được sử dụng lần nào. Giá trị của biểu thức trong câu lệnh return sẽ được gán cho hàm.6.2.1. Đặc tả chương trình conVí dụ 6.1: Đặc tả chương trình con là hàm được viết bằng C/C++: float giaithua(int n) { int i; float KQ; for (KQ=1, i=1; i b) max = a; else max = b; if (max ([Danh sách các tham số]);Quá trình thực hiện:Nếu có tham số, trước tiên tham số sẽ được gán giá trị thực tương ứngThực thi các câu lệnh trong thân chương trình con từ lệnh đầu tiên đến lệnh cuối cùngThoát khỏi chương trình con và trở về chương trình gọi để tiếp tục thực hiện các lệnh tiếp theo của chương trình gọi.6.6.2. Thực thi chương trình con «đơn giản» Chương trình con đơn giản là chương trình không thể lồng nhau và tất cả các biến cục bộ đều là tĩnh. Cú pháp của việc gọi đến một chương trình con đơn giản đòi hỏi có các hoạt động sau: - Lưu trạng thái thực thi của chương trình gọi - Thực hiện việc truyền tham số - Truyền địa chỉ trả về cho chương trình được gọi - Chuyển quyền điều khiển cho chương trình được gọi 6.6.2. Thực thi chương trình con «đơn giản» Cú pháp của việc trả về từ một chương trình con đơn giản đòi hỏi có các hoạt động sau:- Nếu truyền tham số bằng giá trị - kết quả hoặc các tham số Out mode thì các giá trị hiện hành của các tham số này được chuyển đến cho các tham số thực tế tương ứng- Nếu chương trình con là một hàm thì giá trị trả về của một hàm được chuyển đến một vị trí mà chương trình gọi có thể nhận được.- Trạng thái thực thi của chương trình gọi được khôi phục- Quyền điều khiển được trả về lại cho chương trình gọi6.6.2. Thực thi chương trình con «đơn giản» Các hoạt động gọi và trả về đòi hỏi lưu trữ các yếu tố sau:Thông tin trạng thái của chương trình gọiCác tham sốĐịa chỉ trả vềGiá trị của hàm nếu chương trình con là hàmĐịnh nghĩa và kích hoạt chương trình con Người lập trình viết một định nghĩa chương trình con trong chương trình.Thông qua việc thực hiện chương trình, nếu chương trình con được gọi thì một kích hoạt chương trình con được tạo ra.Khi kết thúc việc thực hiện chương trình con thì kích hoạt bị phá hủy.Nếu có lần gọi khác thì một kích hoạt mới sẽ được tạo raNhư vậy, từ một định nghĩa chương trình con có thể có nhiều kích hoạt được tạo ra trong quá trình thực hiện chương trìnhSự định nghĩa dùng làm khuôn mẫu cho việc tạo kích hoạt6.6.2. Thực thi chương trình con «đơn giản» Một chương trình con đơn giản gồm 2 phần riêng biệt:Mã thực tế của chương trình con, nó không thay đổi trong quá trình thực thiCác biến cục bộ và dữ liệu được liệt kê trước đó; các yếu tố này có thể thay đổi khi chương trình con thực thiĐịnh dạng của phần không phải là mã thực tế của một chương trình con được gọi là bản ghi kích hoạtMột thể hiện bản ghi kích hoạt là ví dụ cụ thể của một bản ghi kích hoạt (tập dữ liệu cho sự kích hoạt một chương trình con cụ thể)Một bản ghi kích hoạt cho chương trình con đơn giảnMã và các bản ghi kích hoạt của một chương trình chứa các chương trình con đơn giản. 6.6.2. Thực thi chương trình con với ngăn xếp động các biến cục bộ Bản ghi kích hoạt phức tạp hơn Trình biên dịch phải sinh ra mã là nguyên nhân dẫn đến sự không rõ ràng việc cấp phát và giải phóng các biến cục bộĐệ quy làm tăng thêm khả năng của nhiều kích hoạt đồng thời của một chương trình con Một bản ghi kích hoạt tiêu biểu cho một ngôn ngữ với ngăn xếp động các biến cục bộ6.6.2. Thực thi chương trình con với ngăn xếp động các biến cục bộ Định dạng của bản ghi kích hoạt là tĩnh nhưng kích thước có thể động. Mối liên kết động trỏ vào phần đầu của thể hiện bản ghi kích hoạt của chương trình gọi Một thể hiện bản ghi kích hoạt được tạo ra một cách động khi chương trình con được gọi.Ví dụ: một hàm trong Cvoid sub(float total, int part){ int list[4]; float sum; }[4][3][2][1][0]Một ví dụ không đệ quyvoid A(int x) { int y; ... C(y); ...}void B(float r) { int s, t; ... A(s); ...}void C(int q) { ...}void main() { float p; ... B(p); ...}main calls BB chfđflkgralls AA calls CNgăn xếp chứa các thể hiện bản ghi kích hoạt
File đính kèm:
- Chuong trinh con.ppt