
- Home
- Lớp 1,2,3
- Lớp 1
- Giải Toán Lớp 1
- Tiếng Việt Lớp 1
- Lớp 2
- Giải Toán Lớp 2
- Tiếng Việt Lớp 2
- Văn Mẫu Lớp 2
- Lớp 3
- Giải Toán Lớp 3
- Tiếng Việt Lớp 3
- Văn Mẫu Lớp 3
- Giải Tiếng Anh Lớp 3
- Lớp 4
- Giải Toán Lớp 4
- Tiếng Việt Lớp 4
- Văn Mẫu Lớp 4
- Giải Tiếng Anh Lớp 4
- Lớp 5
- Giải Toán Lớp 5
- Tiếng Việt Lớp 5
- Văn Mẫu Lớp 5
- Giải Tiếng Anh Lớp 5
- Lớp 6
- Soạn Văn 6
- Giải Toán Lớp 6
- Giải Vật Lý 6
- Giải Sinh Học 6
- Giải Tiếng Anh Lớp 6
- Giải Lịch Sử 6
- Giải Địa Lý Lớp 6
- Giải GDCD Lớp 6
- Lớp 7
- Soạn Văn 7
- Giải Bài Tập Toán Lớp 7
- Giải Vật Lý 7
- Giải Sinh Học 7
- Giải Tiếng Anh Lớp 7
- Giải Lịch Sử 7
- Giải Địa Lý Lớp 7
- Giải GDCD Lớp 7
- Lớp 8
- Soạn Văn 8
- Giải Bài Tập Toán 8
- Giải Vật Lý 8
- Giải Bài Tập Hóa 8
- Giải Sinh Học 8
- Giải Tiếng Anh Lớp 8
- Giải Lịch Sử 8
- Giải Địa Lý Lớp 8
- Lớp 9
- Soạn Văn 9
- Giải Bài Tập Toán 9
- Giải Vật Lý 9
- Giải Bài Tập Hóa 9
- Giải Sinh Học 9
- Giải Tiếng Anh Lớp 9
- Giải Lịch Sử 9
- Giải Địa Lý Lớp 9
- Lớp 10
- Soạn Văn 10
- Giải Bài Tập Toán 10
- Giải Vật Lý 10
- Giải Bài Tập Hóa 10
- Giải Sinh Học 10
- Giải Tiếng Anh Lớp 10
- Giải Lịch Sử 10
- Giải Địa Lý Lớp 10
- Lớp 11
- Soạn Văn 11
- Giải Bài Tập Toán 11
- Giải Vật Lý 11
- Giải Bài Tập Hóa 11
- Giải Sinh Học 11
- Giải Tiếng Anh Lớp 11
- Giải Lịch Sử 11
- Giải Địa Lý Lớp 11
- Lớp 12
- Soạn Văn 12
- Giải Bài Tập Toán 12
- Giải Vật Lý 12
- Giải Bài Tập Hóa 12
- Giải Sinh Học 12
- Giải Tiếng Anh Lớp 12
- Giải Lịch Sử 12
- Giải Địa Lý Lớp 12
Trang Chủ ›
Lớp 11›
Giải Bài Tập Tin Học 11›
SGK Tin Học 11›
Bài 17. Chương trình con và phân loại SGK Tin Học 11 - Bài 17. Chương trình con và phân loại
§17. CHƯƠNG TRÌNH CON VÀ PHÂN LOẠI Khái niệm chương trình con Các chương trình giải các bài toán phức tạp thường rất dài, có thể gồm hàng trăm, hàng nghìn lệnh. Khi đọc những chương trình dài, rất khó nhận biết được chương trình thực hiện các cồng việc gì và việc hiệu chỉnh chương trình cũng khó khăn. Vì vậy, vấn đề đặt ra là phải cấu trúc chương trình như thế nào để cho chương trình dễ đọc, dễ hiệu chỉnh, dễ nâng cấp. Mặt khác, việc giải quyết một bài toán phức tạp thường đòi hỏi và nói chung có thể phân thành các bài toán con. Xét bài toán tính tổng bốn luỹ thừa: TLuythua = an + bm + cp+ dq Bài toán trên bao gồm bốn bài toán con tính an, bm, đ, dq, có thể giao cho bốn người, mỗi người thực hiện một bài. Giá trị TLuythua là tổng kết quả của bốn bài toán con đó. Với những bài toán phức tạp hơn, mỗi bài toán con lại có thể được phân chia thành các bài toán con nhỏ hơn. Quá trình phân rã làm "mịn" dần bài toán như vậy được gọi là cách thiết kế từ trên xuống. Tương tự, khi lập trình để giải bài toán trên máy tính có thể phân chia chương trình (gọi là chương trình chính) thành các khối (môđun), mỗi khối bao gồm các lệnh giải một bài toán con nào đó. Mỗi khối lệnh sẽ được xây dựng thành một chương trình con. Sau đó, chương trình chính sẽ được xây dựng từ các chương trình con này. Chương trình con cũng có thể được xây dựng từ các chương trình con khác. Cách lập trình như vậy dựa trên phương pháp lập trình có cấu trúc và chương trình được xây dựng gọi là chương trình có cấu trúc. Chương trình con là một dãy lệnh mô tả một số thao tác nhất định và có thể được thực hiện (được gọi) từ nhiều vị trí trong chương trình. Ví dụ, chương trình nhập dữ liệu từ bàn phím, tính và đưa ra màn hình giá trị TLuythua được mô tả như trên với a, b, c, d có kiểu thực và m, n, p, q có kiểu nguyên có thể viết bằng Pascal như sau: program tinh_tong; var TLuỵthua, Luỵthual, Luythua2, Luỵthua3, Luỵthua4: real; a,b,c,d: real; i, n, m, p, q:integer; begin write('Hay nhap du lieu theo thu tu a, b, c, d, m, n, p, q') ; readln (a, b, c, d, m, n, p, q) ; Luythual:=1.0; for i:=l to n do Luythual:=Luythual*a; Luythua2:=1.0; for i:=l to m do Luythua2:=Luythua2*b; Luythua3:=1.0; for i:=l to p do Luythua3:=Luythua3*c; Luythua4:=1.0; for i:=l to q do Luythua4:=Luythua4*d; TLuythua:= Luythual+Luythua2+Luythua3+Luythua4; writeln('Tong luy thua = TLuythua;8:4); readln end. Trong chương trình trên có bốn đoạn lệnh tương tự nhau, việc lặp lại những đoạn lệnh tương tự nhau làm cho chương trình vừa dài vừa khó theo dõi. Để nâng cao hiệu quả lập trình, các ngôn ngữ lập trình bậc cao đều cung cấp khả năng xây dựng chương trình con dạng tổng quát "đại diện" cho nhiều đoạn lệnh tương tự nhau, chẳng hạn tính luỹ thừa Luythua = X?, trong đó Luythua và X là giá trị kiểu thực còn k thuộc kiểu nguyên: . var j: integer; Tích:=1.0; for j:=l to k do Tich:=Tich*x; Ta có thể đặt tên cho chương trình con này là Luythua và tên các biến chứa dữ liệu vào của nó là X và k. Khi cần tính luỹ thừa của những giá trị cụ thể ta chỉ cần viết tên gọi chương trình con và thay thế (%, k) bằng giá trị cụ thể tương ứng. Chẳng hạn để tính an, bm, cT, dq ta viết Luythua(a, n}, Luythualb, nì), Luythua(c, p), Luythua(d, q). Lợi ích của việc sử dụng chương trình con Tránh được việc phải viết lặp đi lặp lại cùng một dãy lệnh nào đó tương tự như trong ví dụ tính TLuythua ở trên. Ngôn ngữ lập trình cho phép tổ chức dãy lệnh đó thành một chương trình con. Sau đó, mỗi khi chương trình chính cần đến dãy lệnh này chỉ cần gọi thực hiện chương trình con đó. Hỗ trợ việc thực hiện các chương trình lớn: Khi phải viết chương trình lớn hàng nghìn, hàng vạn lệnh, cần huy động nhiều người tham gia, có thể giao cho mỗi người (hoặc mỗi nhóm) viết một chương trình con, rồi sau đó lắp ghép chúng lại thành chương trình chính. Ví dụ, với các bài toán mà việc tổ chức dữ liệu vào và ra không đơn giản thường người ta chia bài toán thành ba bài toán con như nhập, xử lí và xuất dữ liệu, rồi viết các chương trình con tương ứng. Phục vụ cho quá trình trừu tượng hoá: Người lập trình có thể sử dụng các kết quả được thực hiện bởi chương trình con mà không phải quan tâm đến việc các chương trình con đó được cài đặt như thế nào. Trừu tượng hoá là tư tưởng chủ đạo để xây dựng chương trình nói chung và chương trình có cấu trúc nói riêng. Mở rộng khả năng ngôn ngữ: Các ngôn ngữ lập trình thường cung cấp phương thức đóng gói các chương trình con nhằm cung cấp như một câu lệnh mới (tương tự như các lệnh gọi thực hiện các hàm và thủ tục chuẩn) cho người lập trình sử dụng mà không cần biết mã nguồn của nó như thế nào. Hiện nay, ngày càng có nhiều thiết bị kĩ thuật số tiện ích như máy quay phim, máy ảnh, máy ghi âm, các thiết bị âm thanh, màn hình màu độ phân giải cao,... có thể được kết nối với máy tính. Việc thiết kế những chương trình con thực hiện các giao tiếp cơ bản với các thiết bị như vậy là rất cần thiết và giúp mở rộng khả năng ứng dụng của ngôn ngữ. Thuận tiện cho phát triển, nâng cấp chương trình: Do chương trình được tạo thành từ các chương trình con nên chương trình dễ đọc, dễ hiểu, dễ kiểm tra và hiệu chỉnh. Việc nâng cấp, phát triển chương trình con nào đó, thậm chí bổ sung thêm các chương trình con mới nói chung không gây ảnh hưởng đến các chương trình con khác. Phân loại và cấu trúc của chương trình con Phân loại Trong nhiều ngôn ngữ lập trình, chương trình con thường gồm hai loại: Hàm (function) là chương trình con thực hiện một số thao tác nào đó và trả về một giá trị qua tên của nó. Ví dụ hàm toán học hay hàm xử lí xâu: sin (x) nhận giá trị thực X và trả về giá trị sinx, sqrt (x) nhậri giá trị X và trả về giá trị căn bậc hai của X, length (x) nhận xâu X và trả về độ dài của xâu X,... Thủ tục (procedure) là chương trình con thực hiện các thao tác nhất định nhưng không trả về giá trị nào qua tên của nó. Ví dụ các thủ tục vào/ra chuẩn hay thủ tục xử lí xâu: writeln, readln, delete, insert,... Câu trúc chương trình con Chương trình con có cấu trúc tương tự chương trình, nhưng nhất thiết phải có tên và phần đầu dùng để khai báo tên, nếu là hàm phải khai báo kiểu dữ liệu cho giá trị trả về của hàm: [] Phẩn khai báo Phần khai báo có thể có khai báo biến cho dữ liệu vào và ra, các hằng và biến dùng trong chương trình con. Phần thân Phần thân của chương trình con là dãy câu lệnh thực hiện để từ những dữ liệu vào ta nhận được dữ liệu ra hay kết quả mong muốn. Tham số hình thức Các biến được khai báo cho dữ liệu vào/ra được gọi là tham số hình thức của chương trình con. Các biến được khai báo để dùng riêng trong chương trình con được gọi là biến cục bộ. Ví dụ, trong chương trình con Luythuaịx, k) ở phần 1 thì X, k là các tham số hình thức và j là biến cục bộ. Nói chung, chương trình chính và các chương trình con khác không thể sử dụng được các biến cục bộ của một chương trình con, nhưng mọi chương trình con đều sử dụng được các biến của chương trình chính. Do vậy, các biến của chương trình chính được gọi là biến toàn cục. Ví dụ, biến TLuythua khai báo trong chương trình chính ở ví dụ trên là biến toàn cục. Một chương trình con có thể có hoặc không có tham số hình thức, có thể có hoặc không có biến cục bộ. Thực hiện chương trình con Thâm số thực sự Để thực hiện (gọi) một chương trình con, ta cần phải có lệnh gọi nó tương tự lệnh gọi hàm hay thủ tục chuẩn, bao gồm tên chương trình con với tham số (nếu có) là các hằng và biến chứa dữ liệu vào và ra tương ứng với các tham số hình thức đặt trong cặp ngoặc ( và ). Các hằng và biến này được gọi là các tham số thực sự. Ví du sqr(225) [ Tên chương trình con ] [Tham sô' thực sự] Khi thực hiện chương trình con, các tham số hình thức dùng để nhập dữ liệu vào sẽ nhận giá trị của tham số thực sự tương ứng, còn các tham số hình thức dùng để lưu trữ dữ liệu ra sẽ trả giá trị đó cho tham số thực sự tương ứng. Ví dụ, khi thực hiện tính TLuythua cần bốn lần gọi . chương trình con Luythuaịx, k) với các tham số (ữ, /?), (h, /??), (c, /?), (í/, cị) và các tham số này là tham số thực sự tương ứng với tham số hình thức (x, k). Sau khi chương trình con kết thúc, lệnh tiếp theo lệnh gọi chương trình con sẽ được thực hiện.
Các bài học tiếp theo
- Bài 18. Ví dụ về cách viết và sử dụng chương trình con
- Bài tập và thực hành 6
- Bài tập và thực hành 7
- Bài đọc thêm 3. Ai là lập trình viên đầu tiên?
- Bài 19. Thư viện chương trình con chuẩn
- Bài tập và thực hành 8
- Bài đọc thêm 4. Âm thanh
- 1. Một số phép toán thường dùng
- 2. Giá trị phép toán lôgic
- 1. Môi trường Turbo Pascal
Các bài học trước
- Bài 16. Ví dụ làm việc với tệp
- Bài 15. Thao tác với tệp
- Bài 14. Kiểu dữ liệu tệp
- Bài 13. Kiểu bản ghi
- Bài tập và thực hành 5
- Bài 12. Kiểu xâu
- Bài tập và thực hành 4
- Bài tập và thực hành 3
- Bài 11. Kiểu mảng
- Bài tập và thực hành 2
SGK Tin Học 11
- CHƯƠNG I. MỘT SỐ KHÁI NIỆM VỀ LẬP TRÌNH VÀ NGÔN NGỮ LẬP TRÌNH
- Bài 1. Khái niệm lập trình và ngôn ngữ lập trình
- Bài đọc thêm 1. Bạn biết gì về các ngôn ngữ lập trình?
- Bài 2. Các thành phần của ngôn ngữ lập trình
- Bài đọc thêm 2. Ngôn ngữ Pascal
- CHƯƠNG II. CHƯƠNG TRÌNH ĐƠN GIẢN
- Bài 3. Cấu trúc chương trình
- Bài 4. Một số kiểu dữ liệu chuẩn
- Bài 5. Khai báo biến
- Bài 6. Phép toán, biểu thức, câu lệnh gán
- Bài 7. Các thủ tục chuẩn vào/ra đơn giản
- Bài 8. Soạn thảo, dịch, thực hiện và hiệu chỉnh chương trình
- Bài tập và thực hành 1
- CHƯƠNG III. CẤU TRÚC RẼ NHÁNH VÀ LẶP
- Bài 9. Cấu trúc rẽ nhánh
- Bài 10. Cấu trúc lặp
- Bài tập và thực hành 2
- CHƯƠNG IV. KIỂU DỮ LIỆU CÓ CẤU TRÚC
- Bài 11. Kiểu mảng
- Bài tập và thực hành 3
- Bài tập và thực hành 4
- Bài 12. Kiểu xâu
- Bài tập và thực hành 5
- Bài 13. Kiểu bản ghi
- CHƯƠNG V. TỆP VÀ THAO TÁC VỚI TỆP
- Bài 14. Kiểu dữ liệu tệp
- Bài 15. Thao tác với tệp
- Bài 16. Ví dụ làm việc với tệp
- CHƯƠNG VI. CHƯƠNG TRÌNH CON VÀ LẬP TRÌNH CÓ CẤU TRÚC
- Bài 17. Chương trình con và phân loại(Đang xem)
- Bài 18. Ví dụ về cách viết và sử dụng chương trình con
- Bài tập và thực hành 6
- Bài tập và thực hành 7
- Bài đọc thêm 3. Ai là lập trình viên đầu tiên?
- Bài 19. Thư viện chương trình con chuẩn
- Bài tập và thực hành 8
- Bài đọc thêm 4. Âm thanh
- PHỤ LỤC A
- 1. Một số phép toán thường dùng
- 2. Giá trị phép toán lôgic
- PHỤ LỤC B
- 1. Môi trường Turbo Pascal
- 2. Một số tên dành riêng
- 3. Một số kiểu dữ liệu chuẩn
- 4. Một số thủ tục và hàm chuẩn
- 5. Câu lệnh rẽ nhánh và lặp
- 6. Câu lệnh with
- 7. Một số thông báo lỗi
- PHỤ LỤC C
- Câu lệnh rẽ nhánh và lặp trong C++