I/ Mục đích-Yêu cầu
Giúp HS 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.
Giúp HS biết ngôn ngữ lập trình dùng cấy trúc lặp với số lần chưa biết trước để chỉ dẫn cho máy tính thực hiện lặp đi lặp lại một công việc cho đề khi điều hiện nào đó được thỏa mãn.
Hiểu được hoạt động của câu lệnh lặp với số lần chưa biết trước While do trong Pascal.
Biết cách vận dụng While.do hoặc For.do để giải bài tập một cách linh hoạt.
On lại một số kiến thức như khai báo biến, rèn luyện khả năng đọc-hiểu chương trình.
II/ Chuẩn bị:
Giáo viên: Giáo án, lưu đồ thuật giải, bài giải hoàn chỉnh.
Học sinh: Xem bài trước. Sách giáo khoa.
Phương pháp: Đàm thoại kết hợp trực quan sinh động.
Dụng cụ, thiết bị: Đèn chiếu, máy tính, lưu đồ, giáo án. Máy có cài sẵn Turbo Pascal.
Trường THCS Thống Nhất Ngày soạn:18-02-2009 Ngày dạy: Lớp dạy: Tiết dạy: GVHD: GSTT: Nguyễn Thanh Tùng Bài dạy: Bài 8: Lặp với số lần chưa biết trước I/ Mục đích-Yêu cầu Giúp HS 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. Giúp HS biết ngôn ngữ lập trình dùng cấy trúc lặp với số lần chưa biết trước để chỉ dẫn cho máy tính thực hiện lặp đi lặp lại một công việc cho đề khi điều hiện nào đó được thỏa mãn. Hiểu được hoạt động của câu lệnh lặp với số lần chưa biết trước While do trong Pascal. Biết cách vận dụng While..do hoặc For..do để giải bài tập một cách linh hoạt. Oân lại một số kiến thức như khai báo biến, rèn luyện khả năng đọc-hiểu chương trình. II/ Chuẩn bị: Giáo viên: Giáo án, lưu đồ thuật giải, bài giải hoàn chỉnh. Học sinh: Xem bài trước. Sách giáo khoa. Phương pháp: Đàm thoại kết hợp trực quan sinh động. Dụng cụ, thiết bị: Đèn chiếu, máy tính, lưu đồ, giáo án. Máy có cài sẵn Turbo Pascal. III/ Nội dung lên lớp: Hoạt động 1: Oån định lớp. Hoạt động 2: Kiểm tra bài cũ. 1/ Hãy cho biết tác dụng của lệnh lặp với số lần biết trước? 2/ Nêu cú pháp và ý nghĩa của lệnh lặp Fordo? Hoạt động 3: Vào nội dung bài mới Hoạt động GV Hoạt động HS Nội dung * Giới thiệu cho Hs biết ngoài cấu trúc lặp với số lần lặp biết trước, các ngôn ngữ lặp trình còn có các lệnh lặp với số lần lặp chưa biết trước. Ghi tên bài dạy lên bảng. * Yêu cầu học sinh đọc víù dụ 1. -Phân tích, đặt câu hỏi về ví dụ 1 để cho Hs thấy được điều kiện để kết thúc hoạt động gọi điện thoại của Long cho Trang. -Đưa thêm một số ví dụ trong cuôc sống tương tự ví dụ 1. Yêu cầu HS xác định điều kiện dừng. * Yêu cầu HS đọc ví dụ 2. -Đặt câu hỏi cho HS: "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 ta phải làm gì?". Kiểm tra đáp án của HS. -Yêu cầu HS xây dựng thuật toán của ví dụ này một cách cụ thể bằng ngôn ngữ tự nhiên. Kiểm tra và chỉnh sửa lại đáp án của HS. -Giải thích cho HS hiểu rõ về thuật toán vừa rồi. -Đưa ra lưu đồ về lặp với số lần chưa biết trước và giải thích cho HS hiểu ý nghĩa của lệnh lặp này. * Chuyển sang nội dung thứ 2 của bài. Trình bày cho Hs biết được cấu trúc của lệnh lặp với số lần chưa biết trước trong Pascal. -Hướng dẫn Hs Viết chương trình hoàn chỉnh của ví dụ 2. -Giải thích lại từng câu lệnh của chương trình. Chạy chương trình, sau đó thay đổi điều kiện cho HS nhận thấy sự khác biệt. * Yêu cầu Hs đọc ví dụ 5 Trang 69 SGK -Yêu cầu Hs thực hiện giải bài toán với lệnh Fordo. Theo dõi HS. -Yêu cầu HS chỉnh sửa lại Ví dụ này với lệnh lặp While do -Giải thích cho học sinh hiểu ý nghĩa các câu lệnh trong chương trình. Làm cho Hs thấy được lệnh lặp fordo có thể được thay thế bởi lệnh whiledo . * Chuyển sang nội dung tiếp theo. -Đưa ra chương trình trong SGK. Yêu cầu HS giải thích từng câu lệnh. -Qua ví dụ cho HS thấy đuợc lỗi lặp trình với lặp vô hạn lần. Chú ý cho Hs cần tránh trong quá trình viết chương trình. * Chú ý lắng nghe bài giảng, ghi chepù. * Đọc ví dụ 1 và suy nghĩ. -Chú ý lắng nghe, ghi chép. -Trả lời các câu hỏi của giáo viên. -Chú ý, suy nghĩ trả lời các câu hỏi của giáo viên. * Đọc ví dụ 2. -Chú ý lắng nghe, ghi chép. Trả yêu cầu của GV. -Chú ý lắng nghe, ghi chép. Trả lời câu hỏi của giáo viên. Xây dựng thuật toán -Chú ý lắng nghe, ghi chép. -Chú ý lắng nghe, ghi chép. * Chú ý lắng nghe, ghi bài. -Theo dõi bài giảng, thực hiện theo theo yêu cầu của GV, ghi chép. -Chú ý lắng nghe, theo dõi chương trình. * Đọc ví dụ 5, suy nghĩ. -Thực hiện theo yêu cầu của GV. -Thực hiện chuyển đổi. -Chú ý lắng nghe, ghi chép. * Chú ý theo dõi, ghi chép. -Chú ý theo dõi, trả lời các yêu cầu của giáo viên. -Chú ý theo dõi, ghi chép bài. Bài 8: 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: Ví dụ: SGK.Trang 67 Điều kiện dừng: Có người nhấc máy. Ví dụ 2: Nếu cộng lần lượt n số đầu tiên (n=1,2,3,.), ta sẽ đượ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? -Câu hỏi: 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 ta phải làm gì? -Đáp án: Từng bước kiểm tra tổng đã lớn hơn 1000 hay chưa. Thuật toán: Kí hiệu S là tổng cần tìm 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. Để giải bài toán trên ta thực hiện lặp đi lặp lại với số lần chưa biết trước, phụ thuộc vào điều kiện (S<=1000) và chỉ dừng lại khi điều kiện đó sai. Điều kiện Câu lệnh Sai Đúng Việc lặp lại một nhóm các hoạt động với số lần chưa biết trước phụ thuộc vào một điều kiện cụ thể có được thỏa mãn hay không. Để viết chương trình cho máy tính thực hiện các hoạt động như ví dụ trên ta có thể sử dụng lệnh lặp với số lần chưa biết trước. Các ngôn ngữ lặp trình đều có hỗ trợ câu lệnh này, Pascal cũng không ngoại lệ. 2. Ví dụ về lệnh lặp với số lần chưa biết. 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à một câu lệnh đơn hay câu lệnh ghép. Cách thực hiện: Kiểm tra điều kiện. Nếu điều kiện sai, câu lệnh sẽ được 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 buớc 1. Chương trình Ví dụ 2: Program Vidu2; Uses crt; Var S,n:Integer; Begin Clrscr; S:=0; N:=0; While S<=1000 do Begin S:=S+n; N:=n+1; End; Writeln('So n nho nhat de tong>1000 la ',n,': '); Writeln(' Tong dau tien la: ',S); Readln; End. Ví dụ 5.Trang 69(SGK) Để viết chương trình tính tổng T=1+1/2+1/3++1/100 với lệnh lặp fordo Với For: Program Vidu5; Uses crt; Var T,i:Integer; Begin T:=0; For i:=1 to 100 do T:=T+1/I; Writeln(T); Readln; End. Với while: Program Vidu5; Uses crt; Var T,i:Integer; Begin T:=0; i:=0; while i<=100 do begin T:=T+1/I; I:=i+1; End; Writeln(T); Readln; End. -Như vậy chúng ta có thể sử dụng lệnh lặp whiledo thay cho Fordo. 3. Lặp vô hạn lần-Lỗi lập trình cần tránh. Ví dụ: Var a:integer; Begin A:=5; While a<6 do Writeln('A'); End; Giá trị biến a luôn luôn bằng 5 điều kiện a<6 luôn luôn đúng cho nên chương trình luôn được thực hiện. Đây là lỗi lặp vô hạn lần. Khắc phục: điểu kiện trong câu lệnh phải được thay đổi từ đúng sang sai. Chí có thế chương trình mới không rơi vào những vòng lặp vô tận. Hoạt động 4: Củng cố: Yêu cầu Hs trình bày ý nghĩa lệnh lặp với số lần chưa biết được. Yêu cầu HS trình bày lệnh lặp Whiledo. Hoạt động 5: Hướng dẫn về nhà Huớng dẫn trả lời câu1, câu2 trang 71. Hướng dẫn bài 3,4,5 SGK. IV/ Rút kinh nghiệm tiết dạy: Ưu điểm: Khuyết điểm: GVHD
Tài liệu đính kèm: