TRƯỜNG THCS NGUYỄN BỈNH KHIÊM
KIỂM TRA BÀI CŨ
Cú pháp:
For := to do
;
Khi sử dụng lệnh lặp For… to…do. Số lần lặp sẽ được tính như thế nào?
Số lần lặp = - +1
Các em hãy quan sát
VD1: Viết chương trình tính tổng các số tự nhiên từ 1 đến 100
S = 1 + 2 + 3 + . . .+100
Lặp với số lần biết trước, sử dụng câu lệnh lặp For…to…do để viết chương trình
VD2: Viết chương trình tính tổng n số tự nhiên (Tn) đầu tiên để ta nhận được tổng Tn nhỏ nhất lớn hơn 1000?
Lặp với số lần chưa biết trước, sử dụng câu lệnh gì để viết chương trình?
Theo em phép cộng trên có biết trước số lần lặp không? Có sử dụng lệnh lặp for…to…do được không?
Không thể biết trước số lần lặp và không sử dụng lệnh For … to…do được.
Theo em khi sử dụng lệnh lặp để viết chương trình trên thì phép cộng được lặp lại mấy lần?
Lặp 100 lần
Tiết 47+48
BÀI 8
Lặp với số lần chưa biết trước
100%
Nội dung
NỘI DUNG
1. C�c ho?t d?ng l?p v?i s? l?n chua bi?t tru?c
Các em hãy cho thêm những ví dụ về hoạt động lặp với số lần chưa biết trước?
 Tôi phải nhập dữ liệu vào máy tính cho đến khi nhập xong.
 Cô ấy phải đi bộ như vậy cho đến khi về tới nhà.
 Nam làm bài tập cho đến khi làm xong.
1. C�c ho?t d?ng l?p v?i s? l?n chua bi?t tru?c
Một ngày, Long quyết định cứ 10 phút gọi điện một lần cho Trang cho đến khi nào có người nhấc máy thì thôi.
Ví dụ 1:
Hoạt động lặp: Gọi điện
Kết thúc hoạt động lặp: Có người nhấc máy thì thôi.
Hoạt động lặp là hoạt động gì ? Khi nào thì kết thúc hoạt động lặp?
Số lần lặp đã được biết trước chưa?
1. C�c ho?t d?ng l?p v?i s? l?n chua bi?t tru?c
Ví dụ 2:
Điều kiện như thế nào thì kết thúc hoạt động lặp?
Đ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
Nếu cộng lần lượt n số tự nhiên đầu tiên (n=1,2,3,…). Ta sẽ được kết quả:
1. C�c ho?t d?ng l?p v?i s? l?n chua bi?t tru?c
Phân tích bài toán:
T0:=0; n:=0;
1
T1 = 1
Đúng
2
T2 = 1 + 2
Đúng
Đúng



?
Tn = 1 + 2 + 3 + … +? (Sao cho Tn nhỏ nhất lớn hơn 1000)
Sai, kết thúc việc tính tổng
3
T3 = 1 + 2 + 3
1. C�c ho?t d?ng l?p v?i s? l?n chua bi?t tru?c
Kí hiệu S là tổng cần tìm
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 b4.
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.
Các hoạt động lặp với số lần chưa biết trước phụ thuộc vào cái gì và chỉ dừng lại khi nào?
* Có thể diễn tả bài toán trên bằng sơ đồ như sau:
Việc lặp lại một nhóm hoạt động với số lần chưa xác định trước phụ thuộc vào một điều kiện cụ thể được thỏa mãn và chỉ dừng lại khi điều kiện không thỏa mãn
1. Các hoạt động lặp với số lần chưa biết trước:
Để chỉ dẫn máy tính thực hiện các hoạt động lặp trên, ta có thể sử dụng câu lệnh có dạng: Lặp với số lần chưa biết trước
TQ
2. Ví d? v? l?nh l?p v?i s? l?n chua bi?t tru?c
Cú pháp:
While <điều kiện> do ;
 Điều kiện: thường là một phép so sánh.
 Câu lệnh: có thể là câu lệnh đơn giản hay câu lệnh ghép.
do
while
Trong đó
 While, do: là các từ khóa.
Quan sát sơ đồ khối, hãy cho biết cách thực hiện câu lệnh lặp?
Chừng nào điều kiện còn đúng thì câu lệnh còn thực hiện.

Bước 1 : Kiểm tra điều kiện.
Bước 2 : - Nếu điều kiện sai, câu lệnh sẽ bị bỏ qua và việc thực hiện lệnh lặp kết thúc.
- Nếu điều kiện đúng, thực hiện câu lệnh và quay lại bước 1.
2. Ví d? v? l?nh l?p v?i s? l?n chua bi?t tru?c
2. Ví d? v? l?nh l?p v?i s? l?n chua bi?t tru?c
VD 4: Dùng câu lệnh lặp While … do để viết chương trình thể hiện thuật toán trong Ví dụ 2 (Sgk)
var S,n: integer;
Begin
S:=0; n:=0;
while S<=1000 do
begin
n:=n+1;
S:=S+n ;
end;
write(‘Tong S= ’,S,‘ va ’,n,’ la so tu nhien nho nhat sao cho S>1000’);
Readln;
End.
Tong S= 1035 va 45 la so tu nhien nho nhat sao cho S>1000
Câu lệnh ghép
Thực Hành
Viết chương trình tính tổng của N số tự nhiên đầu tiên. (Sử dụng lệnh While…do)
S = 1 + 2 + 3 + ∙∙∙ + N
Thực Hành
Viết chương trình tính tổng của N số tự nhiên đầu tiên. (Sử dụng lệnh While…do)
S = 1 + 2 + 3 + ∙∙∙ + N
Chương trình sử dụng lệnh For…to…do:
Var i,N:byte; S:integer;
Begin S:=0;
Write(‘N=‘);readln(N);
for i:=1 to N do S:=S+i;
Writeln(‘S=‘, S);
readln
End.
Var i, N: byte;
S:integer;
Begin
i:=1;S:=0;
Write(‘N=‘);readln(N);
while i<=N do
begin
S:=S+i; i:=i+1;
end;
Writeln(‘S=‘, S);
Readln;
End.
Nhận xét : Qua ví dụ này cho thấy rằng chúng ta có thể sử dụng câu lệnh while…do thay cho câu lệnh for…do.
Chúc các em học tốt !
nguon VI OLET