Rèn luyện kỹ năng lập trình hiệu quả cho học sinh trường thpt yên định 3

22 140 0
Rèn luyện kỹ năng lập trình hiệu quả cho học sinh trường thpt yên định 3

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

SỞ GIÁO DỤC VÀ ĐÀO TẠO THANH HÓA TRƯỜNG THPT YÊN ĐỊNH SÁNG KIẾN KINH NGHIỆM RÈN LUYỆN KỸ NĂNG LẬP TRÌNH HIỆU QUẢ CHO HỌC SINH TRƯỜNG THPT YÊN ĐỊNH Họ tên tác giả: Lê Tiến Lực Chức vụ: Giáo viên SKKN thuộc môn: Tin học THANH HOÁ, NĂM 2019 MỤC LỤC Nội dung Mở đầu 1.1 Lí chọn đề tài 1.2 Mục đích nghiên cứu 1.3 Đối tượng nghiên cứu 1.4 Phương pháp nghiên cứu Nội dung sáng kiến kinh nghiệm 2.1 Cơ sở lý luận 2.2 Thực trạng vấn đề trước áp dụng sáng kiến kinh nghiệm 2.3 Các giải pháp sử dụng để giải vấn đề 2.3.1 Rèn luyện tư thuật toán cho học sinh THPT 2.3.2 Phong cách lập trình tốt 2.3.3 Phong cách viết mã nguồn 2.3.4 Tối ưu thực thi mã nguồn 2.3.5 Kiểm nghiệm chương trình với test đầy đủ 2.3.6 Các dạng toán bồi dưỡng môn Tin cho HSG THPT 2.4 Hiệu sáng kiến kinh nghiệm Kết luận, kiến nghị Trang 2 3 4 5 10 10 19 19 MỞ ĐẦU 1.1 Lí chọn đề tài Việt Nam đổi cách bản, toàn diện giáo dục để giáo dục Việt Nam phát triển hòa nhập với quốc tế, theo kịp với phát triển vũ bão khoa học - kĩ thuật - cơng nghệ tri thức lồi người gia tăng nhanh chóng Đổi giáo dục tồn diện lộ trình thực hiện, bước trình đổi đổ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 học tập để tạo đà cho cấp học thực tiễn sống sau Môn tin học đưa chương trình THPT tích cực thực đổi phương pháp dạy học nhằm mang lại hiệu dạy học giáo dục cao Mặt khác môn Tin học mơn khoa học lý thuyết túy học sinh nhớ không hiểu Việc giáo viên bắt học sinh ghi nhớ thụ động nội dung sách giáo khoa điều cực khó, cho dù học sinh có cố gắng ghi nhớ bị lẫn lộn Hơn nữa, gặp toán phải sử dụng thuật toán phức tạp nhiều em lúng lúng Việc giải toán thực cần thiết cho em làm học lập trình chương trình Tin học phổ thơng nói riêng việc giải toán thực tế nói chung Là giáo viên trực tiếp giảng dạy mơn Tin học nhiều năm tơi ln tìm tịi vận dụng phương pháp dạy học tích cực để giúp em tiếp cận giải hiệu học Tin học nói chung tập lập trình nói riêng, có kỹ giúp học sinh lập trình giải tốn ngơn ngữ lập trình bậc cao (cụ thể NNLP Pascal) cho hiệu nhất, hướng đến tính chuyên nghiệp để tạo điều kiện cho em học lên cao nữa, mặt khác học sinh cần rèn luyện tính kiêm trì, chịu khó, chăm làm việc có tổ chức, có kế hoạch học tập lao động sản xuất sau 1.2 Mục đích nghiên cứu Theo tin tức tư vấn chuyên gia giáo dục, việc kết hợp lý thuyết thực hành xu hướng phát triển tất yếu giáo dục để đáp ứng nhu cầu chất lượng nguồn lao động Đây xem phương pháp dạy học Tin học hiệu Thực tế, học sinh phải học nhiều môn, cá biệt có em cho Tin học mơn học phụ, không thi THPT quốc gia Nếu học lý thuyết chung chung học sinh khơng thể nắm bắt nhanh qn Bên cạnh Tin học mơn học địi hỏi kỹ sử dụng máy tính thành thạo Chính thế, cần kết hợp đào tạo lý thuyết rèn luyện kỹ thực hành theo hướng chuẩn chuyên nghiệp Đây xem yếu tố cần thiết dạy học mơn Tin học Mặt khác qua q trình nhiều năm giảng dạy thực tế đơn vị trao đổi đồng nghiệp đơn vị khác, qua trình tìm hiểu học sinh, thi học sinh giỏi cấp tỉnh năm qua cho thấy: Một số làm em cịn chưa viết phong cách lập trình có cấu trúc, chưa có phong cách viết mã nguồn chuyên nghiệp, chưa thực tối ưu hóa mã nguồn nên gây khó khăn cho việc hiệu chỉnh phát triển chương trình Hầu hết chương trình em học sinh mang tính trọng tìm output nên đọc chương trình người khác khó hiểu khó hiệu chỉnh theo hướng chuyên nghiệp Để khắc phục tình trạng mạnh dạn áp dụng sáng kiến nhiều năm, với nhiều hệ học sinh cách thường xuyên liên tục trình dạy học học, tiết học, đặc biệt trình bồi dưỡng học sinh giỏi môn Tin học Kết bước đầu đạt đáng khích lệ tự hào, đồng nghiệp học sinh đánh giá cao 1.3 Đối tượng nghiên cứu Sáng kiến kinh nghiệm nghiên cứu đúc rút kinh nghiệm tập trung vào vấn đề sau: - Rèn luyện tư thuật toán cho học sinh THPT o Rèn luyện kỹ tìm tịi thuật toán giải toán hiệu o Xác định rõ INPUT OUTPUT o Mịn dần thuật toán - Rèn luyện phong cách lập trình tốt cho học sinh THPT o Quy ước cách đặt tên cho định danh o Phong cách viết mã nguồn o Tối ưu thực thi mã nguồn o Tạo Test kiểm tra tính đắn chương trình - Các dạng tốn tiêu biểu bồi dưỡng mơn Tin học cho HSG THPT o 1.Các toán số học o 2.Các toán mảng chiều, hai chiều o Các toán xử lý xâu 1.4 Phương pháp nghiên cứu - Để nghiên cứu đề tài sử dụng số phương pháp sau: Phương pháp nghiên cứu xây dựng sở lý thuyết lập trình Nghiên cứu vấn đề lí luận có liên quan đến đề tài tài liệu thuật toán, toán hay tin học Nghiên cứu tài liệu phương pháp dạy học tích cực môn Tin học Nghiên cứu nội dung cấu trúc chương trình mơn Tin học THPT Phương pháp khảo sát thực tế, thu thập thông tin học sinh Trao đổi với giáo viên có kinh nghiệm phương pháp dạy học tích cực Tìm hiểu khó khăn học sinh giúp đỡ em trình học tập, thực hành phòng máy NỘI DUNG SÁNG KIẾN KINH NGHIỆM 2.1 Cơ sở lí luận - Cơ sở việc dạy học môn: Dạy học tác động hai chiều giáo viên học sinh, học sinh chủ thể q trình nhận thức, cịn giáo viên người tổ chức hoạt động nhận thức cho học sinh Nếu giáo viên có phương pháp tổ chức tốt, phù hợp học sinh nắm kiến thức dễ dàng, giải tốt tốn, tình cụ thể thực tiễn ngược lại - Cơ sở việc nắm kiến thức, kĩ năng: + Về mặt kiến thức: Học sinh phải nắm đơn vị kiến thức sách giáo khoa, học theo chuẩn kiến thức, kĩ Bộ giáo dục đào tạo quy định Đó tảng để em phát triển tư duy, nâng cao lực giải vấn đề + Về kĩ năng: Học sinh biết vận dụng kiến thức học học để giải nhanh gọn dạng tập từ đơn giản đến phức tạp, từ tái kiến thức đến vận dụng kiến thức Điều địi hỏi học sinh phải có phương pháp giải vấn đề cho dạng tập tốt Việc học học sinh cần ý hai mức độ: mức độ vận dụng mức độ sáng tạo Trong mức độ sáng tạo địi hỏi học sinh phải có tố chất, có kĩ tổng hợp, phân tích để từ có cách giải phù hợp 2.2 Thực trạng vấn đề trước áp dụng sáng kiến kinh nghiệm - Qua giảng dạy môn Tin học trường THPT, thân nhận thấy nhiều học sinh lớp 11 thấy mơn lập trình Pascal khó, khơ khan phức tạp Mới đầu em sợ thấy giải tốn ngồi đơn giản vịng vài giây nhẩm kết cịn lập trình tốn mà phải làm đến hàng chục phút, đưa thuật toán mà cho kết sai - Tâm lý số em cho môn Tin học mơn học chính, đại đa số em khơng tích cực học tập chủ yếu thụ động tiếp thu kiến thức theo hướng dẫn giáo viên với tâm lý học để lấy điểm cho hết giờ, hết mà chưa nhận lợi ích thiết thực, lâu dài môn - Xét góc độ lập trình phần học khó học sinh THPT Khó khơng phải tính phức tạp phần học hay phạm vi kiến thức rộng lớn Nếu đem so sánh lập trình mơn Tốn học, Vật Lý, Hóa học lập trình Pascal gọn nhỏ lại khó tiếp cận - Lập trình Pascal "khó" học sinh THPT mơi trường lập trình Pascal có giao diện từ khóa tiếng Anh, dịng thơng báo hay trợ giúp Nhìn chung học sinh THPT vốn tiếng Anh khơng nhiều, nhiều em cịn yếu tiếng Anh - Một vấn đề rào cản việc học sinh THPT tiếp cận với lập trình Pascal là: tư Tốn học em hạn chế phụ thuộc vào Sách Giáo Khoa kỹ phân tích, tổng hợp, xây dựng thuật toán cho toán hay vấn đề cần lập trình chưa tốt Các em thụ động việc tiếp cận toán, xếp tư duy, xây dựng thuật giải - Từ thực tế trên, q trình dạy học tơi ln băn khoăn, trăn trở làm nâng cao chất lượng kỹ lập trình cho học sinh lớp 11 THPT Việc tiếp cận với mơn học khó khăn, phải làm nhiều lần thực hành nhiều tiết em hiểu việc nhập xuất liệu Do khó khăn để em hình thành kỹ viết chương trình Nhất năm gần Ngành giáo dục thành lập đội tuyển tham dự thi học sinh giỏi mơn Tin học,… Điều thúc đẩy tơi q trình giảng dạy phải nghiên cứu tìm tịi biện pháp, kinh nghiệm để giúp cho em có đam mê học tập lập trình, giúp em biết quy trình lập trình định hướng cho học sinh cách để trở thành nhà lập trình cần phải nâng cao kỹ lập trình NNLT Pascal theo hướng chun nghiệp Giúp em hiểu, u thích lập trình học lập trình hứng thú, phấn khởi - Một số học sinh có suy nghĩ sai lầm Tin học mơn học giải trí để lên mạng, xem phim, chơi game, nghe nhạc… mà quên tin học có nhiều ứng dụng quan trọng khác đời sống Do khó khăn đưa Tin học vào trường THPT xuất phát từ việc phát triển tồn diện cho học sinh thêm vào qua mơn học hình thành phẩm chất lao động chăm chỉ, kiên trì, chịu khó, … - Những khó khăn đặt nhiều thách thức cho người trực tiếp giảng dạy mơn học tơi Từ tơi nhận thấy cần có giải pháp cụ thể để nâng cao chất lượng giảng dạy môn Tin học trường THPT để môn học thực có ý nghĩa giảng dạy học tập 2.3 Giải pháp sử dụng 2.3.1 Rèn luyện tư thuật toán cho học sinh THPT - Tại phải rèn luyện tư thuật toán cho học sinh THPT - Trong sách tiếng NNLT Pascal ( viết năm 1970), tác giả N.With viết dịng từ trang đầu: CHƯƠNG TRÌNH= THUẬT TỐN +CẤU TRÚC DỮ LIỆU - Như thuật tốn phần quan trọng bậc để tạo nên chương trình Nhưng cấp học học sinh chưa làm quen với khái niệm thuật toán Do học lập trình khó khăn ban đầu học sinh tìm thuật tốn để giải toán cho Một học sinh muốn tiến sâu, tiến xa tương lai phải có tư thuật toán tốt - Bởi làm quen rèn luyện tư thuật toán cho học sinh bắt đầu học lập trình yêu cầu thiết yếu Để thực điều này, từ cịn học lớp 10 đặc biệt chương trình lớp 11, GV nên ý rèn luyện cho em vấn đề sau: - Từ ý tưởng đến hình thành tư thuật toán Thuật toán từ đơn giản đến phức tạp, Từ toán quen thuộc đến phát triển tốn khó Từ thuật tốn phải kết hợp với cấu trúc liệu hợp lý Và cuối thiết kế thuật tốn hồn chỉnh tối ưu nhất, dễ lập trình - Khi em thành thạo GV nâng cao u cầu tìm thuật tốn khác so sánh lựa chọn thuật toán phù hợp 2.3.2 Phong cách lập trình tốt Để có phong cách lập trình tốt ngồi việc tn theo quy chuẩn, cần phải tuân theo quy ước Cơ sở cho việc cài đặt chương trình hiệu là: Cách trình bày rõ ràng, sáng sủa bật cấu trúc logic chương trình Một phần nhỏ lập trình để máy tính đọc Phần lớn viết mã lệnh cho chương trình chạy theo chức để người dễ đọc, dễ hiểu Lợi ích việc trình bày cẩn thận: • Thể tốt cấu trúc lôgic mã lệnh • Cải thiện khả đọc • Bảo đảm xác thay đổi • Các lợi ích hệ lợi ích Chương trình mắc lỗi dễ sửa chữa mắc lỗi Tiết kiệm thời gian sửa lỗi Tăng khả làm việc theo nhóm, Quy ước cách đặt tên cho định danh Thông thường tùy theo ngôn ngữ môi trường lập trình, người viết chương trình chọn cho phong cách quán việc đặt tên cho định danh Tuy nhiên, nên đặt cho thuận tiện, dễ đọc, dễ nhớ dễ làm việc, có số quy tắc cần quan tâm đặt tên sau: • Đặt tên cho biến Tên biến nên thể ý nghĩa: thông thường biến nguyên i, j, k dùng làm biến lặp; x, y dùng làm biến lưu tọa độ… Còn biến lưu trữ khác nên đặt tên gợi nhớ: Biến đếm số lần dùng “Count” hay “Sluong”; biến trọng lượng “weight” hay “Tluong”… Nếu đặt ngắn “c” cho biến đếm hay “w” cho biến trọng lượng sau nhìn vào chương trình khó hiểu dễ nhầm lẫn, không nên dài dòng “Demsoluong” hay “Tinhtrongluong” dùng rườm rà, tốn thời gian viết • Đặt tên hằng: Tất ký tự viết hoa Ví dụ: Const MAXN = 10000; INPUT = ‘Baitap.inp’; • Đặt tên cho chương trình con: Tên chương trình thường bắt đầu chữ hoa Vì chương trình thường thực chức nên tên hay bắt đầu động từ Ví dụ: TimMax( ); GetNum( ); 2.3.3 Phong cách viết mã nguồn • Quy tắc trình bày tổng thể chương trình: - Chương trình nên tách thành nhiều modul, modul thực công việc, độc lập với tốt (chương trình con) Điều giúp cho chương trình dễ cải tiến đọc chương trình ta dễ hình dung vấn đề thực - GV phân tích cho hs thấy rõ lợi ích chương trình cách truyền tham số cho chương trình Các chương trình viết trước chuyển thành chương trình con, liệu nhập từ bàn phím thay cách truyền tham số - Các modul viết đúng, chương trình ghép sử dụng vào chương trình đúng, điều dễ dàng giúp ta kiểm sốt lỗi chương trình chương trình lớn, phức tạp - Nên sử dụng tham số truyền thơng tin cho chương trình Tránh sử dụng biến toàn cục để truyền thơng tin chương trình làm tính độc lập chương trình khó khăn kiểm sốt giá trị chúng chương trình thi hành - Cách trình bày chương trình quán dễ đọc, dễ hiểu - Chương trình nên giữ tính đơn giản, rõ ràng - Chương trình nên thực dịng chảy từ xuống: + Sau đến khai báo đơn vị, khai báo hằng, khai báo kiểu, khai báo biến tồn cục, khai báo chương trình • Quy tắc trình bày dịng lệnh - Mỗi câu lênh nên đặt riêng dòng để chương trình dễ đọc dễ quan sát cách thực hiên dùng watch để tìm lỗi - Sử dụng tab để canh lề chương trình (các lệnh ngang cấp phải tab vào nhau): Điều giúp chương trình rõ ràng dễ quản lý Ví dụ: Không nên Nên For i := to n Begin Action1; Action2; End; For i := to n Begin Action1; Action2; End; Nên viết Begin end; viết lệnh vào để tránh thiếu end; Sử dụng khoảng trắng chương trinh dễ nhìn hơn: Ví dụ: Khó đọc Dễ đọc If (a y then d:=True else d:= False; d := x>y; - Tránh lãng phí nhớ: Bằng cách sử dụng kiểu liệu nhỏ đủ để lưu trữ Việc sử dụng tài nguyên nhiều mức đòi hỏi chương trình thói quen xấu mà người lập trình hay mắc phải Hơn tốc độ chương trình nhanh sử dụng kiểu liệu nhỏ - Khai báo biến cục phạm vi gần nhất: Khai báo biến cục gần với điểm sử dụng Việc khai báo phạm vi rộng làm lãng phí khó kiểm sốt - Giảm số lượng tham số truyền vào hàm: Việc sử dụng hàm có nhiều tham số truyền vào làm ảnh hưởng đến ngăn xếp dành cho việc gọi hàm Nhất trường hợp tham số kiểu liệu có cấu trúc Sử dụng trỏ hay tham chiếu trường hợp để đơn giản hóa 2.3.5 Kiểm nghiệm chương trình với test đầy đủ - Test đầu bài, Các test đơn giản Test trường hợp đặc biệt Test lớn Xem lại đề để khơng bỏ sót trường hợp 2.3.6 Các dạng tốn bồi dưỡng mơn tin cho HSG THPT Nhóm tốn lập trình thường phân loại theo thuật toán, theo cấu trúc liệu dùng để giải Ở bậc THPT dạng toán phong phú nhiều mở rộng CTDL song song với việc mở rộng thuật toán Ở bậc trung THPT tốn thường sử dụng vịng lặp, sử dụng kiến thức toán UCLN , BCNN, số nguyên tố, chia hết số nguyên, …Các dạng tốn thường gặp là: • • • • Nhóm tốn số học: Nhóm tốn thao tác mảng chiều Nhóm tốn xử lý xâu Các toán khác Các toán số học 12 Để giải toán số học giáo viên cần cho học sình ứng dụng nhuần nhuyễn kiến thức số học THPT chủ yếu dựa vào phép tốn DIV, MOD: • Thuật tốn tìm UCLN số ngun dương: Cho số nguyên dương m, n Tìm UCLN(m,n) Học sinh thường dùng thuật toán Thuật toán 1: Sử dụng phép trừ liên tục số nhau: + Nhập m, n + While mn If m>n then m:=m-n Else n:=n-m; +UCNN:=n; Thuật toán chạy chậm: Ví dụ với m=1000000000, n=1 phải chạy tỷ phép toán Thuật toán 2: (Đối với HSG nên hướng em sử dụng thuật toán này) + Nhập m, n + While n Begin r:= m mod n m:=n; n:=r; End; +UCLN:=m Với thuật toán m=1000000000, n=1, vài phép toán để tính UCLN(m,n) Để tìm UCLN dãy a1, a2,…,an, cần lập hàm: FUNCTION UCLN(a, b: longint): longint; Khi + d:=a1; + for i:=2 to n Begin b:=ai; d:=UCLN(d, b);End; • Thuật tốn tìm BCNN số: Ta có BCNN(m,n)= (m * n) div UCLN(m, n) Ở học sinh thường mắc sai lầm sau : Sai lầm : d :=UCLN(m, n) ; BCNN :=m*n div d ; Đúng phải : BCNN :=m * n (lưu tích m.n) d := UCLN(m, n) ; BCNN := BCNN div d Sai lầm : BCNN(m, n, k) = m*n*k div UCLN(m, n k) Để tìm BCNN dãy số nguyên dương a1, a2, …,an (n>=2) BCNN:=a1; d:=a1; For i:=2 to n n Begin b:=ai 13 BCNN:=BCNN*b; d:=UCLN(BCNN,b); BCNN:=BCNN div d ; End ; • Kiểm tra số nguyên tố Cho số nguyên P Hỏi P có phải số ngun tố khơng? Nhiều học sinh lập thuật toán đếm số ước P Nếu số ước P kết luận P số ngun tố Thuật tốn khơng sai chậm • • FUNCTION Ngto(P:Integer): Boolean; Var NT:Boolean; I:integer; Begin NT:=P>1; For i:=2 to Trunc(Sqrt(P)) If P mod I =0 then Begin NT:=False; Break End; Ngto:=NT; End; Đếm số chữ số số, tính tổng chữ sơ Bài tốn : Nhập số ngun n Số n có chữ sơ Tính tổng chữ số n +TongCS:=0; SoCS:=0; + While n0 Begin Inc(SoCS); TongCS:=TongCS+ n mod 10; n := n div 10 ; End ; Biểu diễn số tự nhiên n từ hệ đếm thập phân qua hệ đếm khác ngược lại Bài toán : Cho n số nguyên dương biểu diễn hệ thập phân Hãy biểu diễn n hệ đếm q – phân ( 1

Ngày đăng: 16/07/2019, 09:45

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan