Trắc nghiệm Tin học 11 Cánh diều KHMT bài 10 Thiết kế chương trình từ trên xuống và phương pháp modun hóa
1. Modun hóa chương trình giúp ích gì cho việc bảo trì (maintenance) phần mềm?
A. Tăng chi phí bảo trì do phải sửa nhiều modun.
B. Cho phép cập nhật hoặc thay thế một modun mà không ảnh hưởng đến toàn bộ hệ thống.
C. Ngăn chặn mọi hình thức cập nhật.
D. Yêu cầu viết lại toàn bộ chương trình khi có thay đổi nhỏ.
2. Khi một chương trình được thiết kế theo phương pháp từ trên xuống, mỗi modun con thường đại diện cho:
A. Một dòng lệnh đơn giản.
B. Một chức năng hoặc nhiệm vụ cụ thể của chương trình.
C. Một biến toàn cục.
D. Toàn bộ mã nguồn của chương trình.
3. Modun hóa chương trình có ý nghĩa như thế nào đối với việc sửa lỗi (debugging)?
A. Làm cho việc sửa lỗi trở nên khó khăn hơn do quá nhiều modun.
B. Giúp cô lập lỗi trong từng modun, dễ dàng tìm và sửa chữa.
C. Yêu cầu phải chạy lại toàn bộ chương trình để sửa một lỗi nhỏ.
D. Chỉ cho phép sửa lỗi ở modun chính.
4. Tại sao việc chia nhỏ chương trình thành các modun giúp tăng khả năng tái sử dụng mã?
A. Mỗi modun chỉ chứa mã rất ngắn.
B. Các modun có chức năng rõ ràng, độc lập có thể được sử dụng trong nhiều ngữ cảnh khác nhau.
C. Ngăn chặn việc sử dụng lại mã bằng cách cô lập.
D. Chỉ các modun chính mới có thể được tái sử dụng.
5. Trong thiết kế từ trên xuống, nếu một bài toán con trở nên quá phức tạp, điều đó có thể cho thấy:
A. Cần gộp nhiều modun lại.
B. Cần chia nhỏ bài toán con đó thành các bài toán nhỏ hơn nữa.
C. Đã đạt đến cấp độ chi tiết cuối cùng.
D. Không cần thiết phải chia nhỏ thêm.
6. Trong mô hình thiết kế từ trên xuống, các modun ở cấp cao nhất thường có vai trò gì?
A. Thực hiện các tác vụ tính toán chi tiết.
B. Quản lý và điều phối các modun ở cấp thấp hơn.
C. Chỉ chứa các biến cục bộ.
D. Xử lý lỗi trực tiếp mà không cần modun khác.
7. Mục đích chính của phương pháp modun hóa trong thiết kế chương trình là gì?
A. Tăng tốc độ thực thi của chương trình.
B. Giảm dung lượng bộ nhớ mà chương trình sử dụng.
C. Chia chương trình thành các phần nhỏ, độc lập, dễ phát triển và bảo trì.
D. Tự động hóa quá trình gỡ lỗi.
8. Việc sử dụng tên hàm (function name) rõ ràng và mô tả đúng chức năng của modun có vai trò gì trong thiết kế từ trên xuống?
A. Làm cho mã khó đọc hơn.
B. Tăng tính rõ ràng và dễ hiểu về chức năng của modun.
C. Yêu cầu nhiều bộ nhớ hơn.
D. Giảm khả năng modun hoạt động.
9. Khi hai modun "A" và "B" có sự phụ thuộc lẫn nhau rất lớn, tức là thay đổi trong "A" thường yêu cầu thay đổi tương ứng trong "B", điều này thể hiện:
A. Tính gắn kết cao.
B. Tính phụ thuộc lỏng.
C. Tính phụ thuộc chặt (Tight coupling).
D. Tính độc lập.
10. Ưu điểm của việc sử dụng modun hóa là gì trong quá trình phát triển phần mềm?
A. Tăng sự phụ thuộc giữa các phần của chương trình.
B. Giúp phát triển và kiểm thử các phần độc lập, giảm độ phức tạp.
C. Buộc người lập trình phải viết mã dài hơn.
D. Hạn chế khả năng tái sử dụng mã.
11. Trong thiết kế từ trên xuống, khi chia một bài toán lớn, điều gì cần được ưu tiên xem xét cho các bài toán con?
A. Độ dài của mã nguồn.
B. Sự độc lập và khả năng thực hiện một chức năng rõ ràng.
C. Số lượng biến cần sử dụng.
D. Tính phức tạp của giao diện người dùng.
12. Phương pháp modun hóa có thể được xem như một cách áp dụng của nguyên tắc nào trong kỹ thuật phần mềm?
A. Chia để trị (Divide and Conquer).
B. Tư duy logic (Logical Thinking).
C. Lặp lại (Iteration).
D. Quy hoạch động (Dynamic Programming).
13. Phương pháp thiết kế chương trình từ trên xuống giúp lập trình viên tập trung vào điều gì trước tiên?
A. Chi tiết triển khai của từng hàm.
B. Cấu trúc logic và luồng điều khiển tổng thể của chương trình.
C. Hiệu năng xử lý của từng dòng lệnh.
D. Giao diện đồ họa người dùng.
14. Theo quan điểm thiết kế chương trình từ trên xuống, bước đầu tiên quan trọng nhất là gì?
A. Viết mã chi tiết cho từng chức năng.
B. Xác định bài toán tổng thể và chia nhỏ thành các bài toán con.
C. Kiểm thử toàn bộ chương trình.
D. Tối ưu hóa thuật toán.
15. Trong thiết kế từ trên xuống, việc xác định "giao diện" của một modun con bao gồm những gì?
A. Toàn bộ mã nguồn của modun đó.
B. Tên modun, các tham số đầu vào và giá trị trả về.
C. Các biến cục bộ được sử dụng bên trong.
D. Chi tiết thuật toán bên trong modun.
16. Khi một modun chỉ xử lý một loại dữ liệu duy nhất và thực hiện một phép biến đổi cụ thể trên dữ liệu đó, modun đó được coi là:
A. Có tính phụ thuộc lỏng.
B. Có tính gắn kết cao.
C. Có tính gắn kết thấp.
D. Có tính đóng gói kém.
17. Đâu là một ví dụ về việc áp dụng thiết kế từ trên xuống trong cuộc sống hàng ngày?
A. Xây dựng một ngôi nhà từ việc đặt từng viên gạch.
B. Lập kế hoạch cho một bữa tiệc bằng cách liệt kê từng món ăn.
C. Lắp ráp một chiếc xe hơi theo hướng dẫn, bắt đầu với khung xe và các bộ phận lớn.
D. Học thuộc một bài thơ bằng cách đọc từng từ.
18. Nếu một modun có nhiều nhiệm vụ khác nhau và các nhiệm vụ này không liên quan chặt chẽ với nhau, modun đó được cho là có:
A. Tính gắn kết thấp (Low cohesion).
B. Tính phụ thuộc cao (High coupling).
C. Tính gắn kết cao (High cohesion).
D. Tính độc lập cao (High independence).
19. Phát biểu nào sau đây mô tả đúng nhất vai trò của "modun chính" (main module) trong cấu trúc chương trình từ trên xuống?
A. Modun chính thực hiện tất cả các tác vụ phức tạp.
B. Modun chính điều phối luồng hoạt động tổng thể và gọi các modun con.
C. Modun chính chỉ chứa các biến toàn cục.
D. Modun chính không tương tác với bất kỳ modun nào khác.
20. Khi chia một bài toán lớn thành nhiều bài toán con, chúng ta cần đảm bảo rằng:
A. Mỗi bài toán con chỉ được giải quyết bởi một modun duy nhất.
B. Các bài toán con phải bao phủ toàn bộ chức năng của bài toán lớn và có thể được tích hợp lại.
C. Số lượng bài toán con càng nhiều càng tốt.
D. Các bài toán con phải có cấu trúc mã giống nhau.
21. Khi một modun thực hiện nhiều chức năng không liên quan, việc kiểm thử modun đó sẽ:
A. Dễ dàng vì tất cả chức năng đều nằm trong một chỗ.
B. Phức tạp hơn vì cần kiểm tra nhiều kịch bản khác nhau không liên quan.
C. Không cần thiết nếu modun có vẻ hoạt động tốt.
D. Chỉ cần kiểm tra một chức năng duy nhất.
22. Khi một modun có thể được sử dụng lại trong nhiều dự án khác nhau, điều đó phản ánh tính chất nào của modun hóa?
A. Tính gắn kết cao.
B. Tính đóng gói.
C. Tính độc lập.
D. Khả năng tái sử dụng.
23. Một modun tốt theo nguyên tắc thiết kế từ trên xuống nên có đặc điểm nào sau đây?
A. Phụ thuộc chặt chẽ vào nhiều modun khác.
B. Thực hiện nhiều chức năng không liên quan.
C. Có tính "gắn kết" (cohesion) cao và tính "phụ thuộc lỏng" (coupling) thấp.
D. Khó hiểu và khó thay đổi.
24. Trong phương pháp thiết kế từ trên xuống, khi chúng ta tiếp tục chia nhỏ các bài toán, chúng ta đang đi từ cấp độ nào đến cấp độ nào?
A. Từ chi tiết đến tổng thể.
B. Từ tổng thể đến chi tiết.
C. Từ ngôn ngữ máy đến ngôn ngữ bậc cao.
D. Từ người dùng đến phần cứng.
25. Khi thiết kế một chương trình, việc xác định rõ "đầu vào" và "đầu ra" của mỗi modun là một phần của nguyên tắc nào?
A. Thiết kế từ dưới lên.
B. Đóng gói thông tin (Encapsulation).
C. Thiết kế từ trên xuống và Modun hóa.
D. Tái cấu trúc mã (Refactoring).