SKKN Một số biện pháp tăng cường năng lực lập trình Pascal cho học sinh trường THCS Lương Thế Vinh
Học sinh gặp phải rất nhiều khó khăn khi lập trình Pascal vì học sinh chưa chủ động rèn luyện cách trình bày thuật toán, các lập luận, những kiến thức được áp dụng trong quá trình lập trình nên dẫn đến thụ động, rập khuôn, thiếu tính sáng tạo. Do đó, học sinh mau quên những kĩ năng cơ bản ấy. Trong thực tế, theo chủ quan cá nhân tôi, tôi thấy điều cơ bản của việc dạy lập trình Pascallà tìm ra phương pháp dạy cho học sinh hiểu và tự giải những bài tập quen thuộc, cơ bản một cách rõ ràng, ngắn gọn, để từ đó học sinh liên tưởng, tìm tòi, vận dụng vào trong các bài tập liên quan hoặc cùng dạng. Vậy, làm thế nào để học sinh khắc sâu và vận dụng những kiến thức đã học để lập trình Pascal? Để trả lời câu hỏi này, tôi đã viết sáng kiến kinh nghiệm tìm hiểu “Một số biện pháp tăng cường năng lực lập trình Pascal cho học sinh trường THCS Lương Thế Vinh”, với mong muốn qua nội dung sáng kiến kinh nghiệm này, sẽ giúp các em tăng cường năng lực lập trình Pascal một cách dễ dàng nhất, hiệu quả nhất.
Hi vọng với những kinh nghiệm tích lũy của bản thân, với những ý kiến đóng góp của đồng nghiệp trên địa bàn huyện, của tổ chuyên môn, ban giám hiệu nhà trường, của cán bộ phòng giáo dục, … đề tài này sẽ giúp giáo viên giảng dạy bộ môn tin học trên địa bàn huyện có một cái nhìn tổng quát hơn, có những định hướng tốt hơn khi thực hiện nhiệm vụ mà ngành giao phó.
Tóm tắt nội dung tài liệu: SKKN Một số biện pháp tăng cường năng lực lập trình Pascal cho học sinh trường THCS Lương Thế Vinh

