Giáo án lớp 8 môn Tin học - Bài 8: Lặp với số lần chưa biết trước

Giáo án lớp 8 môn Tin học - Bài 8: Lặp với số lần chưa biết trước

I. Mục đích, yêu cầu:

1. Mục đích:

- Biết được nhu cầu cần có cấu trúc lặp với số lần lặp chưa biết trước trong ngôn ngữ lặp trình.

- Biết ngôn ngữ lặp trình dùng cấu trúc lặp với số lần chưa biết trước để chỉ dẫn máy tính thực hiện lặp đi lặp lại công việc đến khi một điều kiện nào đó được thỏa mãn.

 

doc 5 trang Người đăng HoangHaoMinh Lượt xem 2454Lượt tải 1 Download
Bạn đang xem tài liệu "Giáo án lớp 8 môn Tin học - Bài 8: Lặp với số lần chưa biết trước", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
BÀI 8: LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC
Mục đích, yêu cầu:
Mục đích:
Biết được nhu cầu cần có cấu trúc lặp với số lần lặp chưa biết trước trong ngôn ngữ lặp trình.
Biết ngôn ngữ lặp trình dùng cấu trúc lặp với số lần chưa biết trước để chỉ dẫn máy tính thực hiện lặp đi lặp lại công việc đến khi một điều kiện nào đó được thỏa mãn.
	2. Yêu cầu:
Học sinh hiểu hoạt động của câu lệnh lặp với số lần chưa biết trước whiledo trong Pascal.
Vận dụng được câu lệnh lặp với số lần lặp không biết trước trong các thuật toán thích hợp.
Chuẩn bị:
Giáo viên: chuẩn bị tốt giáo án, phim trong, sách giáo khoa.
Học sinh: sách giáo khoa, xem trước bài học “ Lặp với số lần chưa biết trước”
Hoạt động lên lớp: 
Ổn định lớp: Kiểm tra sỉ số
Kiểm tra bài cũ:
Câu 1: Hãy lên bảng viết cấu trúc của câu lệnh lặp for ?
Câu 2: Chọn đáp án đúng nhất?
for i= 1 to 10 do write(‘a’);
for i:= 1.5 to 10 do write(‘a’);
for i:= 1 to 10 do write(‘a’);
for i:= 1 do 10 to write(‘a’);
Bài mới:
HOẠT ĐỘNG THẦY VÀ TRÒ
NỘI DUNG
GV: Viết chương trình tính tổng của các số tự nhiên chẳn nhỏ hơn hoặc bằng N, với N là số tự nhiên được nhập từ bàn phím. 
S=0;
 For i=1 to N do
 If i mod 2 =0 then S=S+i ;
GV: Với N=5 Các em cho thầy biết vòng for...do phải lặp bao nhiêu lần?
HS: Trả lời.
GV: Qua ví dụ trên các em thấy rằng: để tính được tổng của các số chẳn nhỏ hơn hoặc bằng N ta phải lần lượt xét giá trị của i từ 1 đến N, công việc này được lặp đi lặp lại đến khi nào i=n thì dừng, điều này cho thấy công việc lặp đã được xác định trước số lần lặp là n. Vậy trong trường hợp chúng ta không biết trước số lần lặp thì ta phải lập trình như thế nào để giải quyết bài toán của mình? để giải quyết vấn đề này hôm nay thầy sẽ cùng các em tìm hiểu bài 8: Lặp với số lần chưa biết trước.
GV: - Để biết được hoạt động nào là hoạt động lặp với số lần lặp chưa biết trước chúng ta sẽ cùng tìm hiểu phần 1.
Gọi học sinh đọc ví dụ 1 trong sgk.
HS: Đọc ví dụ.
GV: Phân tích ví dụ:
Trong ví dụ này các em thấy có 2 tình huống xảy ra: 
	+ Tình huống 1: Bạn Long gọi cho Trang nhưng không có người nhấc máy và bạn Long quyết định gọi thêm 2 lần nữa, nếu không có người nhấc máy sẽ kết thúc cuộc gọi không gọi nữa. Tức là, bạn Long đã xác định (hay biết trước) số lần mình phải gọi điện là 2 lần.
	+ Tình huống 2: Lần khác bạn Long quyết định sẽ gọi đến khi nào có người bắt máy mới thôi àbạn Long sẽ lặp đi lặp lại công việc: nhấc máy, quay số, gọi cho Trang, Long không biết trước số lần Long sẽ phải gọi. à lặp với số lần không xác định. Điều kiện ngưng việc lặp: có người bắt máy
