Giáo án Tin học 11 - Chủ đề: Cấu trúc rẽ nhánh và lặp

TÊN BÀI: Cấu trúc rẽ nhánh (T.T.)

I. Mục tiêu:

1. Kiến thức.

 - Học sinh nắm được cú pháp câu lệnh ghép.

 - Biết cách sử dụng đúng hai dạng cấu trúc rẽ nhánh trong lập trình: dạng thiếu và dạng đủ.

 2. Kĩ năng.

Bước đầu sử dụng được cấu trúc rẽ nhánh If . then . else . trong ngôn ngữ lập trình Pascal để viết chương trình giải quyết được một số bài toán đơn giản.

3. Thái độ

- Giúp học sinh hiểu rõ hơn tầm quan trọng của cấu trúc rẽ nhánh.

- Làm cho học sinh thêm yêu thích lập trình, yêu thích môn học hơn.

- Xác định thái độ nghiêm túc trong học tập khi làm quen với nhiều quy định nghiêm

4. Định hướng phát triển năng lực:

- Mô hình hóa các tình huống thực tiễn xảy ra phụ thuộc vào điều kiện theo cấu trúc rẽ nhánh trong tin học.

- Diễn tả thuật toán cấu trúc rẽ nhánh trên ngôn ngữ lập trình.

- Năng lực tự học: Xác định nhiệm vụ khi học Tin học để phục vụ cho công việc.

II. Phương pháp: Kết hợp các phương pháp như: thuyết trình, vấn đáp

 

