Nội Dung Chính
Học xong bài này, em sẽ:
• Biết được cấu trúc lặp trong thuật toán là gì và khi nào trong thuật toán có cấu trúc lặp .
• Thể hiện được cấu trúc lặp khi biết và khi không biết số lần lặp cần làm.
1. Vòng lặp
Hoạt động
Bài toán Tổ của bạn Trung có bốn thành viên cùng sưu tầm tranh kêu gọi bảo vệ môi trường. Bạn Trung cần tính tổng số tranh cả tổ thu thập được, biết rằng tranh của các thành viên thu thập không trùng nhau. Thuật toán Đầu vào: Tổ có bốn bạn, mỗi bạn sưu tầm được một số bức tranh. Đầu ra: Tổng số tranh cả tổ sưu tầm được. Các bước của thuật toán: Bước 1. Cho giá trị của Tổng đang có là 0. Bước 2. Hỏi số tranh của một bạn (bạn thứ nhất), cộng thêm vào Tổng đang có. Bước 3. Hỏi số tranh của một bạn (bạn thứ hai), cộng thêm vào Tổng đang có. Bước 4. Hỏi số tranh của một bạn (bạn thứ ba), cộng thêm vào Tổng đang có. Bước 5. Hỏi số tranh của một bạn (bạn thứ tư), cộng thêm vào Tổng đang có. Bước 6. Thông báo giá trị của Tổng đang có là tổng số bức tranh cả tổ thu thập được. Em hãy trả lời các câu hỏi sau: 1) Thuật toán ở Hình 1b có đúng là thuật toán để giải bài toán nêu ở Hình 1a không? 2) Những thao tác nào ở Hình 1b được lặp đi lặp lại và được lặp bao nhiêu lần? |
Trong nhiều việc làm thường ngày và nhiều nhiệm vụ ta cần giải quyết, có những thao tác được thực hiện lặp đi lăp lại nhiều lần. Cần phải có cách mô tả ngắn gọn việc lặp đi lặp lại một hay nhiều thao tác trong một quy trình.
Khi có một (hay nhiều) thao tác được thực hiện lặp lại một số lần liên tiếp trong quá trình thực hiện thuật toán thì cần dùng cấu trúc lặp.
2. Biến đếm và thể hiện cấu trúc lặp khi biết trước số lần lặp
Trong quá trình thực hiện thuật toán mô tả Hình 1b, số tranh của một bạn và Tổng đang có có giá trị thay đổi. Hai đại lượng này là biến trong mô tả thuật toán.
Biến: đại lượng được đặt tên, dùng để lưu trữ giá trị và giá trị có thể thay đổi trong quá trình thực hiện thuật toán, chương trình.
Để thể hiện cấu trúc là khi biết trước số lần lặp ta cần dùng một biến để đếm số lần lặp, cũng gọi là biến đếm.
Giả sử dùng thuật toán cộng dồn (tương tự như thuật toán ở Hình 1b) để tính tổng số bức tranh sưu tầm được của lớp 6A gồm 35 học sinh. Có thể mô tả thuật toán đó như ở Hình 2, sử dụng biến đếm có giá trị là số tự nhiên. Biến đếm cho biết khi nào thì đã lặp đủ 35 lần thao tác cần lặp.
Thuật toán cộng dồn 1 (để tính tổng số tranh)
Đầu vào: Lớp 6A có 35 học sinh.
Số tranh sưu tầm được của mỗi học sinh lớp 6A trong trường.
Đầu ra: Tổng số bức tranh lớp 6A sưu tầm được.
Các bước của thuật toán:
Bước 1. Tổng đang có = 0
Bước 2. Lặp với đếm từ 1 đến 35:
a) Hỏi số tranh sưu tầm được của một bạn, gọi là số tranh của một bạn
b) Cộng thêm số tranh của một bạn vào Tổng đang có
Hết lặp
Bước 3. Thông báo: Đáp số cần tìm là Tổng đang có
Hình 2. Một thuật toán có cấu trúc lặp với số lần lặp biết trước
Trong cách mô tả trên, khi đếm là 1 thao tác a của Bước 2 được thực hiện rồi đến thao tác b, đây là lần thứ nhất hai thao tác này được thực hiện. Tiếp theo, đếm là 2, cũng hai thao tác a và b được thực hiện tuần tự... Cứ như vậy cho đến khi đếm là 35 thì hai thao tác này được thực hiện lần cuối trong cấu trúc lặp đó.
Cần phải có từ khóa "Hết lặp" để đánh dấu những thao tác nào sẽ được lặp. Sau khi kết thúc vòng lặp, ta trở lại thực hiện tuần tự mỗi bước một lần. Mô tả thuật toán ở Hình 2 trên đây đã sử dụng mẫu A (Hình 3).
Chú ý: Các thao tác trong vòng lặp được thực hiện tuần tự theo trình tự liệt kê.
Hình 3. Mẫu cấu trúc lặp biết trước số lần lặp
3. Thể hiện cấu trúc lặp khi không biết trước số lần lặp
Có những trường hợp không thể biết trước số lần lập cần làm. Chẳng hạn trong ví dụ trên, có thể không biết trước bao nhiêu bạn có tranh sưu tầm. Để tính tổng số tranh của lớp 6A, vẫn có thể dùng được cách cộng dồn, tuy nhiên ta chỉ hỏi số tranh của những bạn đã sưu tầm. Rõ ràng, hai thao tác lặp chỉ được thực hiện với điều kiện chưa hỏi hết những bạn sưu tầm tranh.
Để thể hiện cấu trúc lặp khi không biết trước số lần lặp cần làm, ta dùng mẫu B (Hình 4). Điểm cần chú ý duy nhất là cần xác định điều kiện thực hiện các thao tác trong phòng lặp hay còn gọi là điều kiện lặp.
Hình 4. Mẫu cấu trúc lặp không biết trước số lần lặp
Ta viết lại mô tả thuật toán cộng dồn trong trường hợp không biết trước danh sách sưu tầm tranh có bao nhiêu bạn, điều kiện lặp trong tình huống này là: còn bạn sưu tầm tranh chưa được hỏi về số tranh (Hình 5).
Thuật toán cộng dồn 2 (tính tổng số tranh, không biết có bao nhiêu bạn sưu tầm tranh)
Đầu vào: Số tranh của mỗi bảng sưu tầm tranh.
Đầu ra: Tổng số bức tranh học sinh lớp 6A sưu tầm được.
Các bước của thuật toán:
Bước 1. Tổng đang có = 0
Bước 2. Lặp khi chưa hỏi hết học sinh sưu tầm tranh:
a) Hỏi số tranh sưu tầm được của một bạn, gọi là số tranh của một bạn
b) Cộng thêm số tranh của một bạn vào Tổng đang có
Hết lặp
Bước 3. Thông báo: Đáp số cần tìm là Tổng đang có
Hình 5. Một thuật toán có cấu trúc lặp không biết trước số lần lặp
Luyện tập
Bài 1. Cho trước một dãy số có 20 số nguyên. Nhiệm vụ được giao: Cần thông báo lần lượt bình phương của mỗi số nguyên trong dãy đã cho. Em hãy mô tả thuật toán cho nhiệm vụ đó.
Bài 2. Em hãy mô tả thuật toán tìm tổng các số tự nhiên liên tiếp bắt đầu từ số 1, đến khi lần đầu tiên nhận được tổng số lớn hơn 500 thì dừng lại và thông báo tổng số đó.
Vận dụng
Một robot có bút trên người (Hình 6), có khả năng nhấc bút lên và hạ bút xuống mặt giấy để vẽ. Robot vẽ trên giấy bằng cách di chuyển khi bút đang hạ xuống (đầu bút chạm mặt giấy). Em hãy mô tả thuật toán để robot này vẽ được một hình vuông có độ dài cạnh là a cm.
Hình 6. Một robot có bút vẽ
Biết rằng robot hiểu một số lệnh sau đây:
- Nhấc bút: nhấc thẳng bút lên để đầu bút không chạm mặt giấy.
- Hạ bút: hạ bút xuống thẳng đứng để đầu bút chạm mặt giấy.
- Di chuyển (d): robot đi thẳng hướng trước mặt một đoạn d cm.
- Quay phải (g): robot đứng tại chỗ quay người sang phải g độ, đầu bút không di chuyển.
Câu hỏi tự kiểm tra
Trong các câu sau, câu nào đúng?
1) Đầu vào của bài toàn nhiều chỗ giống nhau sẽ yêu cầu thuật toán có cấu trúc lặp.
2) Có cấu trúc lặp trong thuật toán khi mô tả thuật toán thấy có một loạt thao tác kế tiếp nhau được lặp lại.
3) Trong mẫu cấu trúc "Lặp khi <điều kiện lặp> được thỏa mãn..." thao tác lặp được thực hiện ít nhất một lần .
4) Cấu trúc lặp luôn kết thúc với dấu hiệu "Hết lặp".
TÓM TẮT BÀI HỌC* Khi có một loạt thao tác được lặp lại giống nhau thì cần dùng cấu trúc lặp. * Khi biết số lần lặp, thể hiện cấu trúc lặp có dùng biến để đếm số lần lặp. * Khi không biết trước số lần lặp, thể hiện cấu trúc lặp có dùng điều kiện lặp. |
Bình Luận
Để Lại Bình Luận Của Bạn