1 MỞ ĐẦU 1 1 Lý do chọn đề tài Nội dung tin học lập trình lớp 11 là một nội dung mới lạ, khó đối với đa số học sinh với nhiều khái niệm, thuật ngữ, cấu trúc dữ liệu mà học sinh mới được tiếp xúc lần đ[.]
1 MỞ ĐẦU 1.1 Lý chọn đề tài Nội dung tin học lập trình lớp 11 nội dung lạ, khó đa số học sinh với nhiều khái niệm, thuật ngữ, cấu trúc liệu mà học sinh tiếp xúc lần đầu Chính mà học sinh dễ mắc sai lầm lập trình giải tốn Trong việc giảng dạy cho HS, việc giúp học sinh lĩnh hội kiến thức bản, người thầy phải biết kích thích tính tích cực, sáng tạo say mê học hỏi học tập em Vì địi hỏi học sinh phải có ý thức mục tiêu đặt ra, tạo động lực bên thúc đẩy thân em hoạt động để đạt mục tiêu Điều thực dạy học không đơn giản việc nêu rõ mục tiêu mà quan trọng gợi động học tập việc đổi phương pháp dạy học Là giáo viên giảng dạy môn này, theo tơi khơng phải tìm nhiều tốn khó, tốn hay để giảng dạy cho học sinh Mà vấn đề đặt phải tích cực tìm tịi, sáng tạo việc đưa tốn để giúp học sinh có hứng thú, sáng tạo học tập để giải vấn đề đưa Xuất phát từ thực tiễn giảng dạy trường THPT Hậu Lộc 4, nhận thấy để đạt hiệu cao phần học, tiết học cần có phương pháp, đưa ý tưởng xây dựng viết chương trình cách thiết kế giảng cho phù hợp với nội dung kiến thức, phương pháp phương tiện dạy học cho học sinh Để qua phần học, tiết học, học sinh hứng thú với kiến thức mới, hiểu kiến thức học lớp vận dụng vào thực tiễn Trong mơn học bậc THPT Tin học lớp 11 em cho môn học khó hiểu Các em làm quen với ngơn ngữ lập trình Turbo Pascal, C++ Trong ngơn ngữ lập trình em làm quen với nhiều kiểu liệu mới, hiểu thuật toán cho toán xây dựng viết chương trình Quả thật em khó khăn, từ việc em người sử dụng phần mềm có sẵn như: soạn thảo văn bản, phần mềm Excel, phần mềm học tập, giải trí … em lại phải tìm lời giải cho tốn, bước cho máy tính thực viết chương trình để tạo sản phẩm phần mềm cho người khác sử dụng Qua q trình giảng dạy Tin học khối 11, tơi nhận thấy liệu kiểu xâu thường gặp nhiều toán vận dụng linh hoạt thao tác xử lý kiểu liệu vào tốn khơng dễ Việc học sinh tìm hiểu kiểu liệu có cấu trúc nói chung kiểu liệu xâu nói riêng cịn nhiều lúng túng Đặc biệt liệu vào kiểu xâu yêu cầu toán liên quan đến liệu kiểu xâu, học sinh thường không để giải vấn đề mà toán đưa Qua thực tế công tác gần 15 năm, qua học hỏi kinh nghiệm từ đồng nghiệp, với mong muốn phần giúp cho học sinh giáo viên việc tìm lời giải cho số tốn liên quan tới kiểu liệu xâu dễ dàng Để học sinh rèn luyện tập bản, từ mở rộng tốn nâng cao kiểu xâu dành cho học sinh giỏi hút học sinh, tạo hứng thú cho học skkn sinh học lập trình Vì vậy, tơi xin mạnh dạn giới thiệu đề tài sáng kiến kinh nghiệm mà nghiên cứu là: “Mở rộng tập kiểu xâu cho học sinh khá, giỏi ” Tin học 11 mà áp dụng có hiệu q trình giảng dạy 1.2 Mục đích nghiên cứu - Giới thiệu cách khai báo truy xuất đến kiểu liệu xâu - Giới thiệu số phép toán liệu kiểu xâu, đồng thời cung cấp thêm số hàm, thủ tục chưa có 12 sách giáo khoa tin học 11 - Hệ thống toán dạng số dạng tập thường gặp giúp cho giáo viên học sinh phần nhận dạng giải số tập liên quan - Sử dụng ví dụ cụ thể trước hết để học sinh nắm cú pháp, ý nghĩa kiểu xâu Đồng thời giới thiệu thêm số hàm, thủ tục xử lý xâu nhằm giúp em học sinh xử lý số tập ứng dụng, tăng yêu thích mơn học cho khó trừu tượng 1.3 Đối tượng nghiên cứu Sử dụng ngôn ngữ lập trình C++ Free Pascal để tiến hành nghiên cứu toán kiểu liệu xâu với đối tượng nghiên cứu học sinh khối 11 trường THPT Hậu Lộc Hình thành kỹ thực hành giải tập cho học sinh có hệ thống kiến thức với dạng tập lập trình nâng cao theo độ khó dần tập liệu kiêu xâu 1.4 Phương pháp nghiên cứu Hình thành học sinh kỹ phân tích, xử lý vấn đề liên quan đến tập kiểu xâu Để trình bày sáng kiến kinh nghiệm này, đã sử dụng phối kết hợp nhiều phương pháp như: nghiên cứu tài liệu, sách, báo, thuyết trình, quan sát, tham khảo ý kiến cấp đồng nghiệp, điều tra bản, thực nghiệm so sánh, phân tích kết quả thực nghiệm phù hợp với môn học tḥc lĩnh vực Tin học NỢI DUNG SÁNG KIẾN KINH NGHIỆM 2.1 Cơ sở lý luận sáng kiến kinh nghiệm Trong bối cảnh toàn ngành GD-ĐT đổi phương pháp dạy học theo hướng phát huy tính tích cực chủ động học sinh học tập Điều 24.2 Luật giáo dục nêu rõ: “Phương pháp giáo dục phổ thơng phải phát huy tính tích cực, tự giác, chủ động sáng tạo học sinh, phù hợp với đặc điểm lớp học, môn học; bồi dưỡng phương pháp tự học, rèn luyện kỹ vận dụng kiến thức vào thực tiễn, tác động đến tình cảm, đem lại niềm vui, hứng thú học tập cho học sinh” Như vậy, khẳng định đổi phương pháp dạy học trường phổ thông giúp học sinh hướng tới việc học tập chủ động, chống lại thói quen học tập thụ động Với số nội dung đề tài này, học sinh tự học, tự rèn luyện thơng qua số dạng tập cụ thể nâng cao skkn Căn vào mục tiêu môn Tin học, phải cung cấp tri thức bản, làm tảng để học sinh tiếp tục sâu vào tìm hiểu xây dựng khoa học Tin học tiếp thu tri thức lĩnh vực kĩ thuật công nghệ tiên tiến, lĩnh vực công nghệ thông tin Môn Tin học, môn học khác, vào mục tiêu để xác định nhiệm vụ cụ thể môn học, tổ chức hoạt động đào tạo góp phần thực mục tiêu giáo dục mà Đảng nhà nước đề Nếu học sinh rèn luyện kỹ tập việc mở rộng toán kiểu xâu dành cho học sinh giỏi hút học sinh, tạo hứng thú cho học sinh học lập trình 2.2 Thực trạng vấn đề trước áp dụng sáng kiến kinh nghiệm Trước chưa áp dụng phương pháp giảng dạy giáo án điện tử, hệ thống tập, thực hành có nội dung liên hệ với thực tiễn, học sinh phản ánh với giáo viên tập kiểu xâu thường trừu tượng khó hiểu Tin học mơn học đặc thù có nhiều kiến thức khó lập trình pascal lớp 11, kiến thức thi học sinh giỏi tỉnh thường bị xem nhẹ, bị xem “môn phụ” Học sinh phụ huynh chưa mặn mà, chưa quan tâm mực tới môn học nên việc lựa chọn bồi dưỡng học sinh giỏi vơ khó khăn Đứng trước tốn tin học, học sinh thường lúng túng khơng biết tìm thuật tốn tốn từ đâu tìm nào? Một số học sinh khá, giỏi có thói quen mị mẫm thử nghiệm để tìm lời giải, điều dẫn tới kết sai chệch hướng giải toán, hiệu suất để tìm thuật tốn khơng cao, số học sinh khơng biết cách tìm thuật tốn từ đâu điều gây tâm lý chán nản cho em Với tình hình để giúp học sinh định hướng tốt q trình tìm thuật tốn, trước tự tìm thuật tốn tốt người giáo viên cần tạo cho học sinh thói quen tìm thuật tốn cho tốn khó từ các tốn quen thuộc mà em biết, khai thác yếu tố đặc trưng số tốn để tìm thuật tốn cho toán nâng cao Qua việc giảng dạy học sinh học lập trình lớp 11, tơi nhận thấy học sinh cịn nhiều bỡ ngỡ tiếp cận với lập trình có cấu trúc kiểu liệu có cấu trúc Với thao tác duyệt xâu thao tác kiểm tra tính chất phần tử xâu cần phải sử dụng cấu trúc lặp học sinh thường gặp nhiều khó khăn Và bước để tạo tiền đề việc lựa chọn học sinh để bồi dưỡng học sinh giỏi với chuyên đề tập kiểu xâu 2.3 Giải pháp sử dụng để giải vấn đề 2.3.1 Giới thiệu kiến thức kiểu xâu a Khai báo xâu: - Xâu dãy kí tự thuộc bảng mã ASCII, kí tự gọi phần tử xâu Số lượng kí tự xâu gọi độ dài xâu Xâu có độ dài gọi xâu rỗng skkn - Để khai báo liệu kiểu xâu ta sử dụng tên dành riêng String, độ dài lớn xâu string tên_biến_xâu; Ví dụ: string st1,st2; string st[100]; - Có thể xem xâu mảng chiều mà phần tử kí tự Các kí tự xâu đánh số thứ tự thường - Nếu khơng khai báo độ dài lớn xâu xâu nhận giá trị ngầm định 255 - Ngồi có kiểu khai báo khác xâu như: + Shortstring: String + longstring: mảng ký tự có kiểu char Thơng thường kiểu char có kích thước 16 bit nên mảng có kích thước tối đa 16 bit = 65535 ký tự + ansistring (chỉ có free pascal) có kích thước gần 2GB = 230 B b Các thao tác xử lí xâu - Phép ghép xâu: (phép cộng xâu): kí hiệu dấu cộng (+), dùng để ghép nhiều xâu thành VD: ‘hoc ’ + ‘sinh’ cho kết ‘hocsinh’ - Các phép so sánh: , có thứ tự thực ưu tiên thấp phép ghép xâu thực việc so sánh hai xâu theo quy tắc sau: + Xâu A > xâu B kí tự khác chúng kể từ trái sang xâu A có mã ASCII lớn VD: ‘Ha Noi’ > ‘Ha Nam’ (111 kí tự) (97 kí tự) + Xâu B đoạn đầu xâu A VD: ‘Xau ki tu’ > ‘Xau’ + A=B xâu A B giống hoàn toàn VD: ‘tin’= ‘tin’, ‘tin’ ‘TIN’ c Một số thủ tục xử lý xâu: Thủ tục St.erase(vt,n) St2.Insert(vt ,st1) Str(value,s) val(s,value,code) Ý nghĩa Xóa n kí tự xâu St vị trí vt Chèn xâu st1 vào st2, bắt đầu vị trí vt Chuyển đổi giá trị kiểu số (value) sang dạng xâu kí tự gán cho biến s đổi xâu kí tự s sang dạng số gán cho biến value, biến đổi thành công code nhận giá trị 0, ngược lại cho giá trị khác skkn Ví dụ St= ‘Song Hong’ St.erase(1,5)= ‘Hong’ St1= ‘1’; St2= ‘Hinh 2’ St2.Insert(6,st1)= ‘Hinh 1.2’ VD: n:=‘2019’ str(n,s)= ‘2019’ VD: val(‘198’,value,code) lúc code=0 value=198 d Một số hàm: TT Hàm S.substr(vt,n) Length(s) Pos(s1,s2) Upcase(ch) Ord(ch) Chr(n) Concat(s1,s2, ,sn) Ý nghĩa Tạo xâu gồm n kí tự liên tiếp vị trí vt xâu s Cho giá trị độ dài xâu s Cho vị trí xuất xâu s1 xâu s2 Cho chữ in hoa ứng với chữ ch Cho mã kí tự ch bảng mã ASCII Cho kí tự có mã n Cho xâu cách nối đuôi xâu s1,s2, ,sn lại với Ví dụ: TT Giá trị s ‘Tin hoc’ ‘Xin chao’ ‘Xin chao’ Biểu thức s.substr(5,3) Length(s) Pos(‘c’,s) Kết ‘hoc’ TT Giá trị ch ‘a’ ‘a’ Upcase(ch) Ord(ch) Chr(65) Concat(‘tin’,’hoc’) ‘A’ 97 ‘A’ ‘tinhoc’ 2.3.2 Các dạng tập kiểu xâu Bài tập 1: Nhập vào từ bàn phím xâu gồm chữ latin Hãy đếm xem xâu có kí tự ‘a’(khơng phân biệt chữ in hoa in thường) gợi ý: khởi tạo biến dem = Duyệt từ đầu xâu đến cuối xâu, gặp kí tự a A tăng dem lên Vì cho xâu khơng có dấu cách nên ta dùng cin nhập CT viết ngôn ngữ C++ #include using namespace std; string st; int n, dem=0; int main() { cin>> st; n=st.length(); for(int i=0;i