I. Mục tiêu
1. Kiến thức
- Biết nhu cầu cần có cấu trúc lặp với số lần 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 thoả mãn;
2. Kỹ năng
- Nhận biết được đâu là hoạt động lặp với số lần chưa biêt trước.
3. Thái độ
- Nghiêm túc trong quá trình nghiên cứu và thực hành.
II. Chuẩn bị
1. Thầy giáo
- Phòng máy tính, máy chiếu.
2. Học sinh
- Sách giáo khoa, em trước bài học ở nhà.
Tiết: 41 Ngày dạy: 23/01/2010 Bài 8 LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC I. Mục tiêu 1. Kiến thức Biết nhu cầu cần có cấu trúc lặp với số lần 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 thoả mãn; 2. Kỹ năng Nhận biết được đâu là hoạt động lặp với số lần chưa biêt trước. 3. Thái độ Nghiêm túc trong quá trình nghiên cứu và thực hành. II. Chuẩn bị Thầy giáo Phòng máy tính, máy chiếu. Học sinh Sách giáo khoa, em trước bài học ở nhà. III. Phương pháp dạy học Hướng dẫn trực tuyến Diễn giải, đàm thoại. IV. Tiến trình dạy học Ổn định Kiểm diện học sinh Kiểm tra bài cũ Viết thuật toán tính tổng 10 số tự nhiên đầu tiên 1,2,3,,9,10 Trả lời Bước 1. SUM ¬ 0; i ¬ 0. Bước 2. i ¬ i + 1. Bước 3. Nếu i 10, thì SUM ¬ SUM + i và quay lại bước 2. Bước 4. Thông báo kết quả và kết thúc thuật toán. Bài mới Hoạt động của thầy & trò Nội dung ghi của trò * Nội dung 1: Giới thiệu bài mới Giáo viên giới thiệu bài mới * Nội dung 2: Các hoạt động lập với số lần chưa biết trước Yêu cầu hs đọc ví dụ 1sgk/67 Gọi 2-3 hs đọc ví dụ sgk Gọi hs giỏi phân tích ví dụ Học sinh chú ý lắng nghe Học sinh đọc ví dụ 2 sgk/67 Gọi 2-3 hs đọc ví dụ sgk Phân tích ví dụ Học sinh chú ý lắng nghe Hướng dẫn hs xây dựng thuật tốn Nghe giáo viên hướng dẫn, sau đĩ tự xây dựng thuật tốn Chạy tay cho học sinh xem (Chỉ nên chạy tay thử từ 1 đến 10) Chú ý nghe . Hs ghi vở ví dụ 2 Giới thiệu sơ đồ khối Nêu nhận xét * Nội dung 3: Ví dụ về lặp với số lần chưa biết trước Cĩ thể sử dụng lệnh lặp với số lần lặp chưa biết trước trong các chương trình lập trình . Sau đây ta xét câu lệnh và ví dụ trong TP Giới thiệu cú pháp lệnh while do .; Học sinh chú ý nghe và ghi chép Xét ví dụ 3 Chúng ta biết rằng, nếu n 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 ? (Gv đưa phim trong ví dụ 3) Đọc ví dụ 3 (Phim trong) Giới thiệu chương trình mẫu sgk (Giáo viên in chương trình mẫu trên phim trong) Học sinh quan sát Chạy tay cho học sinh xem Chú ý nghe và tự chạy tay lại Yêu cầu học sinh mở máy tính và mở chương trình ví dụ 3 (giáo viên chuẩn bị chương trình mẫu và đưa lên các máy) Cho học sinh chạy chương trình trên máy Yêu cầu hs thay điều kiện sai_so = 0.003 thành 0.002 ; 0.001 ; 0.005 ; ... Học sinh thực hiện LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC 1. Các hoạt động lặp với số lần chưa biết trước a/ Ví dụ 1(sgk). b/ Ví dụ 2 : Nếu cộng lần lượt n số tự nhiên đầu tiên (n = 1, 2, 3,...), 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? Giải : Kí hiệu S là tổng cần tìm và ta cĩ thuật tốn như 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 tốn. * Ta cĩ 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 2. 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 lặp này được thực hiện như sau: Bước 1 : Kiểm tra điều kiện. Bước 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 Với giá trị nào của n ( n>o ) thì < 0.005 hoặc < 0.003? Chương trình dưới đây tính số 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:5:4, 'la ',n); readln end. Củng cố và luyện tập Yêu cầu học sinh đọc ghi nhớ Nêu một vài ví dụ với số lần lặp chưa biết trước. Hướng dẫn học ở nhà Học bài Xem phần còn lại của bài học V. Rút kinh nghiệm
Tài liệu đính kèm: