Học cho đến khi thuộc bài Nhặt từng cọng rau cho đến khi hết rau Bài toán: Viết ch ơng trình nhập vào một dãy số cho đến khi gặp 0 thì dừng lại, tính tổng các số vừa nhập Hãy k
Trang 1Gi¸o ¸n ®iÖn tö tin häc líp 8
Trang 2 Học cho đến khi thuộc bài
Nhặt từng cọng rau cho đến khi hết rau
Bài toán: Viết ch ơng trình nhập vào một dãy số cho đến khi gặp 0 thì dừng
lại, tính tổng các số vừa nhập
Hãy kể tên những hoạt động đ ợc thực hiện lặp đi lặp lại với
số lần lặp không thể xác định tr ớc?
1 Các hoạt động lặp với số lần ch a biết tr ớc
Trang 3Bài toán 1:
Bài toán 2:
N
S = 1 + 2 + 3 + 4 + +
N
S = 1 + 2 + 3 + 4 + +
Cho đến khi S>1000 Cho biết N
Tính tổng
Tính tổng
2 Ví dụ về lệnh lặp với số lần ch a xác định
Trang 4Xuất phát
0
=
Lần 1
2
+
Lần 2
+…
Lần N
N
+
Mỗi lần thực hiện giá trị tổng S tăng thêm bao nhiêu?
Sau mỗi lần thực hiện giá trị tổng S tăng thêm i đơn vị với i= 1;2;3;.N ?
Cùng tìm thuật toán
Trang 5Bài toán 1: Bài toán 2:
N
Số lần lặp xác định
Việc tăng giá trị cho
tổng S đ ợc lặp đi lặp lại cho đến khi S>1000
Việc tăng giá trị cho
tổng S đ ợc lặp đi
lặp lại N lần
Số lần lặp ch a xác định
tìm sự khác biệt
Trang 6WHILE <Điều kiện> DO <Câu lệnh> ;
Điều kiện
Đúng
Câu lệnh
Điều kiện: th ờng là một phép so sánh
Sai
Trong đó:
Câu lệnh lặp với số lần lặp ch a xác định trong Pascal:
Câu lệnh : là câu lệnh đơn hay
câu lệnh ghép
Ví dụ: While S<100 do S:= S+1;
3 Lệnh lặp với số lần ch a xác định
Trang 7B1: Khởi tạo S=0; N:=0;
B2: Nếu S<= 1000 thì thực hiện
tăng N thêm 1 đơn vị,
ng ợc lại chuyển tới B4
B3 : Cộng N vào S => sang B2
nhỏ nhất sao cho S>1000,
Tổng S và kết thúc
S:=0; N:=0;
WHILE S<=1000 DO
Begin N:=N+1;
S:=S+N;
END;
Writeln( Số N nhỏ nhất để S>1000 , N)‘ ’ Writeln( Tổng đầu tiên >1000 ,S);‘ ’
N
Thuật toán Ch ơng trình
Ví dụ 1 : Tính tổng cho đến khi S>1000 Cho biết N
Trang 8Program Bai_toan;
Uses Crt;
S:Real;
BEGIN
Clrscr;
S:=0;N:=0;
WHILE s< = 1000 DO
BEGIN
N:=N+1;
S:=S+N;
Writeln(‘So N nho nhat de tong >1000 la’,N);
Writeln(‘Gia tri cua tong S =',S);
Readln;
END.
H·y hoµn thiÖn
ch ¬ng tr×nh gi¶i bµi to¸n trªn?
Trang 91 4
1 3
1 2
1
1 + + + + +
S
S:=0;
For i:=1 to 100 do S:=S + 1/i;
Writeln( S = , S:7:2); ‘ ’
Dïng lÖnh FOR DO Dïng lÖnh Whie Do
S:=0; i:=1;
While i<=100 do
begin S:=S + 1/i;
i:=i+1;
end;
Writeln( S = , ‘ ’ S:7:2);
Cã thÓ sö dông lÖnh While do
thay cho c©u lÖnh For Do
VÝ dô 2 : TÝnh tæng
Trang 10L u ý : Khi viết ch ơng trình với câu lệnh lặp, điều kiện phải đ
ợc thay đổi để ch ơng trình không gặp lỗi lặp vô hạn.
Ví dụ :
Var
a:integer;
Begin
a:=5;
While a<6 do
Write(' Chuong trinh chay mai khong thoat duoc');
End.
4 Lặp vô hạn -Lỗi lập trình cần tránh
Trang 11Ghi nhớ!
định tr ớc, các ngôn ngữ lập trình còn
có các câu lệnh lặp với số lần ch a biết
tr ớc.
While do là câu lệnh lặp với số lần
ch a biết tr ớc trong Pascal