Trắc nghiệm Tin học 11 Kết nối tri thức Bài 27: Thực hành thiết kế chương trình theo phương pháp làm mịn dần - Đề 07
Trắc nghiệm Tin học 11 Kết nối tri thức Bài 27: Thực hành thiết kế chương trình theo phương pháp làm mịn dần - Đề 07 đượ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 ở Bài 27 được hiểu là quá trình:
- A. Viết mã chương trình ngay lập tức sau khi hiểu yêu cầu.
- B. Kiểm thử chương trình từ các mô đun nhỏ nhất rồi ghép lại.
- C. Chia bài toán lớn thành các bài toán con nhỏ hơn và giải quyết từng bước chi tiết.
- D. Sử dụng các thư viện có sẵn để giảm thiểu việc viết mã mới.
Câu 2: Khi áp dụng phương pháp làm mịn dần để giải quyết bài toán "Kiểm tra một dãy số có phải là hoán vị của dãy từ 1 đến n hay không", bước "làm mịn" đầu tiên thường là gì?
- A. Viết hàm sắp xếp cho dãy số.
- B. Viết hàm kiểm tra từng cặp phần tử trùng lặp.
- C. So sánh trực tiếp dãy số với dãy [1, 2, ..., n].
- D. Xác định các điều kiện cần kiểm tra: độ dài dãy và sự xuất hiện độc nhất của các số từ 1 đến n.
Câu 3: Giả sử bạn đang làm mịn dần bài toán "Đếm số lần xuất hiện của mỗi phần tử trong một dãy số A". Một trong những bước làm mịn là tạo ra một hàm con hoặc một quy trình riêng để thực hiện việc đếm cho một phần tử cụ thể. Việc này minh họa cho nguyên tắc nào của phương pháp làm mịn dần?
- A. Tối ưu hóa hiệu suất chương trình.
- B. Phân rã bài toán thành các mô đun nhỏ hơn.
- C. Sử dụng cấu trúc dữ liệu phức tạp.
- D. Kiểm thử từng dòng lệnh của chương trình.
Câu 4: Trong bài toán kiểm tra hoán vị, tại sao việc kiểm tra xem "tất cả các số từ 1 đến n có mặt trong dãy A hay không" lại là một bước kiểm tra cần thiết, bên cạnh việc kiểm tra độ dài dãy?
- A. Để đảm bảo dãy không chứa các số nằm ngoài phạm vi từ 1 đến n hoặc có số bị lặp lại.
- B. Để tăng tốc độ thực hiện chương trình.
- C. Để đơn giản hóa việc sắp xếp dãy số.
- D. Để xác định phần tử lớn nhất và nhỏ nhất trong dãy.
Câu 5: Khi kiểm tra một xâu ký tự có phải là đối xứng (palindrome) theo phương pháp làm mịn dần, bước làm mịn tiếp theo sau khi xác định cần so sánh các ký tự từ hai đầu vào là gì?
- A. Đếm tổng số ký tự trong xâu.
- B. Chuyển xâu về chữ thường hoặc chữ hoa.
- C. Thiết lập hai con trỏ (hoặc chỉ số) ở hai đầu xâu và di chuyển dần vào giữa để so sánh.
- D. Tạo một xâu mới là xâu đảo ngược của xâu ban đầu.
Câu 6: Giả sử bạn đã làm mịn bài toán kiểm tra hoán vị đến bước cần kiểm tra xem mỗi số từ 1 đến n có xuất hiện đúng một lần trong dãy A có độ dài n hay không. Phương pháp hiệu quả nào có thể được sử dụng ở bước này?
- A. Sắp xếp dãy A và kiểm tra xem phần tử thứ i có bằng i hay không với mọi i từ 1 đến n.
- B. Tính tổng các phần tử trong dãy A.
- C. Chỉ kiểm tra phần tử đầu tiên và cuối cùng của dãy A.
- D. Xóa các phần tử trùng lặp trong dãy A.
Câu 7: Khi đếm số lần lặp của mỗi phần tử trong dãy A theo phương pháp làm mịn dần, việc sử dụng một danh sách (hoặc từ điển) phụ để lưu trữ kết quả đếm cho từng phần tử duy nhất là một bước làm mịn nhằm mục đích gì?
- A. Thay đổi giá trị của các phần tử trong dãy A gốc.
- B. Chỉ đếm các phần tử xuất hiện nhiều hơn một lần.
- C. Tìm ra phần tử xuất hiện nhiều nhất.
- D. Lưu trữ kết quả đếm một cách có hệ thống cho từng giá trị duy nhất trong dãy mà không làm ảnh hưởng đến dãy gốc.
Câu 8: Bạn được yêu cầu kiểm tra một xâu ký tự có phải là đối xứng. Theo phương pháp làm mịn dần, bạn quyết định tạo một hàm con `kiem_tra_doi_xung(xau)` nhận xâu làm tham số và trả về True/False. Việc này thể hiện điều gì trong quá trình thiết kế?
- A. Bỏ qua các bước kiểm thử.
- B. Đóng gói một tác vụ cụ thể thành một đơn vị xử lý (hàm/mô đun).
- C. Sử dụng phương pháp vét cạn.
- D. Thiết kế từ dưới lên (bottom-up).
Câu 9: Trong bài toán kiểm tra hoán vị, nếu dãy A có độ dài n nhưng chứa một số lớn hơn n (ví dụ: dãy [1, 2, 5] với n=3), thì theo phương pháp làm mịn dần, bước kiểm tra nào sẽ phát hiện ra điều này?
- A. Kiểm tra độ dài của dãy.
- B. Tính tổng các phần tử trong dãy.
- C. Kiểm tra xem tất cả các phần tử có nằm trong phạm vi từ 1 đến n và mỗi số có xuất hiện đúng một lần không.
- D. Kiểm tra xem dãy có chứa phần tử âm không.
Câu 10: Giả sử bạn đã làm mịn bài toán đếm số lần lặp đến mức cần viết mã để đếm số lần xuất hiện của một giá trị `x` trong một danh sách `A`. Đoạn mã nào sau đây thể hiện đúng logic của bước làm mịn này?
- A. Sử dụng hàm `sort(A)` và đếm các phần tử liền kề giống nhau.
- B. Sử dụng hàm `sum(A)` và chia cho `x`.
- C. Sử dụng hàm `len(A)`.
- D. Khởi tạo bộ đếm bằng 0, duyệt qua `A`, nếu phần tử hiện tại bằng `x` thì tăng bộ đếm.
Câu 11: Phương pháp làm mịn dần giúp ích gì cho việc quản lý và bảo trì chương trình sau này?
- A. Làm cho cấu trúc chương trình rõ ràng, dễ đọc, dễ hiểu và dễ sửa lỗi.
- B. Giảm thiểu hoàn toàn khả năng xảy ra lỗi lập trình.
- C. Chỉ áp dụng được cho các bài toán đơn giản.
- D. Tự động tạo ra tài liệu hướng dẫn sử dụng chương trình.
Câu 12: Khi kiểm tra xâu đối xứng "radar", theo phương pháp làm mịn dần, cặp ký tự đầu tiên được so sánh là gì?
- A. ký tự thứ 1 và thứ 2 ("r" và "a").
- B. ký tự đầu tiên ("r") và ký tự cuối cùng ("r").
- C. ký tự ở giữa ("d").
- D. Tất cả các ký tự cùng một lúc.
Câu 13: Trong bài toán đếm số lần lặp, nếu dãy A là [3, 1, 4, 1, 5, 9, 2, 6, 5, 3] và bạn muốn đếm số lần xuất hiện của số 5. Sau khi áp dụng bước làm mịn tạo hàm đếm `lap(x, A)`, kết quả trả về của `lap(5, A)` sẽ là bao nhiêu?
Câu 14: Khi áp dụng làm mịn dần để giải bài toán "Kiểm tra trong dãy A có phần tử nào trùng nhau không", một cách tiếp cận là sắp xếp dãy A trước. Mục đích của việc sắp xếp này là gì?
- A. Để thay đổi thứ tự các phần tử một cách ngẫu nhiên.
- B. Để tìm phần tử lớn nhất và nhỏ nhất nhanh hơn.
- C. Để các phần tử trùng lặp nằm gần nhau, giúp dễ dàng phát hiện bằng cách so sánh các phần tử liền kề.
- D. Để loại bỏ các phần tử không phải là số.
Câu 15: Phương pháp làm mịn dần khuyến khích việc phát triển chương trình theo kiểu mô đun. Điều này có nghĩa là:
- A. Viết toàn bộ chương trình trong một tệp duy nhất.
- B. Sử dụng nhiều biến toàn cục.
- C. Viết mã chương trình mà không cần hàm hoặc thủ tục.
- D. Chia chương trình thành các phần nhỏ, độc lập về chức năng, có thể được phát triển và kiểm thử riêng biệt.
Câu 16: Khi kiểm tra hoán vị của dãy từ 1 đến n, nếu dãy A được cho là [1, 3, 2] với n=3. Theo phương pháp làm mịn dần, sau bước kiểm tra độ dài (đúng bằng 3), bước kiểm tra tiếp theo về sự xuất hiện của các phần tử sẽ cho kết quả nào?
- A. Dãy chứa đủ các số từ 1 đến n và mỗi số xuất hiện đúng một lần.
- B. Dãy thiếu số 2.
- C. Dãy chứa số 3 bị lặp lại.
- D. Dãy chứa số lớn hơn n.
Câu 17: Giả sử bạn đã làm mịn bài toán kiểm tra xâu đối xứng đến mức cần so sánh ký tự tại vị trí `i` và `j` của xâu `s`. Nếu `s[i]` khác `s[j]`, thì kết quả của việc kiểm tra đối xứng là gì?
- A. Xâu là đối xứng.
- B. Xâu không phải là đối xứng.
- C. Cần so sánh thêm các cặp khác.
- D. Không thể kết luận chỉ từ một cặp ký tự.
Câu 18: Trong bài toán đếm số lần lặp, việc tạo một danh sách mới `dem_so_lan` có kích thước n+1 (nếu các phần tử trong dãy gốc nằm trong khoảng từ 1 đến n) và khởi tạo tất cả các giá trị bằng 0 thể hiện bước làm mịn nào?
- A. Chuẩn bị cấu trúc dữ liệu để lưu trữ kết quả trung gian hoặc cuối cùng.
- B. Thực hiện việc đếm số lần lặp.
- C. In kết quả đếm ra màn hình.
- D. Sắp xếp các phần tử trong dãy gốc.
Câu 19: Ưu điểm chính của việc áp dụng phương pháp làm mịn dần trong thực hành lập trình là gì?
- A. Luôn tạo ra chương trình chạy nhanh nhất.
- B. Chỉ yêu cầu kiến thức lập trình cơ bản.
- C. Cho phép bỏ qua bước kiểm thử chương trình.
- D. Giúp quản lý độ phức tạp của bài toán bằng cách chia nhỏ thành các phần dễ xử lý hơn.
Câu 20: Khi kiểm tra xâu đối xứng "level", theo phương pháp làm mịn dần, sau khi so sánh cặp ký tự đầu và cuối ("l" và "l"), cặp ký tự tiếp theo cần so sánh là gì?
- A. ký tự thứ 1 và thứ 3 ("l" và "v").
- B. ký tự thứ 2 và thứ 4 ("e" và "e").
- C. ký tự thứ 2 ("e") và ký tự thứ 4 ("e").
- D. ký tự ở giữa ("v").
Câu 21: Giả sử bạn đang làm mịn dần bài toán kiểm tra hoán vị. Một cách tiếp cận khác sau khi kiểm tra độ dài là sử dụng một tập hợp (set) để lưu trữ các phần tử đã duyệt. Nếu khi duyệt qua dãy A, bạn gặp một phần tử đã có trong tập hợp, điều này có ý nghĩa gì?
- A. Dãy A chắc chắn là hoán vị của dãy từ 1 đến n.
- B. Dãy A chứa phần tử bị trùng lặp và không phải là hoán vị.
- C. Phần tử đó nằm ngoài phạm vi từ 1 đến n.
- D. Cần thêm phần tử đó vào tập hợp một lần nữa.
Câu 22: Khi đếm số lần lặp của mỗi phần tử trong dãy A, nếu dãy A đã được sắp xếp tăng dần, bước làm mịn để đếm có thể được thực hiện hiệu quả hơn bằng cách nào?
- A. Duyệt qua dãy và đếm riêng lẻ từng phần tử bằng cách tìm kiếm nó trong toàn bộ dãy.
- B. Bỏ qua các phần tử xuất hiện nhiều hơn một lần.
- C. Duyệt qua dãy một lần, đếm số lần xuất hiện liên tiếp của các phần tử giống nhau.
- D. Chỉ đếm số lần lặp của phần tử đầu tiên.
Câu 23: Bạn đang làm mịn dần bài toán kiểm tra hoán vị và đã đến bước kiểm tra xem tất cả các số từ 1 đến n có mặt trong dãy A hay không. Nếu bạn sử dụng một mảng boolean `present` có kích thước n+1, được khởi tạo là `False`, để đánh dấu sự có mặt của các số. Khi duyệt dãy A, bạn gặp một phần tử `x` và thấy `present[x]` đã là `True`. Điều này cho biết điều gì?
- A. Số `x` là số duy nhất trong dãy.
- B. Số `x` nằm ngoài phạm vi từ 1 đến n.
- C. Dãy A là hoán vị của dãy từ 1 đến n.
- D. Số `x` bị lặp lại trong dãy A.
Câu 24: Khi kiểm tra xâu đối xứng "madam", các cặp ký tự nào sẽ được so sánh theo thứ tự trong quá trình làm mịn dần?
- A. ("m", "m"), sau đó ("a", "a").
- B. ("m", "a"), sau đó ("a", "d").
- C. Chỉ so sánh ("m", "m").
- D. So sánh tất cả các ký tự với ký tự ở giữa ("d").
Câu 25: Trong bài toán đếm số lần lặp, giả sử dãy A là [10, 20, 10, 30, 20]. Sau khi đếm xong, kết quả lưu trữ trong danh sách/từ điển phụ theo phương pháp làm mịn dần sẽ có dạng nào?
- A. [2, 2, 1]
- B. [10, 20, 10, 30, 20]
- C. Một cấu trúc cho biết: 10 xuất hiện 2 lần, 20 xuất hiện 2 lần, 30 xuất hiện 1 lần.
- D. [10, 10, 20, 20, 30]
Câu 26: Khi thiết kế chương trình theo phương pháp làm mịn dần, việc đặt tên cho các hàm con hoặc mô đun con nên tuân theo nguyên tắc nào?
- A. Phản ánh rõ ràng chức năng hoặc nhiệm vụ mà hàm/mô đun đó thực hiện.
- B. Càng ngắn gọn càng tốt, không cần ý nghĩa.
- C. Sử dụng các ký tự đặc biệt để phân biệt.
- D. Đặt tên giống với tên biến toàn cục liên quan.
Câu 27: Giả sử bạn cần kiểm tra xem một dãy số A có phải là hoán vị của dãy từ 1 đến n hay không. Dãy A là [1, 2, 2] và n=3. Theo phương pháp làm mịn dần, bước kiểm tra nào sẽ phát hiện ra rằng A không phải là hoán vị?
- A. Kiểm tra độ dài của dãy.
- B. Kiểm tra xem tất cả các phần tử có nằm trong phạm vi từ 1 đến n.
- C. Kiểm tra xem mỗi số từ 1 đến n có xuất hiện đúng một lần.
- D. Kiểm tra phần tử đầu tiên của dãy.
Câu 28: Khi kiểm tra xâu đối xứng "hello". Theo phương pháp làm mịn dần, quá trình so sánh các cặp ký tự từ hai đầu vào sẽ dừng lại khi nào và với kết luận gì?
- A. Sau khi so sánh tất cả các cặp, kết luận là đối xứng.
- B. Khi gặp cặp ký tự đối xứng đầu tiên khác nhau ("h" và "o"), kết luận là không đối xứng.
- C. Khi gặp ký tự ở giữa ("l"), kết luận là đối xứng.
- D. Khi so sánh ("e" và "l"), kết luận là không đối xứng.
Câu 29: Giả sử bạn đang làm mịn dần bài toán đếm số lần lặp và đã có danh sách kết quả đếm cho từng phần tử duy nhất. Bước làm mịn tiếp theo có thể là gì nếu yêu cầu chỉ cần liệt kê các phần tử xuất hiện nhiều hơn k lần?
- A. Đếm lại số lần lặp từ đầu.
- B. Xóa các phần tử xuất hiện ít hơn k lần khỏi danh sách gốc.
- C. Sắp xếp danh sách gốc theo thứ tự tăng dần.
- D. Duyệt qua danh sách kết quả đếm và chọn ra các phần tử có số lần đếm lớn hơn k.
Câu 30: Phương pháp làm mịn dần đặc biệt hữu ích cho các bài toán có tính chất nào?
- A. Bài toán phức tạp, có thể phân rã thành nhiều bài toán con.
- B. Bài toán chỉ có một bước giải duy nhất.
- C. Bài toán yêu cầu tốc độ xử lý cực cao ngay từ đầu.
- D. Bài toán không cần kiểm thử trước khi hoàn thành.