Bài 27. Tổ chức chương trình lớn thành các mô đun độc lập
Khi chương trình lớn dần, chia nhỏ thành hàm thôi vẫn chưa đủ. Bài học này bàn về mức tổ chức cao hơn: tách mã nguồn ra thành nhiều mô đun - nhiều tệp .py riêng biệt - sao cho mỗi mô đun tự lo được phần việc của mình và ghép lại vẫn chạy trơn tru.
- Cánh DiềuTin học 11 (Khoa học máy tính) - Chủ đề F(CS) · Bài 10. Thiết kế chương trình từ trên xuống và phương pháp mô đun hoátr. 131
- Cánh DiềuTin học 11 (Khoa học máy tính) - Chủ đề F(CS) · Bài 11. Thực hành thiết kế và lập trình theo mô đuntr. 135
- Cánh DiềuTin học 11 (Khoa học máy tính) - Chủ đề F(CS) · Bài 12. Thực hành thiết kế và lập trình theo mô đun (tiếp theo)tr. 140
- Cánh DiềuTin học 11 (Khoa học máy tính) - Chủ đề F(CS) · Bài 13. Thực hành thiết kế và lập trình theo mô đun (tiếp theo)tr. 142
- Kết nối tri thứcTin học 11 (Khoa học máy tính) - Bài 28. Thiết kế chương trình theo mô đuntr. 127–131
- Kết nối tri thứcTin học 11 (Khoa học máy tính) - Bài 29. Thực hành thiết kế chương trình theo mô đuntr. 132–136
Bắt đầu bằng một hình dung
Cuối học kì, lớp 11A3 nhận mở một gian hàng bánh mì que trong hội chợ ẩm thực của trường. Ba mươi tám bạn, một buổi sáng, mục tiêu bán hết ba trăm chiếc bánh. Ngày đầu bàn kế hoạch, cả lớp cùng nói một lúc: người bàn chuyện mua nguyên liệu, người bàn giá bán, người bàn trang trí gian hàng - cuối buổi chẳng ai biết mình phải làm gì.
Bạn lớp trưởng bèn kẻ một bảng lên bảng đen và chia thành ba tổ. Tổ Hậu cần lo đi chợ, mua đủ nguyên liệu và giao về khu bếp trước bảy giờ sáng. Tổ Bếp nhận nguyên liệu, chế biến, rồi giao ra quầy đúng ba trăm chiếc bánh đã đóng gói. Tổ Bán hàng nhận bánh, bày quầy, thu tiền và ghi sổ. Mỗi tổ chỉ cần biết mình nhận gì từ tổ trước và phải giao gì cho tổ sau, còn bên trong tổ làm thế nào thì tự lo.
Cách chia này lập tức có hiệu quả. Ba tổ làm song song ngay từ tối hôm trước mà không phải chờ nhau. Đến gần ngày hội, tổ Bếp đổi hẳn công thức nước sốt cho hợp khẩu vị hơn, nhưng vì vẫn giao đúng ba trăm chiếc bánh, đóng gói y như đã hẹn, nên tổ Bán hàng không hề bị ảnh hưởng - họ thậm chí không cần biết công thức đã đổi.
Hãy thử tưởng tượng kịch bản ngược lại: không chia tổ, ai rảnh thì làm, ai cũng thò tay vào mọi khâu. Chỉ cần một bạn đổi loại bánh mì đang mua là cả khâu chế biến lẫn khâu tính giá đều rối tung, và không ai biết hỏi ai. Câu chuyện rất đời thường này lại chính là bài toán mà người viết chương trình lớn phải giải mỗi ngày.
Nội dung bài học
- 1) Chia thành hàm và chia thành mô đun khác nhau ở chỗ nào?
- 2) Ba nguyên tắc để chia mô đun cho tốt
- 3) Ví dụ cụ thể: chương trình quản lí điểm của lớp
- 4) Tổ chức theo mô đun thì được lợi gì?
Tóm tắt lý thuyết cần nhớ
- Mô đun là một nhóm hàm cùng phục vụ một mảng công việc, được đặt riêng trong một tệp
.py; chia thành hàm là chia bên trong một tệp, còn chia thành mô đun là tách ra nhiều tệp khác nhau. - Ba nguyên tắc chia mô đun tốt: mỗi mô đun chỉ lo một nhiệm vụ rõ ràng, các mô đun ít phụ thuộc lẫn nhau, và giao diện sử dụng gọn - chỉ cần biết tên hàm, tham số và kết quả trả về là dùng được.
- Chương trình quản lí điểm có thể tách thành mô đun dữ liệu, mô đun thống kê và mô đun hiển thị; chương trình chính chỉ gọi lần lượt các mô đun đó theo đúng trình tự.
- Tổ chức theo mô đun cho phép nhiều người làm song song, sửa bên trong mà không hỏng phần còn lại (miễn giữ nguyên giao diện) và kiểm thử riêng từng mô đun trước khi ghép.
Thuật ngữ tiếng Anh trong bài
| Tiếng Anh | Đọc là | Nghĩa |
|---|---|---|
| module | MÔ-điu | mô đun Một phần chương trình tách riêng làm một việc, để lắp ghép lại - như từng khối LEGO ghép thành mô hình lớn. |
| function | PHẮNG-sần | hàm Một 'cỗ máy nhỏ' lắp sẵn để làm một việc cụ thể. |
Câu hỏi trắc nghiệm có đáp án
Mấy câu mẫu để bạn tự kiểm tra ngay. Trong ứng dụng, bài này có đủ 28 câu, chấm điểm tự động và giải thích từng câu sai.
- Chia thành hàm là chia công việc bên trong một tệp, còn chia thành mô đun là tách mã nguồn ra nhiều tệp .py khác nhau.
- Chia thành hàm chỉ dùng cho chương trình ngắn, còn chia thành mô đun chỉ dùng cho chương trình dài trên 1000 dòng.
- Chia thành hàm làm chương trình chạy nhanh hơn, còn chia thành mô đun làm chương trình chạy chậm đi.
- Chia thành hàm phải dùng câu lệnh import, còn chia thành mô đun thì không cần dùng import.
- Mô đun càng gom nhiều loại công việc khác nhau càng tiện, vì chỉ cần mở đúng một tệp là làm được mọi việc.
- Mô đun chỉ đảm nhận một nhiệm vụ rõ ràng và ít phụ thuộc vào các mô đun khác.
- Mô đun tốt là mô đun có nhiều dòng lệnh nhất trong chương trình, vì nó làm được nhiều việc nhất.
- Mô đun tốt phải gọi được tới tất cả các mô đun còn lại của chương trình để không bỏ sót chức năng nào.
- Mô đun phải có cửa sổ đồ hoạ với nút bấm đẹp mắt để người dùng dễ thao tác, càng ít nút bấm thì càng gọn.
- Mô đun phải được viết trong không quá 50 dòng lệnh để người khác đọc hết nhanh, dài hơn thế là không còn gọn.
- Người dùng mô đun chỉ cần biết tên hàm, tham số cần đưa vào và kết quả trả về là dùng được, không phải đọc mã bên trong.
- Mô đun chỉ được phép chứa đúng một hàm duy nhất để khỏi gây nhầm lẫn khi gọi, nhiều hàm là giao diện đã rối.
- a)Chia chương trình thành các mô đun nghĩa là tách mã nguồn ra nhiều tệp .py khác nhau, mỗi tệp phụ trách một mảng công việc.Đúng
- b)Hai mô đun càng gọi chéo lẫn nhau nhiều thì chương trình càng dễ bảo trì.Sai
- c)Nhờ tách mô đun, nhiều thành viên trong nhóm có thể cùng lúc viết các mô đun khác nhau rồi ghép lại, miễn là đã thống nhất trước giao diện.Đúng
- d)Muốn gọi một hàm của mô đun khác, bắt buộc phải đọc hiểu toàn bộ mã lệnh bên trong mô đun đó.Sai
- (a) Đúng - đây chính là định nghĩa của việc chia mô đun: mỗi mô đun là một nhóm hàm cùng phục vụ một mảng công việc, nằm riêng trong một tệp .py.
- (b) Sai - gọi chéo chằng chịt là dấu hiệu chia mô đun kém; các mô đun phụ thuộc chặt vào nhau khiến sửa một chỗ lại hỏng nhiều chỗ khác, nguyên tắc đúng là các mô đun phải ít phụ thuộc lẫn nhau.
- (c) Đúng - làm song song là một lợi ích lớn của cách tổ chức theo mô đun; điều kiện là cả nhóm thống nhất trước tên hàm, tham số và kết quả trả về.
- (d) Sai - điều làm nên giá trị của mô đun là bạn chỉ cần biết giao diện, tức tên hàm, tham số cần đưa vào và kết quả trả về, là dùng được ngay mà không phải mở tệp ra đọc từng dòng bên trong.
Học trọn bài này trong ứng dụng
Bài giảng đầy đủ, 28 câu luyện tập chấm tự động, thi thử đúng cấu trúc đề tốt nghiệp (24 trắc nghiệm + 4 Đúng/Sai), bài thực hành máy tự chấm và gia sư AI giải thích chỗ sai.
Phần học miễn phí, không cần tạo tài khoản.
Bài liên quan - Lập trình, Thuật toán & CTDL (KHMT)
Cùng mạch kiến thức với bài này, học nối tiếp cho chắc phần lí thuyết.