Sách bài tập Tin học 11 Bài 26 (Kết nối tri thức): Phương pháp làm mịn dần trong thiết kế chương trình
Với giải sách bài tập Tin học 11 Bài 26: Phương pháp làm mịn dần trong thiết kế chương trình sách Kết nối tri thức hay nhất, chi tiết sẽ giúp học sinh dễ dàng làm bài tập trong SBT Tin học 11 Bài 26.
Giải SBT Tin học 11 Bài 26: Phương pháp làm mịn dần trong thiết kế chương trình
D. Thiế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.
Lời giải:
Đáp án đúng là: B. Thiế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 đó.
Lời giải:
Khẳng định trên là đúng. Phương pháp thiết kế làm mịn dần chính là tên gọi khác của phương pháp thiết kế từ trên xuống.
Câu 26.3 trang 79 SBT Tin học 11: Phát biểu sau về phương pháp làm mịn dần là đúng hay sai?
Lời giải:
Phát biểu sau về phương pháp làm mịn dần là đúng.
Phương pháp thiết kế làm mịn dần sẽ chia bài toán gốc thành các bài toán con, mỗi bài toán con sẽ lại được phân tích và chia thành các bài toán/vấn đề con nhỏ hơn nữa. Quá trình phân rã thành các bài toán con đó sẽ còn tiếp tục cho đến khi nhận được bài toán đủ đơn giản để có thể giải ngay bằng các câu lệnh lập trình. Quá trình thiết kế đó sẽ kết thúc khi tất cả các bài toán con được giải quyết hoàn toàn.
Phát biểu trên là sai. Với một bài toán, chỉ có một phương pháp thiết kế làm mịn dần duy nhất.
Lời giải:
Một cách trình bày theo phương pháp làm mịn dần có thể như sau:
Bài toán: Cho trước mảng A (có n phần tử) và giá trị K. Cần tìm phần tử của A có giá trị bằng K. Nếu tìm thấy trả lại chỉ số của phần tử này (chỉ cần tìm một nghiệm), ngược lại trả về −1.
Bước 1. Thiết lập ý tưởng thiết kế ban đầu.
1 Duyệt các phần tử của mảng A từ trái sang phải.
2 Giả sử chỉ số đang duyệt là i, kiểm tra xem A[i] = K
hay không, nếu đúng thì dừng lại, trả về i.
3 Cuối cùng trả về -1.
Bước 2. Chi tiết hoá dòng 1 ở trên.
5 for i in range(len(A)):
Bước 3. Chi tiết hoá dòng 2 của ý tưởng thiết kế ban đầu.
7 if A[i] == K:
8
return i
Bước 4. Chi tiết hoá dòng 3 của ý tưởng thiết kế ban đầu.
return -1
Chương trình hoàn chỉnh:
def LinearSearch (A):
for i in range (A):
if A[i] == K:
return -1
return i
Lời giải:
Một cách trình bày theo phương pháp làm mịn dần có thể như sau:
Bài toán: Cho trước dãy A có n phần tử. Cần sắp xếp dãy A theo thứ tự tăng dần theo thuật toán chọn.
Bước 1. Phân tích và ý tưởng thiết kế ban đầu.
Ý tưởng ban đầu của thuật toán này như sau:
Với mỗi phần tử của dãy, cần thiết lập vị trí chính xác của vị trí này trong dãy sao cho phía bên trái vị trí này bao gồm các phần tử đã đứng đúng vị trí.
Để thực hiện được ý tưởng trên, cách làm ban đầu là chọn ra phần tử đúng đó và đổi chỗ cho phần tử tại vị trí hiện thời. Từ đó dẫn đến việc phân rã bài
toán như sau:
1 Duyệt chỉ số i từ đầu đến vị trí gần cuối.
2 Tìm phần tử bé nhất trong dãy các phần tử bên phải và
đổi chỗ với phần tử hiện thời.
Bước 2. Chi tiết hoá dòng 1 trong thiết kế trên.
for i in range(n-1):
Bước 3. Chi tiết hoá công việc tại dòng 2.
Để tìm được phần tử nhỏ nhất bên phải vị trí i và sau đó đổi chỗ cho vị trí i chúng ra sẽ tìm vị trí đó thông qua chỉ số. Kết quả của bước này như sau:
Lời giải:
Một cách trình bày theo phương pháp làm mịn dần có thể như sau:
Bài toán: Cho trước dãy A có n phần tử. Cần sắp xếp dãy A theo thứ tự tăng dần theo thuật toán nổi bọt.
Bước 1. Phân tích và ý tưởng thiết kế ban đầu.
Ý tưởng chính của thuật toán sắp xếp chèn là liên tục đổi chỗ hai phần tử cạnh nhau nếu chúng được sắp xếp không đúng, ví dụ nếu A[i] > A[i + 1] thì cần đổi chỗ hai phần tử này. Như vậy có thể thiết kế một ý tưởng như sau:
1 Lặp cho đến khi dãy ban đầu đã được sắp xếp đúng
2 Duyệt 1 lượt phần tử từ trái sang phải nếu 2 phần tử cạnh nhau sắp xếp không đúng chỗ thì đổi chỗ 2 phần tử này.
Bước 2. Chi tiết hoá công việc mô tả trong dòng lệnh 2 ở trên.
Ý tưởng ban đầu là cần duyệt phần tử từ thứ nhất đến phần tử gần cuối cùng, kiểm tra phần tử đang duyệt và phần tử sau đó, nếu sắp xếp không đúng thì đổi chỗ. Vậy có thể hình dung dòng lệnh 2 ở trên được thể hiện như sau: for j in range(n-1): # n là số phần tử của dãy.
nếu A[j] > A[j+1] thì đổi vị trí A[j] và A[j+1]
Quan sát kĩ hơn chúng ta thấy sau lệnh trên thì phần tử lớn nhất của dãy đã được di chuyển về cuối dãy, tức là phần tử này đã nằm đúng vị trí. Do đó trong vòng lặp tiếp theo thì không cần duyệt cả vòng lặp mà chỉ duyệt tới phần tử có chỉ số n − 3, tức là tại vòng duyệt tiếp theo chỉ cần thực hiện:
for j in range(n-2): # n là số phần tử của dãy.
nếu A[j] > A[j+1] thì đổi vị trí A[j] và A[j+1]
Tổng quát, ở vòng duyệt thứ k thì công việc tại dòng 2 ở trên có thể viết như sau:
1 for j in range(n-k): # n là số phần tử của dãy.
2 nếu A[j] > A[j+1] thì đổi vị trí A[j] và A[j+1]
Bước 3. Chúng ta quay lại chi tiết hoá dòng 1 của chương trình tại B1.
Theo cách phân tích của bước 2 thì tại dòng 1 chỉ cần lặp đúng n – 1 lần thì dãy sẽ được sắp xếp xong. Như vậy dòng 1 có thể biểu diễn bằng lệnh Python: for i in range(n - 1):
Với mỗi i ở vòng lặp trên thì số thứ tự lần lặp sẽ là i+1 (do vòng lặp trên bắt đầu từ 0), do đó phải thay k ở dòng phía dưới (xem B2) bằng i + 1. Như vậy chúng ta có:
1 for i in range(n-1):
2 for j in range(n-i-1):
3 Nếu A[j] > A[j+1] thì đổi chỗ A[j],A[j+1]
Bước 4. Cuối cùng chúng ta sẽ chi tiết hoá công việc tại dòng 3 của chương trình trên và thu được phiên bản hoàn chỉnh của thuật toán sắp xếp nổi bọt.
1 def bubbleSort (A)
2 n = len(A)
3 for i in range(n-1):
Xem thêm lời giải sách bài tập Tin học lớp 11 bộ sách Kết nối tri thức hay, chi tiết khá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
Bài 28: Thiết kế chương trình theo mô đun
Bài 29: Thực hành thiết kế chương trình theo mô đun
Xem thêm các chương trình khác:
- Soạn văn lớp 11 Kết nối tri thức - hay nhất
- Văn mẫu lớp 11 - Kết nối tri thức
- Tóm tắt tác phẩm Ngữ văn 11 – Kết nối tri thức
- Tác giả tác phẩm Ngữ văn 11 - Kết nối tri thức
- Giải SBT Ngữ văn 11 – Kết nối tri thức
- Bố cục tác phẩm Ngữ văn 11 – Kết nối tri thức
- Giải Chuyên đề học tập Ngữ văn 11 – Kết nối tri thức
- Nội dung chính tác phẩm Ngữ văn lớp 11 – Kết nối tri thức
- Soạn văn 11 Kết nối tri thức (ngắn nhất)
- Giải sgk Toán 11 – Kết nối tri thức
- Giải Chuyên đề học tập Toán 11 – Kết nối tri thức
- Lý thuyết Toán 11 - Kết nối tri thức
- Giải sbt Toán 11 – Kết nối tri thức
- Bài tập Tiếng Anh 11 Global success theo Unit có đáp án
- Giải sgk Tiếng Anh 11 – Global success
- Giải sbt Tiếng Anh 11 - Global Success
- Trọn bộ Từ vựng Tiếng Anh 11 Global success đầy đủ nhất
- Ngữ pháp Tiếng Anh 11 Global success
- Giải sgk Vật lí 11 – Kết nối tri thức
- Lý thuyết Vật lí 11 – Kết nối tri thức
- Giải sbt Vật lí 11 – Kết nối tri thức
- Giải Chuyên đề học tập Vật lí 11 – Kết nối tri thức
- Chuyên đề dạy thêm Vật lí 11 cả 3 sách (2024 có đáp án)
- Giải sgk Hóa học 11 – Kết nối tri thức
- Giải Chuyên đề học tập Hóa học 11 – Kết nối tri thức
- Lý thuyết Hóa 11 - Kết nối tri thức
- Giải sbt Hóa học 11 – Kết nối tri thức
- Chuyên đề dạy thêm Hóa 11 cả 3 sách (2024 có đáp án)
- Giải sgk Sinh học 11 – Kết nối tri thức
- Lý thuyết Sinh học 11 – Kết nối tri thức
- Giải Chuyên đề học tập Sinh học 11 – Kết nối tri thức
- Giải sbt Sinh học 11 – Kết nối tri thức
- Giải sgk Giáo dục Kinh tế và Pháp luật 11 – Kết nối tri thức
- Giải Chuyên đề học tập Kinh tế pháp luật 11 – Kết nối tri thức
- Lý thuyết Kinh tế pháp luật 11 – Kết nối tri thức
- Giải sbt Kinh tế pháp luật 11 – Kết nối tri thức
- Giải sgk Lịch sử 11 – Kết nối tri thức
- Giải Chuyên đề học tập Lịch sử 11 – Kết nối tri thức
- Lý thuyết Lịch sử 11 - Kết nối tri thức
- Giải sbt Lịch sử 11 – Kết nối tri thức
- Giải sgk Địa lí 11 – Kết nối tri thức
- Giải Chuyên đề học tập Địa lí 11 – Kết nối tri thức
- Lý thuyết Địa lí 11 - Kết nối tri thức
- Giải sbt Địa lí 11 – Kết nối tri thức
- Giải sgk Công nghệ 11 – Kết nối tri thức
- Lý thuyết Công nghệ 11 - Kết nối tri thức
- Giải sbt Công nghệ 11 – Kết nối tri thức
- Giải sgk Giáo dục quốc phòng an ninh 11 – Kết nối tri thức
- Lý thuyết Giáo dục quốc phòng 11 – Kết nối tri thức
- Giải sbt Giáo dục quốc phòng 11 – Kết nối tri thức
- Giải sgk Hoạt động trải nghiệm 11 – Kết nối tri thức