I. MỤC TIÊU
- 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 thỏa mãn.
+ Hiểu 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.
- Kỹ năng: vận dụng được câu lệnh While . do để giải các bài tập có cấu trúc lặp với số lần chưa biết trước.
- Thái độ: tập trung, tích cực trong giờ học.
II. CHUẨN BỊ
- GV: giáo án, sgk, bảng phụ.
- HS: xem kỹ bài cũ, đọc trước bài mới.
GIÁO ÁN MÔN TIN HỌC TUẦN 26 Tiết PPCT: 13 Tiết TKB: 3 LỚP: 8/1 Ngày soạn : 27/02/2010 Ngày dạy : 02/03/2010 GVHD: La Thị Huyền Đan SV dạy: Trần Ngọc Khoa BÀI 8. LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC I. MỤC TIÊU - 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 thỏa mãn. + Hiểu 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. - Kỹ năng: vận dụng được câu lệnh While .. do để giải các bài tập có cấu trúc lặp với số lần chưa biết trước. - Thái độ: tập trung, tích cực trong giờ học. II. CHUẨN BỊ - GV: giáo án, sgk, bảng phụ. - HS: xem kỹ bài cũ, đọc trước bài mới. III. TIẾN TRÌNH BÀI DẠY HĐ1: Kiểm tra bài cũ, đặt vấn đề vào bài mới ( 8’) - HS: (?) Câu lệnh For .. to.. do dùng để làm gì? (?) Cho biết cấu trúc của câu lệnh lặp For .. to.. do? + Cho đoạn chương trình sau Var i,j:integer; begin j:=0; For i:=1; to 3 do j:=j+i; end; (?) Hãy kiểm tra xem chương trình có lỗi hay không và cho biết sau khi thực hiện chương trình, biến j sẽ mang giá trị bằng bao nhiêu? - GV nhận xét, cho điểm. - Đặt vấn đề vào bài mới: Xét bài toán sau: “Tính tổng S của 100 số tự nhiên đầu tiên 1, 2, 3, .. 100. S = 1 + 2 + 3 + + 100”. Với bài toán trên, ta nhận thấy tổng S sẽ được tính sau 99 lần lặp lại thao tác cộng, ta dễ dàng giải quyết bài toán bằng lệnh lặp For .. to.. do trong Turbo Pascal. Nhưng nếu như bài toán trên trở thành “Tính tổng S các số tự nhiên đầu tiên S = 1 + 2 + 3 + cho đến khi S>1000”. Vấn đề đặt ra ở đây là chúng ta phải thực hiện thao tác cộng bao nhiêu lần để điều kiện S>1000 được thỏa mãn. Rõ ràng ta thấy xuất hiện sự lặp lại thao tác cộng với số lần chưa biết trước. Vậy, lặp với số lần chưa biết trước là như thế nào? Trong ngôn ngữ lập trình Pascal được thể hiện ra sao? Để tìm hiểu kỹ hơn về vấn đề này, chúng ta vào bài 8. Bài 8. LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC Trước tiên ta cần hiểu rõ thế nào là lặp với số lần chưa biết trước thông qua một số ví dụ. HĐ2: 1) Tìm hiểu một số ví dụ về Các hoạt động lặp với số lần chưa biết trước (20’) HOẠT ĐỘNG CỦA GV HOẠT ĐỘNG CỦA HS NỘI DUNG a) GV cho một số ví dụ - Gieo hai hạt xí ngầu cho đến khi được hai mặt có cùng số nút. (?) Phải gieo bao nhiêu lần? (?) Khi nào ngừng gieo? - Thử nhiều chìa khóa vào một ổ khóa cho đến khi tìm được đúng chìa khóa của ổ khóa. (?) Phải thử bao nhiêu lần? (?) Khi nào ngừng thử? - HS ghi nhận - Không thể biết trước. - Khi hai mặt cùng số nút. - HS ghi nhận - Không thể biết trước. - Khi tìm được đúng chìa khóa để mở ổ khóa. 1. Các hoạt động lặp với số lần chưa biết trước - Nhận xét: có sự lặp lại cho đến khi thỏa mãn một điều kiện nào đó. Xét ví dụ trong SGK để làm rõ vấn đề này. - HS ghi nhận. b) Xét Ví dụ 1 SGK - Gọi HS đọc Ví dụ 1. - GV phân tích vế đầu: bạn Nam lặp lại thao tác gọi điện thoại trong 3 lần. (?) Việc bạn Nam thực hiện ba cuộc gọi có phải là hoạt động lặp với số lần chưa biết trước hay là hoạt động lặp với số lần biết trước ? - Đó là hoạt động lặp với số lần lặp biết trước. a) Ví dụ 1 SGK trang 67 - GV phân tích vế sau: bạn Nam lặp lại thao tác gọi điện thoại cho đến khi nào có người nhấc máy. (?) Việc gọi điện thoại cho đến khi có người nhấc máy là hoạt động lặp với số lần biết trước hay chưa biết trước? - Hoạt động lặp với số lần chưa biết trước. (?) Khi nào thì hoạt động lặp lại này kết thúc? - Khi có người nhấc máy nghe điện thoại. (?) Nếu không có người bắt máy thì sẽ như thế nào? - Tiếp tục gọi cho đến khi có người nhấc máy. - Ta thấy có sự lặp lại các thao tác tương tự nhau (gieo xí ngầu, thử chìa khóa, gọi điện thoại) với số lần lặp là chưa thể biết trước, cho đến khi thỏa mãn một điều kiện nào đó (hai mặt có cùng số nút, tìm đúng chìa khóa, có người nhấc máy nghe điện thoại). Đây chính là hoạt động lặp với số lần chưa biết trước. Ta sẽ đi sâu vào vấn đề này qua Ví dụ 2. c) Xét Ví dụ 2 - Gọi HS đọc Ví dụ 2 - Cá nhân HS đọc. b) Ví dụ 2 SGK 67 (?) Bài toán yêu cầu làm gì? - Cá nhân HS dựa vào SGK trả lời. (?) Hãy giải thích cụm từ “Tổng tự nhiên nhỏ nhất lớn hơn 1000”? - Cộng các số tự nhiên đến một giá trị n nào đó thì tổng S sẽ lớn hơn 1000. Giá trị S tại thời điểm đó gọi là “Tổng tự nhiên nhỏ nhất lớn hơn 1000”. - GV nhận xét, tóm ý. - HS ghi nhận. - Gợi ý hướng giải quyết bài toán: + Gán S0 =0; + Tính S1 : S1 = S0 + n (n=1); + Xét điều kiện, nếu S11000 thì dừng lại. + Thực hiện tương tự với n=3,4 cho đến khi có một số n mà Sn>1000. - HS ghi nhận. - Cho HS (chia 4 nhóm) thảo luận nhóm (trong 4 phút) làm rõ các bước của thuật toán ở Ví dụ 2. (?) Biến n có ý nghĩa gì? (?) Giải thích từng bước của thuật toán? - Thảo luận nhóm. - Lưu trữ giá trị tăng dần của các số tự nhiên. - B1: gán giá trị cho biến; B2: thực hiện thao tác so sánh. Nếu S<= 1000 thì tăng n, tức gán giá trị của số tự nhiên tiếp theo vào n, ngược lại thì kết thúc bài toán. B3: thực hiện cộng tổng S = S +n và trở về B2. B4: in kết quả. - GV nhận xét. - HS ghi nhận. (?) Ở ví dụ 2 ta có xác định được số lần lặp lại không? - Không thể xác định được. (?) Vòng lặp phụ thuộc vào điều kiện nào? - Phụ thuộc vào điều kiện S<=1000. (?) Khi nào kết thúc vòng lặp? - Khi S>1000 (tức điều kiện sai). (?) Tổng quát : việc lặp với số lần chưa biết trước phụ thuộc vào điều gì? Phụ thuộc như thế nào? - Cá nhân HS trả lời. - Việc lặp với số lần chưa biết trước phụ thuộc vào một điều kiện cụ thể nào đó có được thỏa mãn hay không. - Gọi HS đọc nội dung SGK. - Cá nhân HS đọc. - Treo hình 39 (SGK 68) và gọi HS mô tả. - GV nhận xét. - Ta đã hiểu được thế nào là thao tác lặp với số lần chưa biết trước. Vậy trong Pascal thao tác này được thể hiện như thế nào? Ta hãy tìm hiểu phần 2. - Cá nhân HS mô tả + B1 : Xét điều kiện. + B2 : Nếu điều kiện đúng thì thực hiện câu lệnh và quay trở lại B1, ngược lại kết thúc bài toán. - Có thể mô tả việc lặp với số lần chưa biết trước bằng sơ đồ khối dưới đây HĐ3: 2. Ví dụ về lệnh lặp với số lần chưa biết trước (12’) - Giới thiệu câu lệnh lặp While .. do - HS ghi nhận - Câu lệnh lặp với số lần chưa biết trước có dạng While do ; + Đ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 While .. do được thực hiện như thế nào? - HS dựa vào SGK trả lời. - Câu lệnh While .. do được thực hiện: 1. Kiểm tra điều kiện. 2. Nếu điều kiện sai, câu lệnh bỏ qua, lệnh lặp kết thúc; điều kiện đúng, câu lệnh được thực hiện và quay lại bước 1. - Dùng câu lệnh While .. do viết chương trình thực hiện bài tập ở ví dụ 2. Hướng dẫn : (?) Chương trình cần những biến nào? Khai báo ra sao? (?) Điều kiện ở đây là gì? (?) Câu lệnh ở đây là gì? - HS (chia 4 nhóm) thảo luận (trong 4 phút) - Biến S và n. S:=0; n:=0; - S<= 1000. - While S<=1000 do Begin n:=n+1; S:= S+n; End; - Yêu cầu các nhóm trình bày vào bảng phụ và treo lên bảng - Các nhóm hoàn thành chương trình vào bảng phụ và treo lên bảng. - GV nhận xét và cho HS ghi nhận vào vở. - HS ghi nhận. HĐ4: Củng cố (4’) (?) Lặp với số lần biết trước và lặp với số lần chưa biết trước khác nhau như thế nào? - Cá nhân HS trả lời. (?) Cho một số ví dụ trong cuộc sống thể hiện lặp với số lần chưa biết? - Cá nhân HS cho ví dụ. (?) Câu lệnh While .. do được thực hiện như thế nào? - Cá nhân HS trả lời. HĐ5: Dặn dò (1’) - Về xem lại cấu trúc của lệnh lặp While..do, so sánh sự khác nhau giữa câu lệnh For..to..do với While..do. - Đọc trước bài mới. Duyệt của GVHD Trường THCS. Phường 4, ngày 27/02/2010 SV soạn TRẦN NGỌC KHOA
Tài liệu đính kèm: