Tiết 49, Bài 8 LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC
(GIÁO ÁN DỰ GIỜ)
A. MỤC TIÊU
Sau khi học xong bài này học sinh cần đạt được các mục tiêu sau:
1. Kiến thức:
- Biết được 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:
- Sử dụng câu lệnh lặp với số lần chưa biết trước để giải quyết một số bài tập trong ngôn ngữ lập trình Pascal.
Ngày soạn: 01/03/2011 Ngày dạy: /03/2011 Lớp: 8 Giáo viên hướng dẫn: Lê Đình Trung Giáo viên soạn: Cái Thị Hạ Ngân Tiết 49, Bài 8 LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC (GIÁO ÁN DỰ GIỜ) A. MỤC TIÊU Sau khi học xong bài này học sinh cần đạt được các mục tiêu sau: 1. Kiến thức: - Biết được 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: - Sử dụng câu lệnh lặp với số lần chưa biết trước để giải quyết một số bài tập trong ngôn ngữ lập trình Pascal. 3. Thái độ: - Hình thành phương pháp làm việc khoa học. - Vận dụng vào trong học tập và thực tiễn. B.Chuẩn bị 1. Giáo viên - Bài giảng truyền thống, bài giảng điện tử - Sơ đồ logic nội dung. - Máy tính, Projector 2. Học sinh - SGK, và dụng cụ học tập. C. Phương pháp - Thuyết trình. - Vấn đáp. - Trực quan. - Phát hiện và giải quyết vấn đề. D. Tiến trình lên lớp I. Ổn định tổ chức(1p) - Kiểm tra sĩ số( vắngphép,không phép). - Ổn định chổ ngồi học sinh. II. Kiểm tra bài cũ(5p) Câu hỏi : Viết thuật toán tính tổng 100 số tự nhiên đầu tiên 1,2,3,,99,100 Đáp án: Bước 1. SUM ¬ 0; i ¬ 0. Bước 2. i ¬ i + 1. Bước 3. Nếu i ≤ 100, 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. III. Triển khai bài mới(35p) Với bài toán trên, trong Turbo Pascal ta sử dụng vòng lặp fortodo sẽ thực hiện rất dễ dàng . Nhưng nếu ta thay số 100 bởi n, sẽ gặp nhiều khó khăn trong việc sử dụng vòng lặp fortodo, lúc này số lần lặp không biết trước. Vậy ta phải làm như thế nào ? Để giải quyết bài toán này chúng ta đi tìm hiểu bài mới.(2p) HOẠT ĐỘNG CỦA THẦY VÀ TRÒ NỘI DUNG BÀI MỚI Hoạt động 1: Các hoạt động lặp với số lần chưa biết trước(13p) GV: Vai trò của câu lệnh lặp với số lần lặp biết trước? HS: Trả lời. GV: Gọi HS đọc ví dụ 1 HS : Đọc ví dụ. GV: Phân tích ví dụ. HS: Chú ý. GV: Khi bạn Long quyết định cứ 10 phút thì gọi cho Trang, Long có xác định được Long sẽ gọi cho Trang mấy lần hay không? Khi nào hoạt động gọi điện thoại của Long kết thúc? Gọi 2- 3 HS trả lời HS: Long không xác định sẽ gọi cho Trang mấy lần mà Long sẽ ngừng hoạt động gọi điện thoại khi có người nhấc máy. GV: Gọi HS đọc ví dụ 2 HS: Đọc ví dụ. GV: Phân tích ví dụ. HS: Chú ý. GV: Hướng dẫn HS xây dựng thuật toán. HS: Nghe giáo viên hướng dẫn, sau đó tự xây dựng thuật toán. GV: Nhận xét và đưa ra kết luận Kí hiệu S là tổng cần tìm và ta có thuật toá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 toán. HS: Đối chiếu với bài làm. GV: Việc thực hiện lập lại các phép cộng trên với số lần chưa biết trước phụ thuộc vào điều kiện gì? Phép cộng chỉ dừng khi nào? HS: Điều kiện S<=1000. Chỉ dừng khi kết quả kiểm tra là sai. GV: Chạy chương trình bằng tay với khoảng 10 số đầu tiên. HS : Chú ý theo dõi. GV : Giới thiệu sơ đồ khối HS: Theo dõi để đưa ra nhận xét. GV: Nhận xét và đưa ra kết luận: Việc lặp lại một nhóm hoạt động với số lần chưa xác định trước phụ thuộc vào một điều kiện cụ thể. HS: Ghi bài. Các hoạt động lặp với số lần chưa biết trước a/ Ví dụ 1: Một ngày chủ nhật Long gọi điện cho Trang. Không có ai nhấc máy. Long quyết định gọi lại thêm 1 lần nữa. Như vậy Long đã biết trước là mình sẽ lặp lại gọi điện thêm 2 lần. Một ngày khác, Long quyết định cứ 10 phút gọi điện một lần cho Trang cho đến khi có người bắt máy. Long không xác định sẽ gọi cho Trang mấy lần mà Long sẽ ngừng hoạt động gọi điện thoại khi có người nhấc máy. 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? Kí hiệu S là tổng cần tìm và ta có thuật toá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 toán. * 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. Hoạt động 2: Ví dụ về lệnh lặp với số lần chưa biết trước(20p) GV: Gọi HS nhắc lại cú pháp của câu lệnh lặp với số lần biết trước. HS: Trả lời. GV: Nhận xét và đưa ra kết luận. For:= to do ; GV: 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 Pascal. GV: Giới thiệu cú pháp lệnh: While do ; HS: Ghi bài. GV: Dựa vào cú pháp câu lệnh, hãy nêu hoạt động của câu lệnh lặp với số lần chưa biết trước? HS: Trả lời. GV: Khái quát lại và đưa ra kết luận để HS đối chiếu. HS: Ghi bài. GV: Xét ví dụ 3 Cho 1 số n> 0, 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: Cho HS xem ví dụ 3 trong SGK. Gọi 2- 3 đọc ví dụ 3. HS: Thực hiện theo yêu cầu. GV: Giới thiệu chương trình mẫu SGK (Giáo viên in chương trình mẫu trên) HS: Quan sát. GV: Chạy tay cho học sinh xem HS: Theo dõi và thực hiên lại. GV: Mở chương trình được viết trên ngôn ngữ Pascal, chạy chương trình để HS quan sát. HS: Quan sát chương trình. GV: Thay điều kiện sai_so = 0.003 thành 0.001 ; 0.02 ; 0.05 ; ... Sau đó yêu cầu HS rút ra nhận xét. HS: Chú ý quan sát và rút ra nhận xét. 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. * Thực hiện: 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 : var x: real; n: integer; const sai_so=0.003; begin 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. IV. Củng cố (3p) Câu 1: Hãy nêu cú pháp và hoạt động của vòng lặp While ..do. Cho ví dụ minh họa. V. Dặn dò (1p) Trả lời các câu hỏi 1,2 trang 71 SGK. Xem trước ví dụ 4, ví dụ 5 và phần 3: Lặp vô hạn lần – lỗi lập trình cần tránh. E. RÚT KINH NGHIỆM Ngày tháng năm 2011 Duyệt GV hướng dẫn Lê Đình Trung
Tài liệu đính kèm: