Bài 8:
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
NỘI DUNG
1. Các hoạt động lặp với số lần chưa biết trước
2. Ví dụ về lệnh lặp với số lần chưa biết trước
3. Lặp vơ hạn lần – Lỗi lập trình cần tránh
2
Bài 8:
LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC
1. Các hoạt động lặp với số lần chưa biết trước
Nam làm bài tập cho đến khi làm
xong.
Cô ấy phải đi bộ như vậy cho đến khi về tới
nhà.
Tơi phải nhập dữ liệu vào máy tính cho đến khi nhập xong.
Ho
Hoạạt đ
t độộng s
ng nào đ
ẽ kết thúc
ược
lkhi nào?
ặp lại?
1. Các hoạt động lặp với số lần chưa
biết
-
-
-
Các bạn học sinh nhặt rác ở
công viên.
Nam học từ vựng tiếng anh bằng cách
viết lại nhiều lần cho đến khi thuộc.
Các em hãy cho thêm những
Con quạ nhặt đá bỏ vào bình cho
về hotràn
ạt đra.
ộng lặp với
đếnví d
khiụnước
số lần chưa biết trước?
4
1. Các hoạt động lặp với số lần chưa biết
Ví dụ 2: Nếu cộng lần lượt n số tự nhiên đầu
tiên
(n=1,2,3,…), ta đ
ược các kết quả
T1 = 1
T2 = 1 + 2
T3 = 1 + 2 + 3
…...
tăng dần
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
u kiệ
ện nh
n: Khi t
Đi
ư thổếng Tn nh
nào thì ỏ
ất lớn hơ
knh
ết thúc ho
ạn 1000 thì k
t động lặp?ết
thúc hoạt động lặp
1. Các hoạt động lặp với số lần chưa biết
THUẬT TOÁN:
Kí hiệu S là tổng cần tìm, ta có thuật
Em hãy viết thuật tốn
toán sau:
cho ví dụ trên?
u
Bước 1: S 0; n 1;
u
Bước 2: Nếu S<= 1000,
S S+n;
ngược lại, chuyển tới bước 4;
u
Bước 3: n n+1 và quay lại bước 2;
u
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;
6
1. Các hoạt động lặp với số lần chưa biết
trướ
c:
Phân tích bài tốn:
n
1
2
3
…
?
Tổng Tn
T1 = 1
T2 = 1 + 2
T3 = 1 + 2 + 3
…
Tn = 1 + 2 + 3 + … +?
(Sao cho Tn nhỏ nhất
lớn hơn 1000)
Điều kiện Tn ≤ 1000
Đúng
Đúng
Đúng
…
Sai, kết thúc việc tính
tổng
S<=1000
Sai
Đúng
S ← S +n;
n ← n +1;
•
Việc thực hiện lặp lại các phép cộng trên với số
lần chưa biết trước phụ thuộc vào điều kiện gì?
8
Phép cộng chỉ dừng khi nào?
Bài 8:
LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC
2. Ví dụ về lệnh lặp với số lần chưa biết trước
VD1: Trong khi a bé hơn
hoặc bằng b thì a tăng
lên 1 đơn vị
While a<=b do
a:=a+1;
VD2: Trong khi a lớn
hơn b thì a giảm
xuống 1 đơn vị, b tăng
lên 2 đơn vị.
Trong đó : While, do: là các từ khóa.
While a>b do
Begin
a:=a1;
b:=b+2;
End;
Điều kiện: là a>b (chứa phép so sánh).
Câu lệnh: câu lệnh đơn hoặc câu lênh ghe
̣
́p.
Bài 8:
LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC
2. Ví dụ về lệnh lặp với số lần chưa biết trước
Hã y n ê u Cú P h á p c â u l ện h
l ặp v ới s ố l ần c h ưa b i ết
Be g in
t r ước ?
b e g in
e nd;
En d .
Bài 8. LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC
2. Ví dụ về lệnh lặp với số lần chưa biết
trướcều kiện> DO <câu lệnh>;
Cú pháp:
WHILE <đi
Chú ý : Trong trường hợp câu lệnh ghép:
While <điều kiện> do
Begin
câu lệnh 1;
câu lệnh 2;
…
End;
11
Bài 8:
LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC
2. Ví dụ về lệnh lặp với số lần chưa biết trước
VD: Dùng câu lệnh lặp While … Do để viết chương trình thể
hiện thuật tốn trong Ví dụ 2 (Sgk)
v a r S , n :
in tge g e r;
Be
in S := 0 ;
nw:=h 0ile;
S
in n := n + 1 ;
e nS := S + n ;
w rit
d ;e ( ‘Ke t q u a la : ’, S ) ;
Re a d l
Enn ;
Tong
d . S= 1035 va 45 la so tu nhien nho nha sao cho
Bài tập
Câu 1
Câu 2
Câu 3
Câu 4
Lưu ý:
Mỗi một câu hỏi sẽ có 30 giây để suy nghĩ.
Sau 30 giây giáo viên sẽ gọi 1 học sinh bất kì để
trả lời. Nếu trả lời đúng sẽ được 1 điểm cộng.
Học sinh khác có thể bổ sung ý kiến nếu học sinh
trước đó trả lời sai.
-
Câu 1: Trong các hoạt động dưới
đây, hoạt động nào là hoạt động với
số lần chưa biết trước?
A
Tính tổng các số tự nhiên từ 1 đến 20.
B
Nhập các số nguyên từ bàn phím cho đến khi đủ 50 số.
C
Mỗi ngày học bài 2 lần.
D
Nhập vào 1 số cho đến khi số nhập vào là số chẵn thì dừng.
23
30
29
28
26
27
24
25
12
13
14
15
16
17
18
19
20
21
22
10
11
7654321098
Câu 2: Hãy chỉ ra lỗi trong các câu lệnh sau đây? 30
23
29
28
26
27
12
13
14
15
16
17
18
19
20
21
22
24
25
10
11
7654321098
X:= 10;
While X:= 10 do
X:= X + 5;
a)
b) X:= 10;
While X = 10 do
X = X + 5;
Thừa
dấu :
c) S:= 0; n:=0;
While S <= 10 do
n:= n + 1;
S:= S + n ;
Thiếu dấu
:
Thiếu Begin
Thiếu End;
Câu 3: Câu lệnh sau đây cho kết quả là gì?
S:=1;
While s < 10 do
Begin
writeln(s);
s:=s+1;
end;
A
In ra các số từ 1 đến 9
B
In ra các số từ 1 đến 10
C
In ra các số 1
D
Khơng phương án nào đúng
23
30
29
28
26
27
24
25
12
13
14
15
16
17
18
19
20
21
22
10
11
7654321098
Câu 4: Thuật tốn sau khi thực hiện vịng lặp?
Khi kết
thúc giải thuật của S bằng bao nhiêu?
Bước 1: S 10, x 2.
Bước 2: Nếu S 5 chuyển tới bước 4.
Bước 3: S S – x và quay lại bước 2.
Bước 4: Thơng báo S và kết thúc thuật tốn.
A. 2 vịng lặp, S=8
C. 3 vịng lặp, S=6
B. 4 vịng lặp, S=4
B. 10 vòng lặp, S=5
D. 5 vịng lặp, S=2
SAI
RỒI!
Sai r
ồi
SAI
RỒI!
23
30
29
28
26
27
12
13
14
15
16
17
18
19
20
21
22
24
25
10
11
7654321098
Bài 8:
LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC
Ghi nhớ
- Các hoạt động lặp với số lần chưa biết trước
phụ thuộc vào một điều kiện cụ thể và chỉ
dừng lại khi điều kiện đó sai.
Trong Pascal câu lệnh lặp với số lần chưa
biết trước có dạng:
While <điều kiện> do <câu lệnh>;
Bài 8:
LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC
Dặn dị
Về nhà học bài. Làm bài tập 2 Sgk
trang 66.
Tìm thêm một vài ví dụ về hoạt động
lặp với số lần chưa biết trước.
Xem trước VD3, VD4, VD5, Lặp vô hạn
lần–Lỗi lập trình cần tránh.