Please enable JavaScript.
Coggle requires JavaScript to display documents.
Bài 8: Lặp với số lần chưa biết trước* - Coggle Diagram
Bài 8: Lặp với số lần chưa biết trước*
1.Lệnh lặp so với số lần chưa biết trước
VD 1
Nếu cộng lần lượt n số tự nhiên đầu tiên (n = 1, 2, 3,...), cần cộng bao nhiêu số tự nhiên đầu tiên để ta nhận được tổng Tn nhỏ nhất lớn hơn 1000?
Điều kiện: Khi tổng Tn nhỏ nhất lớn hơn 1000 thì kết thúc hoạt động lặp
Mô tả thuật toán bằng liệt kê:
Bước 1. S ← 0, n ← 0
Bước 2. Nếu S ≤ 1000, n ← n + 1; ngược lại chuyển tới Bước 4
Bước 3. S ← S + n và quay lại Bước 2
Bước 4. In kết quả: S và n là số tự nhiên nhỏ nhất sao cho S > 1000. Kết thúc thuật toán
Để viết chương trình chỉ dẫn máy tính thực hiện các hoạt động lặp mà chưa xác định trước đc số lần lặp,ta có thể sử dụng câu lệnh có dạng lặp với số lần chưa xác định
vd 2:
Nếu chạy chương trình này(trang 65,vd2),ta sẽ nhận đc kết quả là n=334 (và sai số là 0.00299).Thay điều kiện 'sai_so=0.003'lần lượt bằng các điều kiện 'sai_so=0.002'và 'sai_so=0.001',ta nhận đc kết quả n=501 và n=1001.Có thể kiểm tra các kết quả này bằng 1 phép chia đơn giản
VD 3:Chương trình dưới đây thể hiện thuật toán tính só n trong vd 1:(hình sgk trang 65,vd 3)
nếu chạy chương trình này ta sẽ nhận đc n=45 và tổng đầu tiên lớn hơn 1000 là 1035
VD4: để viết chương trình tính tổng T= 1+ 1/2+1/3+...+1/100 ta có thể sử dụng lệnh lặp với số lần lặp cho trước
for...do
Lặp vô hạn lần - Lỗi lập trình cần tránh
cần tránh tạo vòng lặp không bao giờ kết thúc
khi thực hiện vòng lặp, giá trị các biến trong
điều kiện
của câu lệnh phải được thay đổi để sớm hay muộn giá trị của
điều kiện
được chuyển
đúng
sang
sai
Không
rơi
vào những
vòng lặp vô tân
Trong các ví dụ 2, 3, 4 sau mỗi vòng lặp giá trị của các biến
x, S, i
thay đổi
(x
giảm đi, còn
S
và
i
tăng lên
)
làm cho giá trị của điềm kiện
(x>=sai_so
ở ví dụ 2;
S<= 1000
ở ví dụ 3;
i<100
ở ví dụ 4
)
sẽ buộc phải thay đổi khi
x
đủ nhỏ, còn
s,i
đủ lớn