SỞ GIÁO DỤC VÀ ĐÀO TẠO ĐĂK NÔNG TRƯỜNG THPT PHAN CHU TRINH ---------- SÁNG KIẾN KINH NGHIỆM ĐỀ TÀI: “MỘT SỐ KINH NGHIỆM DẠY TỐT MÔN TIN HỌC LỚP 11” Môn: Tin học Tác giả: Vũ Đại Thanh Chức vụ: Phó hiệu trưởng Đơn vị công tác: Trường THPT Phan Chu Trinh CƯ JÚT – ĐĂK NÔNG, NĂM HỌC 2014 – 2015 LỜI CAM ĐOAN Tôi xin cam đoan : Đề tài sáng kiến kinh nghiệm “Một số kinh nghiệm dạy tốt môn Tin học lớp 11” là đề tài của riêng tôi. Không sao chép của ai, nội dung đề tài có tham khảo và sử dụng các tài liệu, thông tin được đăng tải trên các tạp chí và các trang web theo danh mục tài liệu tham khảo của đề tài. Các số liệu trong đề tài được sử dụng trung thực, không trùng lặp, nếu có sai sót gì trong quá trình trình bày thì xin được châm trước. Cư Jút, ngày 20 tháng 01 năm 2015 Tác giả đề tài sáng kiến kinh nghiệm Giáo viên Vũ Đại Thanh MỤC LỤC PHẦN I: MỞ ĐẦU ........................................................................................ 5 I. LÍ DO CHỌN ĐỀ TÀI ....................................................................... 5 II. MỤC ĐÍCH NGHIÊN CỨU .............................................................. 5 III. ĐỐI TƯỢNG NGHIÊN CỨU ............................................................ 5 IV. PHƯƠNG PHÁP NGHIÊN CỨU ...................................................... 5 V. GIỚI HẠN PHẠM VI NGHIÊN CỨU ............................................... 6 PHẦN II: NỘI DUNG .................................................................................... 7 I. BÀI 9: CẤU TRÚC RẼ NHÁNH....................................................... 7 1. Thực trạng của vấn đề ..................................................................... 7 2. Các biện pháp đã tiến hành để giải quyết vấn đề ............................. 7 3. Kết quả đạt được ............................................................................. 9 II. BÀI 10: CẤU TRÚC LẶP ................................................................. 9 1. Thực trạng của vấn đề ................................................................... 10 2. Các biện pháp đã tiến hành để giải quyết vấn đề ........................... 10 3. Kết quả đạt được ........................................................................... 14 III. BÀI 11: KIỂU MẢNG ..................................................................... 14 1. Thực trạng của vấn đề ................................................................... 15 2. Các biện pháp đã tiến hành để giải quyết vấn đề ........................... 15 3. Kết quả đạt được ........................................................................... 19 IV. BÀI 12: KIỂU XÂU ........................................................................ 20 1. Thực trạng của vấn đề ................................................................... 20 2. Các biện pháp đã tiến hành để giải quyết vấn đề ........................... 20 3. Kết quả đạt được ........................................................................... 23 V. BÀI 16: VÍ DỤ LÀM VIỆC VỚI TỆP ............................................. 24 1. Thực trạng của vấn đề ...................................................................... 24 2. Các biện pháp đã tiến hành để giải quyết vấn đề .............................. 24 3. Kết quả đạt được .............................................................................. 26 VI. BÀI 17: CHƯƠNG TRÌNH CON VÀ PHÂN LOẠI ........................ 26 1. Thực trạng của vấn đề ................................................................... 27 2. Các biện pháp đã tiến hành để giải quyết vấn đề ........................... 27 3. Kết quả đạt được ........................................................................... 28 PHẦN III: KẾT LUẬN VÀ KIẾN NGHỊ ..................................................... 30 I. KẾT LUẬN ..................................................................................... 30 II. KIẾN NGHỊ ..................................................................................... 30 TÀI LIỆU THAM KHẢO ............................................................................ 31 DANH MỤC KÝ HIỆU VIẾT TẮT VÀ THUẬT NGỮ STT Tên viết tắt và thuật ngữ Giải thích Trang xuất hiện 1 ASCII American Standard Code for Information Interchange 19, 20 2 GVCN Giáo viên chủ nhiệm 22 3 nxb Nhà xuất bản 20 4 QĐ Quyết định 7, 13 5 SGK Sách giáo khoa 6, 8, 20, 21, 22 5 PHẦN I: MỞ ĐẦU I. LÍ DO CHỌN ĐỀ TÀI Đổi mới phương pháp dạy học (PPDH) là một yêu cầu tất yếu trong sự nghiệp đổi mới giáo dục – đào tạo của nước ta. Đây cũng đang là vấn đề cấp bách không chỉ được toàn ngành giáo dục quan tâm mà cũng là sự quan tâm trong đường lối lãnh đạo công tác giáo dục của Đảng, từng được ghi trong các Nghị quyết Trung ương 4 (khoá VII) và Nghị quyết Trung ương 2 (khoá VIII), Luật giáo dục. Trong chương trình dạy Tin học ở bậc THPT, đặc biệt là chương trình Tin học khối 11 rất khó cho Thầy Cô giáo cũng như học sinh, vì phải làm thế nào để học sinh có thể hiểu được ngôn ngữ lập trình, để từ đó có thể lựa chọn và thiết kế thuật toán. Đối với học sinh thì phải làm quen với lối suy nghĩ logic với sự hoạt động của máy tính, mà đây lại là một lối suy nghĩ hoàn toàn khác với các môn học khác. Với kinh nghiệm mười năm dạy môn Tin học ở bậc THPT, Tôi mạnh dạn viết đề tài sáng kiến kinh nghiệm “Một số kinh nghiệm dạy tốt môn Tin học lớp 11” để đồng nghiệp có dịp tham khảo, giúp giảng dạy môn Tin học lớp 11 được tốt hơn. II. MỤC ĐÍCH NGHIÊN CỨU Tìm hiểu về chất lượng bộ môn Tin học và tìm giải pháp nâng cao chất lượng trong dạy học. III. ĐỐI TƯỢNG NGHIÊN CỨU Học sinh lớp 11 qua các năm học. Nghiên cứu khái quát về Chương trình Tin học lớp 11. IV. PHƯƠNG PHÁP NGHIÊN CỨU Xây dựng một số ví dụ đơn giản và bám sát mục tiêu môn học. 6 Thử nghiệm câu hỏi bằng cách kiểm tra trên giấy và trên máy để đánh giá độ khó, độ phân biệt, độ giá trị của hệ thống câu hỏi, phân tích hệ thống câu hỏi tạo một bộ câu hỏi có chất lượng. V. GIỚI HẠN PHẠM VI NGHIÊN CỨU Chương trình Tin học lớp 11 của Bộ giáo dục và Đào tạo Việt Nam và Học sinh lớp 11 qua các năm học. 7 PHẦN II: NỘI DUNG I. BÀI 9: CẤU TRÚC RẼ NHÁNH A. Mục đích, yêu cầu - Hiểu câu lệnh rẽ nhánh (dạng thiếu và dạng đủ). - Hiểu câu lệnh ghép. - 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ác lệnh rẽ nhánh khuyết, rẽ nhánh đầy đủ và áp dụng để thể hiện được thuật toán của một số bài toán đơn giản. B. Nội dung lên lớp. 1. Thực trạng của vấn đề Đây là một trong 3 cấu trúc quan trọng trong Pascal, đặc biệt là câu lệnh if-then có 2 dạng thiếu và đủ. Hai dạng này phải có kinh nghiệm thực tế mới có thể hiểu hết ý nghĩa của 2 dạng này. 2. Các biện pháp đã tiến hành để giải quyết vấn đề 2.1. Câu lệnh if-then Do đó Tôi mạnh dạn thay thay 3 ví dụ trong sách giáo khoa trang 40 bằng ví dụ sau: Viết chương trình tìm số lớn nhất trong 3 số nguyên a, b, c được nhập vào từ bàn phím. (ví dụ được lấy trong sách giáo khoa thí điểm năm 1997). Lưu ý là học sinh đã được học cấu trúc đầy đủ của chương trình Program tim_max; uses crt; var a,b,c,max : integer; begin clrscr; write('Nhap vao 3 so nguyen a,b,c: '); readln(a,b,c); 8 max:=a; if b>max then max:=b; if c>max then max:=c; writeln('So lon nhat la: ',max); readln end. Rõ ràng với 1 ví dụ như trên, chúng ta giúp cho học sinh hiểu rõ hơn lệnh if-then dạng thiếu cần thiết như thế nào khi nào gặp các dạng thuật toán như trên. 2.2. Câu lệnh ghép Để làm rõ hơn theo cú pháp thì sau các từ khóa then hoặc else phải là một câu lệnh. Nhưng trong nhiều trường hợp đòi hỏi phải có nhiều hơn một câu lệnh, thì ngôn ngữ lập trình cho phép gộp một dãy câu lệnh thành một câu lệnh ghép. Tôi mạnh dạn gộp ví dụ phần này với ví dụ 1 trang 41 SGK thành ví dụ sau: Viết chương trình giải phương trình bậc hai: 02 cbxax , với a≠0. Trước khi giải thuật toán này, Tôi áp dụng kiến thức liên môn: ôn lại phương pháp giải phương trình bậc hai ở Toán học cho học sinh dễ hình dung ra giải thuật để em nào khá có thế tự làm được. Việc đầu tiên là tính: delta: d:=b*b-4*a*c Nếu d<0 phương trình vô nghiệm Nếu d=0 phương trình có nghiệm kép x = -b/(2*a) Nếu d>0 phương trình có 2 nghiệm phân biệt là: x1 = (-b+sqrt(d))/(2*a) x2 = (-b-sqrt(d))/(2*a) Lệnh if-then dạng thiếu rất ý nghĩa trong trường hợp này. 9 Sau khi gợi ý, Tôi cũng khuyến khích học sinh bằng cách cho học sinh tự làm trong 10 phút, nếu kiểm tra ai làm được sẽ cộng 1 điểm vào điểm 15 phút, chương trình đầy đủ như sau: Program giai_PT_bac2; var a,b,c : integer; d: real; begin write('Nhap vao a,b,c: '); readln(a,b,c); d:=b*b-4*a*c; if d<0 then writeln('Phuong trinh vo nghiem') else if d=0 then writeln('Ph trinh co ngh kep x= ',-b/(2*a):0:1) else begin writeln('Phuong trinh co 2 nghiem phan biet la:'); writeln('x1=',(-b+sqrt(d))/(2*a):0:1); writeln('x2=',(-b-sqrt(d))/(2*a):0:1); end; readln end. Với ví dụ này, chúng ta giúp cho học sinh hiểu rõ hơn lệnh if-then lồng nhau khi gặp các dạng thuật toán như trên, đồng thời nắm được ý nghĩa câu lệnh ghép. 3. Kết quả đạt được Việc đưa các ví dụ phù hợp, số học sinh nắm được bài là trên 80% II. BÀI 10: CẤU TRÚC LẶP Đối với §10 Tôi đã viết một sáng kiến kinh nghiệm với tên “Đổi mới phương pháp dạy học bài Cấu trúc lặp ở lớp 11” và đã đạt giải B cuộc thi sáng kiến kinh nghiệm cấp Tỉnh năm học 2009-2010 (theo QĐ số: 1128/QĐ- SGD&ĐT ngày 10/11/2010 của Sở Giáo dục và Đào tạo tỉnh Đăk Nông) Tôi xin tóm tắt lại nội dung sáng kiến của mình như sau: A. Mục đích, yêu cầu - Hiểu nhu cầu của cấu trúc lặp trong biểu diễn thuật toán. Câu lệnh ghép 10 - Hiểu cấu trúc lặp kiểm tra điều kiện trước, cấu trúc lặp với số lần định trước. - Biết cách vận dụng đúng đắn cấu trúc lặp vào tình huống cụ thể. - Mô tả thuật toán của một số bài toán đơn giản có sử dụng lệnh lặp. - Viết đúng các lệnh lặp kiểm tra điều kiện trước, lệnh lặp với số lần lặp trước. - Viết được thuật toán của một số bài toán đơn giản. B. Nội dung lên lớp. 1. Thực trạng của vấn đề Đối với §10 Cấu trúc lặp ở lớp 11, Tôi nhận thấy các ví dụ vẫn chưa phù hợp với mục đích yêu cầu của bài dạy, đặc biệt là giải thích thuật toán lại áp dụng kiến thức §4 Bài toán và Thuật toán ở lớp 10 làm cho học sinh rất khó tiếp thu. 2. Các biện pháp đã tiến hành để giải quyết vấn đề Thay các ví dụ khó trong sách giáo khoa bằng các ví dụ đơn giản hơn, để giúp học sinh có thể nắm bắt dễ dàng chức năng của cấu trúc lặp. 2.1. Lặp với số lần biết trước và câu lệnh for-do Tôi thay bài toán 1: Tính và đưa kết quả ra màn hình tổng (trang42, SGK) 100 1... 2 1 1 11 aaaa S Bằng bài toán: Tính và đưa kết quả ra màn hình tổng 100...321 S Nhận xét: Đối với các bài toán này chúng tôi dễ dàng đạt được mục tiêu kiến thức là: Hiểu nhu cầu 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, biết cách vận dụng đúng đắn từng loại cấu trúc lặp vào tình huống cụ thể, mô tả thuật toán của một số bài toán đơn giản có sử dụng lệnh lặp, viết đúng các lệnh lặp với số lần biết trước, viết được thuật toán của một số bài toán đơn giản. 11 Thuật toán đưa ra cho bài toán trên: - Lặp dạng tiến: S0 = 0 S1 = S0 + 1 S2 = S1 + 2 S3 = S2 + 3 S100 = S99 + 100 Nhận xét: Bắt đầu tính từ S1, việc tính S Được lặp đi lặp lại 100 lần theo qui luật Si = Si-1 + i, với i chạy từ 1 đến 100. - Lặp dạng lùi: S101 = 0 S100 = S101 + 100 S99 = S100 + 99 S98 = S99 + 98 S1 = S2 + 1 Nhận xét: Bắt đầu tính từ S100, việc tính S Được lặp đi lặp lại 100 lần theo qui luật Si = Si+1 + i, với i chạy từ 100 về 1 Chương trình cài đặt cho các thuật toán trên: - Lặp dạng tiến: Program Tong_1a; uses crt; 100...321 S Si = Si-1 + i i: 1 → 100 1...9899100 S Si = Si+1 + i i: 100 → 1 12 var S: word; i : byte; begin clrscr; S:=0; for i:=1 to 100 do S:=S+i; writeln('Tong S la: ',S); readln end. - Lặp dạng lùi: Program Tong_1b; uses crt; var S: word; i : byte; begin clrscr; S:=0; for i:=100 downto 1 do S:=S+i; writeln('Tong S la: ',S); readln end. Nhận xét: Đối với hai thuật toán này độ phức tạp được giảm đi rất nhiều, khi đó ta có thời gian nhiều để nói về chức năng của cấu trúc lặp for. Ta cũng có thể gợi ý để học sinh làm việc theo nhóm để giải bài toán này 13 Ở tiết Bài tập và thực hành 2 thì chúng tôi áp dụng ví dụ sau: Tính và đưa kết quả ra màn hình tổng NS ...321 Program Tinh_tong; uses crt; var i,N : integer; S : longint; begin clrscr; write('Nhap vao N '); readln(N); s:=0; for i:=1 to N do s:=s+i; writeln('Tong s = ',s); readln end. Ghi chú: Ví dụ trên gần giống bài toán 1 và cũng là bài toán áp dụng đối với câu lệnh lặp với số lần chưa biết trước (câu lệnh While - do) 2.2. Lặp với số lần chưa trước và câu lệnh while-do Tôi thay Bài toán 2: Tính và đưa kết quả ra màn hình tổng ...1... 2 1 1 11 Naaaa S Cho đến khi 0001,01 Na Bằng bài toán: Tính và đưa kết quả ra màn hình tổng NS ...321 Program Tong_S; uses crt; var i,N : integer; 14 s:=0; for i:=1 to N do s:=s+i; S : longint; begin clrscr; write('Nhap vao N '); readln(N); s:=0;i:=1; while i<= N do begin s:=s+i; i:=i+1; end; writeln('Tong s = ',s); readln end. Nhận xét: Đây là cách tốt nhất để học sinh hiểu rõ câu lệnh while- do, có thể so sánh sự giống nhau và khác nhau giữa lệnh for-do và while-do 3. Kết quả đạt được Sau §10 Cấu trúc lặp có bài kiểm tra 1 tiết (tiết 18). Đề kiểm tra (điển hình) như sau: 1. Câu 1: Viết chương trình tìm số lớn nhất và nhỏ nhất trong 3 số nguyên a, b, c được nhập vào từ bàn phím. 2. Câu 2: Viết chương trình tính tổng: n S 1... 4 1 3 1 2 1 (với n ≤50) Kết quả những năm gần đây: Số học sinh đạt Trung bình trở lên là trên 75% III. BÀI 11: KIỂU MẢNG Đối với §11 Tôi đã viết một sáng kiến kinh nghiệm với tên “Đổi mới phương pháp dạy học bài Kiểu mảng ở lớp 11” và đã đạt giải C cuộc thi sáng 15 kiến kinh nghiệm cấp Tỉnh năm học 2011-2012 (theo QĐ số: 184/QĐ- SGD&ĐT ngày 10/4/2012 của Sở Giáo dục và Đào tạo tỉnh Đăk Nông) Tôi xin tóm tắt lại nội dung sáng kiến của mình như sau: A. Mục đích, yêu cầu - Hiểu khái niệm kiểu mảng. - Hiểu cách khai báo kiểu của các phần tử và cách truy cập đến các phần tử của mảng. - Cài đặt được thuật toán của một số bài toán đơn giản với kiểu dữ liệu mảng. - Thực hiện được khai báo mảng, truy cập, tính toán các phần tử của mảng. - Nắm được các cách khai báo kiểu dữ liệu mảng. - Nhận biết được các thành phần trong khai báo kiểu dữ liệu mảng. B. Nội dung lên lớp 1. Thực trạng của vấn đề Đối với §11 Kiểu mảng tôi nhận thấy việc dạy để học sinh hiểu được bài này là rất khó khăn, nếu chúng ta không biết liên kết các ví dụ, đặc biệt là giúp học sinh hiểu được kiểu mảng là gì, khi nào thì dùng kiểu mảng và sử dụng như thế nào. 2. Các biện pháp đã tiến hành để giải quyết vấn đề 2.1. Mảng một chiều a. Cách khai báo: Cách 1 : Khai báo trực tiếp Var : Array[m1 . . m2] of ; Trong đó : m1, m2 có cùng kiểu dữ liệu xác định phạm vi của chỉ số. m1<=m2. Vd : VAR M:ARRAY[1 .. 5] of integer; Minh Họa: M 1 2 3 4 5 16 Mảng M gồm 5 phần tử thuộc kiểu Integer ứng với các chỉ số 1,2,3,4,5 nghĩa là : M[1], M[2], M[3], M[4], M[5]. Cách 2: Khai báo gián tiếp Bước 1: Type = array[m1..m2] of ; Bước 2: Var : ; Vd : Type M=Array[1..5] of integer; Var a:M; Nhận xét: Các cách khai báo và ví dụ trên trực quan hơn và ngắn gọn hơn cách khai báo và các ví dụ trong Sách Giáo Khoa. b. Các ví dụ: Ví dụ: viết chương trình nhập vào nhiệt độ (trung bình) của mỗi ngày trong tuần, tính và đưa ra màn hình nhiệt độ trung bình của cả tuần, và đếm số ngày có nhiệt độ cao hơn nhiệt độ trung bình. Chương trình viết theo cách 1: Program Nhietdo_Tuan; Uses crt; Var t1,t2,t3,t4,t5,t6,t7,tb: real; dem : byte; Begin clrscr; write('Nhap vao nhiet do cua 7 ngay: '); readln(t1,t2,t3,t4,t5,t6,t7); tb:=(t1+t2+t3+t4+t5+t6+t7)/7; dem:=0; if t1>tb then dem:=dem+1; if t2>tb then dem:=dem+1; if t3>tb then dem:=dem+1; if t4>tb then dem:=dem+1; 17 if t5>tb then dem:=dem+1; if t6>tb then dem:=dem+1; if t7>tb then dem:=dem+1; writeln('Nhiet do trung binh tuan la: ',tb:8:1); writeln('So ngay co nhiet do cao hon trung binh la: ',dem); readln End. Ghi chú: Có thể minh hoạ bằng hình ảnh sau Các câu hỏi gợi mở: Từ ví dụ trên Tôi đưa ra các tình huống để dẫn dắt học sinh đến với một kiểu dữ liệu có cấu trúc đầu tiên, đó là “Kiểu mảng”: + Tính nhiệt độ trung bình một tuần thì sử dụng mấy biến? (học sinh trả lời: 7 biến) + Nếu tính nhiệt độ trung bình một tháng 30 ngày thì sử dụng mấy biến? (học sinh trả lời: 30 biến) + Nếu tính nhiệt độ trung bình một năm 365 ngày thì sử dụng mấy biến? (học sinh trả lời: 365 biến) Thế thì việc sử dụng các biến đơn trở nên phức tạp trong trường hợp sử dụng nhiều biến (có cùng kiểu dữ liệu). Từ đó người ta đưa ra khái niệm kiểu mảng. Chương trình viết theo cách 2: Program Nhietdo_Tuan; Uses crt; Var A : array[1..7] of real; tong, tb : real; 22oC 22.5oC 23oC 23.5oC 24oC 24.5oC 25oC T1 T2 T3 T4 T5 T6 T7 23.5 3 tb dem 18 i, dem : byte; Begin clrscr; tong:=0; dem:=0; for i:=1 to 7 do begin writeln('Nhap nhiet do ngay thu ',i,' '); readln(A[i]); tong:=tong+A[i]; end; tb:=tong/7; writeln('Nhiet do trung binh cua ca tuan la: ',tb:8:1); for i:=1 to 7 do if A[i]>tb then dem:=dem+1; writeln('So ngay co nhiet do cao hon TB la: ',dem); readln; End. Ghi chú: Có thể minh hoạ bằng hình ảnh sau Mảng A So sánh 2 cách: Cách 1 Cách 2 Program Nhietdo_Tuan; Uses crt; Var t1,t2,t3,t4,t5,t6,t7,tb: real; dem : integer; Begin clrscr; write('Nhap vao nhiet do cua 7 ngay: '); readln(t1,t2,t3,t4,t5,t6,t7); tb:=(t1+t2+t3+t4+t5+t6+t7)/7; Program Nhietdo_Tuan; Uses crt; Var A : array[1..7] of real; tong, tb : real; i, dem : byte; Begin clrscr; tong:=0; dem:=0; for i:=1 to 7 do 22oC 22.5oC 23oC 23.5oC 24oC 24.5oC 25oC 1 2 3 4 5 6 7 164.5 23.5 3 tong tb dem 19 dem:=0; if t1>tb then dem:=dem+1; if t2>tb then dem:=dem+1; if t3>tb then dem:=dem+1; if t4>tb then dem:=dem+1; if t5>tb then dem:=dem+1; if t6>tb then dem:=dem+1; if t7>tb then dem:=dem+1; writeln('Nhiet do trung binh tuan la: ',tb:8:1); writeln('So ngay co nh do cao hon TB la: ',dem); readln End. begin writeln('Nhap nhiet do ngay thu ',i,' '); readln(A[i]); tong:=tong+A[i]; end; tb:=tong/7; writeln('Nh do TB cua ca tuan la: ',tb:8:1); for i:=1 to 7 do if A[i]>tb then dem:=dem+1; writeln('So ngay nh do cao hon TB la: ',dem); readln; End. Nhận xét: Nếu mở rộng bài toán tính nhiệt độ trung bình một tháng 30 ngày và đếm xem có bao nhiêu ngày có nhiệt độ cao hơn nhiệt độ trung bình, thì: Cách 1: - Phải khai báo 30 biến đơn - Sử dụng 30 lệnh if - then. Cách 2: - Chỉ cần khai báo 1 mảng gồm 30 phần tử - Sử dụng lệnh for i:=1 to 30 do Rõ ràng khi bài toán sử dụng nhiều biến đơn cùng kiểu dữ liệu, thì sử biến mảng sẽ thuận lợi hơn rất nhiều. 2.2. Mảng hai chiều: Theo phân phối chương trình lớp 11, phần này được giảm tải, nên Tôi chỉ trình bày đối với học sinh khá để định hướng các em đi thi học si
Tài liệu đính kèm: