Ba việc, ba ranh giới rõ
Giả sử tệp `Data.inp` có mỗi dòng là `tên mặt hàng, doanh số`. Cần ghi vào `Data.out` ba mặt hàng doanh số cao nhất và ba mặt hàng thấp nhất. Có thể chia chương trình thành ba **mô-đun theo công việc**: `doc_du_lieu` nhận tên tệp và trả hai dãy tên/doanh số; `sap_cap` nhận hai dãy đó rồi sắp theo doanh số, giữ đúng cặp tên–số; `ghi_bao_cao` nhận hai dãy đã sắp và tên tệp đích để ghi kết quả. Chương trình chính gọi ba hàm theo thứ tự này. Đầu ra của việc trước là đầu vào của việc sau, nên các mô-đun có liên hệ rõ dù mỗi việc có thể được viết và kiểm riêng.
Mô-đun là phần có nhiệm vụ xác định
Trong bài học, “mô-đun” chỉ một phần chương trình thực hiện công việc tương đối độc lập, thường được viết bằng hàm. Không nhất thiết mỗi hàm phải ở một tệp `.py` khác nhau. Ví dụ với dòng `"Táo, 1200"`, hàm đọc đưa `"Táo"` và `1200.0` vào cùng vị trí của hai dãy. Hàm sắp phải chuyển **cả tên lẫn doanh số** nếu đổi thứ tự; chỉ sắp một dãy sẽ làm báo cáo gán sai tiền cho mặt hàng. Việc chia mô-đun giúp sửa cách xuất báo cáo mà không phải viết lại cách đọc tệp hoặc cách sắp.
Bài luyện
Trong chương trình của bài, việc nào nên là một mô-đun riêng?
Đây là một công việc có đầu vào và đầu ra rõ.
Chỉ đổi tên biến không tạo chức năng.
Dòng trống không là chức năng chương trình.
Màu trình soạn thảo không thuộc bài toán dữ liệu.
Lời giải
Đọc tệp là một nhiệm vụ độc lập: nhận tên tệp, trả dữ liệu để các phần khác dùng.
Bài luyện
Thứ tự ghép ba mô-đun để tạo báo cáo là gì?
Chưa có dữ liệu để ghi.
Phải đọc trước khi sắp.
Đọc tạo dữ liệu; sắp chuẩn bị thứ tự; ghi kết quả.
Ghi trước sẽ dùng dữ liệu chưa sắp.
Lời giải
Chương trình cần đọc các mặt hàng, sắp theo doanh số rồi mới chọn và ghi các hàng cao/thấp.
Bài luyện
Khi đổi chỗ hai doanh số trong hai dãy song song, phải làm thêm điều gì?
Giữ nguyên tên sẽ ghép sai tên với số.
Tên và doanh số phải cùng di chuyển.
Không được làm mất mặt hàng.
Tên tệp không sửa cặp dữ liệu.
Lời giải
Nếu doanh số ở vị trí i và j đổi chỗ, tên tương ứng cũng phải đổi để mỗi cặp mặt hàng–doanh số còn đúng.
Đang học