docx56 trang | Chia sẻ: binhan19 | Lượt xem: 1078 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Giáo án Tin học 11 - Chủ đề: Cấu trúc rẽ nhánh và lặp, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
writeln( ‘ x1 = ‘, x1:8:3,’ x2 = ‘, x2:8:3’); End; readln END. Câu ND4.DL.VDT1. Hoàn thiện đoạn chương trình sau: If a>b then :=a; A:=..; B:=tg; End; Câu ND4.TH.TH1. Cho chương trình viết bằng ngôn ngữ PASCAL sau đây PROGRAM Inso; Uses crt; Var M, N, I : integer; BEGIN clrscr; M := 0 ; N := 0 ; For I := 1 TO 10000 do Begin if ( (I mod 3) = 0 ) then M := M + 1 ; if ( (I mod 3) = 0 ) and ( (I mod 5) = 0 ) then N := N + 1 ; End; writeln( M,‘ ’, N ); readln END. Phát biểu nào dưới đây về chương trình trên là đúng ? Đây là chương trình đếm số các số nguyên trong khoảng từ 1 đến 10000 là bội số của 3. Đây là chương trình đếm và thông báo ra màn hình rằng trong khoảng từ 1 đến 10000 có bao nhiêu số nguyên là bội số của 3 và có bao nhiêu số là bội số chung của 3 và 5. (*) Đây là chương trình đếm số các số nguyên nhỏ hơn 10000 và chia hết cho 3; Đây là chương trình đếm số các số nguyên trong khoảng từ 1 đến 10000 là bội số của 3 và 5. Câu ND4.TH.VDT1. Viết chương trình sử dụng câu lệnh ghép tìm nghiệm cho phương trình bậc nhất: ax+b=0 (a0). NỘI DUNG CÁC CÂU HỎI, BÀI TẬP BÀI 10:CẤU TRÚC LẶP NỘI DUNG 1. Cấu trúc lặp Câu ND1.ĐT.NB.1 Trong các tình huống sau, tình huống nào cần đến cấu trúc lặp để mô tả một hay một số hoạt động được lặp đi lặp lại: A) Khi sử dụng điện thoại di động có mật khẩu đăng nhập, ta phải nhập mật khẩu một số lần nếu mật khẩu đưa vào không đúng B) Khi sử dụng thang máy, thang máy được điều khiển đi lên hay đi xuống đến các tầng dựa trên nguyên tắc ưu tiên những khách gọi thang máy trước. C) Lập trình tính tổng S của dãy n số tự nhiên đầu tiên theo công thức S = n(n+1)/2 D) Lập trình tính số mol của một chất A biết nguyên tử khối của A khi lần lượt nhập khối lượng (gam) của A từ bàn phím. Câu ND1.ĐT.NB.2 Trong các mô tả dưới đây, mô tả nào biểu diễn đúng cấu trúc lặp: Mô tả 1 Nhập số gam P và số lít O2 tham gia phản ứng hóa học là mP và VO2 Tính số mol P tham gia phản ứng theo công thức nP = mP/31 Tính số mol O2 tham gia phản ứng theo công thức nO2 = VO2/22.4 Mô tả 2 Thực hiện các công việc sau đây 5 lần để đưa 150 khách từ địa điểm A đến địa điểm B bằng xe ô tô 30 chỗ ngồi. (1) Đón 30 khách ở địa điểm A (2) Chở khách và trả khách ở địa điểm B (3) Quay về bến A Mô tả 3 (1) Viết ra dãy số 2016 (không viết dấu ngăn cách giữa các số) (2) Viết số tiếp theo có giá trị bằng chữ số hàng đơn vị của tổng 4 chữ số đứng ngay trước đó (3) Nếu số vừa viết là số 0 thì kết thúc công việc viết dãy số, nếu không thì quay lại thực hiện công việc 2 trên đây. Câu ND1.ĐT.TH.1 Hãy giải thích hoạt động của cấu trúc lặp trong mô tả dưới đây và cho biết cấu trúc lặp này thực hiện công việc gì, giá trị của biến i và biến S bằng bao nhiêu khi thực hiện xong quá trình lặp. Khởi gán giá trị 1 cho biến i, giá trị 0 cho biến S; Lặp quá trình sau đây khi giá trị của i còn nhỏ hơn 5 (1) Cộng giá trị của S với giá trị của i2 rồi gán kết quả cho S (2) Tăng giá trị của i lên 1 đơn vị Câu ND1.ĐT.TH.2 Hãy giải thích hoạt động của các câu lệnh trong sơ đồ khối sau đây: Câu lệnh 1 Điều kiện Câu lệnh 2 đúng sai Câu lệnh 3 (Giải thích được hoạt động của cấu trúc lặp kiểm tra điều kiện trước trong một sơ đồ thuật toán cụ thể) Câu ND1.ĐT.TH.3 Hãy giải thích hoạt động của các câu lệnh trong sơ đồ khối sau đây: Câu lệnh 1 Điều kiện Câu lệnh 2 đúng sai Câu lệnh 3 (Giải thích được hoạt động của cấu trúc lặp kiểm tra điều kiện sau trong một sơ đồ thuật toán cụ thể) Câu ND1.ĐT.VDT.1 Hãy chuyển phát biểu dưới đây sang mô tả thuật toán tính tích của n số tự nhiên đầu tiên bằng cách sử dụng cấu trúc lặp. “Để tính giá trị của T là tích của n số tự nhiên đầu tiên ta thực hiện như sau: Với mỗi giá trị của i bằng 1, 2, , n, ta lấy T nhân với i rồi gán kết quả cho T. Ban đầu T được khởi tạo giá trị là 1.” NỘI DUNG 2. Câu lệnh lặp for-do Câu ND2.ĐT.NB.1 Hãy phát biểu cú pháp và hoạt động của câu lệnh for-to-do trong ngôn ngữ lập trình Pascal? (Tái hiện được chính xác nội dung đơn vị kiến thức) Câu ND2.ĐT.NB.2 Hãy chọn các phương án trả lời đúng trong các phương án sau: A) Cú pháp tổng quát của câu lệnh while-do được viết như sau: while do ; B) Trong câu lệnh while-do, là một biểu thức logic có giá trị đúng (true) hoặc sai (false). C) Trong câu lệnh lặp while-do, sẽ được thực hiện lặp đi lặp lại khi có giá trị đúng D) Quá trình lặp trong câu lệnh while-do chỉ dừng lại khi có giá trị đúng. (Tái hiện được chính xác nội dung đơn vị kiến thức) Câu ND2.ĐT.TH.1 Hãy giải thích hoạt động của câu lệnh sau đây và cho biết nó thực hiện công việc gì? for i := 1 to 9 do writeln(2*i); (Giải thích được hoạt động của câu lệnh rẽ nhánh khuyết trong một tình huống cụ thể) Câu ND2.ĐL.NB.1 Câu lệnh nào dưới đây viết đúng: A) for i = 1 to 10 do writeln(i*i); B) for i := 1, 2, , 10 do writeln(i*i); C) for i := 1 to 10 do writeln(i*i); D) for i := 1 downto 10 do writeln(i*i); (Nhận biết được câu lệnh for-do viết đúng hay sai; ở đây có 2 giá trị dùng để lượng hóa là đúng và sai ) Câu ND2.ĐL.TH.1 Sau khi thực hiện đoạn chương trình dưới đây, giá trị của S là gì? readln(a, n); S := 1; for i := 1 to n do S := S * a; (Có nhiều đơn vị kiến thức và có suy luận trung gian) Câu ND2.ĐL.VDT.1 Hãy viết đoạn chương trình để tính giá trị biểu thức sau (Vận dụng kiến thức để giải quyết vấn đề trong tình huống quen thuộc) Câu ND2.ĐL.VDC.1 Hãy viết đoạn chương trình để đếm xem có bao nhiêu số chia hết cho 9 trong đoạn [a, b], với các số nguyên a và b nhập từ bàn phím. (Vận dụng kiến thức để giải quyết vấn đề trong tình huống mới: Sau câu lệnh lặp cần đến câu lệnh rẽ nhánh) Câu ND2.TH.NB.1 Hãy sửa một lỗi cú pháp trong chương trình dưới đây rồi chạy thực hiện chương trình và thông báo kết quả var i, n, S : longint; begin S := 0; for i = 1 to n do if i mod 2 > 0 then S := S + i; writeln(‘Tong cua cac so le trong n so tu nhien dau tien la:’, S); readln; end. (HS phát hiện và sửa được lỗi cú pháp khi quan sát thao tác giải quyết vấn đề) Câu ND2.TH.TH.1 Chương trình sau đây tính nhiệt độ trung bình của 7 ngày, nhưng kết quả đưa ra không đúng. Hãy giải thích tại sao và sửa lại chương trình cho đúng: var x, y, z : integer; begin for i:=1 to 7 do begin write(‘nhap nhiet do ngay thu ’, i, ‘: ’); readln(t); end; S := S + t; Writeln(‘Nhiet do trung binh cua 7 ngay la: ’, S/7:0:2); readln end. (HS phát hiện và sửa được lỗi ngữ nghĩa khi quan sát thao tác giải quyết vấn đề) Câu ND2.TH.VDT.1 Cho một bàn cờ với các ô vuông. Ô thứ thứ nhất chứa 1 hạt gạo, số hạt gạo của ô thứ hai trở đi gấp đôi số hạt gạo của ô ngay trước đó. Hãy viết chương trình tìm số hạt gạo ở ô thứ n của bàn cờ. Số nguyên dương n được nhập từ bàn phím. (HS vận dụng được kiến thức tổng hợp để giải quyết vấn đề trong tình huống quen thuộc) Câu ND2.TH.VDC.1 Hãy viết chương trình in màn hình bảng cửu chương của các số từ 2 đến 9. Các bảng cửu chương cách nhau một dòng trống. (HS vận dụng được kiến thức tổng hợp để giải quyết vấn đề trong tình huống mới: sử dụng câu lệnh lặp for-do lồng nhau kết hợp với câu lệnh ghép) NỘI DUNG 3. Câu lệnh lặp while-do Câu ND3.ĐT.NB.1 Hãy phát biểu cú pháp và hoạt động của câu lệnh while-do trong ngôn ngữ lập trình Pascal? (Tái hiện được chính xác nội dung đơn vị kiến thức) Câu ND3.ĐT.NB.2 Hãy phát biểu cú pháp và hoạt động (ngữ nghĩa) của câu lệnh for-downto-do trong ngôn ngữ lập trình Pascal? (Tái hiện được chính xác nội dung đơn vị kiến thức) Câu ND3.ĐT.TH.1 Hãy giải thích hoạt động của câu lệnh sau đây và cho biết nó thực hiện công việc gì? while a > 0 do begin r := a mod 10; write(r); a := a div 10; end; (Giải thích được hoạt động của câu lệnh lặp while-do trong một tình huống cụ thể) Câu ND3.ĐL.NB.1 Câu lệnh nào dưới đây viết đúng: A) while a mod 10 := 10 do a := a - 1; B) while a b then if a > b then a := a – b else b := b – a; C) while a > b do a := a – 1; D) while a mod b > 0 do if a > b then a := a – b else b := b – a; (Nhận biết được câu lệnh while-do viết đúng hay sai; ở đây có 2 giá trị dùng để lượng hóa là đúng và sai ) Câu ND3.ĐL.TH.1 Sau khi thực hiện đoạn chương trình dưới đây, giá trị của S là gì? S := 0; while a > 0 do begin r := a mod 10; if r mod 2 = 0 then S := S + r; a := a div 10; end; writeln(r); (Có nhiều đơn vị kiến thức và có suy luận trung gian) Câu ND3.ĐL.VDT.1 Hãy viết đoạn chương trình để tìm ước số chung lớn nhất của hai số nguyên dương a và b cho trước. (Vận dụng kiến thức để giải quyết vấn đề trong tình huống quen thuộc) Câu ND3.ĐL.VDC.1 Hãy viết đoạn chương trình để tìm bội số chung nhỏ nhất của hai số nguyên dương a và b cho trước. (Vận dụng kiến thức để giải quyết vấn đề trong tình huống mới) Câu ND3.TH.NB.1 Hãy sửa hai lỗi cú pháp trong chương trình dưới đây rồi chạy thực hiện chương trình và thông báo kết quả với các giá trị của a và b nhập từ bàn phím là a) a = 84, b = 63 b) a = 120, b = 64 var i, n, S : longint; begin r := a mod b while r > 0 begin a := b; b := r; r := a mod b; end; writeln(b); readln end. (HS phát hiện và sửa được lỗi cú pháp khi quan sát thao tác giải quyết vấn đề) Câu ND3.TH.TH.1 Chương trình sau đây tìm chữ số có giá trị lớn nhất trong các chữ số của số nguyên dương a, nhưng kết quả đưa ra không đúng. Hãy giải thích tại sao và sửa lại chương trình cho đúng var a, r, max : integer; begin write(‘Nhap so a: ’); readln(a); max := 0; while a > 0 do begin r := a mod 10; if max > r then max := r; a := a div 10; end; write(‘chu so lon nhat la ’, max); readln end. (HS phát hiện và sửa được lỗi ngữ nghĩa khi quan sát thao tác giải quyết vấn đề) Câu ND3.TH.VDT.1 Dân số của một quốc gia năm 2000 là 80 triệu người. Giả sử tốc độc tăng dân số hàng năm là 3%. Hãy lập chương trình để cho biết đến năm nào thì quốc gia đó sẽ có dân số không ít hơn 85 triệu người. (HS vận dụng được kiến thức tổng hợp để giải quyết vấn đề trong tình huống quen thuộc) Câu ND3.TH.VDC.1 Một người gửi tiết kiệm không kì hạn với số tiền là A đồng với lãi suất 0.5% và chu kì tính lãi là C tháng. Hãy lập chương trình để cho biết sau bao nhiêu tháng, người đó rút hết tiền thì sẽ nhận được số tiền ít nhất là B đồng. Biết rằng với việc gửi tiết kiệm có kì hạn thì lãi suất được cộng vào vốn. Các số A, B, C được nhập từ bàn phím. (HS vận dụng được kiến thức tổng hợp để giải quyết vấn đề trong tình huống mới) II. TỔ CHỨC HOẠT ĐỘNG DẠY HỌC A.Tiến trình dạy học bài 9: CẤU TRÚC RẼ NHÁNH Hoạt động I: Tiết 1 TÊN BÀI: Cấu trúc rẽ nhánh I. Mục tiêu: 1. Kiến thức: - Học sinh biết được ý nghĩa của cấu trúc rẽ nhánh. - Học sinh biết được cấu trúc chung của cấu trúc rẽ nhánh. - Biết cách sử dụng đúng hai dạng cấu trúc rẽ nhánh trong lập trình: dạng thiếu và dạng đủ. 2. Kĩ năng: Bước đầu sử dụng được cấu trúc rẽ nhánh If ... then ... else ... trong ngôn ngữ lập trình Pascal để viết chương trình giải quyết được một số bài toán đơn giản. 3. Thái độ: - Giúp học sinh hiểu rõ hơn tầm quan trọng của cấu trúc rẽ nhánh. - Làm cho học sinh thêm yêu thích lập trình, yêu thích môn học hơn. - Xác định thái độ nghiêm túc trong học tập khi làm quen với nhiều quy định nghiêm. 4. Định hướng phát triển năng lực: - Mô hình hóa các tình huống thực tiễn xảy ra phụ thuộc vào điều kiện theo cấu trúc rẽ nhánh trong tin học. - Diễn tả thuật toán cấu trúc rẽ nhánh trên ngôn ngữ lập trình. - Năng lực tự học: Xác định nhiệm vụ khi học Tin học để phục vụ cho công việc. II. Phương pháp: Kết hợp các phương pháp như: thuyết trình, vấn đáp III. Chuẩn bị: Giáo viên: - Có máy tính Học sinh: - Vở ghi học sinh - Sách giáo khoa tin học lớp 11 - Sách bài tập Tin học 11 - Sách tham khảo nếu có III. Quá trình thực hiện bài giảng: 1. Ổn định lớp: (... phút) - Kiểm tra sĩ số, ổn định lớp 2. Kiểm tra bài cũ: (...phút) 3. Giảng bài mới: Nội dung TG Hoạt động của thầy và trò Hoạt động1. Rẽ nhánh * Toán tử rẽ nhánh cho phép lựa chọn một trong hai dạng: rẽ nhánh khuyết và rẽ nhánh đầy đủ vào giá trị của một biểu thức lôgic (Boolean) là False hay True * Ví dụ : Đưa ra hai mệnh đề ‘nếu.thì.’ và ‘nếu..thì.nếu không thì.’ * Ta có hai dạng rẽ nhánh: + Dạng 1: gọi là dạng rẽ nhánh khuyết- thiếu Nếu....thì..... + Dạng 2: gọi là dạng rẽ nhánh đầy đủ Nếu....thì.....nếu không thì..... * Ví dụ: Giải phương trình bậc hai ax2+ bx+ c= 0 (a#0) ta đi tính giá trị Delta Delta= b2- 4ac nếu Delta không âm, ta sẽ đưa ra các nghiệm . nếu Delta âm, ta thông báo phương trình vô nghiệm. Ò Mọi ngôn ngữ lập trình đều có các câu lệnh để mô tả cấu trúc rẽ nhánh nhập a,b,c DÑ b2- 4ac D>=0 Sai Đúng vô nghiệm nghiệm x1, x2 Hoạt động 2. Câu lệnh if- then * Để mô tả cấu trúc rẽ nhánh, Pascal dùng câu lệnh if-then. Tương ứng với hai dạng thiếu và đầy đủ a) Dạng thiếu if then b) Dạng đầy đủ if then else trong đó: + Điều kiện là biểu thức lôgic + Câu lệnh, câu lệnh1, câu lệnh2: là các câu lệnh của Pascal - Sơ đồ dạng thiếu: - Sơ đồ dạng đầy đủ: + ở dạng thiếu: điều kiện sẽ được tính và kiểm tra. Nếu điều kiện đúng thì câu lệnh sẽ được thực hiện, ngược lại thì câu lệnh sẽ được bỏ qua + ở dạng đủ: điều kiện sẽ được tính và kiểm tra. Nếu điều kiện đúng thì câu lệnh1 sẽ được thực hiện, ngược lại thì câu lệnh2 sẽ được tính * Ví dụ : Tìm nghiệm cho phương trình bậc hai: Ax2+bx+c=0 (a0) Phát vấn lớp trưởng Gv: Thông báo bài mới Gv: Giới thiệu về rẽ nhánh Gv: Giải thích rẽ nhánh khuyết và rẽ nhánh đầy đủ trong đời sống. Gv: Đưa ví dụ Gv: Hãy vẽ sơ đồ khối cho ví dụ giải phương trình bậc hai? Hs: Gv: Hãy giải thích sơ đồ? Hs: Gv: Giới thiệu câu lệnh điều kiện. Hs: Quan sát và ghi nhớ. Gv: Giới thiệu câu lệnh ở hai dạng. Hs: Ghi bài. Gv: Giải thích câu lệnh. Gv: Giải thích sơ đồ dạng thiếu Hs: Gv: Giải thích sơ đồ dạng đầy đủ Hs: Gv: Hướng dẫn cách thức sử dụng câu lệnh trong các chương trình lập trình Hs: Quan sát và ghi Gv: Lấy ví dụ Hs: Ghi 4. Tổng kết bài học: (...phút) - Là một cấu trúc thường xuyên sử dụng trong ngôn ngữ lập trình Pascal, cần xác định bài toán sử dụng cấu trúc rẽ nhánh ở dạng khuyết hoặc dạng đầy đủ. 5. Câu hỏi, bài tập và hướng dẫn tự học: (...phút): Câu 1 (sgk51) IV. Tự đánh giá và rút kinh nghiệm: (Nội dung, phương pháp, thời gian) . Hoạt động II: Tiết 2 TÊN BÀI: Cấu trúc rẽ nhánh (T.T.) I. Mục tiêu: 1. Kiến thức. - Học sinh nắm được cú pháp câu lệnh ghép. - Biết cách sử dụng đúng hai dạng cấu trúc rẽ nhánh trong lập trình: dạng thiếu và dạng đủ. 2. Kĩ năng. Bước đầu sử dụng được cấu trúc rẽ nhánh If ... then ... else ... trong ngôn ngữ lập trình Pascal để viết chương trình giải quyết được một số bài toán đơn giản. 3. Thái độ - Giúp học sinh hiểu rõ hơn tầm quan trọng của cấu trúc rẽ nhánh. - Làm cho học sinh thêm yêu thích lập trình, yêu thích môn học hơn. - Xác định thái độ nghiêm túc trong học tập khi làm quen với nhiều quy định nghiêm 4. Định hướng phát triển năng lực: - Mô hình hóa các tình huống thực tiễn xảy ra phụ thuộc vào điều kiện theo cấu trúc rẽ nhánh trong tin học. - Diễn tả thuật toán cấu trúc rẽ nhánh trên ngôn ngữ lập trình. - Năng lực tự học: Xác định nhiệm vụ khi học Tin học để phục vụ cho công việc. II. Phương pháp: Kết hợp các phương pháp như: thuyết trình, vấn đáp III. Chuẩn bị: Giáo viên: - Có máy tính Học sinh: - Vở ghi học sinh - Sách giáo khoa tin học lớp 11 - Sách bài tập Tin học 11 - Sách tham khảo nếu có III. Quá trình thực hiện bài giảng: 1. Ổn định lớp: (... phút) - Kiểm tra sĩ số, ổn định lớp 2. Kiểm tra bài cũ: (...phút): Lên bảng viết câu lệnh rẽ nhánh dạng thiếu và đủ? 3. Giảng bài mới: Nội dung TG Hoạt động của thầy và trò Hoạt động 3. Câu lệnh ghép * Ngôn ngữ cho phép gộp một dãy các câu lệnh như vậy gọi là câu lệnh ghép câu lệnh ghép có dạng: begin end; * Thuật ngữ câu lệnh được hiểu chung cho câu lệnh đơn và câu lệnh ghép * Ví dụ: if D<0 then write(' phuong trinh vo nghiem') else begin x1:= (-b- sqrt(D))/(2*a); x2:=-b/a-x1; end; Hoạt động 4. Một số ví dụ a) Ví dụ 1: Tìm nghiệm thực của phương trình bậc hai: ax2+bx+c=0 (a#0) Input: a, b, c Output: các nghiệm hoặc phương trình vô nghiệm Program VD1; uses crt; var a,b,c:real; D,x1,x2:real; begin write(' nhap a,b,c:'); readln(a,b,c); D:=b*b-4*a*c; if D<0 then write('phuong trinh vo nghiem') else begin x1:=(-b-sqrt(D))/(2*a); x2:=-b/a-x1; end; readln end. b) Ví dụ 2: Input: N Output: số ngày năm N Program VD2; uses crt; var N,SN: integer; begin write(' nhap nam:'); readln(N); if (N mod 400=0) or (N mod 4=0) and (N mod 1000) then SN:= 366 else SN:= 365; write(' so ngay cua nam',N,' la',SN); readln end. Phát vấn lớp trưởng Gv: Chỉ cho học sinh thấy câu lệnh ghép là câu lệnh quan trọng trong lập trình Pascal Gv: Đưa ví dụ Gv: Đưa ví dụ giải phương trình bậc hai Gv: Viết chương trình và chỉ các đoạn chương trình sử dụng dạng câu lệnh rẽ nhánh khuyết thiếu và đầy đủ. Hs: Quan sát và ghi Gv: Đưa ví dụ xác định năm nhuận trong một năm bất kì Gv: Thông báo bài mới và ôn tập 4. Tổng kết bài học: (...phút) - Là một cấu trúc thường xuyên sử dụng trong ngôn ngữ lập trình Pascal, cần xác định bài toán sử dụng cấu trúc rẽ nhánh ở dạng khuyết hoặc dạng đầy đủ. Câu lệnh ghép. - Áp dụng cấu trúc rẽ nhánh cho các ví dụ đã được học trong lớp 10. 5. Câu hỏi, bài tập và hướng dẫn tự học: (...phút): Câu 2,4 (sgk51) IV. Tự đánh giá và rút kinh nghiệm: (Nội dung, phương pháp, thời gian) . B.Tiến trình dạy học bài 10: CẤU TRÚC LẶP TÊN BÀI: CẤU TRÚC LẶP (Tiết 1,2) I. Mục tiêu: 1.Về kiến thức Học sinh cần: Hiểu được vai trò của cấu trúc lặp trong biểu diễn thuật toán; Hiểu cấu trúc lặp với số lần biết trước; Hiểu được câu lệnh lặp với số lần biết trước for-do trong Pascal. 2.Về kỹ năng Viết đúng các câu lệnh lặp với số lần biết trước for-do ở dạng tiến và dạng lùi (trong ngôn ngữ Pascal); 3.Về tư tưởng, tình cảm Học sinh hiểu bài và hứng thú với bài học. Học sinh ngày càng say mê lập trình hơn. II.Phương pháp dạy học, phương tiện dạy học chủ yếu - Dạy học theo quan điểm hoạt động - Sử dụng máy chiếu, slide bài giảng, SGK, máy tính cài đặt môi trường lập trình để minh họa, giấy khổ lớn và các bảng phụ A. KHỞI ĐỘNG Hoạt động 1: Kiểm tra bài cũ (1) Mục tiêu: Kiểm tra kiến thức của bài học trước về câu lệnh rẽ nhánh (câu lệnh if-then và if-then-else) (2) Phương pháp/Kĩ thuật: Đàm thoại, vấn đáp. (3) Hình thức tổ chức hoạt động: Cá nhân và thảo luận nhóm. (4) Phương tiện dạy học: SGK, máy tính, máy chiếu. (5) Sản phẩm: Học sinh phân tích được các đoạn chương sử dụng cấu trúc rẽ nhánh để phát hiện đoạn chương trình sai (mức độ vận dụng cao). Nội dung hoạt động Để tính max là giá trị nhỏ nhất trong ba số a, b, c có hai bạn học sinh đã viết hai đoạn trình sau đây: Đoạn trình 1: max := a; if max < b then max := b; if max < c then max := c; Đoạn trình 2: if a < b then max := b else begin max := a; if max < c then max:=c; end; Hãy cho biết đoạn trình nào sai? Hãy giải thích? B. TIẾN TRÌNH DẠY HỌC Hoạt động của HS và GV Nội dung Thời gian Hoạt động 1 : Khái niệm lặp. Đặt vấn đề: Trong một số thuật toán có những thao tác phải lặp lại nhiều lần. Nếu ta phải viết đi viết lại các thao tác đó thì rõ rang không thuận tiện rất mất thời gian và lại dể dẫn tới nhàm chán. GV: Đưa ra bài toán, yêu cầu học sinh tìm cách giải các bài toán này. HS: Đưa ra cách giải của mình, hs có thể đưa ra các cách giải khác nhau. GV: Đưa ra cách giải cho bài toán Giải theo các lệnh tuần tự S1:=0; If(1/a>0,0001) then S1+1/a; If(1/(a+1)>0,0001) then S1+1/(a+1); If(1/(a+2)>0,0001) then S1+1/a(+2); If(1/(a+3)>0,0001) then S1+1/(a+3); HS: Nhận xét khi giải bài toán theo cách đó? Với N=100 thì lặp 100 lần như thế nhưng theo việc kiểm tra điều kiện thì không biết phải làm theo cách nào? Theo cả hai trường hợp thì điều quá dài. Để học sinh hiểu được khái niệm lặp, giáo viên đưa ra một số ví dụ trong thực tế được tính toán lặp đi lặp lại nhiều lần. VD: Tính tổng của một đoạn số nguyên mà không được dung công thức. GV: Đưa ra ví dụ: Tổng-1a B1: S:=1/a; N:=0; B2:N:=N+1; B3:Nếu N>100 Thì chuyển sang bước 5; B4: S:=S+1/(a+N) rồi quay lại bước 2; B5: Đưa ra S rồi kết thúc. Thuật toán Tong_1b B1: S:=1/a; N:=101; B2: N:=N-1; B3: Nếu N<1 thì chuyển sang bước 5; B4: S:=S+1/(a+N) rồi quay lại bước 2; B5: Đưa ra S rồi kết thúc. GV: Gọi một học sinh lên nhân xét về 2 thuật toán trên về một số vấn đề: Thuật toán có lặp không? Lặp bao nhiêu lần? Hia thuật toán giống và khác nhau như thế nào? Cái gì thay đổi trong hai thuật toán này? Bài 10: Cấu trúc lặp Lặp. Xét hai bài toán sau: Với a là số nguyên và a >= 2 Bài toán 1:Tính tổng và đưa kết quả ra màn hình: S1= Bài toán 2: Tính tổng và đưa kết quả ra màn hình: S2= Cho đến khi điều kiện được thoả mãn Cách giải: Bắt đầu S gán giá trị 1/a Tiếp theo mối lần cộng thêm vào S là 1/(a+N) với N=1,2,3,4 Với bìa toán 1, việc cộng thêm dừng khi 1/(a+N)số lần lặp chưa biết trước. Với bài toán 2, việc cộng thêm dừng khi N=100, => số lần lặp đã biết trước Trong lập trình có những thao tác phải lặp đi lặp lại nhiều lần, khi đó ta gọi là cấu trúc lặp. Lặp thường có hai loại: Lặp với số lần biết trước. Lặp với số lần không biết trước NNLT nào cũng cung cấp một số câu lệnh để mô tả các cấu trúc lặp như trên. Sau đây chúng ta sẽ tìm hiểu các câu lệnh lặp trtong pascal. Hoạt động 2 : Lặp có số lần biết trước và câu lệnh for-do GV: Đưa ra ví dụ: Tong_1a B1: S:=1/a; N:=0; B2:N:=N+1; B3:Nếu N>100 Thì chuyển sang bước 5; B4: S:=S+1/(a+N) rồi quay lại bước 2; B5: Đưa ra S rồi kết thúc. Thuật toán Tong_1b B1: S:=1/a; N:=101; B2: N:=N-1; B3: Nếu N<1 thì chuyển sang bước 5; B4: S:=S+1/(a+N) rồi quay lại bước 2; B5: Đưa ra S rồi kết thúc. GV: Gọi một học sinh lên nhân xét về 2 thuật toán trên về một số vấn đề: Thuật toán có lặp không? Lặp bao nhiêu lần? Hai thuật toán giống và khác nhau như thế nào? Cái gì thay đổi trong 2 thuật toán này? Sau khi so sánh 2 thuật toán trên, giáo viên đưa ra 2 cách lặp trong ngôn ngữ pascal, giải thích ý nghĩa của các thành phần trong câu lệnh. Lặp có số lần biết trước và câu lệnh for-do Trong pascal có hai lạo câu lệnh lặp có số lần biết trước: Lặp dạng tiến: For := to do ; Lặp dạng lùi: For := downto do ; Trong đó: Biến đếm thường là biến kiểu số nguyên. Giá trị đầu, giá trị cuối thường là các biểu thức kiểu với biến đếm. Giá trị đầu phải nhỏ hơn hay bằng giá trị cuối. Ở dạng lặp tiến: Biến đếm tự tăng dần từ giá trị đầu đến giá trị cuối. ở dạng lặp lùi: Biến đếm tự giảm dần từ giá trị cuối đến giá trị đầu. Tương ứng với mỗi giá trj của biến đếm câu lệnh sau do thực hiện 1 lần Ví dụ 1: Hai chương trình cài đặt thuật toán tong_1a và tong_1b Ví dụ 2: Tính tổng các số nguyên chia hết cho 3 hoặc 5 trong phạm vi từ M đến N (M<N) III. Hướng dẫn học ở nhà Ôn lại bài học hôm nay; Chuẩn bị trước cho tiết thứ ba của bài học này: mục 3: Lặp với số lần chưa biết trước và câu lệnh while-do. TÊN BÀI: CẤU TRÚC LẶP(TT) (Tiết 3) I. Mục tiêu: 1.Về kiến thức Học sinh cần: Hiểu được vai trò của cấu trúc lặp trong biểu diễn thuật toán; Hiểu cấu trúc lặp với số lần không biết trước, kiểm tra điều kiện trước; Hiểu được câu lệnh lặp while-do trong Pascal. Bước đầu biết vận dụng đúng đắn từng loại cấu trúc lặp vào tình huống cụ thể. 2.Về kỹ năng Viết đúng các câu lệnh lặp với số lần không biết trước (kiểm tra điều kiện trước) while-do. Viết được một số chương trình của một số bài toán đơn giản có sử dụng câu lệnh lặp. 3.Về tư tưởng, tình cảm Học sinh hiểu bài và hứng thú với bài học. Học sinh ngày càng say mê lập trình hơn, đặc biệt là sau khi đã biết tất cả các các cấu trúc điều khiển cơ bản trong chương trình. II.Phương pháp dạy học, phương tiện dạy học chủ yếu - Dạy học theo quản điểm hoạt động - Sử dụng máy chiếu, slide bài giảng, SGK, máy tính cài đặt môi trường lập trình để minh họa, giấy khổ lớn và các bảng phụ A. KHỞI ĐỘNG Hoạt động 1: Kiểm tra bài cũ (1) Mục tiêu: HS nhớ được cú pháp và hiểu được hoạt động của câu lệnh for-do trong bài học trước. (2) Phương pháp/Kĩ thuật: Vấn đáp. (3) Hình thức tổ chức hoạt động: Thảo luận nhóm. (4) Phương tiện dạy học: SGK, máy tính, máy chiếu. (5) Sản phẩm: HS trả lời được câu hỏi trắc nghiệm kiểm tra bài cũ.. Nội dung hoạt động Sau khi chạy chương trình cho trong hình bên phải dưới đây, kết quả in ra màn hình là gì, hãy chọn phương án đúng A. 15 B. 9 C. 20 D. 5 var S, i, j :integer; begin S := 0; for i:=1 to 4 do for j:=1 to 5 do S := S + 1; writeln(S): readln; end. B. TIẾN TRÌNH DẠY HỌC Hoạt động của Giáo viên và Học sinh Nội dung 1. Hoạt động 1: tìm hiểu bài toán 2 Xét bài toán 2 Cách giải : Bắt đầu S được gán giá trị 1/a. Tiếp theo mỗi lần cộng thêm vào S là 1/(a+N) với N = 1, 2, 3, Với bài toán 2, việc cộng thêm dừng khi 1/(a+N) số lần lặp chưa biết. Thuật toán: B1 : S :=1/a; N :=0; B2 : Nếu 1/(a+N) < 0.0001 thì đưa ra s

Các file đính kèm theo tài liệu này:

  • docxBai 10 Cau truc lap_12324039.docx
Tài liệu liên quan