Chào mừng quý thầy cô và các bạn học sinh đến với tiết học hôm nay.
Kiểm tra bài cũ
1. Hãy nêu cú pháp câu lệnh lặp For…Do?
Cú pháp: For:= to do ;

Trong đó:
for, to, do là các từ khóa
biến đếm là biến kiểu nguyên, giá trị đầu và giá trị cuối là các giá trị nguyên.
câu lệnh lặp sẽ thực hiện câu lệnh nhiều lần, mỗi lần, là một vòng lặp là biết trước và bằng
giá trị cuối – giá trị đầu + 1
Khi thực hiện, ban đầu biến đếm sẽ nhận giá trị là giá trị đầu, sau mỗi vòng lặp, biến đếm được tự động tăng thêm một đơn vị cho đến khi bằng giá trị cuối.
Hãy quan sát:
Bài 1:
S = 1 + 2 + 3 + . . .+100
Bài 2:
S = 1 + 2 + 3 + . . .
Hãy cho biết bài 1 số vònglặp là bao nhiêu?
Hãy cho biết bài 2 số vòng lặp là bao nhiêu?
. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . … … . . .
Lặp 100 lần
Không biết được!
Lặp với số lần biết trước
Lặp với số lần chưa biết trước
Bài 8:
LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC
Tình
huống 1
Tớ phải bị phạt như vậy đến khi nào? Hic . hic .
Làm sao mình biết được?
Tình
huống 2
Mèo ơi, khi nào chúng mình có thể dừng?
Khi mẹ đi chợ về.
Khi nào thì mẹ về?
Mèo đâu biết. Chúng ta cứ chơi tiếp đi.
Tình
huống 3
Còn tớ phải thổi sáo và nhảy cho tới bao giờ ?
Làm sao mình biết được?
Đây là các hoạt động lặp
với số lần chưa biết trước
Baøi 8:
LAËP VÔÙI SOÁ LAÀN CHÖA BIEÁT TRÖÔÙC
1. C�c ho?t d?ng l?p v?i s? l?n chua bi?t tru?c
Một ngày khác, 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.
Chưa thể biết trước được. Điều kiện để kết thúc hoạt động lặp đó là có người nhấc máy.
VD1(sgk):
Baøi 8:
LAËP VÔÙI SOÁ LAÀN CHÖA BIEÁT TRÖÔÙC
1. C�c ho?t d?ng l?p v?i s? l?n chua bi?t tru?c
VD2(sgk):
T2 = 1 + 2
T1 = 1
T3 = 1 + 2 + 3
… tăng dần
Cần cộng bao nhiêu số tự nhiên để ta nhận được tổng Tn nhỏ nhất lớn hơn 1000?
Đ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
Baøi 8:
LAËP VÔÙI SOÁ LAÀN CHÖA BIEÁT TRÖÔÙC
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:
1
T1 = 1
Đúng
2
T2 = 1 + 2
Đúng
3
T3 = 1 + 2 + 3
Đú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
Baøi 8:
LAËP VÔÙI SOÁ LAÀN CHÖA BIEÁT TRÖÔÙC
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 và ta có thuật toán như sau:
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.
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:
2. Ví dụ về lệnh lặp với số lần chưa biết trước
Cú pháp:
While <điều kiện> do ;
Trong ñoù:
While, do: töø khoaù.
: laø caâu leänh ñôn hoaëc caâu leänh gheùp.
< ñieàu kieän>: laø pheùp so saùnh (<, >, =, <=, >=,<>)
Bieán ñeám: kieåu nguyeân, kieåu thöïc.
Câu lệnh: là môt câu lệnh trong Pascal (có thể là câu lệnh đơn giản hay câu lệnh ghép)


Baøi 8:
LAËP VÔÙI SOÁ LAÀN CHÖA BIEÁT TRÖÔÙC
Quy trình:
Sơ đồ khối:
Điều kiện
Câu lệnh
Sai
Đúng
? Nếu điều kiện đúng, thực hiện câu lệnh và quay lại bước 1.
?B1: Kiểm tra điều kiện.

? Nếu điều kiện sai, câu lệnh bỏ qua.


?B2:
Baøi 8:
LAËP VÔÙI SOÁ LAÀN CHÖA BIEÁT TRÖÔÙC
2. Ví dụ về lệnh lặp với số lần chưa biết trước
Baøi 8:
LAËP VÔÙI SOÁ LAÀN CHÖA BIEÁT TRÖÔÙC
2. Ví d? v? l?nh l?p v?i s? l?n chua bi?t tru?c
VD1: While a<=b do a:=a+1;
Trong đó :  While, do là các từ khóa.
 Điều kiện là a<=b (chứa phép so sánh).
 Câu lệnh là a:=a+1 (câu lệnh đơn).
VD2: While a>b do
Begin write(‘a>b’); a:=a-1; End;
Trong đó :  While, do là các từ khóa.
 Điều kiện là a>b (chứa phép so sánh).
 Câu lệnh là Write(‘a>b’) và a:=a-1 (câu lệnh ghép).
Baøi 8:
LAËP VÔÙI SOÁ LAÀN CHÖA BIEÁT TRÖÔÙC
2. Ví d? v? l?nh l?p v?i s? l?n chua bi?t tru?c
VD: 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 nha sao cho S>1000
Lưu ý:
1.Nếu viết chương trình thì điều kiện trong câu lệnh While … do phải đúng.
2.Nếu đề cho đều kiện trước thì điều kiện trong câu lệnh While … do phải ngược với điều kiện đề đã cho.

Baøi 8:
LAËP VÔÙI SOÁ LAÀN CHÖA BIEÁT TRÖÔÙC
Củng cố
Hãy chỉ ra các lỗi trong các câu lệnh sau:




While S <= 10 do
begin
n:= n + 1;
S := S + n;
end;
While S <= 10 do n:= n + 1; S := S + n;
2) While i <=x; do write(`Gia tri cua i la:`);
1) While X =10 do X = X + 5;
3) S:= 0; n := 0;


Về nhà học bài cũ và làm bài tập 1, 2, 5 SGK/71
nguon VI OLET