Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (129.35 KB, 7 trang )
<span class='text_page_counter'>(1)</span>Tuần: 26 Tiết: 49. Ngày soạn: 03/03/2013 Ngày dạy: 05/03/2013. Bài 7 : 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 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. 2. Kĩ năng: Viết đúng lệnh while .. do trong một số tình huống đơn giản 3. Thái độ: Có ý thức tư duy, có thái độ ham học hỏi, tác phong làm việc nghiêm túc. II. CHUẨN BỊ: 1. Giáo viên: SGK, giáo án, máy chiếu 2. Học sinh: Đọc trước bài, SGK, đồ dùng học tập III. TIẾN TRÌNH TIẾT DẠY: 1. Ổn định tổ chức lớp : (1’) 2. Kiểm tra bài cũ: (4’) Câu hỏi: ? Hãy cho biết đoạn chương trình in ra giá trị của i, j, k là bao nhiêu ? J :=3 ;k :=4 ; For i :=1 to 5 do j :=j+1 ; K :=k+j ; Writeln(j,’ ‘,k,’ ‘, i) ; Trả lời: j = 8 , k = 12, i = 5 3. Bài mới: (37’) Hoạt động của giáo viên Hoạt động của học sinh Kiến thức ghi bảng Hoạt đông 1: Các hoạt động lặp với số lần chưa biết trước (20’) GV: Kể một số hoạt động được Hs: Ăn cơm ngày 3 bữa, tính 1. Các hoạt động lặp với số lặp đi lặp lại với số lần biết tổng 100 số tự nhiên đầu tiên. lần chưa biết trước: trước? GV: VD: Tính tổng số tự nhiên * Ví du:Nhặt thóc, nhặt rau, từ 1 đến 100, đánh răng, đi học bài cũ .... học… * Ví dụ 1: ? Nêu một vài hoạt động với số Hs: Học bài không biết khi * Ví dụ 2: lần không biết trước nào thì thuộc. * Sơ đồ: GV: Trong thực tế có nhiều hoạt động được thực hiện lặp đi lặp lại với số lần chưa biết ` trước. VD: Nhặt thóc không biết khi nào thị nhặt xong. VD: Bạn Long gọi cho bạn Sai.
<span class='text_page_counter'>(2)</span> Trang mà không có ai nhấc máy. Vậy bạn Long cứ 10 phút gọi cho bạn Trang cho đến khi nhấc máy thì thôi. Vậy bạn Long có biết trước được gọi mấy lần thì bạn Trang nhấc máy không? GV: Khi nào thì kết thúc hoạt động bạn Long gọi cho bạn Trang? GV: Hãy hình dung Trong khi <không có ai nhấc máy> thì < bạn Long cứ mười phút lại gọi 1 lần> cho đến khi < có người nhấc máy>. VD2: Gv mời 1 em đọc bài toán GV: Phân tích bài toán Phép cộng 1+2+3….n Cho đến khi S>1000 thì dừng lại và in ra kết quả S Gv: Yêu cầu học sinh mô tả thuật toán. Đúng Hs: Không biết được Hs: Khi có người nhấc máy.. Hs: đọc bài.. B1: S 0,n 0; B2: trong khi s<=1000, nn+1; Ngược lại chuyển tới bước 4; B3: S s + n và quay lại bước 2; Gv: Hoạt động này chỉ dừng lại B4: In kết quả: S và n là số tự khi điều kiện đó sai S>1000 thì nhiên nhỏ nhất sao cho dừng lại. S>1000. Kết thúc thuật toán. Gv: Vẽ sơ đồ Sai. Đúng. Gv: Yêu cầu - HS vẽ sơ đồ theo bài toán trên. Gv: Dựa vào 2 VD trên giới thiệu câu lệnh có dạng lặp với số lần chưa biết trước.. Hs: Vẽ sơ đồ theo bài toán trên. Sai.
<span class='text_page_counter'>(3)</span> Đúng. Hoạt động 2: Ví dụ về lệnh lặp với số lần chưa biết trước (17’) Gv: Giới thiệu lệnh lặp với số 2. Ví dụ về lệnh lặp với số lần chưa biết trước lần chưa biết trước: Trong Pascal câu lệnh lặp với * Cú pháp: số lần chưa biết trước có dạng: While <điều kiện> do <câu While <điều kiện> do câu lệnh; lệnh>; Trong đó: điều kiện thường là - Trong đó: một phép so sánh. + Điều kiện thường là một Câu lệnh có thể là câu lệnh đơn phép so sánh. giản hay câu lệnh ghép. + Câu lệnh có thể là câu lệnh Gv: Câu lệnh này được thực Hs: 1. Kiểm tra điều kiện đơn giản hay câu lệnh ghép. hiện thế nào? 2. Nếu điều kiện đúng thực - Cách thức hoạt động: hiện câu lệnh và quay lại bước 1. Kiểm tra <điều kiện> 1, câu lệnh sai sẽ bị bỏ qua và 2. Nếu <Điều kiện>Sai, câu việc thực hiện lệnh sẽ kết thúc. lệnh sẽ bị bỏ qua và việc thực hiện lệnh lặp kết thúc. Nếu VD3: Viết chương trình tính số <điều kiện> đúng, thực hiện n nhỏ nhất để 1/n nhỏ hơn sai câu lệnh và quay lại bước 1. số cho trước (Sai số=0.005); Hs: 1/n=0.005 ==> n= 200; Gv: Cho học sinh giải bài toán. Hs: Input: sai số = 0.005>1/n Gv: Xác định bài toán Output: n B1: x=1,n=1 Gv: Mô tả thuật toán B2: khi x>= 0.005 thì nn+1; x1/n B3: in ra giá trị n; Program VD3; Gv: Viết chương trình sử dụng Uses crt; vòng lặp while .. do. Var x: real; Gv: Gợi ý cho - HS viết N:integer; Const saiso=0.005 Khai báo biến như thế nào? Begin Clrsrcr; Khai báo hằng? X:=1;n:=1; While x>=saiso do Begin Tại sao gán giá trị ban đầu là 1? N:=n+1;x:=1/n; Sử dụng lệnh while<điều kiện> End; do <câu lênh> Writeln(‘ So n nhỏ nhất để 1/n Tại sao lại bỏ trong begin..end? nhỏ hơn 0.005 là’, n); Nếu không bỏ trong begin .. Readln end thì điều gì sẽ xảy ra? End. Gv: Chỉ thực hiện lệnh n+1 và sẽ ra hiện tượng lặp đi lặp lại mãi. Hs: Tính phép tính n=1001.
<span class='text_page_counter'>(4)</span> Gv: Khi khai báo saiso=0.005, em thử thay saiso=0.001 thì n sẽ bằng bao nhiêu? 4. Củng cố: (2’) - Câu lệnh lặp với số lần biết trước và câu lệnh lặp với số lần chưa biết trước. - Cú pháp câu lệnh lặp chưa biết trước? 5. Hướng dẫn về nhà: (1’) - Làm bài tập trong SGK\T71, học bài. - Tiếp tục xem trước Bài 8. 6. Rút kinh nghiệm: ........................................................................................................................................... ........................................................................................................................................... ............................................................................................................................................ Tuần: 26 Tiết: 50. Ngày soạn: 04/03/2013 Ngày dạy: 08/03/2013. Bài 7 : LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC (t2) 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 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. 2. Kĩ năng: Viết đúng lệnh while .. do trong một số tình huống đơn giản 3. Thái độ: Có ý thức tư duy, có thái độ ham học hỏi, tác phong làm việc nghiêm túc. II. CHUẨN BỊ:.
<span class='text_page_counter'>(5)</span> 1. Giáo viên: SGK, giáo án, máy chiếu 2. Học sinh: Đọc trước bài, SGK, đồ dùng học tập III. TIẾN TRÌNH TIẾT DẠY: 1. Ổn định tổ chức lớp : (1’) 2. Kiểm tra bài cũ: (4’) Câu hỏi: Viết cú pháp của lệnh lặp chưa biết trước? Giải thích, nêu cách thức hoạt động. Trả lời: * Cú pháp: While <điều kiện> do <câu lệnh>; - 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ách thức hoạt động: 1. Kiểm tra <điều kiện> 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. 3. Bài mới: (37’) Hoạt động của giáo viên Hoạt động của học sinh Kiến thức ghi bảng Hoạt động 1: Ví dụ về lệnh lặp với số lần chưa biết trước (22’) VD4: Viết chương trình 2. Ví dụ về lệnh lặp với số tìm n để khi Tn <1000. lần chưa biết trước: Gv : Cho Hs xác định bài Hs: Xác định bài toán VD4: Viết chương trình tìm n toán * Xác định bài toán để khi Tn <1000. Input: Tổng n số <1000 * Xác định bài toán Gv?: Nhắc lại thuật toán Output: S, n Input: Tổng n số <1000 Hs: Mô tả thuật toán Output: S, n * Mô tả thuật toán * Mô tả thuật toán B1: S 0,n 0; B1: S 0,n 0; B2: trong khi s<=1000, nn+1; B2: trong khi s<=1000, nn+1; Ngược lại chuyển tới bước 4; Ngược lại chuyển tới bước 4; B3: S s + n và quay lại bước 2; B3: S s + n và quay lại bước B4: In kết quả: S và n là số tự 2; nhiên nhỏ nhất sao cho S>1000. B4: In kết quả: S và n là số tự Kết thúc thuật toán. nhiên nhỏ nhất sao cho Gv: Gợi ý cho - Hs viết Hs: Suy nghĩ viết chương trình. S>1000. Kết thúc thuật toán. chương trình sử dụng vòng *Viết chương trình lặp while .. do. Program timn; Gv? Khai báo những biến Hs: Biến S để chứa tổng và biến Uses crt; n là số tự nhiên nào? Var n,s: integer; Hs: S:= 0; n:=1; Gv? Ban đầu gán giá trị cho Begin s,n là bao nhiêu? S:=0;n:=0 Gv: Cho Hs lên bảng viết Hs: Lên bảng viết chương trình. While s<=1000 do chương hoàn chỉnh. Begin Hs: Theo dõi Gv: Nhận xét sửa lại để S:=s+n; được một chương trình hoàn N:=n+1; chỉnh. End;.
<span class='text_page_counter'>(6)</span> Gv: Chạy bộ chương trình Writeln(‘so n nho nhat de theo từng bước của câu lệnh tong>1000 là:’,n); để - Hs hình dung. Writeln(‘ tổng dau tiên>1000 Gv: Giải thích thêm cặp là:’,s); lệnh nằm giữa Begin và End Readln VD5: Viết chương trình End. tính tổng sau: VD5: Viết chương trình để T= 1+1/2+1/3….1/100 tính tổng T= 1+ 1/2+1/3 + ... + Gv: Gọi - HS lên viết Hs: Lên viết chương trình 1/100 chương trình sử dụng for .. * Nội dung chương trình: do tinhtong; Gv: Mời Hs khác nhận xét Hs: Nhận xét Program tinhtong; Gv: Với bài toán này có thể Hs: Có thể sử dụng lệnh While Uses crt; dùng while ..do được để viết chương trình cho bài toán Var i,s: integer; không? này. Begin Gv Gợi ý Hs: Chú ý theo dõi. S:=0;i:=0 Gv: Cho Hs Viết chương Hs: Lập nhóm và viết chương While i<=100 do trình theo nhóm (5’) trình begin Gv: Cho các nhóm trao đổi Hs: Trao đổi phiếu S:=s+1/I; phiếu học tập I:=i+1; Gv: Sửa chương trình Hs: Sửa bài của nhóm bạn End; Gv: Nhận xét và cho điểm Writeln(‘tổng là:’,s); KL: có thể sử dụng câu lệnh Readln while .. do thay cho câu End. lệnh for..do. Hoạt động 2: Lặp vô hạn lần – Lỗi lập trình cần tránh (15’) Gv: Cho ví dụ lặp không 3. Lặp vô hạn lần – Lỗi lập bao giờ ngừng và việc viết trình cần tránh: chương trình cần tránh vòng - Vòng lặp vô hạn là vòng lặp lặp không bao giờ kết thúc. không kết thúc. *Ví dụ: * Nguyên nhân: Do điều kiện Var x: integer; sau While luôn đúng nên Begin câulệnh sau Do luôn được X:=5; thực hiện. While x<7 do writeln(‘Chao * Cách khắc phục: Muốn khắc ban’); phục thì trong câu lệnh sau Do End. cần phải có câu lệnh làm cho Gv?: Phân tích các lệnh trên Hs: Phân tích ví dụ: Cho x ban điều kiện sau while dần đi đến đầu bằng 5 sai. Khi x<5 thì viết ra chào bạn. Nhưng x luôn < 5 nên vòng lặp được thực hiện không bao giờ kết thúc. Lặp đi lặp lại vô hạn lần. Gv: Giải thích về lặp vô hạn. VD: S:=0; i:=0;.
<span class='text_page_counter'>(7)</span> While i<=100 do S:=s+1/I; GV: Lấy ví dụ bài trên Thực hiện vô hạn lần vì I lúc nào cũng nhỏ hơn 100. 4. Củng cố: (2’) - Câu lệnh lặp với số lần biết trước và câu lệnh lặp với số lần chưa biết trước. Sử dụng câu lệnh lặp chưa biết trước vào các bài toán. - Cú pháp câu lệnh lặp chưa biết trước? Lỗi lặp vô hạn lần. 5. Hướng dẫn về nhà: (1’) - Làm bài tập trong SGK\T71 - Tiết sau tiết bài tập 6. Rút kinh nghiệm: ........................................................................................................................................... ........................................................................................................................................... ............................................................................................................................................
<span class='text_page_counter'>(8)</span>