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. Tất cả đều sai.[r]
(1)KIẾN THỨC BÀI CŨ
Trong đó:
- For, to, từ khóa
- Biến đếm có kiểu liệu nguyên
- Giá trị đầu nhỏ giá trị cuối giá trị nguyên
For <biến đếm>:=<giá trị đầu> to <giá trị cuối> do
(2)QUAN SÁT
VD1: Viết chương trình tính tổng số tự nhiên từ đến 100
S = + + + +100 Lặp 100 lần
VD2: Viết chương trình nhập vào số gặp dừng lại Tính tổng số vừa nhập
Chưa biết lặp lần
Lặp với số lần biết trước, sử dụng câu lệnh lặp For…do để viết chương trình
(3)BÀI 8
(4)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
(5) Nam làm tập làm xong
Cô phải tới nhà Tơi phải nhập liệu vào máy tính
khi nhập xong
BÀI 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 cho thêm ví dụ hoạt động lặp với số lần
(6)BÀI 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 định 10 phút gọi điện lần cho Trang có người thưa máy
Long lặp lại hoạt động gọi điện 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 số lần Long gọi điện Điều kiện để
(7)1 Lệnh lặp với số lần chưa biết trước
BÀI LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC
Nếu cộng n số tự nhiên (n = 1, 2, 3, …) Ta kết quả:
T1 =
T2 = +
T3 = + + … tăng dần
Cần cộng số tự nhiên để ta nhận tổng Tn nhỏ lớn 1000?
Điều kiện kết thúc hoạt động lặp?
Điều kiện: Khi tổng Tn nhỏ lớn 1000 kết thúc hoạt động lặp
(8)1 Các hoạt động lặp với số lần chưa biết trước
BÀI 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 = Đúng
2 T2 = + Đúng
Đúng
… … …
? Tn = + + + …+?
(Sao cho Tn nhỏ lớn 1000)
Sai, kết thúc việc tính tổng
(9)BÀI LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC Kí hiệu S tổng cần tìm ta có thuật tốn sau:
Bước 1: S 0, n
Bước 2: Nếu S≤ 1000, chuyển tới Bước 3; Ngược lại chuyển tới bước
Bước 3: n n+1; S S + n quay lại bước
Bước 4: In kết quả: S n số tự nhiên nhỏ 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
dừng lại nào? • Sơ đồ
(10)1 Lệnh lặp với số lần chưa biết trước
BÀI LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC
(11)1 Lệnh lặp với số lần chưa biết trước
BÀI LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC
While <điều kiện> <câu lệnh>; Trong đó:
While, do từ khóa.
Điều kiện: Thường phép so sánh.
Câu lệnh: Có thể câu lệnh đơn câu lệnh ghép
(12)BTVD 1: While a <= b do a:= a+1; Trong đó: While, do từ khóa
Điều kiện là a<=b
Câu lệnh a:=a+1 (câu lệnh đơn)
1 Lệnh lặp với số lần chưa biết trước
(13)While a > b do
begin
write (‘a>b’); a:= a - 1;
end;
Trong đó: While, do từ khóa Điều kiện là a > b
Câu lệnh 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 LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC
(14)1 Lệnh lặp với số lần chưa biết trước
BÀI 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 bị bỏ qua việc thực lệnh lặp kết thúc Nếu điều kiện đúng,
thực câu lệnh quay
lại bước Lưu đồ
Hoạt động: Sai Điều kiện
Câu lệnh
Đúng
(15)BÀI 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 =
0
0 <=5 (Đ) <=5 (Đ) <=5 (Đ) <=5 (S)
(16)CỦNG CỐ
Câu 1: Trong hoạt động đây, hoạt động lặp với số lần chưa biết trước?
a Tính tổng số tự nhiên từ đến 20 b Mỗi ngày học lần
c Nhập số nguyên từ bàn phím đủ 50 số
(17)CỦNG CỐ
Câu 2: Đâu cú pháp câu lệnh lặp với số lần chưa biết trước?
(18)CỦNG CỐ
Câu 2: Hãy lỗi 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 :
(19)1 Lệnh lặp với số lần chưa biết trước
BÀI LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC
Ví dụ (SGK): Chúng ta biết rằng, n (n>0) lớn 1/n nhỏ, ln ln lớn
(20)1 Lệnh lặp với số lần chưa biết trước
BÀI LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC
Phân tích 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 trình lặp
(21)Uses crt;
Var x: Real; n: Integer;
Const Sai_So=0.003; Begin
Clrscr;
x:=1; n:=1;
While x >= Sai_So
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
Begin n:=n+1; x:=1/n; End;
Writeln(‘So n nho nhat de 1/n < ‘, Sai_So:6:4, ‘ la ‘,n); Readln;
End.
Chương trình tính số n nhỏ để 1/n nhỏ sai số cho trước:
1 Lệnh lặp với số lần chưa biết trước
(22)1 Lệnh lặp với số lần chưa biết trước
BÀI LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC
(23)1 Lệnh lặp với số lần chưa biết trước
BÀI 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
2 100
(24)1 Lệnh lặp với số lần chưa biết trước
BÀI 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
T:=T+1/i; writeln(T);
T:=0; i:=1;
while i<=100
begin T:=T+1/i; i:=i+1 end;
(25)1 Lệnh lặp với số lần chưa biết trước
BÀI LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC
(26)1 Lệnh lặp với số lần chưa biết trước
BÀI LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC
Biến đếm i;