Trắc nghiệm Cánh diều Tin học 11 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. Trong thiết kế chương trình từ trên xuống, nếu một bài toán con được xác định là quá trừu tượng và khó hiện thực hóa ngay, bước tiếp theo hợp lý nhất là gì?
A. Chấp nhận sự trừu tượng đó và tiếp tục.
B. Cụ thể hóa bài toán con đó bằng cách xác định rõ hơn các yêu cầu đầu vào, đầu ra và các bước thực hiện.
C. Gộp nó vào một bài toán con khác.
D. Bỏ qua nó và chuyển sang bài toán khác.
2. Khái niệm khả năng bảo trì (maintainability) của một chương trình có liên quan mật thiết đến phương pháp nào?
A. Viết mã nguồn không có cấu trúc.
B. Thiết kế theo hướng modun hóa và từ trên xuống.
C. Sử dụng các biến toàn cục.
D. Giảm thiểu việc sử dụng hàm.
3. Phương pháp modun hóa trong lập trình giúp tăng cường điều gì cho một chương trình máy tính?
A. Giảm khả năng tái sử dụng mã nguồn và tăng sự phức tạp.
B. Tăng khả năng đọc hiểu, bảo trì và tái sử dụng mã nguồn.
C. Tập trung toàn bộ logic chương trình vào một khối mã duy nhất.
D. Phụ thuộc hoàn toàn vào thứ tự thực hiện của các lệnh.
4. Khi phân rã một bài toán, nếu hai bài toán con có quá nhiều điểm chung và phụ thuộc lẫn nhau, điều này cho thấy vấn đề gì về thiết kế?
A. Độ gắn kết cao.
B. Tính kết nối lỏng lẻo.
C. Tính kết nối chặt chẽ (high coupling).
D. Tính độc lập cao.
5. Một module có tính kết nối lỏng lẻo (loose coupling) nghĩa là gì?
A. Module đó phụ thuộc rất nhiều vào các module khác.
B. Module đó ít phụ thuộc vào các module khác, thay đổi bên trong module này ít ảnh hưởng đến các module khác.
C. Module đó thực hiện rất nhiều chức năng.
D. Module đó có giao diện phức tạp.
6. Đâu là một ví dụ về giao diện (interface) của một module?
A. Toàn bộ mã nguồn bên trong module.
B. Danh sách các hàm hoặc thủ tục mà module cung cấp để các module khác gọi.
C. Biến toàn cục mà module sử dụng.
D. Cấu trúc dữ liệu nội bộ của module.
7. Việc phân rã một bài toán lớn thành các bài toán con có ý nghĩa, mỗi bài toán con có thể được giải quyết độc lập, là cốt lõi của phương pháp nào?
A. Thiết kế từ dưới lên.
B. Thiết kế từ trên xuống.
C. Thiết kế theo hướng đối tượng.
D. Thiết kế tuần tự.
8. Khi thiết kế chương trình theo phương pháp modun hóa, việc đặt tên cho các module nên tuân theo nguyên tắc nào?
A. Ngắn gọn, khó hiểu để bảo mật.
B. Mô tả rõ ràng chức năng hoặc mục đích của module.
C. Sử dụng các ký tự đặc biệt để phân biệt.
D. Chỉ sử dụng các số.
9. Theo nguyên tắc thiết kế chương trình từ trên xuống, khi phân rã một bài toán lớn thành các bài toán con, mỗi bài toán con cần đảm bảo tính chất nào sau đây để dễ dàng quản lý và phát triển?
A. Có tính độc lập cao, ít phụ thuộc vào các bài toán con khác.
B. Phức tạp và có nhiều chức năng tương tự các bài toán con khác.
C. Chỉ thực hiện một phần rất nhỏ của bài toán gốc, cần nhiều bài toán khác để hoàn thành.
D. Phải bao gồm tất cả các chi tiết nhỏ nhất của bài toán gốc.
10. Đâu là lợi ích chính của việc thiết kế chương trình theo hướng từ trên xuống?
A. Nhanh chóng hoàn thành chương trình với ít bước chuẩn bị.
B. Giúp quản lý sự phức tạp của bài toán bằng cách chia nhỏ và giải quyết từng phần.
C. Yêu cầu người lập trình phải có kiến thức sâu về mọi khía cạnh của hệ thống.
D. Tạo ra các module có chức năng chồng chéo lên nhau.
11. Nguyên tắc thiết kế từ dưới lên (bottom-up design) khác với thiết kế từ trên xuống (top-down design) ở điểm nào?
A. Thiết kế từ dưới lên bắt đầu từ các module nhỏ, đơn giản và kết hợp chúng lại.
B. Thiết kế từ dưới lên tập trung vào giao diện người dùng trước.
C. Thiết kế từ trên xuống bắt đầu từ các module nhỏ và kết hợp chúng lại.
D. Cả hai phương pháp đều không phân rã bài toán.
12. Khi phát triển một ứng dụng web, việc tách biệt phần xử lý dữ liệu (backend) và phần hiển thị giao diện người dùng (frontend) là một ví dụ điển hình của?
A. Thiết kế theo hướng đối tượng.
B. Modun hóa.
C. Lập trình tuyến tính.
D. Sử dụng biến toàn cục.
13. Khái niệm tính đóng gói (encapsulation) trong phương pháp modun hóa liên quan đến việc gì?
A. Kết hợp tất cả mã nguồn của chương trình vào một file duy nhất.
B. Ẩn giấu chi tiết cài đặt bên trong một module và chỉ cung cấp giao diện để tương tác.
C. Chia sẻ dữ liệu giữa các module một cách công khai.
D. Thực hiện các phép tính số học phức tạp.
14. Việc sử dụng các hàm hoặc thủ tục riêng biệt cho các tác vụ cụ thể trong chương trình là biểu hiện của phương pháp nào?
A. Thiết kế từ trên xuống.
B. Modun hóa.
C. Cả thiết kế từ trên xuống và modun hóa.
D. Thiết kế theo hướng đối tượng.
15. Khi áp dụng phương pháp modun hóa, mục tiêu của việc trừu tượng hóa (abstraction) là gì?
A. Hiển thị tất cả các chi tiết phức tạp của module.
B. Tập trung vào những thông tin cần thiết và che giấu các chi tiết không cần thiết.
C. Tăng cường sự phụ thuộc giữa các module.
D. Giảm số lượng module trong chương trình.
16. Trong thiết kế chương trình, một module tốt nên có đặc điểm gì về mặt chức năng?
A. Thực hiện nhiều chức năng không liên quan đến nhau.
B. Chỉ thực hiện một chức năng cụ thể và rõ ràng.
C. Phụ thuộc nhiều vào các module khác để thực hiện chức năng của mình.
D. Có giao diện phức tạp và khó hiểu.
17. Khi một chương trình được thiết kế theo phương pháp từ trên xuống, bước đầu tiên thường là gì?
A. Viết chi tiết tất cả các hàm và thủ tục.
B. Xác định bài toán tổng thể và chia nó thành các bài toán con có ý nghĩa.
C. Kiểm thử từng dòng lệnh một cách độc lập.
D. Tối ưu hóa hiệu suất của toàn bộ chương trình.
18. Một module thực hiện duy nhất một chức năng cụ thể và ít phụ thuộc vào các module khác. Module này có đặc điểm gì?
A. Độ gắn kết thấp và tính kết nối cao.
B. Độ gắn kết cao và tính kết nối thấp.
C. Độ gắn kết thấp và tính kết nối thấp.
D. Độ gắn kết cao và tính kết nối cao.
19. Khi phát triển một ứng dụng lớn, việc sử dụng thiết kế từ trên xuống và modun hóa giúp ích gì cho quá trình gỡ lỗi (debugging)?
A. Làm cho việc tìm và sửa lỗi trở nên khó khăn hơn do chương trình bị phân tán.
B. Cho phép kiểm tra và gỡ lỗi từng module một cách độc lập.
C. Yêu cầu phải hiểu toàn bộ chương trình để tìm ra lỗi.
D. Chỉ có thể gỡ lỗi sau khi hoàn thành toàn bộ chương trình.
20. Tại sao việc thiết kế chương trình theo từng bước nhỏ (modun hóa) lại quan trọng hơn so với việc viết toàn bộ mã nguồn cùng một lúc?
A. Nó làm tăng số lượng lỗi trong chương trình.
B. Nó giúp quản lý sự phức tạp, dễ dàng kiểm thử, sửa lỗi và nâng cấp.
C. Nó đòi hỏi ít thời gian lập trình hơn.
D. Nó làm cho chương trình chạy chậm hơn.
21. Một chương trình được chia thành các module khác nhau. Nếu một module cần sử dụng chức năng của module khác, mối quan hệ này được gọi là gì?
A. Tính kế thừa.
B. Tính đa hình.
C. Sự phụ thuộc giữa các module (module dependency).
D. Tính trừu tượng hóa.
22. Khái niệm độ gắn kết (cohesion) trong thiết kế module đề cập đến điều gì?
A. Mức độ phụ thuộc của module vào các module khác.
B. Mức độ liên quan và tập trung của các yếu tố chức năng bên trong một module.
C. Kích thước của module.
D. Số lượng biến mà module sử dụng.
23. Trong quá trình phân rã bài toán theo phương pháp từ trên xuống, nếu một bài toán con quá phức tạp, người lập trình nên làm gì tiếp theo?
A. Bỏ qua bài toán con đó và tiếp tục với bài toán khác.
B. Chia nhỏ bài toán con đó thành các bài toán con nhỏ hơn nữa.
C. Viết ngay mã nguồn cho bài toán con đó mà không cần phân rã thêm.
D. Gộp bài toán con đó vào một bài toán lớn hơn.
24. Trong thiết kế chương trình, tính kết nối (coupling) giữa các module đề cập đến điều gì?
A. Mức độ tương tác hoặc phụ thuộc giữa các module khác nhau.
B. Mức độ tập trung chức năng bên trong một module.
C. Khả năng tái sử dụng của một module.
D. Độ phức tạp của thuật toán trong module.
25. Khi một module được thiết kế tốt, nó có thể được sử dụng trong các chương trình khác nhau mà không cần thay đổi nhiều. Điều này thể hiện tính chất gì?
A. Tính phụ thuộc cao.
B. Tính tái sử dụng (reusability).
C. Tính đóng gói.
D. Tính trừu tượng hóa.