Kỹ năng - Sử dụng cấu trúc rẽ nhánh trong mô tả thuật toán của một số bài toán đơn giản - Viết được câu lệnh rẽ nhánh dạng thiếu, rẽ nhánh dạng đủ và áp dụng để thể hiện được thuật toán [r]
(1)Người soạn: Đoàn Thị Trang GVHD : Trịnh Thị Phương Thảo Ngày giảng: 30/10/2009 Lớp :11A2 Trường THPT Đại Từ Bài Soạn: Chương III: Cấu trúc rẽ nhánh và lặp Bài 9: Cấu trúc rẽ nhánh (tiết 1) I) Mục tiêu: Kiến thức: - Học sinh biết cần thiết có cấu trúc rẽ nhánh lập trình - Học sinh biết cấu trúc, ý nghĩa câu lệnh rẽ nhánh - Hiểu câu lệnh rẽ nhánh: dạng thiếu và dạng đủ - Sự cần thiết có câu lệnh ghép lập trình, nắm cấu trúc câu lệnh ghép Kỹ - Sử dụng cấu trúc rẽ nhánh mô tả thuật toán số bài toán đơn giản - Viết câu lệnh rẽ nhánh dạng thiếu, rẽ nhánh dạng đủ và áp dụng để thể thuật toán số bà toán đơn giản - Sử dụng câu lệnh ghép cần thiết lập trình Thái độ - giúp học sinh hiểu rõ tầm quan trọng 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 - Phát triển tư lập trình, phương pháp làm việc khoa học II) Phương pháp, phương tiện Phương pháp - Kết hợp các phương pháp giảng dạy thuyết trình, vấn đáp - Gợ nhớ, tổ chức hoạt động theo nhóm Phương tiện a Chuẩn bị giáo viên - Máy tính, máy chiếu (nếu có) - Sách giáo khoa tin học lớp 11 - Sách giáo viên, sách tham khảo tin học lớp 11 - Bảng, phấn, phiếu học tập b Chuẩn bị học sinh - Vở ghi lý thuyết - Sách giáo khoa Tin 11 - Bút, thước kẻ Lop11.com (2) III) Tiến trình lên lớp, nội dung bài học Ổn định lớp - Ổn định lớp học - Yêu cầu lớp trưởng báo cáo sĩ số Tổng: Vắng: Phép: Không phép: Dẫn dắt vào bài Các em chú ý: thục hành trước các em đã thực hành bài “Giải phương trình bậc 2” Sau đây các em cùng quan sát lại chương trình đó.(GV đưa chương trình đã đánh sẵn Turbo Pascal) Các em hãy quan sát: chương trình trên là đúng không có lỗi Bây cô nhập giá trị a= 1, b= -3, c= Chúng ta thấy chương trình thị kết là đúng Vậy cô nhập a= 2, b= -3, c= em thấy tượng gì xảy ra? Chương trình báo lỗi, đúng không? Vì ta nhập a, b, c với giá trị trên thì D< 0, mà chương trình không xét đến trường hợp này, Như làm nào để chương trình chạy đúng D< Nội dung bài học Nội dung Hoạt động thầy và trò Hoạt động 1: Tìm hiểu câu lệnh rẽ nhánh - Thường ngày chúng ta có công việc có thực điều kiện cụ thể nào đó thực thoả mãn GV: Em nào có thể cho cô vài ví dụ câu điều kiện? HS: suy nghĩ trả lời VD1: Ngày mai trời mưa thì Nam không đá bóng VD2: Nếu tối trời mưa thì em nghỉ học, không thì em học… GV: Sau đây các em hãy xem VD sau(GV đưa VD) Xét VD1: Nếu…thì Còn VD2: Nếu…thì…nếu không thì Đây chính là dạng câu diều kiện thiếu và đủ - Hai dạng mệnh đề: Mệnh đề 1: Nếu….thì là mệnh đề thiếu Mệnh đề 2: Nếu…thì…nếu không thì là dạng mệnh đề đủ HS: chú ý cô giáo giảng bài GV: Bây chúng ta cùng xét VD mà ta đã đề cập đến phần đầu bài Lop11.com Thời gian 7’ (3) VD: Kiểm tra pt bậc ax2 + bx+c=0(a0) có nghiệm không? GV: Đây là bài giải pt quen thuộc mà các em đã làm Qua chương trình lớp 10, các em đã học bai” Bài toán và thuật toán” các em đã biết viết thuật toán, vẽ sơ đồ biểu diễn cách giải bài toán Vậy bây cô mời em lên bảng: em viết thuật toán kiểm tra pt có nghiệm không, và em vẽ sơ đồ biểu diễn cách kiểm tra pt có nghiêm HS 1: Thuật toán B1: Nhập a, b, c B2: Tính D<- b2 -4ac B3: Nếu D<0 => PTVN B4: Nếu D0 => PTCN HS 2: Sơ đồ Nhập a,b,c Tính D <- b2 – 4ac Sai Đúng D0 PTCN PTVN Kết thúc GV: Các em hãy quan sát sơ đồ trên bảng và đó chính là sơ đồ thể cấu trúc rẽ nhánh Lop11.com (4) - Trong nhiều thuật toán, các thao tác phụ thuộc vào kết nhận từ các bước trước đó Cấu trúc dùng để mô tả các Trong ngôn ngữ lập trình có các mệnh đề có dạng trên gọi câu lệnh để mô tả cấu trúc rẽ nhánh là cấu trúc rẽ nhánh Hoạt động 2: Tìm hiểu câu lệnh If then Để mô tả cấu trúc rẽ nhánh, Pascal dùng dạng câu lệnh If then - Dạng thiếu: If<điều kiện> then<câu lệnh>; - Dạng đủ: If<điều kiện> then<câu lệnh 1> Else <câu lệnh 2>; Trong đó: - điều kiện là biểu thức logic cho giá trị True False GV: Để mô tả cấu trúc rẽ nhánh, Pascal dùng câu lệnh If…then GV:Các em đã học nào là biểu thức logic rồi, em nào có thể nhắc lại nào là biểu thức logic? HS:biểu thức logic là các biểu thức quan hệ đơn giản, các biểu thức quan hệ liên kết với các phép toán logic - câu lệnh, câu lệnh 1, câu lệnh là lệnh Pascal - Ở dạng thiếu: diều kiện tính và kiểm tra Nếu điều kiện đúng(có giá trị True) thì câu lệnh thực hiện, ngược lại thì câu lệnh bỏ qua - Ở dạng đủ: điều kiện kiểm tra và tính Nếuđiều kiện đúng thì câu lệnh thực hiện, ngược lại thì câu lệnh thực Lop11.com (5) * Sơ đồ biểu diễn câu lệnh dạng thiếu : Đ điều kiện GV:Sau đây cô giới thiệu cho các em sơ đồ biểu diễn câu lệnh dạng thiếu Câu lệnh S * Sơ đồ biểu diễn câu lệnh dạng đủ: Câu lệnh S Điều kiện Đ GV: Các em hãy quan sát sơ đồ biểu diễn câu lệnh dạng thiếu Vậy dựa vào sơ đồ này thì em nào có thể lên vẽ sơ đồ biểu diễn câu lệnh dạng đủ HS:Lên bảng vẽ sơ đồ Câu lệnh GV:Em nào nhận xét cho cô xem sơ đồ bạn đã đúng chưa? HS: học sinh lên nhận xét GV: Sau đây chúng ta xét VD cụ thể VD: Kiểm tra pt bậc 2:ax2+ bx+c=0 Có nghiệm hay không? GV: em nào có thể xác định cho cô đâu là Input, Output? HS: trả lời Input: nhập a, b, c Output: PTVN, PT có nghiệm Lop11.com (6) Các chú ý: - Trước Else không có dấu chấm phẩy (;) - Câu lệnh là câu lệnh Pascal GV: Theo sơ đồ mà chúng ta đã vẽ trên kết hợp với sơ đồ biểu diễn câu lệnh dạng thiếu thì em nào có thể viết câu lệnh kiểm tra bài toán? HS: suy nghĩ trả lời If(D<0) then write(‘PTVN); If (D) then write(‘Pt co nghiem’); GV: Như em đã hiểu và biết cách viết câu lệnh rẽ nhánh dạng thiếu.Thế còn câu lệnh dạng đủ thì sao? GV: các em hay nhìn lên phần câu lệnh trên Nhưng đây ta thấy chúng ta phải sử dụng lần câu lệnh if… then mà câu lệnh đây mang ý nghĩa phủ định nhau, ta muốn cho câu lệnh ngắn gọn thì ta có thể gộp câu lệnh vào không và làm nào? HS:xem lại thuật toán và suy nghĩ trả lời -Có thể gộp câu lệnh lại cách bỏ lần if…then và thay vào đó là từ Else GV: Vậy em có thể lên bảng viết lại không? HS: lên bảng viết lại If(D<0) then write(‘PTVN’) Else write(‘PT co nghiem’); GV: Đưa các chú ýcho học sinh GV: Điều đặc biệt các em cần lưu ý đó là: Trong câu lệnh dạng thiếu thì có thể không lệnh nào thực Nhưng câu lệnh dạng đủ thì bắt buộc phải có lệnh thực Lop11.com (7) Hoạt động 3: Tìm hiểu câu lệnh ghép GV: Như các em đã biết tiếng việt chúng ta câu ghép lại với là câu gì? HS: Câu ghép GV:Đúng là tiếng việt, còn ngôn ngữ lập trình thì sao? - Ngôn ngữ lập trình cho phép gộp dãy câu lệnh thành câu lệnh ghép GV:trong ngôn ngữ lập trình Pascal có câu ghép nó gộp nhiều câu lệnh lại với gọi là câu lệnh ghép, các lệnh đó đặt cặp từ khoá Begin….end; Gv: Ta xét lại VD Giải pt bậc GV:Một em nhắc lại thuật toán giải pt bậc và đưa nghiệm cụ thể? HS: Thuật toán sau: B1: nhập a, b, c B2: Tinh D <- b2 – 4ac B3: Nếu D < =>PTVN Ngược lại => PT có nghiệm X1= b D b D ;x2= 2a 2a GV: Cô có chương trình sau: (Gv đưa chương trình đã đánh sẵn trên TurBo Pascal) HS:Quan sát chương trình trên Turbo Pascal GV:chương trình này không có lỗi và bây cô cho chạy thử GV: Trong chương trình này ta thấy là kết thị nghiệm x1, còn nghiệm x2 thì không hiển thị Vậy em nào có thể sửa lại chương trình để kết hiển thị nghiệm x1 và x2? HS; Dựa vào cấu trúc câu lệnh ghép và phát chương trình thiếu cặp Begin End; sau câu lệnh Else GV: Vậy cô thử cho cặp Begin End; vào xem có đúng không ? Lop11.com (8) GV:cho chạy chương trình đã thêm cặp Begin…End; GV: Đưa đoạn chương trình: If(D<0) then write(‘PTVN’) Else Begin X1:=(-b+sqrt(D))/(2*a); X2:= (-b-sqrt(D))/(2*a); Write(‘x1=’,x1:6:2,’x2=’,x2:6:2); End; GV: Câu lệnh ghép có dạng: - Câu lệnh ghép có dạng: Begin <các câu lệnh>; End; GV: Như cô đã giới thiệu cho các em nào là câu lệnh ghép - Chú ý: Sau End chấm phẩy(;) phải có dấu Hoạt động nhóm và củng cố bài học a Hoạt động nhóm GV: Bây cô có trò chơi nhỏ, cô chia làm tổ, tổ câu hỏi, tổ nào làm xong trước đạt yêu cầu trước thì tổ đó thắng và giành phần thưởng Nhóm 1: Câu 1: Cú pháp If<điều kiện> then <câu lệnh>; có nghĩa là : A Nếu biểu thức điều kiện nhận giá trị đúng thì thực câu lệnh, ngược lại câu lệnh bị bỏ qua B Nếu biểu thức điều kiện nhận giá trị sai thì thực câu lệnh, ngược lại thì bỏ qua C Nếu biểu thức điều kiện nhận giá trị sai thì thực câu lệnh, ngược lại thực câu lệnh khác D Đáp an B và C đúng Câu 2: Trong ngôn ngữ lập trình Pascal, câu lệnh nào sau đây là đúng Lop11.com (9) A If(n mod 10) then write(‘n la so tron chuc’) Else write(‘n khong la so tron chuc’); B If(n div 10) then write(‘ n la so tron chuc’) Else write(‘n khong la so tron chuc’); C If(n mod 10 =0) then write(‘ n la so tron chuc’) Else write(‘ n khong la so tron chuc’); D Đáp án A và C đúng Nhóm 2: Câu hỏi: Kết chương trình sau là gì? x:= 10; y:= 15; if (x>y) then x:=x- y else y:=y-x; A B C D y = và x= 10 x= và y= 15 x=10 và y=15 chương trình báo lỗi Nhóm 3: Cho tình sau: Trong học, GV có tổ chức trò chơi, GV chia lớp thành nhóm, nhóm câu hỏi với yêu cầu sau: các em hãy trả lơi câu hỏi thật nhanh, nhóm nào mà có câu trả lời đạt điểm 10 thì có thưởng, ngược lại không có thưởng Yêu câu: em hãy sử dụng câu lệnh if…then để mô tả tình trên Nhóm 4: Trong ngôn ngữ lập trình Pascal, muốn kiểm tra đồng thời giá trị A, B, C có cùng lớn hay không ta viết câu lệnh If nào cho đúng: A If a,b,c >0 then… B If (A>0) and (B>0) and (C>0) then… C If A>0 and B>0 and C > then…… D If (A>0) or (B>0) or (C>0) then… Đáp án các câu hỏi sau: Nhóm 1: Câu 1: A , Câu 2: C Nhóm 2: Đáp án A: y = 5, x= 10 Nhóm 3: Câu lệnh : Lop11.com (10) If (d= 10) then write(‘co phan thuong’) Else write (‘ khong co phan thuong’); Nhóm 4: Đáp án: B b Củng cố bài học Qua bài học hôm các em cần nắm câu trúc các câu lệnh - Câu lệnh if…then Dạng thiếu: If<điều kiện> then <câu lệnh>; Dạng đủ: If <điều kiện> then <câu lệnh 1> Else <câu lệnh 2>; - Câu lệnh ghép: có dạng Begin <các câu lệnh>; End; Bài tập nhà A Ôn lại bài họ hôm B Xem trước mục 4: Một số ví dụ C Làm bài tập 1, 2, 4/ 50, 51/ SGK Rút kinh nghiệm tiết dạy GVHD ký duyệt Lop11.com (11)