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
S = 1 + 2 + 3 + 4 + +
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); ‘ ’
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