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;
• 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 chương trình Pascal dùng câu lệnh lặp while.do để thể hiện cấu trúc lặp với số lần chưa biết trước.
• Vận dụng được: cấu trúc lặp với số lần chưa biết trước để mô tả thuật toán, câu lệnh lặp với số lần chưa biết trước để viết chương trình trong Pascal.
• Vận dụng thành thạo: kiến thức, kỹ năng, tri thức, phương pháp được học vào giải bài tập.
3. Tư duy và thái độ
• Cẩn thận, chính xác.
• Tập trung cao độ, nghiêm túc trong giờ học.
• Phát triển tư duy suy luận logic, trí tưởng tượng và tạo được hứng thú trong học tập.
Ngày soạn : 23 – 02 – 2010. Ngày dạy : 02 – 03 – 2010. Tổ : Toán – Tin Phòng : Thực hành. Tên bài giảng: 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; 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 chương trình Pascal dùng câu lệnh lặp while...do để thể hiện cấu trúc lặp với số lần chưa biết trước. Vận dụng được: cấu trúc lặp với số lần chưa biết trước để mô tả thuật toán, câu lệnh lặp với số lần chưa biết trước để viết chương trình trong Pascal. Vận dụng thành thạo: kiến thức, kỹ năng, tri thức, phương pháp được học vào giải bài tập. 3. Tư duy và thái độ Cẩn thận, chính xác. Tập trung cao độ, nghiêm túc trong giờ học. Phát triển tư duy suy luận logic, trí tưởng tượng và tạo được hứng thú trong học tập. II. CHUẨN BỊ 1. Giáo viên: Giáo trình, bảng phụ, máy tính 2. Học sinh: Kiến thức cũ, sách, vở. III - TIẾN TRÌNH BÀI GIẢNG 1 – Kiểm tra bài cũ: (5’) Viết thuật toán tính tổng 100 số tự nhiên đầu tiên 1,2,3,,99,100 Trả lời 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. Lời dẫn: đối với các bài toán như trên khi ta đã biết tổng các số tự nhiên cần tính là 100 và ta có thể dùng vòng lặp “For do” để tính nhưng trong cuộc sống thì các phép toán không dừng lại ở con số 100 mà nó nhiều hơn thế nữa tới một số n nào đó. Liệu rằng vòng lặp trên có tính được không?Vì vậy để giải quyết bài toán nhanh chóng hơn, thì thầy và các em cùng đi vào bài mới 2 – Bài mới: Lặp Với Số Lần Chưa Biết Trước TG Hoạt động GV Hoạt động HS Nội Dung Cần Đạt 15’ y/c hs đọc ví dụ 1sgk/67 Phân tích ví dụ y/c hs đọc ví dụ 1sgk/67 Phân tích ví dụ Hướng dẫn hs xây dựng thuật toán Nghe giáo viên hướng dẫn, sau đó tự xây dựng thuật toán Chạy tay cho học sinh xem ( Chỉ nên chạy tay thử từ 1 đến 10 ) Chú ý nghe . Giới thiệu sơ đồ khối Nêu nhận xét 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 .; chú ý nghe và ghi chép Hs : 2-3 hs đọc ví dụ sgk Hs : Chú ý lắng nghe Hs : 2-3 hs đọc ví dụ sgk Hs : chú ý lắng nghe Hs ghi vở ví dụ 2 Học sinh vẽ sơ đồ vào vở Từ đó rút ra được cách hoạt động của vòng lặp. 1. Các hoạt động lặp với số lần chưa biết trước (19’) 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 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. * 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 Hoạt động 2 20’ 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 ) 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 ) Chạy tay cho học sinh xem 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 ) + G : Cho học sinh chạy chương trình trên máy + Hs : thực hiện + G : Yêu cầu hs thay điều kiện sai_so = 0.003 thành 0.002 ; 0.001 ; 0.005 ; ... + Hs : quan sát + Hs : chú ý nghe và tự chạy tay lại Thể hiện thao tác lại toàn bộ quá trình lặp. thực hiện 2. Ví dụ về lệnh lặp với số lần chưa biết trước (17’) 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. 3 - Củng cố: (3’) 4 - Hướng dãn về nhà: (1’) - Bài tập về nhà: bài 1,2 trang 71. - Hướng dẫn bài tập về nhà: bài 1,2 trang 71. - chuẩn bị trước cho phần tiếp theo. Bài 8 : LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC (TT) Ngày soạn: 24/03/2009 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; 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 chương trình Pascal dùng câu lệnh lặp while...do để thể hiện cấu trúc lặp với số lần chưa biết trước. Vận dụng được: cấu trúc lặp với số lần chưa biết trước để mô tả thuật toán, câu lệnh lặp với số lần chưa biết trước để viết chương trình trong Pascal. Vận dụng thành thạo: kiến thức, kỹ năng, tri thức, phương pháp được học vào giải bài tập. 3. Tư duy và thái độ Cẩn thận, chính xác. Tập trung cao độ, nghiêm túc trong giờ học. Phát triển tư duy suy luận logic, trí tưởng tượng và tạo được hứng thú trong học tập. II - CHUẨN BỊ 1. Giáo viên: Giáo trình, bảng phụ, máy tính, máy chiếu (nếu có). 2. Học sinh: Kiến thức cũ, sách, vở. III - TIẾN TRÌNH BÀI GIẢNG 1 - Kiểm tra bài cũ: (5’) HĐ CỦA GV HĐ CỦA HS GHI BẢNG - Nêu câu hỏi. - Gọi một HS lên bảng. - Gọi HS nhận xét. - Nhận xét cho điểm. - Nghe, hiểu và tìm câu trả lời - Lên bảng trả lời câu hỏi kiểm tra bài cũ - Nhận xét câu trả lời của bạn. Câu hỏi : Nêu cú pháp câu lệnh lặp với số lần chưa biết trước trong Pascal? Câu lệnh lặp này được thực hiện như thế nào? Trả lời: Trong Pascal câu lệnh lặp với số lần chưa biết trước có dạng: while do ; 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. * Đặt vấn đề vào bài mới: Các em đã biết câu lệnh lặp với số lần chưa biết trước trong Pascal, để hiểu thêm về câu lệnh này chúng ta cùng tìm hiểu thêm một số ví dụ 2 – Bài mới: TG HĐ CỦA GV HĐ CỦA HS GHI BẢNG 20’ Hoạt động 1 - Đưa ra bài toán: tính tổng Tn= 1+2+3++n sao cho Tn nhỏ nhất lớn hơn 20 ? Thuật toán? - Mô phỏng thuật toán Bước 1 2 3 4 5 6 n 1 2 3 4 5 6 7 Tn<=20 Đ Đ Đ Đ Đ Đ S Tn 1 3 6 10 15 21 KT - Chiếu chương trình của bài toán trên cho HS quan sát. var S,n: integer; begin S:=0; n:=0; while S<=20 do begin n:=n+1; S:=S+n end; writeln('So n nho nhat de tong > 20 la ',n); writeln('Tong dau tien > 20 la ',S); end. - Giải thích từng dòng lệnh - Tương tự, yêu cầu HS viết chương trình thể hiện thuật toán tính số n trong ví dụ 2 - Yêu cầu HS chạy chương trình - Chạy chương trình này, ta nhận được giá trị ntn? - Gọi HS đọc ví dụ 5 sgk trang 69 - Cho học sinh quan sát chương trình trong TP viết bằng câu lệnh for...do... - Chạy chương trình cho HS quan sát - Cho học sinh quan sát chương trình trong TP viết bằng câu lệnh while...do... - Chạy chương trình cho HS quan sát - Hai chương trình trên cho kết quả như thế nào? ? Ví dụ này cho thấy điều gì? - Nghe hiểu yêu cầu bài toán - Đưa ra thuật toán. - Quan sát - Quan sát - Viết chương trình - Chạy chương trình trên máy tính. - Ta sẽ nhận được n = 45 và tổng đầu tiên lớn hơn 1000 là 1035. - Đọc ví dụ 5 sgk trang 69 - Quan sát - Quan sát - Giống nhau - Ví dụ này cho thấy rằng chúng ta có thể sử dụng câu lệnh whiledo thay cho câu lệnh fordo. 2. Ví dụ về lệnh lặp với số lần chưa biết trước(tt): (20’) Ví dụ 4. Chương trình Pascal dưới đây thể hiện thuật toán tính số n trong ví dụ 2: var S,n: integer; begin S:=0; n:=0; while S<=1000 do begin n:=n+1; S:=S+n end; writeln('So n nho nhat de tong > 1000 la ',n); writeln('Tong dau tien > 1000 la ',S); end. Ví dụ 5. Viết chương trình tính tổng Giải : - Sử dụng lệnh lặp với số lần lặp biết trước fordo: T:=0; for i:=1 to 100 do T:=T+1/i; writeln(T); - Sử dụng lệnh lặp whiledo: T:=0; i:=1; while i<=100 do begin T:=T+1/i; i:=i+1 end; writeln(T); * Nhận xét : Ví dụ này cho thấy rằng chúng ta có thể sử dụng câu lệnh whiledo thay cho câu lệnh fordo. 20’ Hoạt động 2 - Sử dụng Turbo Pascal 7.0 chạy đoạn chương trình: var a:integer; begin a:=5; while a<6 do writeln('A'); end. - Trong chương trình trên, giá trị biến a bằng mấy? Có thay đổi không? - Điều kiện a<6 ntn? - Lệnh Writeln(‘A’) ntn? - Do vậy, khi thực hiện vòng lặp, điều kiện trong câu lệnh phải được thay đổi để sớm hay muộn giá trị của điều kiện được chuyển từ đúng sang sai. Chỉ như thế chương trình mới không "rơi" vào những "vòng lặp vô tận". - Ở chương trình trên, em cần có một câu lệnh để tăng biến a lên một đơn vị sau mỗi vòng lặp - Sửa chương trình trên máy tính bằng cách thêm một câu lệnh để thay đổi biến a sao cho phép so sánh a<6 trở thành sai cho HS quan sát. - Ví dụ var a:integer; begin a:=5; while a<6 do begin writeln('A'); a:=7 end; end. - Quan sát chương trình lặp vô tận. - Giá trị biến a không thay đổi, luôn bằng 5 - Điều kiện a<6 luôn luôn đúng - Lệnh Writeln(‘A’) luôn được thực hiện - Một HS lên bảng vẽ, cả lớp theo dõi - Quan sát 3. Lặp vô hạn lần – Lỗi lập trình cần tránh (16’) Khi viết chương trình sử dụng cấu trúc lặp cần chú ý tránh tạo nên vòng lặp không bao giờ kết thúc. 3- Củng cố: (3’) HĐ CỦA GV HĐ CỦA HS GHI BẢNG - Chiếu hoặc treo bảng phụ viết sẵn bài tập 5 SGK trang 71 - Gọi HS đứng tại chỗ làm bài - Nhận xét và cho đáp án đúng. - Đọc, hiểu và tìm câu trả lời - Đứng tại chỗ trả lời. Bài tập 5 SGK trang 71 Hãy chỉ ra lỗi trong các câu lệnh sau đây: X:=10; while X:=10 do X:=X+5; X:=10; while X=10 do X=X+5; S:=0; n:=0; while S<=10 do n:=n+1; S:=S+n; Trả lời: a) Thừa dấu hai chấm trong điều kiện; b) Thiếu dấu hai chấm trong câu lệnh gán; c) Thiếu các từ khóa begin và end trước và sau các lệnh n:=n+1; S:=S+n, do đó vòng lặp trở thành vô tận. 4- Hướng dẫn về nhà: (1’) - Bài tập về nhà: bài 3,4 trang 71.
Tài liệu đính kèm: