Tải bản đầy đủ (.doc) (20 trang)

SKKN 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ườn

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (116.17 KB, 20 trang )

SỞ 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

2


3


MỤ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

4


1. 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.

1


1.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
lậ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
2


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
Writeln('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:');
3


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.
Var 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);
4


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
Write('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
5


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);
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 *
6


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);
Writeln('Duong tron 3 Chu vi bang:',2 * pi * r3:6:1,' Dien tich bang:',pi *
sqr(r3):6:1);
Readln
End.
4) Lật ngược vấn đề
Xuất phát, giáo viên cho học sinh thực hiện bài toán sau: “Viết chương trình
đổi một xâu ký tự thành chữ in hoa”[3].
Var x:String;
Procedure Doi(x: String);
Var d, i:Integer;
Begin
D:= length(x);
7


Write('Doi sang chu hoa: ');
For I := 1 to d Do
Write(Upcase(x[i]));
End;
Begin
Write('Nhap xau: '); Readln(x);
Doi(x); Readln
End.

Ngược lại, chúng ta đặt câu hỏi: Nếu ta cần đổi một xâu ký tự thành xâu chữ
thường thì làm thế nào?
Học sinh đã biết trong bảng mã ASCII mỗi ký tự viết hoa A, B, C, ... , Z được mã
hóa bằng các con số từ 65 đến 90. Còn các ký tự thường a, b, c, ... z được mã hóa
bằng các con số từ 97 đến 122. Ta thấy rõ mỗi ký tự viết hoa và viết thường của
một chữ cách nhau 32 đơn vị. Chính vì vậy, ta có thể sử dụng quy luật này để đổi
một xâu ký tự viết hoa thành xâu ký tự viết thường bằng cách dùng một vòng For
chạy từ đầu xâu đến cuối xâu và đổi từng ký tự thành mã ASCII, nếu gặp ký tự viết
hoa, ta cộng mã ASCII của nó thêm 32 đơn vị. Chương trình như sau:
Var x: String;
Procedure Doi(x: String);
Var d, i:Integer;
Begin
d := 0;
Write('Doi sang chu thuong: ');
For i := 1 to Length(x) Do Begin
d := ord(x[i]);
If (d >= 65) And (d <= 90) Then d := d + 32;
Write(chr(d));
End;
End;
Begin
Write('Nhap xau: '); Readln(x);
Doi(x); Readln
End.
5) Xét tương tự
Giáo viên cho bài toán: “Viết chương trình tìm độ dài 3 đường cao của một
tam giác khi biết độ dài 3 cạnh của tam giác đó”.
Var a, b, c, S: Real;
Function Ktra(x, y, z: Real): Boolean;

Begin
Ktra := (x < y + z) And (y < x + z) And (z < x + y);
End;
Procedure Nhap(Var m, n, p: Real);
8


Begin
Repeat
Write('Nhap do dai canh thu nhat: '); Readln(m);
Write('Nhap do dai canh thu hai : '); Readln(n);
Write('Nhap do dai canh thu ba : '); Readln(p);
If Not Ktra(m, n, p) Then
Writeln('Ba do dai vua nhap khong phai la 3 canh tam giac! Nhap lai:');
Until Ktra(a, b, c);
End;
Function DT :Real;
Var d: Real;
Begin
d := (a + b + c) / 2;
DT := sqrt(d * (d - a) * (d - b) * (d - c));
End;
Procedure Dcao(m: Real);
Begin
Writeln('Duong cao qua canh ', m:0:2,' la: ',2 * S / m:0:2);
End;
Begin
Nhap(a, b, c);
S:=DT;
DCao(a); DCao(b); DCao(c);

Readln
End.
Tương tự, chúng ta yêu cầu học sinh giải bài toán sau:
“Viết chương trình tìm độ dài 3 đường trung tuyến của một tam giác khi biết ba
cạnh của tam giác”.
Var a, b, c, S: Real;
Function Ktra(x, y, z: Real): Boolean;
Begin
Ktra := (x < y + z) And (y < x + z) And (z < x + y);
End;
Procedure Nhap(Var a, b, c: Real);
Begin
Repeat
Write('Nhap do dai canh thu nhat: '); Readln(a);
Write('Nhap do dai canh thu hai : '); Readln(b);
Write('Nhap do dai canh thu ba : '); Readln(c);
If Not Ktra(a, b, c) Then
Writeln('Ba do dai vua nhap khong phai la 3 canh tam giac! Nhap lai:');
9


