Trắc nghiệm Tin học 11 Kết nối tri thức Bài 29: Thực hành thiết kế chương trình theo mô đun - Đề 06
Trắc nghiệm Tin học 11 Kết nối tri thức Bài 29: Thực hành thiết kế chương trình theo mô đun - Đề 06 được xây dựng với nhiều câu hỏi chất lượng, sát với nội dung chương trình học, giúp bạn dễ dàng ôn tập và kiểm tra kiến thức hiệu quả. Hãy cùng bắt đầu làm bài tập trắc nghiệm ngay để nâng cao hiểu biết và chuẩn bị tốt cho kỳ thi sắp tới!
Câu 1: Một lập trình viên đang phát triển một chương trình quản lý thư viện. Chương trình cần các chức năng sau: Thêm sách mới, Tìm kiếm sách theo tiêu đề, Xóa sách, Hiển thị danh sách sách. Theo nguyên tắc thiết kế mô đun, chức năng nào sau đây ít phù hợp nhất để trở thành một mô đun (hàm hoặc thủ tục) độc lập?
- A. Thêm sách mới
- B. Tìm kiếm sách theo tiêu đề
- C. Xóa sách
- D. Một đoạn mã nhỏ kiểm tra xem tên sách có rỗng hay không trước khi thêm
Câu 2: Giả sử bạn có một chương trình xử lý dữ liệu học sinh, bao gồm các bước: Đọc danh sách học sinh từ tệp, Tính điểm trung bình cho từng học sinh, Xếp loại học lực, Ghi kết quả ra tệp. Nếu bạn chia chương trình này thành các mô đun, mô đun "Tính điểm trung bình" nên nhận dữ liệu đầu vào từ mô đun nào?
- A. Đọc danh sách học sinh từ tệp
- B. Xếp loại học lực
- C. Ghi kết quả ra tệp
- D. Một mô đun riêng để nhập dữ liệu thủ công
Câu 3: Lợi ích chính của việc thiết kế chương trình theo mô đun là gì?
- A. Giúp chương trình chạy nhanh hơn đáng kể.
- B. Chỉ cần viết mã một lần cho toàn bộ chương trình.
- C. Tăng khả năng tái sử dụng mã nguồn và dễ dàng bảo trì.
- D. Luôn yêu cầu ít bộ nhớ hơn.
Câu 4: Trong lập trình, một "hàm" (function) hoặc "thủ tục" (procedure) thường được coi là một loại mô đun. Đặc điểm nào sau đây không phải là đặc điểm của một mô đun tốt?
- A. Thực hiện một nhiệm vụ cụ thể, duy nhất.
- B. Sử dụng rộng rãi các biến toàn cục để chia sẻ dữ liệu.
- C. Có giao diện rõ ràng (tham số đầu vào và giá trị trả về).
- D. Có thể được kiểm thử độc lập (hoặc tương đối độc lập).
Câu 5: Xét một chương trình tính tiền điện cho các hộ gia đình. Các bước bao gồm: Đọc chỉ số điện cũ/mới, Tính lượng điện tiêu thụ, Áp dụng biểu giá (có bậc), Tính thuế VAT, In hóa đơn. Nếu biểu giá điện thay đổi, bạn nên sửa đổi mô đun nào để cập nhật chương trình một cách hiệu quả nhất?
- A. Đọc chỉ số điện
- B. Áp dụng biểu giá (có bậc)
- C. Tính thuế VAT
- D. In hóa đơn
Câu 6: Khi thiết kế chương trình theo mô đun, khái niệm "đóng gói" (encapsulation) liên quan đến việc gì?
- A. Che giấu chi tiết cài đặt bên trong mô đun, chỉ để lộ giao diện sử dụng.
- B. Gộp tất cả mã nguồn vào một tệp duy nhất.
- C. Sử dụng các biến toàn cục để dữ liệu có thể truy cập từ mọi nơi.
- D. Chia chương trình thành các dòng mã ngắn.
Câu 7: Một chương trình xử lý văn bản cần chức năng đếm số từ, đếm số dòng, và đếm số ký tự. Bạn quyết định tạo ba hàm riêng biệt cho ba chức năng này. Đây là ví dụ về nguyên tắc thiết kế mô đun nào?
- A. Tái sử dụng mã
- B. Kiểm thử độc lập
- C. Đóng gói
- D. Phân rã (decomposition)
Câu 8: Mô đun A gọi mô đun B để thực hiện một nhiệm vụ cụ thể. Điều này có nghĩa là mô đun A đang làm gì?
- A. Đóng gói mô đun B.
- B. Sử dụng chức năng của mô đun B.
- C. Kiểm thử mô đun B.
- D. Bảo trì mô đun B.
Câu 9: Khi các mô đun trong chương trình phụ thuộc vào nhau quá nhiều (ví dụ: mô đun này truy cập trực tiếp vào dữ liệu nội bộ của mô đun khác), điều này được gọi là gì và gây ra vấn đề gì?
- A. Đóng gói tốt, giúp chương trình chạy nhanh hơn.
- B. Phân rã tốt, giúp mã dễ đọc hơn.
- C. Ghép nối chặt (tight coupling), làm giảm tính độc lập và khó bảo trì.
- D. Tái sử dụng mã, giúp tiết kiệm thời gian lập trình.
Câu 10: Giả sử bạn cần viết một chương trình quản lý điểm thi của học sinh. Chương trình cần đọc điểm từ tệp, tính điểm trung bình, tìm học sinh có điểm cao nhất, và in báo cáo. Mô đun nào sau đây có khả năng cần dữ liệu đầu vào từ nhiều mô đun khác?
- A. Đọc điểm từ tệp
- B. Tính điểm trung bình
- C. Tìm học sinh có điểm cao nhất
- D. In báo cáo
Câu 11: Trong ví dụ về tính điểm vận động viên Sea Games được đề cập trong sách, mô đun `diem_gk()` có nhiệm vụ tính điểm tổng hợp cho một vận động viên. Việc thiết kế một hàm riêng cho nhiệm vụ này thể hiện rõ lợi ích nào của lập trình mô đun?
- A. Tập trung vào một nhiệm vụ cụ thể và dễ dàng thay đổi công thức tính điểm khi cần.
- B. Giúp mô đun `nhapDL()` đọc dữ liệu nhanh hơn.
- C. Tự động ghi kết quả ra tệp mà không cần mô đun `ghiDL()`.
- D. Giảm số lượng dòng mã trong toàn bộ chương trình.
Câu 12: Khi một chương trình được chia thành các mô đun, việc kiểm thử từng mô đun riêng lẻ trước khi ghép nối chúng lại được gọi là gì?
- A. Kiểm thử tích hợp (Integration Testing)
- B. Kiểm thử đơn vị (Unit Testing)
- C. Kiểm thử hệ thống (System Testing)
- D. Kiểm thử chấp nhận (Acceptance Testing)
Câu 13: Bạn đang làm việc nhóm để phát triển một phần mềm. Mỗi thành viên được giao viết một vài mô đun độc lập. Lợi ích chính của việc này trong làm việc nhóm là gì?
- A. Giảm thiểu hoàn toàn khả năng xảy ra lỗi.
- B. Cho phép mỗi người làm việc trên toàn bộ mã nguồn cùng lúc.
- C. Cho phép các thành viên làm việc song song trên các phần khác nhau của chương trình.
- D. Loại bỏ nhu cầu giao tiếp giữa các thành viên.
Câu 14: Trong thiết kế mô đun, "giao diện" (interface) của một mô đun là gì?
- A. Cách các mô đun khác tương tác với nó (ví dụ: tên hàm, tham số, giá trị trả về).
- B. Toàn bộ mã nguồn bên trong mô đun.
- C. Giao diện người dùng của chương trình.
- D. Tên tệp chứa mã nguồn của mô đun.
Câu 15: Xét một chương trình xử lý ảnh. Các chức năng có thể bao gồm: Đọc ảnh từ tệp, Chuyển ảnh sang ảnh xám, Áp dụng bộ lọc làm mờ, Lưu ảnh ra tệp. Mô đun "Áp dụng bộ lọc làm mờ" có thể cần dữ liệu đầu vào là gì?
- A. Tên tệp ảnh đầu ra.
- B. Dữ liệu ảnh đã được đọc hoặc xử lý từ các mô đun trước đó.
- C. Đường dẫn cài đặt phần mềm.
- D. Số lượng ảnh cần xử lý.
Câu 16: Khi phân rã một bài toán lớn thành các mô đun nhỏ hơn, mục tiêu chính là làm cho mỗi mô đun có tính "độc lập" (cohesion) cao. Tính độc lập cao của một mô đun nghĩa là gì?
- A. Mô đun có thể chạy mà không cần bất kỳ mô đun nào khác.
- B. Mô đun có thể được sử dụng lại trong nhiều chương trình khác nhau.
- C. Mô đun không tương tác với bất kỳ dữ liệu toàn cục nào.
- D. Các phần tử bên trong mô đun có mối quan hệ chặt chẽ và cùng phục vụ một mục đích duy nhất.
Câu 17: Bạn viết một hàm tính diện tích hình tròn. Hàm này nhận bán kính làm tham số và trả về diện tích. Đây là ví dụ về một mô đun có tính "đóng gói" tốt vì:
- A. Nó có thể được gọi từ bất kỳ đâu trong chương trình.
- B. Chi tiết công thức tính diện tích được che giấu bên trong hàm, chỉ cần biết cách gọi hàm.
- C. Nó không cần bất kỳ tham số nào.
- D. Nó có thể tính diện tích của nhiều hình khác nhau.
Câu 18: Một chương trình được thiết kế theo mô đun gặp lỗi khi chạy. Lợi ích của thiết kế mô đun trong quá trình gỡ lỗi (debugging) là gì?
- A. Lập trình viên không cần gỡ lỗi.
- B. Lỗi chỉ xảy ra trong mô đun chính.
- C. Có thể khoanh vùng lỗi dễ dàng hơn vào một hoặc một vài mô đun cụ thể.
- D. Mã nguồn trở nên khó đọc hơn, do đó khó tìm thấy lỗi.
Câu 19: Giả sử bạn có một chương trình tính toán tài chính. Có một mô đun xử lý lãi suất, một mô đun xử lý thuế, và một mô đun tổng hợp kết quả. Nếu quy định về thuế thay đổi, bạn chỉ cần sửa mô đun xử lý thuế mà không ảnh hưởng đến các mô đun khác (miễn là giao diện không đổi). Đây là ví dụ về lợi ích nào của thiết kế mô đun?
- A. Dễ dàng bảo trì và cập nhật.
- B. Chạy nhanh hơn.
- C. Sử dụng ít bộ nhớ hơn.
- D. Dễ dàng viết mã ban đầu.
Câu 20: Khi thiết kế chương trình theo mô đun, việc xác định rõ chức năng và giao diện của từng mô đun trước khi viết mã chi tiết là một bước quan trọng. Bước này thuộc giai đoạn nào trong quy trình phát triển phần mềm?
- A. Cài đặt (Coding)
- B. Thiết kế (Design)
- C. Kiểm thử (Testing)
- D. Bảo trì (Maintenance)
Câu 21: Một chương trình cần xử lý danh sách các số nguyên: nhập danh sách, sắp xếp danh sách, và in danh sách. Bạn quyết định tạo ba hàm: `nhap_danh_sach()`, `sap_xep_danh_sach(ds)`, và `in_danh_sach(ds)`. Hàm `sap_xep_danh_sach` nhận danh sách `ds` làm tham số. Điều này thể hiện nguyên tắc truyền dữ liệu giữa các mô đun như thế nào?
- A. Truyền dữ liệu qua tham số hàm.
- B. Sử dụng biến toàn cục.
- C. Đọc trực tiếp từ tệp trong hàm.
- D. Sử dụng giá trị trả về của hàm.
Câu 22: Trong ví dụ Sea Games, giả sử sau khi tính điểm tổng hợp, bạn cần bổ sung chức năng tìm vận động viên có điểm cao nhất. Chức năng này nên được đặt trong mô đun nào hoặc tạo thành một mô đun mới?
- A. Trong mô đun `nhapDL()`.
- B. Trong mô đun `ghiDL()`.
- C. Là một hàm riêng biệt (mô đun mới) hoặc tích hợp vào mô đun xử lý chính (`Xuly()`).
- D. Trong mô đun `diem_gk()`.
Câu 23: Mô đun nào trong một chương trình thường đóng vai trò là điểm bắt đầu thực thi và điều phối việc gọi các mô đun khác?
- A. Mô đun nhập dữ liệu.
- B. Mô đun xử lý dữ liệu phức tạp nhất.
- C. Mô đun ghi kết quả.
- D. Mô đun chính (main module) hoặc hàm chính (main function).
Câu 24: Khi một mô đun được thiết kế tốt, nó có thể được coi như một "hộp đen" (black box). Điều này có nghĩa là gì?
- A. Mã nguồn của mô đun được mã hóa.
- B. Người sử dụng mô đun chỉ cần biết chức năng và cách sử dụng (giao diện) mà không cần biết chi tiết cài đặt bên trong.
- C. Mô đun không hiển thị bất kỳ thông báo nào ra màn hình.
- D. Mô đun chỉ có thể được sử dụng trong các chương trình tối màu (dark mode).
Câu 25: Bạn đang viết một chương trình tính toán khoa học. Bạn cần sử dụng hàm căn bậc hai. Thay vì tự viết lại, bạn sử dụng hàm `sqrt()` có sẵn trong thư viện toán học của ngôn ngữ lập trình. Việc này thể hiện lợi ích nào của thiết kế mô đun?
- A. Tái sử dụng mã nguồn.
- B. Giảm độ phức tạp của thuật toán.
- C. Chỉ hoạt động với các số nguyên.
- D. Tăng kích thước tệp chương trình.
Câu 26: Một chương trình có cấu trúc như sau: Hàm A gọi hàm B, hàm B gọi hàm C. Nếu hàm C gặp lỗi, việc gỡ lỗi sẽ dễ dàng hơn nếu các hàm A, B, C được thiết kế như các mô đun độc lập vì:
- A. Lỗi sẽ tự động được sửa.
- B. Chương trình sẽ dừng lại ngay lập tức.
- C. Chỉ cần kiểm tra hàm A.
- D. Có thể cô lập và kiểm tra riêng từng hàm (B, C) để xác định nguồn gốc lỗi.
Câu 27: Việc sử dụng biến toàn cục để chia sẻ dữ liệu giữa các mô đun khác nhau trong một chương trình lớn thường bị coi là một thực hành không tốt trong thiết kế mô đun vì:
- A. Làm cho chương trình chạy chậm hơn.
- B. Làm tăng sự phụ thuộc giữa các mô đun (ghép nối chặt) và khó theo dõi sự thay đổi dữ liệu.
- C. Giảm khả năng sử dụng lại của mô đun.
- D. Yêu cầu nhiều bộ nhớ hơn.
Câu 28: Khi nào thì việc chia một chức năng rất nhỏ thành một mô đun riêng (ví dụ: một hàm chỉ thực hiện một phép tính đơn giản) có thể không mang lại nhiều lợi ích, thậm chí làm tăng độ phức tạp?
- A. Khi chức năng đó quá đơn giản, ngắn gọn và không có khả năng tái sử dụng.
- B. Khi chức năng đó rất phức tạp và cần nhiều dòng mã.
- C. Khi chức năng đó cần tương tác với nhiều phần khác của chương trình.
- D. Khi chức năng đó thường xuyên được gọi.
Câu 29: Trong ngữ cảnh của bài toán tính điểm vận động viên Sea Games, mô đun `Xuly()` có nhiệm vụ chính là gì?
- A. Đọc dữ liệu từ tệp đầu vào.
- B. Ghi kết quả đã xử lý ra tệp đầu ra.
- C. Gọi mô đun `diem_gk()` để tính điểm cho từng vận động viên và có thể thực hiện các xử lý tổng hợp khác.
- D. Hiển thị giao diện người dùng cho chương trình.
Câu 30: Giả sử bạn muốn thêm chức năng kiểm tra xem điểm của các giám khảo có hợp lệ (ví dụ: nằm trong khoảng 0-10) trong chương trình tính điểm Sea Games. Chức năng kiểm tra này có thể được tích hợp vào mô đun nào để đảm bảo dữ liệu đầu vào được xử lý đúng?
- A. Trong mô đun `nhapDL()`, ngay sau khi đọc dữ liệu từ tệp.
- B. Trong mô đun `diem_gk()`, sau khi tính điểm tổng hợp.
- C. Trong mô đun `ghiDL()`, trước khi ghi kết quả.
- D. Trong mô đun chính, sau khi tất cả các mô đun khác đã chạy xong.