Bài 26 Phương pháp làm mịn dần trong thiết kế chương trình
Lớp 11Tin Học10 câu hỏiBài tập
Phần 1
Câu 1
(Câu 26.1 trang 79 SBT Tin học 11) Mệnh đề nào sau đây mô tả đúng về phương pháp thiết kế làm mịn dần?
AThiết kế được chia làm nhiều bước, bước sau thường là chi tiết hơn, làm mịn hơn một bước ở trước đó.
BThiết kế được chia làm nhiều bước, các bước đều độc lập hoàn toàn với nhau.
CThiết kế được chia làm nhiều bước, bước sau thường là tổ hợp, kết hợp các kết quả của các bước trước đó.
DThiết kế được chia làm nhiều bước, mỗi bước sẽ tương ứng với một hàm hoặc chương trình con nào đó của bước trước.
Phần 2
Câu 1
(Câu 26.2 trang 79 SBT Tin học 11) Tìm hiểu tên gọi khác của phương pháp thiết kế làm mịn dần.
a)Phương pháp thiết kế làm mịn dần còn được gọi là phương pháp thiết kế từ trên xuống.
b)Phương pháp thiết kế từ trên xuống thường bắt đầu từ mô tả tổng quát rồi dần chi tiết hoá.
c)Phương pháp làm mịn dần luôn bắt đầu bằng cách viết ngay toàn bộ câu lệnh Python cụ thể, không cần phân tích bài toán.
d)Làm mịn dần giúp người thiết kế chương trình chia nhỏ và chi tiết hoá dần các công việc cần thực hiện.
Câu 2
(Câu 26.3 trang 79 SBT Tin học 11) Tìm hiểu quá trình phân rã bài toán trong phương pháp làm mịn dần.
a)Phương pháp làm mịn dần chia bài toán gốc thành các bài toán con.
b)Mỗi bài toán con có thể tiếp tục được phân tích thành các bài toán hoặc vấn đề nhỏ hơn.
c)Quá trình phân rã dừng lại khi các bài toán con đủ đơn giản để có thể giải bằng các câu lệnh lập trình.
d)Quá trình thiết kế kết thúc ngay sau khi nêu tên bài toán, không cần giải quyết các bài toán con.
Câu 3
(Câu 26.4 trang 79 SBT Tin học 11) Với một bài toán, xét khả năng có nhiều cách thiết kế làm mịn dần khác nhau.
a)Với một bài toán, có thể có nhiều cách thiết kế làm mịn dần khác nhau.
b)Cách phân rã bài toán phụ thuộc vào ý tưởng, kinh nghiệm và cách tiếp cận của người thiết kế.
c)Mọi người thiết kế chương trình bắt buộc phải chia bài toán thành các bước hoàn toàn giống nhau.
d)Miễn là các bước phân rã hợp lí và cuối cùng giải quyết được bài toán thì đó có thể là một cách thiết kế chấp nhận được.
Câu 4
(Câu 26.5 trang 79 SBT Tin học 11) Trình bày thuật toán tìm kiếm tuần tự theo phương pháp làm mịn dần.
a)Bài toán có thể phát biểu là: cho mảng A và giá trị K, cần tìm một phần tử của A có giá trị bằng K.
b)Ý tưởng ban đầu là duyệt các phần tử của mảng A từ trái sang phải.
c)Nếu đang duyệt đến chỉ số i và A[i] = K thì có thể dừng lại và trả về i.
d)Nếu không tìm thấy K trong mảng A thì thuật toán cần trả về 0 trong mọi trường hợp.
Câu 5
(Câu 26.5 trang 79 SBT Tin học 11) Chi tiết hoá thuật toán tìm kiếm tuần tự trong Python.
a)Có thể dùng vòng lặp for i in range(len(A)) để duyệt các chỉ số của mảng A.
b)Có thể dùng điều kiện if A[i] == K để kiểm tra phần tử đang xét có bằng K hay không.
c)Khi tìm thấy A[i] == K, thuật toán có thể return i.
d)Câu lệnh return -1 nên đặt bên trong vòng lặp ngay sau lần kiểm tra đầu tiên để kết luận không tìm thấy.
Câu 6
(Câu 26.6 trang 79 SBT Tin học 11) Trình bày thuật toán sắp xếp chọn theo phương pháp làm mịn dần.
a)Bài toán có thể phát biểu là: cho dãy A có n phần tử, cần sắp xếp dãy A theo thứ tự tăng dần.
b)Ý tưởng của sắp xếp chọn là với mỗi vị trí i, tìm phần tử nhỏ nhất trong phần dãy chưa sắp xếp rồi đổi chỗ với A[i].
c)Có thể dùng vòng lặp for i in range(n-1) để duyệt các vị trí cần đặt đúng phần tử.
d)Ở mỗi bước của sắp xếp chọn, chỉ cần đổi chỗ hai phần tử cạnh nhau nếu chúng chưa đúng thứ tự.
Câu 7
(Câu 26.6 trang 79 SBT Tin học 11) Chi tiết hoá thao tác tìm phần tử nhỏ nhất trong phần chưa sắp xếp của thuật toán sắp xếp chọn.
a)Có thể đặt min_idx = i để lưu vị trí phần tử nhỏ nhất tạm thời.
b)Có thể duyệt j từ i + 1 đến n - 1 để tìm phần tử nhỏ nhất trong đoạn còn lại.
c)Nếu A[j] < A[min_idx] thì cập nhật min_idx = j.
d)Sau khi tìm được min_idx, không cần đổi chỗ A[i] và A[min_idx] vì dãy đã tự động được sắp xếp.
Câu 8
(Câu 26.7 trang 79 SBT Tin học 11) Trình bày thuật toán sắp xếp nổi bọt theo phương pháp làm mịn dần.
a)Ý tưởng của sắp xếp nổi bọt là liên tục xét các cặp phần tử cạnh nhau và đổi chỗ nếu chúng chưa đúng thứ tự.
b)Với sắp xếp tăng dần, nếu A[j] > A[j+1] thì cần đổi chỗ A[j] và A[j+1].
c)Sau một lượt duyệt từ trái sang phải, phần tử lớn nhất trong đoạn đang xét được đưa dần về cuối đoạn.
d)Sắp xếp nổi bọt không cần so sánh các phần tử cạnh nhau.
Câu 9
(Câu 26.7 trang 79 SBT Tin học 11) Chi tiết hoá thuật toán sắp xếp nổi bọt trong Python.
a)Có thể dùng vòng lặp ngoài for i in range(n-1).
b)Có thể dùng vòng lặp trong for j in range(n-i-1) để duyệt phần chưa sắp xếp.
c)Nếu A[j] > A[j+1] thì thực hiện A[j], A[j+1] = A[j+1], A[j].
d)Ở mọi lượt lặp, vòng lặp trong luôn bắt buộc phải duyệt đến phần tử cuối cùng của dãy, kể cả các phần tử đã nằm đúng vị trí.