Until Ktra(a, b, c);
End;
Procedure Trung_Tuyen;
Begin
Writeln('Trung tuyen qua canh ',a:0:2,' la: ',0.5 * sqrt(2 * (b * b + c * c) - a *
a):0:2);
Writeln('Trung tuyen qua canh ',b:0:2,' la: ',0.5 * sqrt(2 * (a * a + c * c) - b *
b):0:2);
Writeln('Trung tuyen qua canh ',c:0:2,' la: ',0.5 * sqrt(2 * (b * b + a * a) - c *

c):0:2);
End;
Begin
Nhap(a, b, c); Trung_Tuyen;
Readln
End.
6) Xây dựng bài toán tổng quát
Ví dụ: Xuất phát từ bài toán: “Sắp xếp ba số a, b, c theo thứ tự tăng dần”.
Var a,b,c: Real;
Procedure Sapxep(Var x, y, z: Real);
Var tg: Real;
Begin
If x > y Then Begin
tg := x; x := y; y := tg;
End;
If y > z Then Begin
tg := y; y := z; z := tg;
End;
If x > y Then Begin tg := x; x := y; y := tg; End;
End;
Begin
Writeln('Nhap vao ba so: ');
Write('So thu nhat: '); Readln(a);
Write('So thu hai : '); Readln(b);
Write('So thu ba : '); Readln(c);
Sapxep(a, b, c);
Writeln('Ba so sau khi sap xep la:');
Write(a:6:0, b:6:0, c:6:0);
Readln
End.

Ở đây chúng ta cần lưu ý với học sinh rằng, lệnh gán nhận giá trị mới thì
mất giá trị cũ. Vì vậy mà trước khi thực hiện lệnh gán x := y để máy nhận giá trị
của b ta phải gửi giá trị cũ của x vào biến tg. Tại sao lệnh thứ ba lại giống lệnh thứ
10


nhất? đó là vì x, y, z, tg là các địa chỉ lưu trữ những giá trị. Những giá trị này bị
thay đổi qua những lệnh gán. Địa chỉ của biến thì không đổi, nhưng nội dung của
biến thì đã thay đổi khi thực hiện lệnh gán.
Tiếp theo, chúng ta có thể nêu câu hỏi: Khái quát, nếu phải sắp xếp n số theo
thứ tự tăng dần ta phải làm thế nào? Ta có chương trình như sau:
Var a: Array[1..100] Of Real;
i,j,n: Integer;
Procedure Doicho(Var x,y:Real);
Var tg:Real;
Begin
Tg := x; x := y; y := tg;
End;
Procedure Sapxep;
Begin
For i := 1 to n - 1 do
For j := i + 1 to n do
If a[i] > a[j] Then Doicho(a[i], a[j]);
End;
Begin
Write('Nhap so phan tu cua day so: '); Readln(n);
For i := 1 to n do Begin
Write('So thu ',i,': '); Readln(a[i]);
End;
Sapxep;

Writeln('Day so sau khi sap xep la:');
For i := 1 to n do Write(a[i]:6:0);
Readln
End.
Để nâng cao tính tự giác trong hoạt động học tập của học sinh như các cách
gợi động cơ khác. Trong thực tế của hoạt động dạy học, nhiều khi ngay từ đầu hoặc
trong khi giải quyết vấn đề, ta chưa thể làm rõ tại sao lại học nội dung này, tại sao
lại thực hiện hoạt động kia. Những câu hỏi này phải đợi mãi về sau mới được giải
đáp hoặc giải đáp trọn vẹn. Như vậy, ta đã gợi động cơ kết thúc, nhấn mạnh hiệu
quả của nội dung hoặc hoạt động đó với việc giải quyết vấn đề đặt ra. Xét bài toán
sau: “Lập chương trình cho máy tính tìm các đường trung tuyến của một tam giác
khi biết số đo ba cạnh là a, b, c được nhận vào từ bàn phím”.
Trong bài toán này chúng ta yêu cầu học sinh chia ra thành nhiều bài toán nhỏ
độc lập. Cụ thể là:
Var a, b, c, S: Real;
Function Ktra: Boolean;
Begin
Ktra := (a < b + c) And (b < a + c) And (c < a + b);
11


End;
Procedure Nhap;
Begin
Repeat
Write('Nhap do dai canh thu nhat: '); Readln(a);
Write('Nhap do dai canh thu hai : '); Readln(b);
Write('Nhap do dai canh thu ba : '); Readln(c);
If Not Ktra Then
Writeln('Ba do dai vua nhap khong phai la 3 canh tam giac! Nhap lai:');

