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 - Đề 03
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 - Đề 03 đượ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: Phương pháp làm mịn dần (Stepwise Refinement) trong thiết kế chương trình được hiểu là quá trình nào sau đây?
- A. Viết mã chương trình từ đầu đến cuối mà không cần kế hoạch trước.
- B. Kiểm tra và sửa lỗi cú pháp trong mã nguồn.
- C. Chia nhỏ bài toán lớn thành các bài toán con, sau đó tiếp tục chia nhỏ các bài toán con cho đến khi đủ chi tiết để lập trình.
- D. Tối ưu hóa tốc độ thực thi của chương trình đã viết.
Câu 2: Lợi ích chính của việc áp dụng phương pháp làm mịn dần trong thiết kế chương trình là gì?
- A. Giảm thiểu thời gian chạy của chương trình.
- B. Giúp lập trình viên quản lý được sự phức tạp của bài toán bằng cách tập trung vào từng phần nhỏ.
- C. Tự động tạo ra giao diện người dùng cho chương trình.
- D. Loại bỏ hoàn toàn khả năng xảy ra lỗi logic trong chương trình.
Câu 3: Khi áp dụng phương pháp làm mịn dần để thiết kế chương trình "Quản lý điểm học sinh", bước làm mịn đầu tiên (mức tổng quan nhất) thường là gì?
- A. Viết hàm tính điểm trung bình.
- B. Thiết kế cơ sở dữ liệu lưu trữ điểm.
- C. Tạo giao diện nhập điểm cho giáo viên.
- D. Xử lý dữ liệu điểm học sinh.
Câu 4: Tiếp theo bước "Xử lý dữ liệu điểm học sinh" ở Câu 3, một bước làm mịn hợp lý có thể là chia thành các công việc con nào?
- A. Nhập điểm, Tính toán kết quả học tập, Xuất báo cáo.
- B. Kiểm tra lỗi nhập liệu, Sửa lỗi tính toán.
- C. Viết vòng lặp, Sử dụng câu lệnh điều kiện.
- D. Lưu điểm vào tệp tin, Đọc điểm từ tệp tin, Sao lưu dữ liệu.
Câu 5: Xét bước làm mịn "Tính toán kết quả học tập" trong chương trình quản lý điểm. Bước này có thể được làm mịn thêm thành các công việc chi tiết hơn nào?
- A. Mở tệp tin điểm, Đóng tệp tin điểm.
- B. Hiển thị điểm lên màn hình, In điểm ra giấy.
- C. Tính điểm trung bình môn, Tính điểm trung bình học kỳ, Xếp loại học lực.
- D. Nhập điểm miệng, Nhập điểm 15 phút, Nhập điểm thi cuối kỳ.
Câu 6: Trong thuật toán sắp xếp chèn (Insertion Sort), bước làm mịn tổng quan nhất thường là gì?
- A. Chia dãy thành hai nửa và sắp xếp từng nửa.
- B. Duyệt qua từng phần tử của dãy (từ phần tử thứ hai) và chèn nó vào phần dãy đã sắp xếp.
- C. Tìm phần tử nhỏ nhất trong dãy và đưa về đầu.
- D. So sánh các cặp phần tử kề nhau và đổi chỗ nếu sai thứ tự.
Câu 7: Xét bước làm mịn "Chèn phần tử A[i] vào phần dãy đã sắp xếp" trong thuật toán sắp xếp chèn. Bước này có thể được làm mịn thành các thao tác chi tiết hơn nào?
- A. So sánh A[i] với A[0] và đổi chỗ nếu cần.
- B. Duyệt từ A[i-1] về A[0], nếu A[j] < A[i] thì dừng lại.
- C. Duyệt từ A[0] đến A[i-1], nếu A[j] > A[i] thì đổi chỗ A[j] và A[i].
- D. Lưu giá trị A[i], dịch chuyển các phần tử lớn hơn sang phải, chèn A[i] vào vị trí trống.
Câu 8: Khi làm mịn bước "Dịch chuyển các phần tử lớn hơn sang phải" trong thuật toán sắp xếp chèn, thao tác nào dưới đây là cần thiết?
- A. So sánh giá trị cần chèn (value) với các phần tử A[j] (với j giảm dần từ i-1 về 0) và gán A[j+1] = A[j] nếu A[j] > value.
- B. So sánh A[i] với A[j] (với j tăng dần từ 0 đến i-1) và gán A[j] = A[i] nếu A[j] < A[i].
- C. Đổi chỗ A[i] với A[j] nếu A[i] < A[j] (với j từ 0 đến i-1).
- D. Gán A[i+1] = A[i].
Câu 9: Giả sử bạn đang thiết kế chương trình "Đếm số cặp nghịch đảo trong một dãy số". Bước làm mịn đầu tiên (tổng quan) sẽ là gì?
- A. Sắp xếp dãy số theo thứ tự tăng dần.
- B. Tìm phần tử lớn nhất và nhỏ nhất trong dãy.
- C. Duyệt qua tất cả các cặp phần tử (A[i], A[j]) với i < j và đếm số cặp thỏa mãn điều kiện nghịch đảo.
- D. Tính tổng các phần tử trong dãy.
Câu 10: Xét bước làm mịn "Kiểm tra xem cặp (A[i], A[j]) với i < j có phải là cặp nghịch đảo không" trong thuật toán đếm cặp nghịch đảo. Điều kiện cụ thể để cặp này là nghịch đảo là gì?
- A. A[i] < A[j] và i < j
- B. A[i] > A[j] và i < j
- C. A[i] < A[j] và i > j
- D. A[i] > A[j] và i > j
Câu 11: Giả sử bạn đang làm mịn bước "Duyệt qua tất cả các cặp phần tử (A[i], A[j]) với i < j" trong thuật toán đếm cặp nghịch đảo. Cấu trúc vòng lặp nào sau đây thể hiện đúng bước này?
- A. Vòng lặp ngoài cho i từ 0 đến n-1, vòng lặp trong cho j từ 0 đến n-1.
- B. Vòng lặp ngoài cho i từ 0 đến n-1, vòng lặp trong cho j từ i về 0.
- C. Vòng lặp ngoài cho i từ 0 đến n-2, vòng lặp trong cho j từ i+1 đến n-1.
- D. Vòng lặp ngoài cho i từ n-1 về 0, vòng lặp trong cho j từ 0 đến i-1.
Câu 12: Bạn được yêu cầu thiết kế chương trình "Tính tổng các số chẵn từ 1 đến N". Áp dụng phương pháp làm mịn dần, bước nào sau đây là mức làm mịn chi tiết nhất (gần với mã lệnh)?
- A. Duyệt qua các số từ 1 đến N.
- B. Kiểm tra số nào là số chẵn.
- C. Cộng các số chẵn tìm được vào tổng.
- D. Kiểm tra xem số hiện tại có phải số chẵn không bằng phép chia lấy dư cho 2.
Câu 13: Một ưu điểm của phương pháp làm mịn dần là khả năng dễ dàng kiểm thử từng phần. Điều này được thể hiện như thế nào trong quá trình thiết kế?
- A. Mỗi bước làm mịn có thể được coi như một module nhỏ và được kiểm thử độc lập trước khi kết hợp với các bước khác.
- B. Phương pháp này tự động tạo ra các test case cho chương trình.
- C. Chỉ cần kiểm thử chương trình sau khi đã viết xong toàn bộ mã lệnh.
- D. Việc kiểm thử được thực hiện bởi người dùng cuối trong quá trình sử dụng.
Câu 14: Tại sao khi áp dụng làm mịn dần, ta nên bắt đầu từ mức tổng quan nhất trước khi đi vào chi tiết?
- A. Để có thể viết mã lệnh nhanh chóng ngay từ đầu.
- B. Để hiểu rõ bức tranh toàn cảnh của bài toán và xác định các thành phần chính trước khi tập trung vào chi tiết.
- C. Để giảm thiểu số lượng biến cần sử dụng trong chương trình.
- D. Vì các bước chi tiết thường dễ thực hiện hơn.
Câu 15: Trong quá trình làm mịn dần, mỗi bước làm mịn sẽ tạo ra một "mức" biểu diễn của bài toán. Mức biểu diễn này có đặc điểm gì so với mức trước đó?
- A. Cụ thể và chi tiết hơn.
- B. Trừu tượng và tổng quan hơn.
- C. Hoàn toàn độc lập và không liên quan đến mức trước đó.
- D. Chỉ thay đổi thứ tự thực hiện các bước.
Câu 16: Khi nào thì quá trình làm mịn dần được coi là hoàn thành?
- A. Khi toàn bộ mã nguồn đã được viết xong.
- B. Khi chương trình đã chạy thử thành công.
- C. Khi đã vẽ xong sơ đồ khối cho toàn bộ thuật toán.
- D. Khi tất cả các bước đã được chi tiết hóa đến mức có thể chuyển trực tiếp thành câu lệnh lập trình.
Câu 17: Xét bài toán "Tìm phần tử lớn nhất trong một dãy số". Bước làm mịn "Duyệt qua dãy số" có thể được làm mịn thành cấu trúc lập trình nào?
- A. Vòng lặp (ví dụ: for hoặc while).
- B. Câu lệnh điều kiện (if-else).
- C. Hàm (function).
- D. Gán giá trị cho biến.
Câu 18: Xét bài toán "Kiểm tra xem một số có phải số nguyên tố không". Bước làm mịn "Kiểm tra các ước số" có thể được làm mịn thành thao tác cụ thể nào?
- A. Cộng các số từ 1 đến số đó.
- B. Dùng phép chia lấy dư để kiểm tra xem số đó có chia hết cho các số trong một phạm vi nhất định hay không.
- C. So sánh số đó với các số nguyên tố đã biết.
- D. Nhân số đó với các số khác để xem có ra số ban đầu không.
Câu 19: Trong phương pháp làm mịn dần, việc xác định "đầu vào" và "đầu ra" của bài toán thường được thực hiện ở bước nào?
- A. Bước đầu tiên (mức tổng quan nhất) khi phân tích bài toán.
- B. Ở giữa quá trình làm mịn, khi đã chi tiết hóa một số bước.
- C. Ở bước cuối cùng, sau khi đã viết mã xong.
- D. Không cần thiết phải xác định rõ ràng đầu vào và đầu ra.
Câu 20: Một trong những nguyên tắc của làm mịn dần là mỗi bước làm mịn phải giữ được tính đúng đắn của bước trước đó. Điều này có nghĩa là gì?
- A. Các bước làm mịn sau phải hoàn toàn khác biệt với các bước trước đó.
- B. Các bước làm mịn sau có thể bỏ qua một số chi tiết của bước trước đó.
- C. Tổng hợp các bước chi tiết ở mức sau phải thực hiện đúng chức năng của bước tổng quan ở mức trước đó.
- D. Thứ tự thực hiện các bước có thể thay đổi tùy ý sau mỗi lần làm mịn.
Câu 21: Tại sao phương pháp làm mịn dần được gọi là "từ trên xuống" (Top-down)?
- A. Vì nó yêu cầu viết mã lệnh từ dòng đầu tiên đến dòng cuối cùng.
- B. Vì nó chỉ áp dụng cho các bài toán đơn giản.
- C. Vì nó bắt đầu từ các chi tiết nhỏ nhặt nhất trước khi tổng hợp lại.
- D. Vì nó bắt đầu từ ý tưởng tổng quan, trừu tượng nhất và dần dần chi tiết hóa thành các bước cụ thể.
Câu 22: Khi áp dụng làm mịn dần cho thuật toán sắp xếp chèn trên dãy A = [5, 2, 8, 1]. Sau khi chèn phần tử thứ hai (số 2) vào đúng vị trí trong phần đã sắp xếp [5], dãy A sẽ trở thành trạng thái nào?
- A. [5, 2, 8, 1]
- B. [2, 5, 1, 8]
- C. [2, 5, 8, 1]
- D. [1, 2, 5, 8]
Câu 23: Vẫn với dãy A = [5, 2, 8, 1] và thuật toán sắp xếp chèn. Sau khi chèn phần tử thứ ba (số 8) vào đúng vị trí trong phần đã sắp xếp [2, 5], dãy A sẽ trở thành trạng thái nào?
- A. [2, 5, 8, 1]
- B. [2, 8, 5, 1]
- C. [8, 2, 5, 1]
- D. [2, 1, 5, 8]
Câu 24: Vẫn với dãy A = [5, 2, 8, 1] và thuật toán sắp xếp chèn. Sau khi chèn phần tử thứ tư (số 1) vào đúng vị trí trong phần đã sắp xếp [2, 5, 8], dãy A sẽ trở thành trạng thái nào?
- A. [2, 5, 8, 1]
- B. [1, 5, 8, 2]
- C. [2, 5, 1, 8]
- D. [1, 2, 5, 8]
Câu 25: Dãy số A = [3, 1, 4, 1, 5, 9, 2, 6]. Áp dụng định nghĩa, cặp phần tử nào sau đây là một cặp nghịch đảo?
- A. (A[0], A[2]) vì 3 < 4
- B. (A[0], A[1]) vì 3 > 1
- C. (A[2], A[4]) vì 4 < 5
- D. (A[5], A[6]) vì 9 > 2
Câu 26: Khi làm mịn bước "Đếm số cặp nghịch đảo" trong thuật toán đếm, biến nào sau đây là cần thiết để lưu trữ kết quả cuối cùng?
- A. Biến lưu trữ phần tử hiện tại.
- B. Biến lưu trữ chỉ số vòng lặp.
- C. Biến đếm (counter) được khởi tạo bằng 0.
- D. Biến lưu trữ kích thước của dãy.
Câu 27: Giả sử bạn đang làm mịn bước "Xử lý một yêu cầu từ người dùng" trong một chương trình tương tác. Bước này có thể được làm mịn thành cấu trúc lập trình nào?
- A. Vòng lặp for.
- B. Cấu trúc điều kiện rẽ nhánh (if-else hoặc switch-case).
- C. Vòng lặp while.
- D. Gán giá trị trực tiếp.
Câu 28: Quá trình làm mịn dần giúp chuyển đổi từ "cần làm gì" sang "làm như thế nào". Điều này thể hiện khía cạnh nào của thiết kế chương trình?
- A. Chuyển đổi từ mô tả bài toán sang mô tả thuật toán và cấu trúc dữ liệu.
- B. Chuyển đổi từ mã nguồn sang sơ đồ khối.
- C. Chuyển đổi từ kết quả chạy chương trình sang yêu cầu bài toán.
- D. Chuyển đổi từ ngôn ngữ tự nhiên sang ngôn ngữ toán học.
Câu 29: Giả sử bạn đang thiết kế chức năng "Lưu dữ liệu người dùng vào tệp tin". Bước làm mịn "Ghi thông tin của một người dùng" có thể được làm mịn thành các thao tác I/O (Input/Output) cụ thể nào?
- A. Đọc toàn bộ tệp tin.
- B. Tìm kiếm thông tin trong tệp tin.
- C. Đóng tệp tin.
- D. Ghi tên người dùng, Ghi tuổi người dùng, Ghi địa chỉ người dùng.
Câu 30: Phương pháp làm mịn dần nhấn mạnh vào việc chia nhỏ bài toán và làm rõ từng bước. Điều này đóng góp như thế nào vào khả năng bảo trì (maintenance) chương trình sau này?
- A. Làm cho mã nguồn ngắn gọn hơn.
- B. Giúp dễ dàng xác định và sửa đổi các phần cụ thể của chương trình khi cần cập nhật hoặc sửa lỗi.
- C. Tự động tạo tài liệu hướng dẫn sử dụng.
- D. Ngăn chặn mọi lỗi phát sinh sau khi chương trình đã hoàn thành.