am giac la:', a+b+c); readln; end. So sánh hai câu lệnh while do và repeat until. Ví dụ minh họa hai vòng lặp while do và repeatuntil áp dụng viết chương trình tính tổng s=1+2+3++n. (n là một số nguyên được nhập từ bàn phím). Làm việc với dãy số .(var A:array[chỉ số đầu .. chỉ số cuối] of kiểu dữ liệu;). Nhập dữ liệu cho một mảng a gồm n phần tử For i:=1 to n do Begin Write(‘a[‘,I,’]=’); Readln(a[i]); End; Truy cập đến một phần tử của mảng a: a[chỉ số phần tử]; Bài tập minh họa cho phần dãy số: Viết chương trình nhập vào một mảng n số nguyên ( 6<n<50) In ra màn hình các số có trong mảng In ra màn hình tổng các số âm có trong mảng. In ra màn hình số lớn nhất của mảng. Chương trình. Var A:array[1..55] of integer; K,n,s,max:integer; Begin repeat Write(“nhap so phan tu cua mang’); Readln(n); Until (n6); For k:=1 to n do Begin Write(‘a[‘,k,’]=); Readln(a[k]); End; Writeln(‘----------- cau a ----------‘); Writeln(‘Cac so co trong day: ‘); For k:=1 to n do write(a[k], ‘ ‘); Writeln(‘ -----------cau b ------------‘); S:=0; For k:=1 to n do If (a[k] mod 2 0) then s:=s+a[k]; Writeln(‘Tong cac so am = ‘,s); Writeln(‘ --------- cau c ----------------‘); Max:=a[1]; For k:=2 to n do If (max <a[k]) then max:=a[k]; Writeln(‘So lon nhat cua day =’,max); Readln; End. Chú ý: Nếu đề bài yêu cầu nhập vào một dãy n số nguyên dương thì trong ta thêm repeat until như sau: For k:=1 to n do repeat Write(‘a[‘,k,’]=); Readln(a[k]); Until (a[k]>0); Phân dạng bài tập của học sinh theo chủ đề, giúp học sinh dễ dàng tiếp thu kiến thức và đào sâu kĩ năng giải quyết vấn đề. DẠNG : Vận dụng các phép toán +, -, *, /, Div, Mod để giải các bài toán cơ bản. Bài toán 1:Viết chương trình tính Bài toán 2: Nhập vào 1 số tự nhiên có 4 chữ số. In ra màn hình tổng các chữ số có trong dãy Chú ý: Các bài toán này học sinh tự làm, giáo viên đánh giá và hướng dẫn thêm (nếu học sinh có lỗi sai). Bài Toán 3: Đổi 11890 giây ra ?giờ ?phút ?giây? Chương trình: Begin Writeln(‘11890giay = ’,11890 div 3600,’ gio’,(11890 mod 3600) div 60, ‘phut’, (11890 mod 3600) mod 60, ‘giay’); end. Chú ý: Giáo viên yêu cầu học sinh gán số 11890 cho biến a nào đó để việc lập trình đơn giản hơn. Dạng bài tập liên quan đến sử dụng biến cơ bản (Giúp học sinh làm quen với cách khai báo và sử dụng biến trong chương trình). Bài toán . Viết chương trình tính diện tích hình vuông với độ dài cạnh được nhập từ bàn phím. Chương trình Var a,s:real; Begin repeat Write(‘Nhap do dai canh hinh vuong = ‘); Readln(a); Until (a>0); S:=a*a; Writeln(‘Dien tích hinh vuong= ‘,s:10:2); Readln;End. Dạng bài tập sử dụng câu lệnh if then Giáo viên yêu cầu học sinh làm một số dạng toán khác về câu lệnh điều kiện If then else như nhập vào một số tự nhiên, kiểm tra xem số vừa nhập có phải là bội của 91 hay không? (a mod 91 =0; a la bội của 91), a có phải là ước của 91 hay không? (91 mod a =0; a là ước của 91); Nhập vào hai số tự nhiên, kiểm tra xem số này có phải là bội của số kia hay không? Hay bài toán Nhập vào độ dài 3 cạnh một giác, kiểm tra xem ba có phải là ba cạnh của một tam giác hay không? Nếu phải thì kiểm tra xem tam giác đó có phải là tam giác vuông, tam giác cân, tam giác đều hay không? (Đề bài chưa yêu cầu kiểm tra dữ liệu nhập vào, xem như độ dài nhập vào luôn đúng). Gv cho học sinh tích đề, rồi tìm ra thuật toán của chương trình Dựa vào bất đẳng thức trong tam giác: “trong một tam giác tổng hai cạnh bất kì luôn lớn hơn độ dài cạnh còn lại” để kiểm tra ba cạnh vừa nhập có phải là 3 cạnh của một tam giác hay không? (a> b+c) and (b>a+c) and (c>b+a). Kiểm tra tam giác đều bằng cách xem 3 cạnh có bằng nhau hết hay không? (a=b=c; “(a=b) and (b=c) and (a=c)”). Nếu không bằng nhau thì xuống kiểm tra tam giác cân? Kiểm tra xem tam giác cân bằng cách xem có hai cạnh nà bằng nhau hay không? (a=b) or (a=c) or (b=c). Nếu không phải là tam giác cân thì xuống kiểm tra tam giác vuông? Kiểm tra tam giác vuông (dựa vào định lí: Pitago): (a*a=b*b+c*c) or (b*b=a*a+c*c) or (c*c=a*a+b*b). dạng bài này sử dụng nhiều lệnh if then lồng nhau. Dạng bài tập sử dụng câu lệnh lặp for to.. do.. Bài toán : Viết chương trình tính tổng s = 52 + 62 + ... + 192 (n được nhập từ bàn phím). Nhận xét. Trong biểu thức tính tổng trên, số hạng thứ i của tổng có thể được tính theo công thức S(i) = i*i (i=5,6,...,19). Chương trình được viết như sau: Var S,i:integer; Begin S:=0; For i:=5 to 19 do s:=s +i*i; Writeln(‘Tong =’,s); Readln;End. Một số bài tập khác, tuỳ theo đối tượng học sinh của mình mà giáo viên yêu cầu học sinh làm cho phù hợp. S=1+2-3+4-5+-n (n là số lẻ ; n>=3). S = n! = 1*2*...*n {n giai thừa} S= 1 + x + x2/2! + x3/3! + ... + xn/n! Chú ý: Giáo viên cho học sinh về nhà làm những bài tập trên, có chỗ nào chưa hiểu thì giáo viên hướng dẫn sau. Dạng bài tập sử dụng câu lệnh while do Bài toán 1: Viết chương trình tính tổng ( yêu cầu không sử dụng câu lệnh lặp for to do..). S = 12 + 13 + + 59 Cách 1. Dùng lệnh while do Var S,i: integer; begin s:=0; i:=12; while (i<=59) do begin s:=s+i; i:=i+1; end; writeln(‘Tong =’, s); readln;end. Cách 2. Dùng lệnh repeat until Var S,i:integer; begin s:=0; i:=12; repeat s:=s+i; i:=i+1; until (i>59); write(‘Tong =’,s); readln;end. Bài toán 2: Viết tìm n bé nhất sao cho tổng s>4 Nhận xét: - Trong biểu thức trên, số hạng thứ i của tổng có thể tính được theo công thức S(i) = 1/ i với (i=1,2,...,n). - Điều kiện để dừng vòng lặp là tổng S phải lớn hơn 4 Var i : Integer; S:Real; Begin S:=0; i:=0; While (S < =4) do Begin i := i + 1; S := S + 1/i ; End; Writeln( ' n be nhat =’,i); Readln;End. Dạng bài tập về mảng Nhập xuất mảng, tính toán với các phần tử của mảng, sắp xếp mảng, đếm các phần tử của mảng, tìm kiếm phần tử trong mảng, số chính phương và số nguyên tố trong mảng, , ghép mảng. Bài toán : Viết chương trình nhập vào một dãy số nguyên gồm n phần tử. Sắp xếp mảng theo thứ tự tăng dần In ra màn hình các số chính phương có trong mảng. In ra màn hình các số nguyên tố có trong mảng. (Giáo viên chú ý cho học sinh, Bài này nếu dùng chương trình con thì việc giải quyết bài toán sẽ gọn hơn; tuy nhiên cho đến thời điểm hiện tại thì ta sẽ giải quyết bài toán bằng những kiến thức cơ sở đã học; Ở những tiết ôn luyện về sau ta sẽ sử dụng chương trình con để làm). Chương trình được viết như sau: Var a:array[1..100] of INT64; n,i,j,kt:integer; begin write(‘nhap so phan tu cua mang n =’);readln(n); for i:=1 to n do begin write(‘a[‘i,’]=’); readln(a[i]); end; writeln(‘------------cau a ------------------‘); for i:=1 to (n-1) do for j:=i+1 to n do If (a[i]>a[j]) then Begin Tam:=a[i]; A[i]:=a[j]; A[j]:=tam; End; Writeln(‘Day so duoc sap xep theo thu tu tang dan: ‘); For i:=1 to n do write(a[i],’ ‘); Writeln; Writeln(‘ --------- cau b -----------------‘); Writeln(‘Cac so nguyen to co trong day: ‘); For i:=1 to n do Begin Kt:=0; For j:=2 to trunc(sqrt(a[i]) ) do If (a[i] mod j = 0) then kt:=1; If (kt =0) then write(a[i],’ ‘); End; Writeln; Writeln(‘-----------------cau c -------------------‘); Writeln(‘Cac so chinh phuong co trong day: ‘); For i:=1 to n do For j:=1 to (trunc(sqrt(a[i]) +1) do If (j*j = a[i]) then write(a[i], ‘ ‘); Readln; End. Tuỳ theo đối tượng học sinh giáo viên cho thêm một số bài toán tựơng tự và một số dạng toán về mảng nữa. Ví dụ như: Cho một mảng số nguyên n phần tử (n<30). Tìm dãy con m phần tử(m<n) sao cho dãy con này có tổng lớn nhất. Giáo viên hướng dẫn sơ ý tưởng thuật toán: K:=1; {Vị trí phần tử đầu tiên của dãy con} {Giả sử m phần tử đầu tiên của mảng A là dãy con có tổng lớn nhất} Max :=0; for i:=1 to m do max:=max+a[i]; {Tìm các dãy con khác} For i:=2 to n-m+1 do Begin {Tính tổng của dãy con thứ i} S:=0; for j:=i to i+m-1 dó:=s+a[j]; If s>max then {Nếu dãy con tìm được có tổng lớn hơn dãy con cho trước} begin max:=s;{Thay tổng mới};k:=i; {Thay vị trí đầu tiên của dãy con mới} end; end; Writeln(‘Day con co tong lon nhat la: ‘); for i:=k to k+m-1 do write(A[i]:5); readln; end. ĐIỀU KIỆN THỰC HIỆN GIẢI PHÁP, BIỆN PHÁP Các giải pháp nêu trên được thực hiện trực tiếp trong quá trình dạy – học của giáo viên – học sinh. Trên cơ sở tích lũy của giáo viên và sự chuẩn bị chu đáo cho nội dung các bài dạy thì hiệu quả đề ra sẽ khả quan hơn. Giáo viên xây dựng kế hoạch kèm theo những giải pháp cụ thể. Giáo viên vận dụng linh hoạt các phương pháp trong từng tiết dạy cụ thể. Giáo viên giáo dục đạo đức, ý thức học cho học sinh, động viên, khích lệ các em học tâp. Giáo viên cần xác định rõ mục tiêu của từng tiết học, tiết dạy bồi dưỡng. MỐI QUAN HỆ GIỮA CÁC GIẢI PHÁP, BIỆN PHÁP Các giải pháp này đan xen, tương tác với nhau, tạo nên những nghệ thuật dạy học riêng, đem lại hiệu quả riêng cho mỗi giáo viên bởi hiệu quả đạt được của quá trình dạy học còn phụ thược vào nghệ thuật sư phạm của từng nhà giáo. Giữa giải pháp và biện pháp có mối quan hệ tương tác, mang tính biện chứng. KẾT QUẢ KHẢO NGHIỆM, GIÁ TRỊ KHOA HỌC CỦA VẤN ĐỀ NGHIÊN CỨU. Bản thân tôi đã trực tiếp vận dụng các giải pháp vào các lớp dạy của mình thì thấy sáng kiến kinh nghiệm đã mang lại hiệu quả một cách thiết thực. Qua khảo nghiệm kết quả ở trường THCS Lương Thế Vinh các biện pháp của sáng kiến kinh nghiệm chất lượng của bộ môn tăng dần qua các kì học, năm học. Học sinh học tập một cách tích cực, chủ động. Mỗi tiết học đều có những chuyển biến tích cực trong việc lĩnh hội kiến thức, kĩ năng thực thực đối với học sinh. Sáng kiến kinh nghiệm có ý nghĩa đóng góp về mặt lý luận. II.4. KẾT QUẢ THU ĐƯỢC QUA KHẢO NGHIỆM, GIÁ TRỊ KHOA HỌC CỦA VẤN ĐỀ NGHIÊN CỨU. Sáng kiến kinh nghiệm này bản thân tôi đã thử nghiệm trong nhiều năm, Qua các ý kiến đóng góp của các đồng nghiệp trên địa bàn huyện có thể nói chuyên đề cơ bản đã thành công đã và đang áp dụng, qua khảo sát chung ở trường THCS Lương Thế Vinh thì học sinh học tập tích cực hơn, Chất lựợng từng kì dần được nâng cao, học sinh tham gia kì thi học sinh giỏi cấp trường ngày càng nhiều hơn, có học sinh đạt giải trong kì thi học sinh giỏi cấp huyện * Kết quả chất lượng đại trà bộ môn Năm học Trước khi áp dụng SKKN Sau khi áp dụng SKKN 2012 – 2013 15% Giỏi 30% Khá 47% Trung bình 8% Yếu 20% Giỏi 35% Khá 42% Trung bình 3% Yếu 2016 – 2017 20% Giỏi 30% Khá 40% Trung bình 10% Yếu 30% Giỏi 40% Khá 26% Trung bình 4% Yếu * Kết quả chất lượng mũi nhọn Năm học 2012 – 2013 Học sinh giỏi cấp huyện : 1 giải nhì ; 1 giải khuyến khích Học sinh giỏi cấp tỉnh : 1 giải nhì Học sinh được vào đội tuyển học sinh giỏi quốc gia kì thi tin học trẻ không chuyên. Năm học 2017 – 2018 Học sinh giỏi cấp huyện: 2 giải ba; 1 giải khuyến khích 2 Học sinh tham dự cuộc thi khoa học kĩ thuật cấp huyện đạt giải khuyến khích. III.KẾT LUẬN CHUNG VÀ KIẾN NGHỊ: III.1. KẾT LUẬN Những giải pháp trong sáng kiến kinh nghiệm không mang tính tuyệt đối trong việc giảng dạy, sau khi triển khai đề tài bản thân tôi thấy chất lượng ngày một tăng lên. Sáng kiến kinh nghiệm mang lại những ý nghĩa nhất định: . Ý nghĩa thực tiễn: - Vận dụng, một số giải pháp trên trong đề tài, tôi đã mang đến những giờ học tin học thật sống động và trực quan cho học sinh, giúp các em tiếp thu bài được tốt hơn và nhớ lâu hơn những gì mà các em đã học được. Đồng thời, cách làm này còn giúp chúng tôi đỡ vất vả hơn trong việc quản lý và hướng dẫn học sinh học tập, tạo sự gần gũi giữa giáo viên và học sinh, giúp các em mạnh dạn phát huy hết khả năng của mình khi lập trình Pascal. Rèn luyện các em một ý thức học tập, và môi trường học tập hiện tại của các em thực sự mang lại kĩ cương, nề nếp. Phạm vi áp dụng: - Đề tài được áp dụng với đối tượng học sinh tại trường THCS Lương Thế Vinh. - Có thể nói rằng đề tài này được nhiều đồng nghiệp quan tâm, thúc đẩy chúng tôi cùng thực hiện và ngày càng bổ sung cho nhau hơn để mang lại hiệu quả tốt nhất trong từng tiết dạy của bộ môn tin học. Bài học kinh nghiệm: - Giáo viên linh hoạt khi giảng dạy đồng thời kích thích khả năng tư duy của học sinh có biểu hiện tốt để khuyến khích động viên tinh thần những học sinh khác, nhất là các học sinh yếu có thể học hỏi nhiều từ bạn mình. - Giáo viên phải thực sự tâm huyết với nghề, nhiệt tình với học sinh, làm việc với tinh thần đầy trách nhiệm. - Giáo viên cần đầu tư kĩ cho bài dạy để học sinh có thể quan sát và vận dụng kiến thức vừa tiếp thu thì các em sẽ khắc sâu hơn. - Xây dựng nhóm học sinh nòng cốt của lớp để giúp đỡ học sinh yếu kém. III.2. KIẾN NGHỊ Qua quá trình giảng dạy ở trường trung học cơ sở, qua thực tế tìm hiểu quá trình dạy và học của học sinh. Tôi xin mạnh dạn đề xuất ý kiến như sau: * Phòng Giáo dục – Đào tạo: Tổ chức các chuyên đề thảo luận trọng tâm về một nội dung, hay một vấn đề cụ thể của bộ môn Tin học 8 (Phần lập trình đơn giản) để thu hút đông đảo sự tham gia của toàn bộ giáo viên trong trường, trong cụm hoặc trong huyện (tùy vào phạm vi tổ chức). * Các nhà trường: Lãnh đạo các trường nên tăng thêm một vài hoạt động ngoại khóa toàn trường về tìm hiểu kiến thức phổ thông theo từng môn để học sinh có cơ hội giao lưu, học hỏi và khẳng định bản thân, giúp các em hăng say học tập và đam mê nghiên cứu để thể hiện mình hơn. * Giáo viên: Luôn chủ động tìm tòi, sáng tạo trong dạy học, tận dụng mọi cơ hội tiếp xúc với học sinh, lắng nghe học sinh nói để tìm ra những phương pháp dạy mới phù hợp với đối tượng học sinh từ đó nâng cao chất lượng đại trà của bộ môn. Đổi mới cách ra đề bài tập, giải bài tập, chú trọng vào phương pháp lấy học sinh làm trung tâm, gây hứng thú học tập cho học sinh học lập trình Pascal. Khuyến khích các em lập trình dưới nhiều góc độ thuật toán khác nhau, từ đó tìm ra cách giải mới, hay chứ không nên bắt buộc các em cứ phải giải theo cách của mình. Tự học để nâng cao trình độ chuyên môn, nghiệp vụ, sử dụng tốt công nghệ thông tin phục vụ cho các hoạt dộng dạy học để tạo hứng thú học tập cho học sinh. Tận tâm hơn với nghề dạy học, tôn trọng những kết quả đạt được của học sinh dù là nhỏ nhất CưMgar, Ngày 12 tháng 03 năm 2018 Người viết Đinh Thị Thiên Nga PHẦN MỤC LỤC TƯ LIỆU THAM KHẢO Sách giáo khoa, sách giáo viên tin học dành cho thcs quyển 3. Chuẩn kiến thức, kĩ năng của bộ giáo dục và đào tạo Một số trang web: www.tailieu.vn, www.moet.gov.vn, Sách lập trình pascal của Quách tuấn Ngọc ĐÁNH GIÁ CỦA HỘI ĐỒNG KHOA HỌC CÁC CẤP XÁC NHẬN CỦA HIỆU TRƯỞNG NHÀ TRƯỜNG
File đính kèm:
skkn_mot_so_bien_phap_tang_cuong_nang_luc_lap_trinh_pascal_c.doc