Until Ktra;
End;
Procedure Trung_Tuyen(m, n, p: Real);
Begin
Writeln('Trung tuyen qua canh ',m:0:2,' la: ',0.5 * sqrt(2* (n * n + p * p) - m *
m):0:2);
End;
Procedure BaTT;
Begin
Trung_tuyen(a, b, c);
Trung_tuyen(b, a, c);
Trung_tuyen(c, b, a);
End;
Begin
Nhap; BaTT; Readln
End.
Sau khi chương trình đã chạy thông suốt, ta gọi lại chương trình và cho học
sinh thấy được trong bài toán này là tính các đường trung tuyến của một tam giác
nên các hàm Ktra, thủ tục Nhap, thủ tục BaTT không có tham chiếu. Việc sử dụng
những chương trình con này sẽ được đề cập đến với những tham chiếu trong bài
toán cần tính các đường trung tuyến của nhiều tam giác mà cách xác định ba cạnh
của từng tam giác có thể khác nhau. Để thực hiện được ý định trên, ta yêu cầu học
sinh giải bài toán sau:
“Lập trình cho máy tính in lên màn hình các đường trung tuyến của tam giác
theo độ dài ba cạnh của tam giác đó.
- Tam giác thứ nhất có độ dài ba cạnh là a1, b1, c1.
- Tam giác thứ hai có độ dài ba cạnh là a2, b2, c2.
- Tam giác thứ ba có độ dài ba cạnh là a1 + a2, b1 + b2, c1 + c2”.
Var a1, b1, c1,a2, b2, c2, S: Real;
Function Ktra(x, y, z: Real): Boolean;

Begin
Ktra := (x < y + z) And (y < x + z) And (z < x + y);
End;
12


Procedure Nhap(Var a, b, c: Real; k: Byte);
Begin
Writeln('Tam giac thu ',k,':');
Repeat
Write('Nhap do dai canh thu nhat: '); Readln(a);
Write('Nhap do dai canh thu hai : '); Readln(b);
Write('Nhap do dai canh thu ba : '); Readln(c);
If Not Ktra(a, b, c) Then
Writeln('Ba do dai vua nhap khong phai la 3 canh tam giac! Nhap lai:');
Until Ktra(a, b, c);
End;
Procedure Trung_Tuyen(m, n, p: Real);
Begin
Writeln('Trung tuyen qua canh ',m:0:2,' la: ',0.5* sqrt(2* (n * n + p * p) - m *
m):0:2);
End;
Procedure BaTT(a, b, c:Real; i:Byte);
Begin
Writeln('Do dai ba trung tuyen cua tam giac thu ',i,':');
Trung_tuyen(a, b, c);Trung_tuyen(b, a, c); Trung_tuyen(c, b, a);
End;
Begin
Nhap(a1, b1, c1, 1);
Nhap(a2 ,b2, c2, 2);

BaTT(a1, b1, c1, 1); BaTT(a2, b2, c2, 2); BaTT(a1 + a2, b1 + b2, c1 + c2, 3);
Readln
End.
7) Hướng tới sự hoàn chỉnh hệ thống
Để có thể giúp học sinh nắm bắt được các kiến thức về chương trình con một
cách có hệ thống. Sau khi học xong về chương trình con, chúng ta có thể đưa ra sơ
đồ sau:
Thủ tục

Không có tham chiếu

Chương trình con

Tham trị
Hàm

Có tham chiếu
Tham biến

Tiếp theo, để giúp cho học sinh nhìn thấy vấn đề có hệ thống một các rõ ràng
hơn, đặc biệt là giúp cho học sinh hiểu rõ các vấn đề về chương trình con. Chẳng
hạn đâu là biến toàn cục, đâu là biến địa phương, khi nào dùng tham biến, khi nào
dùng tham trị, ….? Chúng ta có thể đưa ra ví dụ sau:
13


“Viết chương trình nhập 3 giá trị a, b, c từ bàn phím và cho biết số nhỏ nhất
trong ba số đó”[2]
Var n: integer; {Bien toan cuc}
Function Min(x, y: integer): integer; {Ham co tham tri}

