Trắc nghiệm Tin học 11 Kết nối tri thức Bài 26: Phương pháp làm mịn dần trong thiết kế chương trình - Đề 02
Trắc nghiệm Tin học 11 Kết nối tri thức Bài 26: Phương pháp làm mịn dần trong thiết kế chương trình - Đề 02 bao gồm nhiều câu hỏi hay, bám sát chương trình. Cùng làm bài tập trắc nghiệm ngay.
Câu 1: Mục tiêu chính của phương pháp làm mịn dần (stepwise refinement) trong thiết kế chương trình là gì?
- A. Tăng tốc độ biên dịch chương trình.
- B. Quản lý độ phức tạp của bài toán bằng cách phân rã thành các bài toán con đơn giản hơn.
- C. Giảm thiểu số lượng dòng code cần viết.
- D. Tối ưu hóa việc sử dụng bộ nhớ máy tính.
Câu 2: Bước đầu tiên trong phương pháp làm mịn dần thường là:
- A. Viết mã chương trình cho các chức năng chính.
- B. Kiểm thử chương trình với dữ liệu mẫu.
- C. Phân tích và đặc tả bài toán, xác định rõ yêu cầu đầu vào và đầu ra.
- D. Lựa chọn ngôn ngữ lập trình phù hợp.
Câu 3: Trong quá trình làm mịn dần, khi một bước "tính toán kết quả" được chia nhỏ thành các bước con "đọc dữ liệu", "xử lý dữ liệu", và "hiển thị kết quả", điều này thể hiện rõ nhất nguyên tắc nào của phương pháp?
- A. Phân rã bài toán (Decomposition).
- B. Tính trừu tượng hóa (Abstraction).
- C. Mô đun hóa (Modularity).
- D. Tái sử dụng code (Code Reusability).
Câu 4: Xét thuật toán sắp xếp chèn. Ở mức độ tổng quan, thuật toán có thể mô tả là "lặp qua danh sách, chèn mỗi phần tử vào vị trí đúng trong phần đã sắp xếp". Đây là mức độ mô tả nào trong phương pháp làm mịn dần?
- A. Mức độ chi tiết (Detailed level).
- B. Mức độ trung gian (Intermediate level).
- C. Mức độ tổng quan (High-level/Abstract level).
- D. Mức độ mã giả (Pseudocode level).
Câu 5: Trong thuật toán sắp xếp chèn, bước làm mịn "chèn phần tử vào vị trí đúng" có thể được chi tiết hóa thành các bước nào sau đây?
- A. Tìm kiếm vị trí ngẫu nhiên và chèn phần tử vào đó.
- B. Đảo ngược thứ tự các phần tử đã sắp xếp và chèn phần tử vào đầu.
- C. Xóa phần tử tại vị trí đầu tiên và chèn phần tử mới vào đó.
- D. So sánh phần tử cần chèn với các phần tử đã sắp xếp, dịch chuyển các phần tử lớn hơn sang phải để tạo chỗ trống và chèn phần tử vào vị trí thích hợp.
Câu 6: Giả sử bạn đang thiết kế chương trình quản lý thư viện. Bước đầu tiên bạn xác định chức năng chính là "mượn trả sách". Theo phương pháp làm mịn dần, bước tiếp theo hợp lý nhất là gì?
- A. Viết code Python cho chức năng mượn trả sách.
- B. Chia nhỏ chức năng "mượn trả sách" thành các chức năng con như "đăng ký mượn sách", "trả sách", "kiểm tra tình trạng sách".
- C. Thiết kế giao diện người dùng cho chức năng mượn trả sách.
- D. Kiểm thử chức năng mượn trả sách với dữ liệu thực tế.
Câu 7: Ưu điểm chính của việc sử dụng phương pháp làm mịn dần trong thiết kế chương trình là gì?
- A. Giúp chương trình chạy nhanh hơn.
- B. Tạo ra chương trình có giao diện đẹp mắt hơn.
- C. Giúp quản lý độ phức tạp của chương trình, làm cho quá trình thiết kế và phát triển dễ dàng hơn.
- D. Đảm bảo chương trình tương thích với mọi hệ điều hành.
Câu 8: Nhược điểm tiềm ẩn của phương pháp làm mịn dần là gì nếu không được thực hiện cẩn thận?
- A. Tốn ít thời gian hơn cho giai đoạn thiết kế.
- B. Dễ dàng bỏ qua các yêu cầu quan trọng của bài toán.
- C. Chương trình trở nên khó bảo trì hơn.
- D. Có thể dẫn đến việc tập trung quá nhiều vào chi tiết ở giai đoạn đầu, làm mất đi cái nhìn tổng quan về hệ thống.
Câu 9: Trong chương trình đếm số cặp nghịch đảo, bước làm mịn "đếm cặp nghịch đảo" có thể được thực hiện bằng cách nào?
- A. Duyệt qua tất cả các cặp chỉ số (i, j) với i < j và kiểm tra nếu A[i] > A[j] thì tăng biến đếm.
- B. Sắp xếp mảng và đếm số lần đổi chỗ.
- C. Chỉ đếm các cặp nghịch đảo ở nửa đầu của mảng.
- D. Sử dụng hàm có sẵn để đếm số nghịch đảo mà không cần duyệt mảng.
Câu 10: Khi nào phương pháp làm mịn dần trở nên đặc biệt hữu ích?
- A. Khi bài toán đã có giải pháp rõ ràng và dễ thực hiện.
- B. Khi bài toán phức tạp, khó hình dung toàn bộ giải pháp ngay từ đầu.
- C. Khi cần viết chương trình nhanh chóng mà không cần quan tâm đến cấu trúc.
- D. Khi ngôn ngữ lập trình được sử dụng có nhiều thư viện hỗ trợ sẵn.
Câu 11: Phát biểu nào sau đây mô tả đúng nhất về mối quan hệ giữa các bước trong phương pháp làm mịn dần?
- A. Các bước được thực hiện song song và độc lập với nhau.
- B. Các bước được thực hiện ngẫu nhiên, không theo thứ tự nhất định.
- C. Mỗi bước sau là sự chi tiết hóa của bước trước, đi từ tổng quan đến cụ thể.
- D. Các bước chỉ đơn giản là liệt kê các chức năng cần có của chương trình.
Câu 12: Trong thuật toán sắp xếp chèn, giả sử phần đã sắp xếp là [2, 5, 8]. Nếu phần tử tiếp theo cần chèn là 4, các bước làm mịn tiếp theo sẽ là gì?
- A. Chèn 4 vào cuối danh sách, kết quả [2, 5, 8, 4].
- B. So sánh 4 với 8, 5, 2 lần lượt và dịch chuyển 8, 5 sang phải, chèn 4 vào vị trí giữa 2 và 5, kết quả [2, 4, 5, 8].
- C. Thay thế phần tử 5 bằng 4, kết quả [2, 4, 8].
- D. Chèn 4 vào đầu danh sách, kết quả [4, 2, 5, 8].
Câu 13: Để đánh giá tính hiệu quả của phương pháp làm mịn dần, tiêu chí nào sau đây là quan trọng nhất?
- A. Tốc độ thực thi chương trình sau khi hoàn thành.
- B. Số lượng dòng code trong chương trình cuối cùng.
- C. Mức độ dễ hiểu của code đối với máy tính.
- D. Khả năng đơn giản hóa quá trình thiết kế và làm cho chương trình dễ hiểu, dễ bảo trì hơn đối với con người.
Câu 14: Trong ngữ cảnh thiết kế chương trình, "tính trừu tượng hóa" (abstraction) hỗ trợ phương pháp làm mịn dần như thế nào?
- A. Làm cho chương trình chạy chậm hơn nhưng dễ hiểu hơn.
- B. Loại bỏ hoàn toàn các bước chi tiết trong thiết kế.
- C. Cho phép tập trung vào chức năng chính ở mỗi bước làm mịn mà không bị quá tải bởi các chi tiết nhỏ.
- D. Thay thế phương pháp làm mịn dần bằng một phương pháp thiết kế khác.
Câu 15: Xét bài toán "tính tổng các số chẵn trong một mảng". Bước làm mịn đầu tiên có thể là "duyệt mảng và kiểm tra từng số". Bước làm mịn tiếp theo cho phần "kiểm tra từng số" là gì?
- A. Kiểm tra xem số đó có chia hết cho 2 hay không.
- B. Kiểm tra xem số đó có lớn hơn 0 hay không.
- C. Kiểm tra xem số đó có phải là số nguyên tố hay không.
- D. Kiểm tra xem số đó có nằm trong khoảng từ 1 đến 100 hay không.
Câu 16: Trong thiết kế chương trình theo phương pháp làm mịn dần, việc lặp lại quá trình làm mịn cho đến khi nào là phù hợp nhất?
- A. Cho đến khi chương trình chạy được mà không có lỗi.
- B. Cho đến khi mỗi bước đủ đơn giản và cụ thể để có thể dễ dàng chuyển thành các câu lệnh lập trình.
- C. Cho đến khi tất cả các chức năng của chương trình được hoàn thiện.
- D. Cho đến khi người thiết kế cảm thấy hài lòng với thiết kế.
Câu 17: Phương pháp làm mịn dần giúp cải thiện khả năng bảo trì chương trình như thế nào?
- A. Bằng cách giảm số lượng dòng code, chương trình trở nên ngắn gọn hơn và dễ bảo trì.
- B. Bằng cách tự động sửa lỗi trong quá trình thiết kế.
- C. Bằng cách tạo ra cấu trúc chương trình rõ ràng, các phần nhỏ, dễ hiểu và dễ sửa đổi khi cần thiết.
- D. Phương pháp này không ảnh hưởng đến khả năng bảo trì chương trình.
Câu 18: Trong thuật toán sắp xếp chèn, bước "duyệt từ phần tử thứ hai đến cuối dãy" đóng vai trò gì trong phương pháp làm mịn dần?
- A. Là bước tối ưu hóa tốc độ sắp xếp.
- B. Là bước tổng quan, xác định phạm vi các phần tử cần được xử lý trong quá trình sắp xếp.
- C. Là bước chi tiết, thực hiện việc so sánh và chèn phần tử.
- D. Không có vai trò cụ thể trong phương pháp làm mịn dần.
Câu 19: Để thiết kế một chức năng phức tạp, ví dụ "xử lý đơn hàng trực tuyến", phương pháp làm mịn dần khuyến khích bắt đầu từ đâu?
- A. Mô tả chức năng ở mức độ tổng quan nhất, ví dụ "Tiếp nhận đơn hàng, xử lý thanh toán, giao hàng".
- B. Thiết kế giao diện người dùng cho chức năng xử lý đơn hàng.
- C. Viết code cho chức năng thanh toán trực tuyến đầu tiên.
- D. Xác định cơ sở dữ liệu để lưu trữ thông tin đơn hàng.
Câu 20: Trong quá trình làm mịn dần, nếu một bước vẫn còn quá phức tạp để thực hiện trực tiếp, bạn nên làm gì?
- A. Bỏ qua bước đó và chuyển sang bước tiếp theo.
- B. Cố gắng viết code trực tiếp cho bước phức tạp đó.
- C. Tiếp tục chia nhỏ bước đó thành các bước con đơn giản hơn cho đến khi đủ chi tiết.
- D. Tìm kiếm giải pháp có sẵn trên mạng để thay thế bước đó.
Câu 21: So sánh phương pháp làm mịn dần với phương pháp "viết code trực tiếp" (code-and-fix), phương pháp nào có khả năng giảm thiểu lỗi thiết kế hơn?
- A. Phương pháp làm mịn dần, vì nó tập trung vào thiết kế có cấu trúc trước khi viết code.
- B. Phương pháp "viết code trực tiếp", vì nó cho phép thử nghiệm và sửa lỗi nhanh chóng.
- C. Cả hai phương pháp đều có khả năng giảm thiểu lỗi thiết kế như nhau.
- D. Không thể so sánh được vì hai phương pháp này phục vụ cho mục đích khác nhau.
Câu 22: Trong phương pháp làm mịn dần, việc sử dụng ngôn ngữ tự nhiên (ví dụ, tiếng Việt) để mô tả các bước ở mức độ tổng quan có lợi ích gì?
- A. Giúp chương trình chạy nhanh hơn sau khi được code.
- B. Giúp dễ dàng diễn đạt ý tưởng thiết kế, trao đổi và thảo luận với người khác (kể cả không chuyên về lập trình).
- C. Tự động chuyển đổi mô tả bằng ngôn ngữ tự nhiên thành code.
- D. Giảm số lượng tài liệu thiết kế cần phải tạo ra.
Câu 23: Giả sử bạn đã làm mịn một bước thành các bước con. Khi nào bạn nên xem xét lại và có thể "làm mịn ngược" (tức là gộp các bước con lại) trong phương pháp làm mịn dần?
- A. Khi phát hiện ra có lỗi trong các bước con đã làm mịn.
- B. Khi cần tối ưu hóa tốc độ thực thi của chương trình.
- C. Khi muốn thay đổi ngôn ngữ lập trình sử dụng.
- D. Khi nhận thấy các bước con trở nên quá chi tiết và rời rạc, làm mất đi tính mạch lạc và tổng quan của chức năng.
Câu 24: Trong thuật toán sắp xếp chèn, bước "chuyển các phần tử lớn hơn A[i] sang phải" là sự làm mịn của bước nào ở mức độ cao hơn?
- A. Bước "duyệt từ phần tử thứ hai đến cuối dãy".
- B. Bước "lấy phần tử A[i] ra khỏi dãy".
- C. Bước "chèn A[i] vào đúng vị trí trong phần đã sắp xếp".
- D. Bước "so sánh A[i] với phần tử đầu tiên của dãy".
Câu 25: Điều gì xảy ra nếu bạn bỏ qua giai đoạn làm mịn dần và bắt đầu viết code ngay cho một bài toán phức tạp?
- A. Chương trình sẽ chạy nhanh hơn vì tiết kiệm được thời gian thiết kế.
- B. Có thể dẫn đến chương trình khó hiểu, nhiều lỗi tiềm ẩn, khó bảo trì và phát triển về sau.
- C. Không có ảnh hưởng gì đáng kể nếu lập trình viên có kinh nghiệm.
- D. Chương trình sẽ chiếm ít bộ nhớ hơn vì code được viết trực tiếp.
Câu 26: Phương pháp làm mịn dần có thể áp dụng cho giai đoạn nào trong quy trình phát triển phần mềm?
- A. Chủ yếu trong giai đoạn thiết kế thuật toán và cấu trúc chương trình.
- B. Chỉ trong giai đoạn viết code.
- C. Chỉ trong giai đoạn kiểm thử và gỡ lỗi.
- D. Áp dụng cho tất cả các giai đoạn của quy trình phát triển phần mềm một cách đồng đều.
Câu 27: Trong chương trình đếm cặp nghịch đảo, vòng lặp duyệt qua các chỉ số i và j (với i < j) thể hiện bước làm mịn nào?
- A. Bước "khởi tạo biến đếm".
- B. Bước "nhập dữ liệu mảng".
- C. Bước "hiển thị kết quả đếm".
- D. Bước "duyệt qua tất cả các cặp phần tử để kiểm tra nghịch đảo".
Câu 28: Khi áp dụng phương pháp làm mịn dần, thứ tự thực hiện các bước làm mịn quan trọng như thế nào?
- A. Rất quan trọng, cần tuân theo thứ tự logic từ tổng quan đến chi tiết.
- B. Không quan trọng, có thể thực hiện các bước làm mịn theo thứ tự bất kỳ.
- C. Chỉ quan trọng ở giai đoạn đầu, các bước sau có thể linh hoạt hơn.
- D. Thứ tự thực hiện phụ thuộc vào kinh nghiệm của người thiết kế.
Câu 29: Để kiểm tra tính đúng đắn của thiết kế theo phương pháp làm mịn dần, bạn nên làm gì sau mỗi bước làm mịn?
- A. Viết code cho bước vừa làm mịn và chạy thử.
- B. So sánh thiết kế với các chương trình tương tự đã có.
- C. Rà soát lại bước vừa làm mịn để đảm bảo tính logic và phù hợp với mục tiêu tổng quan.
- D. Hỏi ý kiến của người khác về bước làm mịn vừa thực hiện.
Câu 30: Trong ngữ cảnh làm mịn dần, thuật ngữ "mô đun hóa" (modularity) liên quan đến việc chia chương trình thành các phần nhỏ như thế nào?
- A. Mô đun hóa là một phương pháp thiết kế thay thế cho làm mịn dần.
- B. Phương pháp làm mịn dần tạo điều kiện cho mô đun hóa bằng cách phân chia chương trình thành các bước/chức năng nhỏ, có thể xem như các mô đun.
- C. Mô đun hóa chỉ liên quan đến việc tổ chức code sau khi đã viết xong chương trình.
- D. Làm mịn dần và mô đun hóa không có mối liên hệ nào với nhau.