Bài 8. Lặp với số lần chưa biết trước

Chia sẻ bởi Huỳnh Công Kha | Ngày 24/10/2018 | 37

Chia sẻ tài liệu: Bài 8. Lặp với số lần chưa biết trước thuộc Tin học 8

Nội dung tài liệu:

GV: HUỲNH CÔNG KHA
MÔN TIN HỌC 8
PHÒNG GD&ĐT CẨM MỸ
TRƯỜNG THCS SÔNG NHẠN
Kiểm tra bài cũ
1. Nêu cú pháp và công dụng của câu lệnh While … do ?
Trả lời:
+ Cú pháp: while < điều kiện > do < câu lệnh >;
Trong đó: while, do là các từ khóa
+ Công dụng: Thực hiện lệnh lặp với số lần chưa biết trước.
Bây giờ chúng ta vận dụng chúng để làm bài tập cụ thể.
TUẦN 24 -TIẾT 50 -BÀI 8: LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC(tt)
Ví dụ 4: Trong chương trình pascal dưới đây thể hiện thuật toán tính tổng n số trong 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 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 ? Trong trường hợp này, để quyết định thực hiện phép cộng với số tiếp theo hay dừng, trong từng bước ta phải kiểm tra tổng đã lớn hơn 1000 hay chưa.
Chúng ta hãy tìm hiểu các bước của thuật toán trong ví dụ này một cách cụ thể hơn.
Thuật toán:
Bước 1: S  0, n  0.
Bước 2: Nếu S<= 1000, n  n + 1; Ngược lại, chuyển tới bước 4.
Bước 3: 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.
Kí hiệu S là tổng cần tìm
2. VÍ DỤ VỀ LỆNH LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC.
Ví dụ 4:
Viết chương trình:
Var S, n: integer;
Begin
S:=0; n:=1;
while S <= 1000 do
begin S:= S + n ; n:=n + 1 end;
writeln(‘ so n nho nhat de tong > 1000 la ‘, n );
wrietln(‘ Tong dau tien > 1000 la ‘, S );
readln
End.
Chạy chương trình
Chạy chương trình này ta sẽ nhận được n = 45 và tổng đầu tiên lớn hơn 1000 là 1034.
TUẦN 24 -TIẾT 50 -BÀI 8: LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC (tt)
Ta có:
- n: = n + 1 = 1 + 1 = 2
Khi S: = 0 ; n: = 1;
- S := S + n = 0 + 2 = 2 < 1000
Và S: = S + n ; n: = n + 1
- n: = n + 1 = 2 + 1 = 3
- S:= S + n = 5 + 4 = 9 < 1000
- S:= S + n = 2 + 3 = 5 < 1000
- n: = n + 1 = 3 + 1 = 4
Khi S: = 0 ; n: = 1;
Khi S: = 2 ; n: = 2;
Khi S: = 5 ; n: = 3;
2. VÍ DỤ VỀ LỆNH LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC.
TUẦN 24 -TIẾT 50 -BÀI 8: LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC (tt)
VÍ DỤ 5:
Để viết chương trình tính tổng T = 1 + 1/2 + 1/3 + … + 1/100 ta có thể sử dụng lệnh lặp với số lần lặp biết trước for … do
T: = 0;
for i: 1 to 100 do T: = T +1/i;
writeln(T);
Nếu sử dụng lệnh lặp while .. Do, đoạn chương trình dưới đây cũng cho cùng 1 kết quả:
T: = 0;
i: = 1;
While i < = 100 do begin T: = T + 1/i ; i: = i + 1 end;
Writeln(T);
Ví dụ này cho thấy rằng chúng ta có thể sử dụng câu lệnh while… do thay cho câu lệnh for … do
 Lưu ý: Có thể sử dụng câu lệnh while… do thay cho câu lệnh for … do nhưng ngược lại thì không.
Chạy chương trình
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
TUẦN 24 -TIẾT 50 -BÀI 8: LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC (tt)
Khi viết chương trình sử dụng cấu trúc lắp cần chú ý tránh tạo nên vòng lặp không bao giờ kết thúc. Chẳng hạn, chương trình dưới đây sẽ lặp vô tận.
Var a: integer;
Begin
a: = 5;
while a < 6 do writeln(‘a’);
End.
Trong chương trình trên, giá trị của biến a luôn luôn bằng 5, điều kiện a < 6 luôn luôn đúng nên lệnh writeln(‘a’) luôn được thực hiện.
Do vậy, khi thực hiện vòng lặp, điều kiện trong câu lệnh phải được thay đổi để sớm hay muộn giá trị của điều kiện được chuyển từ đúng sang sai. Chỉ như thế chương trình mới không “rơi” vào những “vòng lặp vô tận”.
Cách khác phục
2. VÍ DỤ VỀ LỆNH LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC.
TUẦN 24 -TIẾT 50 -BÀI 8: LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC (tt)
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
THẢO LUẬN NHÓM
BÀI TẬP
Cho chương trình sau:
Var so: integer;
Begin
so: = 1;
while so < 10 do writele(so);
So: = so + 1;
End.
Hãy chỉ ra hướng khắc phục câu lệnh trên
* Một số tài liệu cũ có thể bị lỗi font khi hiển thị do dùng bộ mã không phải Unikey ...

Người chia sẻ: Huỳnh Công Kha
Dung lượng: | Lượt tài: 1
Loại file:
Nguồn : Chưa rõ
(Tài liệu chưa được thẩm định)