Begin
If a>b then Min:= b else Min:= a;
End;
Procedure Nhap(Var a, b, c :integer); {Thu tuc co tham bien}
Begin
Writeln('Nhap vao ba gia trị:’);
Write('Nhap gia trị thu nhat: '); Readln(a);
Write('Nhap gia trị thu hai : '); Readln(b);
Write('Nhap gia tri thu ba : '); Readln(c);
End;
Begin
Nhap;
Write( 'gia tri nho nhat trong ba so duoc nhap tu ban phim la:’, Min(min(a,b),c);
End.
2.4. Hiệu quả của sáng kiến kinh nghiệm đối với hoạt động giáo dục, với bản
thân, đồng nghiệp và nhà trường
- Với hoạt động giáo dục
Đề tài này tôi đã áp dụng giảng dạy tại lớp 11B1 (38 học sinh) trường THPT
Thường Xuân 2. Bên cạnh đó sử dụng các phương pháp dạy học truyền thống vào
dạy học chương IV: Chương trình con - Tin Học 11 ở lớp 11B2 (39 học sinh). Đây
là 2 trong số 8 lớp 11 của trường được phân chia đồng đều về chất lượng. Sau khi
dạy xong và tiến hành kiểm tra, đánh giá có thể thấy được kết quả trong bảng so
sánh sau:
Lớp 11B1 (lớp thử nghiệm)
Lớp 11B2 (lớp đối chứng)
G
K
TB
Y
Kém G

K
TB
Y
Kém
Kết quả thu
được sau khi
tiến hành kiểm
26 53
21
0
0
5
26
51
18
0
tra, đánh giá
(tính theo %)
Với đề tài trên trong quá trình áp dụng cho học sinh trường THPT Thường
Xuân 2, căn cứ vào kết quả học tập của các em tôi thấy việc sử dụng hệ thống các
bài tập trên vào việc dạy học chương trình con đã góp phần nâng cao hiệu quả nhận
thức của học sinh, giúp cho học sinh tích cực, chủ động nắm vững bài giảng và vận
dụng vào thực hành đạt kết quả tốt nhất.
- Với bản thân: Bản thân tôi đúc rút được nhiều kinh nghiệm trong quá trình
dạy học.
14


- Với đồng nghiệp và nhà trường: Với đề tài này có tính khả thi cao thể ứng
dụng rộng dãi cho các học sinh trong nhà trường, các đồng nghiệp có thể sử dụng

áp dụng trong giảng dạy để nâng cao hiệu quả dạy học trong bộ môn tin học, đặc
biệt tin học 11.
3. Kết luận, kiến nghị
- Kết luận:
Từ thực tiễn dạy học để nâng cao chất lượng bộ môn Tin học tại trường
THPT Thường Xuân 2 thì người giáo viên phải nghiên cứu sách tham khảo và học
hỏi kinh nghiệm của các giáo viên dạy bộ môn lâu năm để tìm cho mình một
phương pháp hiệu quả nhất. Từ đó truyền tải cho học sinh lĩnh hội được những kiến
thức Tin học một cách nhạy bén nhất. Trên đây là một số kinh nghiệm nhỏ trong
quá trình dạy học ở trường THPT Thường Xuân 2. Rất mong được sự đóng góp ý
kiến của các đồng chí đồng nghiệp và Hội đồng khoa học để sáng kiến trên được
hoàn thiện hơn.
- Kiến nghị:
Để nâng cao hiệu quả việc dạy và học bộ môn Tin học thì cần bổ sung thêm số
lượng máy trong phòng thực hành, lắp đặt máy chiếu trong phòng thực hành Tin học.
XÁC NHẬN CỦA THỦ TRƯỞNG ĐƠN VỊ

Thanh hóa, ngày 10 tháng 05 năm 2018
Tôi xin cam đoan đây là SKKN của
mình viết, không sao chép nội dung của
người khác.
Lê Thị Hoa

15


TÀI LIỆU THAM KHẢO
[1]. Đổi mới phương pháp dạy học trung học phổ thông – Dự án PTGD THPT, Hà
Nội, 2006.
[2]. Kiểm tra đánh giá thường xuyên và định kỳ tin học 11 – Quách Tất Kiên, Đỗ

Đức Đông – Nhà xuất bản Giáo dục, 2010
[3]. Sách giáo khoa tin học 11 – Hồ Sĩ Đàm – Nhà xuất bản Giáo dục, 2013
[4]. Sách bài tập tin học 11 – Hồ Sĩ Đàm – Nhà xuất bản Giáo dục, 2013
[5]. Tham khảo một số tài liệu trên Internet
- Nguồn:
- Nguồn:

1



×