Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (355.14 KB, 26 trang )
(1)
Trong đó:
- For, to, do là các từ khóa.
- Biến đếm có kiểu dữ liệu nguyên.
- Giá trị đầu nhỏ hơn giá trị cuối và là các giá
trị nguyên.
For <biến đếm>:=<giá trị đầu> to <giá trị cuối> do
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 100 lần
VD2: Viết chương trình
nhập vào các số cho đến
khi gặp 0 thì dừng lại.
Tính tổng các số vừa
nhập.
Chưa biết lặp mấy lần
Lặp với số lần biết trước,
1. Lệnh lặp với số lần chưa biết trước
2. Lặp vô hạn lần – Lỗi lập trình cần tránh
NỘI DUNG BÀI HỌ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.
BÀI 8. LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC
Các hoạt động lặp với số lần chưa biết trước
Các em hãy cho thêm ví dụ
về hoạt động lặp với số lần
BÀI 8. LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC
Bạn Long gọi điện hẹn Trang tới
thăm nhà cô giáo cũ vào chủ nhật tới. Long quyết
định cứ 10 phút gọi điện 1 lần cho Trang cho đến
Long sẽ lặp lại hoạt động
gọi điện mấy lần?
Các hoạt động lặp với số lần chưa biết trước
Ví dụ (SGK)
Chưa thể biết trước được số lần
Long gọi điện. Điều kiện để
1. Lệnh 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ếu cộng lần lượt n số tự nhiên (n = 1, 2, 3, …).
Ta sẽ đượ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 để 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
Đ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.
1. Các hoạt động 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 Tổng Tn Điều kiện Tn ≤ 1000
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.
BÀI 8. LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC
Kí hiệu S là tổng cần tìm và ta có thuật tốn như sau:
Bước 1: S 0, n 0.
Bước 2: Nếu S≤ 1000, thì chuyển tới Bước 3; Ngược lại chuyển
tới bước 4.
Bước 3: n n+1; 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.
S1000? Sai
n n+1;
S S+n;
Đúng
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?
• Sơ đồ
1. Lệnh 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
1. Lệnh 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
While <điều kiện> do <câu lệnh>;
Trong đó:
While, do là các từ khóa.
Đ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 hoặc là
câu lệnh ghép.
BTVD 1: While a <= b do a:= a+1;
Trong đó: While, do các từ khóa.
Điều kiện là a<=b
Câu lệnh là a:=a+1 (câu lệnh đơn).
1. Lệnh lặp với số lần chưa biết trước
While a > b do
begin
write (‘a>b’);
a:= a - 1;
end;
Trong đó: While, do các từ khóa.
Điều kiện là a > b
Câu lệnh là write (‘a>b’); a:=a-1
(câu lệnh ghép).
1. Lệnh 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
1. Lệnh 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
B1: Kiểm tra điều kiện;
B2: 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. Lưu đồ
Hoạt động: Sai Điều kiện
Câu lệnh
Đúng
BÀI 8. LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC
1. Lệnh lặp với số lần chưa biết trước
BTVD 3: S:=0; while S<=5 do S:= S + 2;
S Điều kiện
S<=5 Câu lệnhS:=S + 2
Vậy S = 6
0
2
4
6
0 <=5 (Đ)
2 <=5 (Đ)
4 <=5 (Đ)
6 <=5 (S)
Câu 1: Trong các hoạt động dưới đây, hoạt
động nào lặp 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.
c. Nhập các số nguyên từ bàn phím cho đến
khi đủ 50 số.
Câu 2: Đâu là cú pháp của câu lệnh lặp với số
lần chưa biết trước?
Câu 2: Hãy chỉ ra lỗi trong các câu lệnh sau đây?
a. X:=10; while X:=10 do X:= X + 5;
b. X:=10; while X =10 do X = X + 5;
c. while a<=b; do write (‘b khong nho hon a’);
Thừa dấu :
Thiếu dấu :
1. Lệnh 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
Ví dụ 2 (SGK): Chúng ta biết rằng, nếu n (n>0)
càng lớn thì 1/n càng nhỏ, nhưng ln ln lớn
hơn 0.
1. Lệnh 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
Phân tích bài tốn:
x=1/n
1 X1=1/1 Đúng
2 X2=1/2 Đúng
….. ……… ……….
m Xm=1/m
( Đk 1/m<0.003)
Sai, kết thúc quá
trình lặp
Uses crt;
Var x: Real;
n: Integer;
Const Sai_So=0.003;
Begin
Clrscr;
x:=1; n:=1;
While x >= Sai_So do
Begin n:=n+1; x:=1/n; End;
Writeln(‘So n nho nhat de 1/n < ‘, Sai_So:6:4, ‘ la ‘,n);
Readln;
End.
Uses crt;
Var x: Real;
n: Integer;
Const Sai_So=0.003;
Begin
Clrscr;
x:=1; n:=1;
While x >= Sai_So do
Begin n:=n+1; x:=1/n; End;
Writeln(‘So n nho nhat de 1/n < ‘, Sai_So:6:4, ‘ la ‘,n);
End.
Chương trình tính số n nhỏ nhất để 1/n nhỏ hơn một sai số cho
trước:
1. Lệnh lặp với số lần chưa biết trước
1. Lệnh 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
1. Lệnh 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
VD 4: Để viết chương trình tính tổng:
1 1 1
1 ...
2 3 100
1. Lệnh 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
sử dụng for…do sử dụng while…do
T:=0;
for i:=1 to 100 do
T:=T+1/i;
writeln(T);
T:=0;
i:=1;
while i<=100 do
begin T:=T+1/i; i:=i+1 end;
1. Lệnh 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
1. Lệnh 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
Biến đếm là i;