SKKN Xử lý các tình huống có vấn đề trong bài tập Xâu Kí TựSKKN Xử lý các tình huống có vấn đề trong bài tập Xâu Kí TựSKKN Xử lý các tình huống có vấn đề trong bài tập Xâu Kí TựSKKN Xử lý các tình huống có vấn đề trong bài tập Xâu Kí TựSKKN Xử lý các tình huống có vấn đề trong bài tập Xâu Kí TựSKKN Xử lý các tình huống có vấn đề trong bài tập Xâu Kí TựSKKN Xử lý các tình huống có vấn đề trong bài tập Xâu Kí TựSKKN Xử lý các tình huống có vấn đề trong bài tập Xâu Kí TựSKKN Xử lý các tình huống có vấn đề trong bài tập Xâu Kí TựSKKN Xử lý các tình huống có vấn đề trong bài tập Xâu Kí TựSKKN Xử lý các tình huống có vấn đề trong bài tập Xâu Kí TựSKKN Xử lý các tình huống có vấn đề trong bài tập Xâu Kí Tựv
BM 01-Bia SKKN SỞ GIÁO DỤC VÀ ĐÀO TẠO ĐỒNG NAI Đơn vị: Trường THPT Nguyễn Hữu Cảnh Mã số: (Do HĐKH Sở GD&ĐT ghi) SÁNG KIẾN KINH NGHIỆM XỬ LÝ CÁC TÌNH HUỐNG CĨ VẤN ĐỀ Ở BÀI TẬP XÂU KÍ TỰ TRONG TIN HỌC 11 Người thực hiện: Nguyễn Sa Duy Lĩnh vực nghiên cứu: - Quản lý giáo dục - Phương pháp dạy học môn: TIN HỌC - Lĩnh vực khác: (Ghi rõ tên lĩnh vực) Có đính kèm: Các sản phẩm khơng thể in SKKN Mơ hình Đĩa CD (DVD) Phim ảnh Hiện vật khác (các phim, ảnh, sản phẩm phần mềm) Năm học: 2016 - 2017 BM02-LLKHSKKN SƠ LƯỢC LÝ LỊCH KHOA HỌC –––––––––––––––––– I THÔNG TIN CHUNG VỀ CÁ NHÂN Họ tên: Nguyễn Sa Duy Ngày tháng năm sinh: 17/01/1982 Nam, nữ: Nam Địa chỉ: Kp1 – Tân Hiệp – Biên Hòa – Đồng Nai Điện thoại: (CQ)/ (NR); ĐTDĐ: 0933.482.650 Fax: E-mail: saduy@nhc.edu.vn Chức vụ: Tổ trưởng chuyên môn Nhiệm vụ giao (quản lý, đồn thể, cơng việc hành chính, cơng việc chuyên môn, giảng dạy môn, lớp, chủ nhiệm lớp,…): Tổ trưởng tổ Tin học, giảng dạy môn Tin học khối 12, 11 Đơn vị công tác: Trường THPT Nguyễn Hữu Cảnh II TRÌNH ĐỘ ĐÀO TẠO - Học vị (hoặc trình độ chun mơn, nghiệp vụ) cao nhất: Cử nhân - Năm nhận bằng: 2005 - Chuyên ngành đào tạo: Tin học III KINH NGHIỆM KHOA HỌC - Lĩnh vực chun mơn có kinh nghiệm: - Số năm có kinh nghiệm: 12 - Các sáng kiến kinh nghiệm có năm gần đây: Năm 2014: Sử dụng bảng Active Board kết hợp phần mềm tương tác ActivInspire giảng dạy Tin học 10 Năm 2015: Tổ chức kiểm tra Trắc nghiệm WONDERSHARE QUIZCREATOR 4.5 lớp học trực tuyến ENGRADE Năm 2016: Vận dụng GOOGLE APPS GOOGLE CLASSROOM vào dạy học tích cực Tin học 11 - BÀI TẬP KIỂU XÂU Trang BM03-TMSKKN Tên SKKN: XỬ LÝ CÁC TÌNH HUỐNG CĨ VẤN ĐỀ Ở BÀI TẬP XÂU KÍ TỰ TRONG TIN HỌC 11 I LÝ DO CHỌN ĐỀ TÀI Với phát triển mạnh mẽ cơng nghệ thơng tin có đóng góp việc đổi phương pháp dạy học nhà trường Tin học, đặc biệt Pascal môn học trường phổ thông nên học sinh nhiều bỡ ngỡ tiếp cận với mơn học Trong q trình dạy học, người thầy ngồi việc giúp học sinh nắm kiến thức phải kích thích tính tích cực tự học, sáng tạo, chủ động học sinh để qua học, học sinh cảm thấy tích thú với kiến thức ứng dụng vào thực tế đời sống Việc học ngơn ngữ lập trình Pascal giúp cho em hiểu cấu trúc, hoạt động loại máy tính điện tử để từ định hướng đam mê Tin học, nghề nghiệp em lựa chọn Trong thực tế, lập trình hay xử lý liệu vào tốn thường đưa liệu dạng kiểu liệu Chuẩn kiểu liệu có cấu trúc, kiểu liệu có cấu trúc kiểu Xâu Với mong muốn giúp học sinh việc tìm lời giải cho số toán liên quan tới kiểu liệu Xâu dễ dàng, giúp cho em u thích nhiều ngơn ngữ lập trình Pascal, tơi mạnh dạn triển khai chuyên đề “Xử lý tình có vấn đề tập Xâu Kí Tự” (Chương IV, 12, tin học 11) mà áp dụng có hiệu q trình giảng dạy Trang II CƠ SỞ LÝ LUẬN VÀ THỰC TIỄN Cơ sở lý luận: Quyết định số 698/QĐ-TTG Thủ tướng Chính phủ : Phê duyệt Kế hoạch tổng thể phát triển nguồn nhân lực công nghệ thông tin đến năm 2015 định hướng đến năm 2020 có nêu: “… Phát triển nguồn nhân lực công nghệ thông tin (sau viết tắt CNTT) yếu tố then chốt có ý nghĩa định việc phát triển ứng dụng CNTT Phát triển nguồn nhân lực CNTT phải đảm bảo chất lượng, đồng bộ, trọng tăng nhanh tỷ lệ nguồn nhân lực có trình độ cao Phát triển nguồn nhân lực CNTT phải gắn kết chặt chẽ với trình đổi giáo dục đào tạo…” Chỉ thị số 55/2008/CT-BGDĐT ngày 30/9/2008 tăng cường giảng dạy, đào tạo ứng dụng công nghệ thông tin ngành giáo dục giai đoạn 2008 – 2012 nêu: “…Triển khai áp dụng CNTT dạy học, hỗ trợ đổi phương pháp giảng dạy, tích hợp ứng dụng CNTT môn học cách hiệu sáng tạo nơi có điều kiện thiết bị tin học; xây dựng nội dung thơng tin số phục vụ giáo dục; phát huy tính tích cực tự học, tự tìm tòi thơng tin qua mạng Internet người học; tạo điều kiện để người học học nơi, lúc, tìm nội dung học phù hợp; xoá bỏ lạc hậu công nghệ thông tin khoảng cách địa lý đem lại Cụ thể là: Khuyến khích giáo viên, giảng viên soạn trình chiếu, giảng điện tử giáo án máy tính Khuyến khích giáo viên, giảng viên trao đổi kinh nghiệm giảng dạy qua website sở giáo dục qua Diễn đàn giáo dục Website Bộ ” Công văn Số: 2102/SGDĐT-GDTrH Sở Giáo dục & Đào tạo “V /v Hướng dẫn thực nhiệm vụ Giáo dục trung học phổ thơng năm học 2015-2016” có nêu: “…Tiếp tục đổi phương pháp dạy học nhằm phát huy tính tích cực, chủ động, sáng tạo, rèn luyện phương pháp tự học vận dụng kiến thức, kĩ học sinh theo tinh thần Công văn số 3535/BGDĐT-GDTrH ngày 27/5/2013 áp dụng phương pháp "Bàn tay nặn bột" phương pháp dạy học tích cực khác; Cơng văn số 5555/BGDĐT-GDTrH ngày 08/10/2014 Bộ GDĐT Công văn số 2507/SGDĐTGDTrH ngày 27 tháng10 năm 2014 Sở GDĐT; đẩy mạnh việc vận dụng dạy học giải vấn đề, phương pháp thực hành, dạy học theo dự án mơn học; tích cực ứng dụng cơng nghệ thông tin phù hợp với nội dung học; khắc phục lối truyền thụ áp đặt chiều, ghi nhớ máy móc; tập trung dạy cách học…” Trang Cơ sở thực tiễn: Đổi phương pháp dạy học lấy học sinh làm trung tâm hoạt động, học sinh chủ động khám phá kiến thức dẫn dắt người thầy, nên người thầy phải hướng dẫn em cách tự học, tự nghiên cứu Đồng thời, phải phát huy tối đa tác dụng phương tiện, thiết bị vào trình dạy học Việc ứng dụng công nghệ thông tin (CNTT) vào dạy học trường THPT Nguyễn Hữu Cảnh thông qua máy tính, máy chiếu, Email mang lại hiệu định công tác giảng dạy Vậy làm vừa phát huy tính tích cực học sinh, vừa phát huy hiệu ứng dụng CNTT dạy học? Trên sở mà học sinh học ngơn ngữ lập trình Pascal, giúp học sinh nhìn nhận vấn đề cách sáng tạo u thích mơn Tin học, tơi mạnh dạn triển khai chuyên đề: “ Xử lý tình có vấn đề tập kiểu Xâu Tin học 11” Trang III TỔ CHỨC THỰC HIỆN CÁC GIẢI PHÁP Giải pháp 1:Triển khai nội dung kiến thức liệu kiểu Xâu: a Khái niệm kiểu Xâu: - Xâu dãy kí tự 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 xâu rỗng - Có thể xem xâu mảng chiều mà phần tử kí tự Các kí tự xâu đánh thứ tự, thường số - Tương tự mảng, tham chiếu tới phần tử xâu xác định tên biến xâu số đặt cặp ngoặc [ ] Ví dụ: giả sử có biến hoten lưu trữ giá trị xâu ‘Nguyen Sa Duy’ hoten[8] cho ta kí tự ‘S’ kí tự thứ biến xâu hoten b Khai báo: Để khai báo liệu kiểu xâu ta sử dụng từ khóa string Var : string[độ dài lớn xâu]; Ví dụ: var hoten: string[30]; Trong mơ tả xâu bỏ qua phần độ dài: Var hoten: string; lúc độ dài lớn xâu ngầm định 255 c Tham chiếu đến phần tử xâu: Như phần trên, kí tự phần tử mảng nên cách tham chiếu sau: [chỉ số phần tử]; d Các phép toán, thủ tục, hàm 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 - 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 + Nếu A B xâu có độ dài khác A đoạn đầu B xâu A < xâu B - Thủ tục Delete(s,vt,n): xóa n kí tự xâu s, vị trí vt Trang - Thủ tục Insert(s1,s2,vt): chèn xâu s1 vào s2, bắt đầu vị trí vt - Hàm Copy(s,vt,n): tạo xâu n kí tự liên tiếp vị trí vt xâu s - Hàm Length(s): cho giá trị độ dài xâu s - Hàm Pos(s1,s2): cho vị trí xuất xâu s1 xâu s2 - Hàm Upcase(ch): cho chữ in hoa ứng với chữ ch - Hàm Ord(ch): cho mã kí tự ch bảng mã ASCII - Hàm Chr(n): cho kí tự có mã n Trang Giải pháp 2:Triển khai câu hỏi tình có vấn đề xử lý liệu kiểu Xâu: Ở ta đặt tình tốn xử lý Xâu họ tên đối tượng nhập vào a Một số câu hỏi cho tình thường gặp xử lý xâu họ tên: Câu hỏi 1: Thế xâu họ tên chuẩn? học sinh: Các kí tự từ phải kí tự in hoa, lại chữ thường Ngồi ra, khơng chứa kí tự trắng nằm đầu xâu, cuối xâu, kí tự trắng liên tiếp (giữa từ có khoảng trắng) Câu hỏi 2: Vậy xác định dấu hiệu có kí tự trắng dư thừa xử lý chúng nào? Học sinh phải đưa hàm Pos để xác định vị trí, thủ tục Delete để xử lý, hàm length lấy độ dài xâu: + Ở đầu: If POS(kí tự trắng, xâu họ tên)=1 Then Delete(xâu họ tên,1,1); + Ở cuối: If POS(kí tự trắng, xâu họ tên)=length(xâu họ tên) Then Delete(xâu họ tên, length(xâu họ tên),1); + kí tự trắng liên tiếp nhau: If POS(2 kí tự trắng, xâu họ tên) < >0(khác 0) Then Delete(xâu họ tên, POS(2 kí tự trắng, xâu họ tên),1); Câu hỏi 3: Nếu qua xử lý lệnh mà kí tự trắng dư thừa làm nào? Học sinh: sử dụng câu lệnh lặp “While …Do…” HOẶC lệnh FOR để giải triệt để + Ở đầu: WHILE POS(kí tự trắng, xâu họ tên)=1 DO Delete(xâu họ tên,1,1); + Ở cuối: WHILE POS(kí tự trắng, xâu họ tên)=length(xâu họ tên) DO Delete(xâu họ tên, length(xâu họ tên),1); + kí tự trắng liên tiếp nhau: WHILE POS(2 kí tự trắng, xâu họ tên) < >0 DO Delete(xâu họ tên, POS(2 kí tự trắng, xâu họ tên),1); b Các tình có vấn đề: Trang Tình 1: Nếu xâu họ tên xử lý kí tự trắng dư thừa, làm đưa xâu họ tên chuẩn: Chữ từ chữ in hoa? kí tự đầu từ phải in hoa Làm xác định kí tự từ có xâu họ tên? học sinh: từ kí tự sau kí tự trắng tìm (vì từ có kí tự trắng) Upcase(S[1]); IF S[i] = ‘ ’ THEN S[i+1]:=UPCASE(S[i+1]); sử dụng vòng lặp For Do để xử lí tất từ Nếu xâu họ tên có số kí tự in hoa hướng xử lí nào? học sinh: phải sử dụng hàm Ord(kí tự): cho biết giá trị số thập phân mã ASCII kí tự Cụ thể: chữ in hoa: A:65; B:66; Z:90 Chữ thường: a: 97; b:98; … z:122 Ví dụ: Ord('A') = 65; Ord('a') = 97; Như vậy, giá trị mã ASCII kí tự chữ thường lớn kí tự chữ in hoa chữ 97 - 65 = 32 Đồng thời, sử dụng thêm hàm Chr(x) giá trị kí tự bảng mã ASCII có số thập phân x Ví dụ: Chr(65) = 'A'; Chr(66) = 'B';… để đưa tất kí tự dạng chữ in thường xử lí u cầu học sinh hồn thiện tập chương trình mơ Pascal Cài đặt chương trình: PROGRAM Ve_Chuan; USES CRT; VAR S:STRING; i:INTEGER; BEGIN CLRSCR; Trang {nhập xâu} WRITELN(‘NHAP HO TEN BAT KY CUA HOC SINH’); READLN(S); {xử lí kí tự trắng dư thừa} WHILE S[1]= ‘ ’ DO DELETE(S,1,1); WHILE S[LENGTH(S)]= ‘ ’ DO DELETE(S,LENGTH(S),1); WHILE POS(' ',S)0 DO DELETE(S,POS(' ',S),1); { đưa tất kí tự in thường} For i := to Length(S) IF (Ord(S[i])>=65) and (Ord(S[i])