HS: Chú ý lắng nghe, tiếp thu.
GV: Cho ví dụ sau: Khi gõ xong văn bản bạn có thói quen kiểm tra và sửa lại cho đúng những từ bị gõ sai. Hãy cho biết công việc nào được lặp đi lặp lại với số lần lặp không biết trước, điều kiện kết thúc việc lặp đó là gì?
HS: Trả lời.
GV: Công việc lặp với số lần lặp không biết trước: tìm từ viết sai, sửa cho đúng; không biết trước số lần lặp vì không xác định được số từ bị sai trong văn bản. Điều kiện kết thúc việc lặp là: Tất cả các từ bị gõ sai đều được sửa.
GV: Gọi học sinh đọc ví dụ 2/67 SGK
HS: Đọc ví dụ.
GV: Phân tích ví dụ:
 Nếu cộng lần lượt n số tự nhiên đầu tiê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 đầu tiên để ta nhận được tổng Tn nhỏ nhất lớn hơn 1000?
GV: Đây có phải là trường hợp lặp với số lần lặp không xác định không? Nếu đúng hãy xác định công việc lặp với số lần lặp không xác định, điều kiện kết thúc việc lặp?
HS: Trả lời.
GV: Phải. Công việc lặp với số lần lặp không xác định: T1=1, T2=1+2, T3=1+2+3,..
Điều kiện kết thúc: tìm được Tn nhỏ nhất > 1000.
GV: Phân tích xây dựng thuật toán:
Đầu tiên ta có S = 0. Tổng các số tự nhiên đầu tiên là: S=1+2+3+.+n sao cho S là tổng 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 không, trong từng bước cần phải kiểm tra tổng đã lớn hơn 1000 chưa.
Gọi 1 học sinh lên xây dựng thuật toán.
HS:Trả lời.
GV : Ta có thuật toán sau:
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.
HS: Ghi bài.
GV: Ta có sơ đồ khối sau: 
GV: Rút ra nhận xét sau cùng.
GV: Để hiểu rõ hơn chúng ta xét một số ví dụ về lệnh lặp với số lần chưa biết trước.
GV: Em nào có thể lên bảng viết cho thầy cấu trúc của về lệnh lặp While. Do?
HS: Lên bảng.
HS: Ghi bài.
GV: Hướng dẫn.
HS: Lắng nghe.
GV: Để hiểu rõ lệnh lặp While do chúng ta sẽ cùng phân tích ví dụ 3 SGK. Gọi học sinh đọc ví dụ.
HS: Đọc ví dụ.
GV: Đây cũng là một ví dụ sử dụng câu lệnh lặp với số lần lặp không biết trước. Thầy sẽ chia lớp thành 4 nhóm để thảo luận nhóm và trả lời câu hỏi sau: 
Em hãy cho biết công việc lặp và điều kiện để dừng việc lặp là gì?
HS: Thảo luận và trả lời.
GV: Đưa ra đáp án và nhận xét.
- Công việc lặp: Tìm số n và tính 1/n rồi đem so sánh với điều kiện.
- Điều kiện dừng: 1/n < sai số cho trước.
GV: Hướng dẫn dùng câu lệnh: 
	While x >= sai_so do 
	Begin
	n:=n+1;
	x:= 1/n;
	end;
	- Chạy tay chương trình minh họa cho học sinh.
Yêu cầu học sinh viết chương trình đầy đủ.
HS: Viết chương trình.
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.
Ví dụ 1: SGK
Ví dụ 2: 
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? 
THUẬT TOÁN:
Kí hiệu S là tổng cần tìm, ta có thuật toán sau:
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.
SƠ ĐỒ KHỐI:
Nhận xét: Để viết chương trình chỉ dẫn máy tính thực hiện các hoạt động lặp như trong các ví dụ trên, ta có thể sử dụng câu lệnh có dạng lặp với số lần chưa biết trước (Whiledo)
Ví dụ về lệnh lặp với số lần chưa biết trước:
 Trong Pascal câu lệnh lặp với số lần chưa biết trước có dạng:
While do 
Trong đó:
Đ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 giản hay câu lệnh ghép.
Câu lệnh này được thực hiện như sau:
	B.1: Kiểm tra điều kiện
	B.2: 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.
Ví dụ 3: Chúng ta biết rằng, nếu n(n>0) 
càng lớn thì càng nhỏ, nhưng luôn 
luôn lớn hơn 0. 
Với giá trị nào của n thì < 0.005 
hoặc < 0.003? Tính n nhỏ nhất để 
 nhỏ hơn một sai số cho trước.
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.
IV.Củng cố
Nêu một vài ví dụ về hoạt động lặp với số lần lặp không biết trước số lần lặp.
Hãy viết cú pháp lệnh lặp while...do?
V. Dặn dò
- Về nhà học bài, làm bài tập.
- Xem trước các phần còn lại.

Tài liệu đính kèm:

  • doctin 8 bai8 t1.doc