SỞ GIÁO DỤC & ĐÀO TẠO THANH HÓATRƯỜNG THPT THƯỜNG XUÂN 2 SÁNG KIẾN KINH NGHIỆM XÂY DỰNG HỆ THỐNG BÀI TẬP PHẦN CHƯƠNG TRÌNH CON CHƯƠNG TRÌNH TIN HỌC 11 NHẰM TÍCH CỰC HÓA HOẠT ĐỘNG CỦA HỌC
Trang 1SỞ GIÁO DỤC & ĐÀO TẠO THANH HÓA
TRƯỜNG THPT THƯỜNG XUÂN 2
SÁNG KIẾN KINH NGHIỆM
XÂY DỰNG HỆ THỐNG BÀI TẬP PHẦN CHƯƠNG TRÌNH CON CHƯƠNG TRÌNH TIN HỌC 11 NHẰM TÍCH CỰC HÓA HOẠT ĐỘNG CỦA HỌC SINH TẠI TRƯỜNG
THPT THƯỜNG XUÂN 2
Người thực hiện: Lê Thị Hoa Chức vụ: Giáo viên
SKKN thuộc môn: Tin học
THANH HÓA NĂM 2018
Trang 3MỤC LỤC
1 Mở đầu 1
1.1 Lí do chọn đề tài 1
1.2 Mục đích nghiên cứu 2
1.3 Đối tượng nghiên cứu 2
1.4 Phương pháp nghiên cứu 2
2 Nội dung sáng kiến kinh nghiệm 2
2.1 Cơ sở lí luận của sáng kiến 2
2.2 Thực trạng vấn đề trước khi áp dụng sáng kiến 2
2.3 Các giải pháp đã sử dụng để giải quyết vấn đề 3
2.4 Hiệu quả của sáng kiến 15
3 Kết luận, kiến nghị 15
Trang 41 Mở đầu
1.1 Lí do chọn đề tài
Xuất phát từ thực tiễn giảng dạy tin học tại trường THPT Thường Xuân 2 tôi thấy rằng, để đạt hiệu quả cao trong mỗi tiết học cần có cách thiết kế bài giảng cho phù hợp với mục tiêu cần đạt được của từng đơn vị kiến thức; phương pháp, phương tiện dạy học phải phù hợp với từng đối tượng học sinh Để qua tiết học học sinh thích thú với kiến thức mới, qua đó hiểu được kiến thức đã học trên lớp, đồng thời học sinh thấy được tầm quan trọng của bài học từ đó học sinh biết vận dụng để giải quyết các vấn đề thực tiễn
Theo kinh nghiệm dạy học bộ môn Tin Học, ngoài việc giúp học sinh lĩnh hội những kiến thức cơ bản người giáo viên còn phải biết kích thích tính tích cực,
sự sáng tạo say mê học hỏi của học sinh, giúp học sinh là người chủ động chiếm lĩnh tri thức trong việc học tập của các em Đồng thời để giúp các em nâng cao khả năng làm việc nhóm, kỹ năng thuyết trình trước tập thể để thích ứng với sự phát triển của học sinh trong xã hội mới và tiếp cận với các công nghệ tiên tiến trong xã hội, trên thế giới Bên cạnh đó, trong các kỹ thuật dạy học mới, vai trò của người thầy có sự thay đổi là: “hướng dẫn học sinh biết tự mình tìm ra hướng giải quyết những vấn đề nảy sinh trong quá trình học tập, biết cách làm việc độc lập, làm việc tập thể Giáo viên là người định hướng, là người cố vấn giúp học sinh tự đánh giá, cũng như giúp học sinh luôn đi đúng con đường tìm hiểu, lĩnh hội kiến thức …”[5] Nhận thấy đa số học sinh là người dân tộc thiểu số với xuất phát điểm đầu vào thấp
và đặc thù của bộ môn Tin học, học sinh phải được thực hành nhiều trên máy tính, trong khi cơ sở vật chất nhà trường chỉ có hơn 40 máy chưa thể đáp ứng nhu cầu cần thực hành của hơn 800 học sinh Điều đó dẫn đến việc dạy – học tin học còn nhiều hạn chế Đặc biệt với chương trình tin học lớp 11 yêu cầu học sinh phải có tư duy về toán học tốt, hiểu rõ bản chất của ngôn ngữ lập trình nhưng đại đa số học sinh khả năng tư duy chưa cao, đa số các em chỉ học máy móc, học vẹt nên việc tự lập trình giải một bài toán đối với học sinh là rất khó khăn Mặt khác kiến thức về lập trình cũng khá mới mẻ với học sinh, môn Tin học là môn học các em mới được làm quen bắt đầu vào THPT, học sinh và phụ huynh chỉ xem tin học là môn học phụ nên chưa có ý thức đầu tư thời gian cho bộ môn này Để dạy học với mục tiêu
dạy học theo hướng: “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 của học sinh, phù hợp với đặc điểm của từng lớp học, môn học; bồi dưỡng phương pháp tự học, rèn luyện kỹ năng 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”[1] Với những lí do trên tôi quyết định chọn đề tài: Xây dựng hệ thống bài tập phần chương trình con chương trình tin học 11 nhằm tích tích cực hóa hoạt động của học sinh tại trường THPT Thường Xuân 2 để phục vụ cho quá
trình dạy và học có hiệu quả tốt hơn
Trang 51.2 Mục đích nghiên cứu
Nâng cao chất lượng dạy học phần chương trình con (chương trình tin học 11) từ đó góp phần nâng cao hiệu quả dạy học Tin học 11 tại Trường THPT Thường Xuân 2
1.3 Đối tượng nghiên cứu
- Học sinh lớp 11 trường THPT Thường Xuân 2 năm học 2017-2018
- Bài tập phần chương trình con – Tin học 11
1.4 Phương pháp nghiên cứu
- Phương pháp phân tích, xây dựng cơ sở lý thuyết
- Thu thập thông tin trên Internet, kinh nghiệm và thực tế giảng dạy
- Phương pháp thông kê toán học phân tích kết quả
2 Nội dung sáng kiến kinh nghiệm
2.1 Cơ sở lí luận của sáng kiến
Để nâng cao chất lượng dạy học thì người giáo viên cần phải tích cực hóa hoạt động dạy học tức là lấy người học làm trung tâm, làm đối tượng chủ động phát hiện
và lĩnh hội tri thức Tích cực hóa hoạt động dạy học nhằm làm cho những mục tiêu
sư phạm biến thành những mục tiêu của cá nhân học sinh, chứ không phải chỉ là sự vào bài, đặt vấn đề một cách hình thức
Quá trình dạy học là một quá trình điều khiển hoạt động và giao lưu của học sinh nhằm đạt được những mục tiêu dạy học Đây là quá trình điều khiển con người chứ không phải điều khiển máy móc, vì vậy cần phải quan tâm đến những yếu tố tâm lý, chẳng hạn những học sinh có sẵn sàng, có hứng thú thực hiện hoạt động này, hoạt động khác hay không
Mỗi nội dung dạy học đều liên hệ với những hoạt động nhất định mà ta có thể khai thác để tổ chức trong quá trình dạy học có hiệu quả Những hoạt động như vậy được coi là tương thích với những nội dung cho trước Xuất phát từ một nội dung dạy học, ta cần phát hiện những hoạt động tương thích với nội dung đó rồi căn cứ vào mục tiêu dạy học mà lựa chọn để luyện tập cho học sinh một số hoạt động trong những hoạt động thành phần cũng giúp cho ta tổ chức cho học sinh tiến hành những hoạt động với độ phức tạp vừa sức học sinh
2.2 Thực trạng của vấn đề
Qua nhiều năm dạy học tại trường THPT THƯỜNG XUÂN 2 Tôi thấy rằng, dạy lập trình với đối tượng học sinh tại trường vừa yếu về kỹ năng tư duy vừa hạn chế về ngôn ngữ lập trình Để qua mỗi phần học, tiết học học sinh thích thú với kiến thức mới, qua đó hiểu được kiến thức đã học trên lớp, đồng thời học sinh thấy được tầm quan trọng của vấn đề và việc ứng dụng của kiến thức trước hết để đáp ứng những yêu cầu của môn học, sau đó là việc ứng dụng của nó vào các công việc thực tiễn trong đời sống xã hội, vấn đề dạy học cho học sinh về chương trình con là một trong những vấn đề chiếm vai trò quan trọng trong chương trình sách giáo khoa tin học 11 Bởi vì, sử dụng chương trình con để hợp lý hóa, tiết kiệm công sức
Trang 6lập trình Đồng thời, chương trình con có thể giúp cho người lập trình dễ sửa chữa,
dễ kiểm tra và phát hiện lỗi, hỗ trợ xây dựng các chương trình lớn Nhằm giúp các
em phát triển tư duy về lập trình Vấn đề đặt ra là: Làm thế nào để học sinh hiểu và giải quyết được các bài tập lập trình sử dụng chương trình con? Đó chính là vấn đề
mà bản người tôi quan tâm
Nhận thấy với đặc thù học sinh khu vực miền núi còn thiếu thốn nhiều về cơ
sở vật chất phục vụ cho quá trình dạy và học Điều đó dẫn đến khả năng lập trình của đa số học sinh còn đang hạn chế, khả năng tiếp thu, lĩnh hội kiến thức về lập trình trong các giờ bài tập hoặc thực hành chưa đạt hiểu quả cao chỉ khoảng 80% học sinh biết xác định bài toán, 50% học sinh xây dựng được ý tưởng để giải quyết bài toán, 20% học sinh có thể viết được một chương trình hoàn chỉnh, biết chạy và hiệu chỉnh chương trình Chính vì vậy, việc tích cực hóa hoạt động của học sinh trong việc dạy học chương trình con là một công việc quan trọng, đòi hỏi mỗi giáo viên cần phải nỗ lực tìm tòi, sáng tạo giúp cho học sinh nhìn nhận vấn đề một cách tích cực hơn, sáng tạo hơn và nhất là giúp cho các em có thể yêu thích nhiều hơn nữa ngôn ngữ lập trình Pascal
2.3 Các giải pháp sử dụng để giải quyết vấn đề
Để học sinh củng cố lại phần kiến thức về chương trình con, khi nghiên cứu
hệ thống kiến thức và giải quyết triệt để mọi vấn đề khi lập trình các bài tập về chương trình con và lập trình có cấu trúc Giáo viên yêu cầu học sinh nghiên cứu sách giáo khoa các vấn đề lý thuyết đặc biệt các kiến thức về hàm, thủ tục và một
số các khái niệm liên quan biến toàn cục, biến cục bộ, tham số hình thức, tham số thực sự Dựa trên năng lực của từng đối tượng học sinh để lựa chọn các bài tập phù hợp với trình độ nhận thức của các em Để hoạt động dạy học theo hướng thầy chỉ
là người hướng dẫn để trò tự giác tìm kiếm và lĩnh hội kiến thức
Trong quá trình dạy học để giúp học sinh trở thành đối tượng chính, chủ động, sáng tạo tự phát hiện và lĩnh hội kiến thức Trong khuôn khổ của đề tài này, tôi xin được chia sẻ hệ thống các bài tập mà tôi đã xây dựng và áp dụng tại trường THPT Thường Xuân 2 trong quá trình dạy học phần chương trình con và được nhóm chuyên môn đánh giá là có hiệu quả trong việc dạy học phần chương trình con – chương trình tin học 11 Với kinh nghiệm giảng dạy tại trường tôi đã thực hiện sắp xếp lại bài tập theo hệ thống từng vấn đề sau Cụ thể:
1) Tránh được sự lặp đi lặp lại một dãy lệnh
Xét bài toán : “Viết chương trình cho máy tính chu vi, diện tích và đường chéo của ba hình chữ nhật theo hai kích thước của mỗi hình Trong đó:
- Hình thứ nhất có hai kích thước là a1, a2
- Hình thứ hai có hai kích thước là b1, b2
- Hình thứ ba có hai kích thước là a1+b1 và a2*b2”.
Var a1, b1, a2, b2, c1, c2, c3, d1, d2, d3, m1, m2, m3 : Real;
Begin
Trang 7Writeln('Nhap hai canh cua hinh chu nhat thu nhat:');
Write('a1 = '); Readln(a1);
Write('b1 = '); Readln(b1);
Writeln('Nhap hai canh cua hinh chu nhat thu hai:');
Write('a2 = '); Readln(a2);
Write('b2 = '); Readln(b2);
c1 := 2 * (a1 + b1);
c2 := 2 * (a2 + b2);
c3 := 2 * ((a1 + b1) + (a2 * b2));
d1 := a1 * b1;
d2 := a2 * b2;
d3 := (a1 + b1) * (a2 * b2);
m1 := sqrt(a1 * a1 + b1 * b1);
m2 := sqrt(a2 * a2 + b2 * b2);
m3 := sqrt(sqr(a1 + b1) + sqr(a2 * b2));
Writeln('Hinh chu nhat thu nhat:');
Writeln('Chu vi bang : ',c1:0:2);
Writeln('Dien tich bang : ',d1:0:2);
Writeln('Duong cheo bang: ',m1:0:2);
Writeln('Hinh chu nhat thu hai:');
Writeln('Chu vi bang : ',c2:0:2);
Writeln('Dien tich bang : ',d2:0:2);
Writeln('Duong cheo bang: ',m2:0:2);
Writeln('Hinh chu nhat thu ba:');
Writeln('Chu vi bang : ',c3:0:2);
Writeln('Dien tich bang : ',d3:0:2);
Writeln('Duong cheo bang: ',m3:0:2);
Readln
End.
Chương trình trên để thực hiện được yêu cầu của đề bài, chúng ta phải viết đi viết lại ba dòng liên tiếp tính chu vi, diện tích và đường chéo của từng hình chữ nhật Giả sử nếu phải tính đến n hình chữ nhật thì chương trình sẽ quá cồng kềnh và phức tạp Trong bài toán trên ta còn chưa có phần kiểm tra điều kiện nhập vào của mỗi hình Nếu có thêm điều kiện này, chắc chắn chương trình còn dài nữa Vấn đề đặt ra là: làm thế nào có thể rút gọn chương trình và tránh được lặp đi lặp lại một dãy lệnh? Ở đây, chúng ta có thể hướng dẫn cho học sinh sử dụng chương trình con
để khắc phục sự hạn chế đó Thay vì phải viết nhiều lần lệnh nhập, tính đi tính lại cho từng hình ta có thể viết 2 thủ tục:
1 Thủ tục nhập hai cạnh của hình chữ nhật
2 Thủ tục Tính ba giá trị cho mỗi hình
Trang 8Var a1, b1, a2, b2: Real;
Procedure Nhap(Var x, y: Real; i: Byte);
Begin
Writeln('Nhap hai kich thuoc cua hinh chu nhat thu ',i,':');
Repeat
Write('Canh thu nhat: '); Readln(x);
Write('Canh thu hai : '); Readln(y);
If (x <= 0) Or (y <= 0) Then Writeln('Nhap lai!');
Until (x > 0) And (y > 0);
End;
Procedure Tinh(a, b: Real; k: Byte);
Begin
Writeln('Hinh chu nhat thu ',k,':');
Writeln('Chu vi bang : ',2 * (a + b):0:2);
Writeln('Dien tich bang : ',a * b:0:2);
Writeln('Duong cheo bang: ',sqrt(a * a + b * b):0:2);
End;
Begin
Nhap(a1, b1, 1); Nhap(a2, b2, 2);
Tinh(a1, b1, 1); Tinh(a2, b2, 2); Tinh(a1 + b1, a2 * b2, 3);
Readln
End.
2) Đưa ra các số của dãy thỏa mãn một điều kiện cho trước
Xét bài toán sau: “Nhập vào 1 dãy n số nguyên lớn hơn 1 Viết ra màn hình tất
cả các số của dãy thỏa mãn điều kiện là số nguyên tố”[4].
Var A: Array[1 100] Of Integer;
k,n: Integer;
Function NgTo(a: Integer):Boolean;
Var u: Integer;
Begin
NgTo:=False;
For u := 2 To Trunc(sqrt(a)) Do
If a mod u = 0 Then Exit;
NgTo := a > 1;
End;
Begin
Write('Nhap so phan tu: '); Readln(n);
Writeln('Nhap cac phan tu cua day Chu y: A[k] >= 2');
For k := 1 to n do Begin
Repeat
Trang 9Write('A[',k,'] = ');Readln(A[k]);
If A[k] < 2 Then Writeln('Ban can nhap A[k] > 2 Vui long nhap lai!');
Until A[k] >= 2;
End;s
Writeln('Cac so nguyen to cua day so tren la:');
For k := 1 to n do
If NgTo(A[k]) Then Write(A[k]:6);
Readln
End.
Từ chương trình trên chúng ta có thể giúp cho học sinh thấy được việc sử dụng chương trình con có thể hợp lý hóa, tiết kiệm công sức lập trình Đồng thời, chương trình con giúp cho người lập trình dễ sửa chữa, dễ kiểm tra Cụ thể là với bài toán
trên chúng ta có thể sửa chữa thành bài toán: “Viết ra màn hình tất cả các số của dãy thỏa mãn điều kiện là hợp số” chỉ bằng hai câu lệnh:
- Dòng lệnh Writeln(‘Cac so nguyen to cua day so tren la:’); Sửa thành: Writeln(‘Cac so la hop so cua day so tren la:’);
- Dòng lệnh : If NgTo(A[k]) Then Write(A[k]:6) ta thay bằng dòng lệnh If Not
NgTo(A[k]) Then Write(A[k]:6).
Dự trên cấu trúc chương trình đã có, giáo viên có thể giao cho học sinh các dạng bài toán sau:
1 “Nhập vào 1 dãy n số nguyên lớn hơn 1 Viết ra màn hình tất cả các số của dãy thỏa mãn điều kiện là số chẵn”
2 “Nhập vào 1 dãy n số nguyên lớn hơn 1 Viết ra màn hình tất cả các số của dãy thỏa mãn điều kiện là số lẻ”.
3 “Nhập vào 1 dãy n số nguyên lớn hơn 1 Viết ra màn hình tất cả các số của dãy thỏa mãn điều kiện là số hoàn hảo” ( Số hoàn hảo là một số nguyên dương mà tổng các ước nguyên dương của nó bằng chính nó)
4 “Nhập vào 1 dãy n số nguyên lớn hơn 1 Viết ra màn hình tất cả các số của dãy thỏa mãn điều kiện là số chính phương”.
3) Phân biệt sự khác nhau giữa tham biến và tham trị
Có những khái niệm mà học sinh đã biết ở từng bài riêng lẻ chưa thể đưa ra ngay những nhận xét, những kết luận chính xác liên quan tới khái niệm đó; tới một thời điểm nào đó có đủ điều kiện thì chúng ta có thể gợi lại vấn đề và giúp học sinh chính xác hóa khái niệm đó Chẳng hạn, ta cần chính xác hóa khái niệm sử dụng tham biến của chương trình con Sau khi học cách sử dụng tham trị, chúng ta có thể yêu cầu học sinh làm bài tập sau:
“Viết một thủ tục nhập vào số đo bán kính của 3 đường tròn Sau đó tính chu vi
và diện tích của mỗi đường tròn đó”.
Var r1, r2, r3: Real;
Procedure Nhap( r: Real; k:Byte);
Trang 10Begin
Repeat
Write('Nhap ban kinh cua duong tron thu ',k,': ');
Readln(r);
If r <= 0 Then Writeln('Nhap lai!');
Until r > 0;
End;
Begin
Nhap(r1, 1); Nhap(r2, 2); Nhap(r3, 3);
Writeln('Duong tron 1 Chu vi bang:',2*pi*r1:6:1,' Dien tich bang: ',pi * sqr(r1):6:1);
Writeln('Duong tron 2 Chu vi bang:',2*p * r2:6:1,' Dien tich bang:',pi * sqr(r2):6:1);
Writeln('Duong tron 3 Chu vi bang:',2*pi*r3:6:1,' Dien tich bang:',pi * sqr(r3):6:1)8;
Readln
End.
Chúng ta có thể yêu cầu học sinh chạy thử chương trình trên Học sinh sẽ phát hiện ra là kết quả chu vi và diện tích của cả ba đường tròn đều bằng 0 Vấn đề đặt ra là: Chương trình sai ở chỗ nào? Lúc này giáo viên có thể khẳng định sự phân biệt giữa tham biến và tham trị, các giá trị của tham biến được lưu giữ khi ra ngoài chương trình con, còn giá trị của tham trị chỉ lưu giữ khi thực hiện chương trình con, nếu ra khỏi chương trình con nó sẽ không còn lưu giữ giá trị đó Điều này sẽ giúp cho chúng ta chính xác hóa khái niệm tham biến và tham trị cho học sinh Chương trình trên cần sửa lại như sau:
Var r1, r2, r3: Real;
Procedure Nhap(Var r: Real; k:Byte);
Begin
Repeat
Write('Nhap ban kinh cua duong tron thu ',k,': ');
Readln(r);
If r <= 0 Then Writeln('Nhap lai!');
Until r > 0;
End;
Begin
Nhap(r1, 1); Nhap(r2, 2); Nhap(r3, 3);
Writeln('Duong tron 1 Chu vi bang:',2 * pi * r1:6:1,' Dien tich bang: ',pi * sqr(r1):6:1);
Writeln('Duong tron 2 Chu vi bang:',2 * pi * r2:6:1,' Dien tich bang:',pi * sqr(r2):6:1);