CHỦ ĐỀ 9
LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC
Nhận biết thế nào là lệnh lặp với số lần chưa biết trước?
Câu lệnh lặp while…do hoạt động như thế nào?
Khởi Động
Bài toán: viết chương trình thể hiện những bước lệnh điều khiển robot thu hoạch củ cải theo các yêu cầu.
TH1: Ra lệnh cho robot nhổ đủ 100 củ cải thì dừng.
TH2: Ra lệnh cho robot nhổ củ cải cho đến khi hết luống thì dừng.
1
100
begin
end;
?
Không thể xác định giá trị cuối
Làm thế nào để lập trình với vòng lặp có số lần lặp chưa biết trước?
Khám phá
 
Nhận biết bài toán lặp với số lần chưa biết trước
Cách viết và sử dụng vòng lặp while...do
1. Nhận biết bài toán lặp với số lần chưa biết trước
Bước 1. Khởi tạo i  0.
Bước 2. Nhập giá trị biến het_luong là ‘T’ hoặc ‘F’. Bước 3. Kiểm tra điều kiện het_luong = ‘F’
Bước 3.1: Nếu đúng thì qua bước 4.
Bước 3.2: Nếu sai thì kết thúc.
Bước 4. i  i + 1.
Bước 5.
Bước 5.1: Tiến 1 bước.
Bước 5.2: Nhổ củ cải thứ i. Quay lại bước 2.
Hoạt động nhổ củ cải dừng lại khi:
Đây là cấu trúc lặp với số lần:
 Biết trước  Không biết trước

het_luong = ‘T’
1. Nhận biết bài toán lặp với số lần biết trước
Đối với một bài toán lặp, nếu em không thể biết trước số lần lặp, thì đó là bài toán lặp với số lần chưa biết trước. Khi đó, em cần biết được hoạt động lặp sẽ dừng lại khi nào.
Ví dụ 1: Chạy quanh sân trường đủ 2 vòng thì nghỉ
2 vòng
đã chạy đủ 2 vòng
Chạy bao nhiêu vòng:
b) Điều kiện dừng:
 Đây là bài toán lặp với số lần biết trước.
Ví dụ 2: Chạy quanh sân trường nhiều vòng cho đến khi mệt thì nghỉ
Chưa biết trước
mệt
Chạy bao nhiêu vòng:
b) Điều kiện dừng:
 Đây là bài toán lặp với số lần chưa biết trước.
Ví dụ 3: Gieo hai hạt xí ngầu cho đến khi được hai mặt có cùng số nút
Chưa biết trước
Khi gieo được hai mặt có cùng số nút
- Phải gieo bao nhiêu lần?
- Điều kiện dừng?
 Đây là bài toán lặp với số lần
chưa biết trước
2. Cách viết và sử dụng vòng lặp while ... do
While <điều kiện> do ;
Pascal thể hiện cấu trúc lặp với số lần lặp chưa biết trước bằng câu lệnh while…do có dạng như sau:
Trong đó:
while, do là các từ khóa
<điều kiện> thường là phép so sánh
có thể là câu lệnh đơn hay câu lệnh ghép.
Câu lệnh lặp này được thực hiện như sau:
Bước 1. Kiểm tra điều kiện.
Bước 2. Trong khi điều kiện ĐÚNG, thì thực hiện câu lệnh và quay lại bước 1. Ngược lại, câu lệnh sẽ bị bỏ qua và việc thực hiện lệnh lặp kết thúc
Ví dụ 1: Chương trình sau kiểm tra trong khi chưa hết luống thì tiến 1 bước và nhổ củ cải.
điều kiện

Ví dụ 2: Mỗi ngày, Thỏ con đều lì xì cho heo tối thiểu là 1 xu, tối đa là 10 xu
Xác định bài toán:
INPUT: ..................................................
OUTPUT: ............................................
sx
S
Dựa vào sơ đồ khối, em hãy trả lời các câu hỏi:
a) Thuật toán có cấu trúc lặp không?
b) Hoạt động chính nào được lặp?
c) Lặp bao nhiêu lần? Không biết trước
d) Điều kiện dừng?
Đây là cấu trúc lặp với số lần?
Trải nghiệm

Em đã hiểu rõ về câu lệnh while ... do chưa?
Trò chơi ném vòng
Giúp An sửa lỗi chương trình
1. Em đã hiểu rõ về câu lệnh while...do chưa?
Đoạn chương trình thứ 1
1. Em đã hiểu rõ về câu lệnh while...do chưa?
Đoạn chương trình thứ 2
S = 0
Đúng
Đúng
i = 3, S = 6
6 ≤ 10  Đúng
i = 4, S = 10
10 ≤ 10  Đúng
i = 5, S = 15
15
5
1. Em đã hiểu rõ về câu lệnh while...do chưa?
Đoạn chương trình thứ 3
m = 1
P = 1
Đúng
m = 3, P = 6
6 ≤ 20  Đúng
m = 4, P = 24
24 ≤ 20  Sai
3
1 * 2 * 3 * ...
cho đến khi
P >20 thì dừng
1. Em đã hiểu rõ về câu lệnh while...do chưa?
Đoạn chương trình thứ 4
a = 5
2. Trò chơi ném vòng
i  i + 1
diem  diem + 2
het_vong? (T/F)
het_vong = ‘F’
i  0
diem  0
diem
2. Trò chơi ném vòng
i:= 0;
diem:= 0;
readln(het_vong);
i + 1
diem + 2
diem
3. Giúp An sửa lỗi chương trình
begin
end;
Ghi nhớ
while...do là câu lệnh lặp với số lần chưa biết trước trong Pascal.
Cú pháp: while <điều kiện> do ;
Để vòng lặp không lặp vô hạn thì khối lệnh sau do thường phải có ít nhất một câu lệnh nào đó gây ảnh hưởng đến kết quả của điều kiện.
nguon VI OLET