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

SKKN Một số kinh nghiệm nâng cao hiệu quả dạy học chương trình con

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 (291.64 KB, 41 trang )

Một số kinh nghiệm nâng cao hiệu quả dạy học chương trình con
A. PHẦN MỞ ĐẦU
I. Lý do chọn đề tài:
Thế kỷ XXI là thế kỷ của nền kinh tế tri thức. Nói đến tri thức, sáng tạo tri thức, phổ
biến, truyền thụ tri thức, học tập và lĩnh hội tri thức không thể không nói đến khoa học -
công nghệ và giáo dục - đào tạo. Sự nghiệp giáo dục phải đáp ứng những đòi hỏi của cách
mạng khoa học và công nghệ. Đó là một yêu cầu có tích chất nguyên tắc. Chính vì vậy, sự
hiểu biết nhất định về máy tính điện tử, công nghệ thông tin không phải chỉ là vốn riêng
của một số người chuyên nghiệp mà phải trở thành học vấn phổ thông của tất cả mọi người
trong xã hội, nhất là thế hệ trẻ. Chính vì vậy, từ năm 1993 Bộ Giáo dục và Đào tạo đã quyết
định đưa môn Tin học vào giảng dạy trong các trường phổ thông.
Tin học là một môn học công cụ, có tính trừu tượng và tính thực tiễn phổ dụng.
Những tri thức và kỹ năng Tin học cùng với phương pháp làm việc trong Tin học đã trở
thành công cụ để học tập những môn học khác trong nhà trường, là công cụ của nhiều
ngành khoa học khác cũng như hoạt động trong đời sống thực tế. Bởi vậy, dạy Tin học
không chỉ đơn thuần là tạo điều kiện cho học sinh chiếm lĩnh những tri thức và kỹ năng Tin
học mà còn phải góp phần phát triển năng lực trí tuệ chung cho học sinh, trong đó có vấn
đề dạy học tư duy lập trình mà ngôn ngữ lập trình Pascal là một ví dụ.
Tuy nhiên, hầu hết học sinh rất khó khăn để tiếp thu kiến thức của môn học này vì
nhiều lý do như: Phải có tư duy thuật toán tốt, đòi hỏi tư duy nhiều, bài học khô khan, khó
hiểu, các thuật ngữ bằng tiếng Anh… làm cho môn học pascal trở nên không hứng thú đối
với các em. Vấn đề này thật sự thể hiện rất rõ nét đối với những học sinh vùng nông thôn
như học sinh trường THPT Nông Cống 4.
Hiện nay, tôi nhận thấy trong lý luận dạy học sử dụng khá nhiều phương pháp như:
Phương pháp thảo luận, phương pháp đặt câu hỏi, phương pháp chia nhóm … Theo các
phương pháp trên cũng có nhiều cách thiết kế bài giảng nhằm mục đích bồi dưỡng và tạo
cảm hứng cho học sinh năng lực ham muốn học hỏi, tư duy sáng tạo, năng lực tự giải quyết
vấn đề, rèn luyện và phát triển năng lực tự học sáng tạo, làm việc một cách tư duy tự chủ.
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ể. Thầy 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…”.
1
Một số kinh nghiệm nâng cao hiệu quả dạy học chương trình con
Qua những năm dạy học, áp dụng những phương pháp dạy học trên tôi nhận thấy có
hiệu quả nhưng chưa thật sự cao bởi vì sự tư duy gắn kết trong suốt quá trình học năm lớp
11. Các em hầu như chỉ chú ý trong học kỳ 1, còn sang học kỳ 2 về cuối học kỳ thì các em
đã giảm dần sự hứng thú. Trong khi tầm quan trọng của phần chương trình con thể hiện ở
các đặc trưng như: Sử dụng chương trình con để hợp lý, 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. Đặc biệt,
khi học về chương trình con, học sinh có thể hiểu một cách sâu sắc hơn về ngôn ngữ lập
trình, nhìn nhận vấn đề một cách sáng sủa hơn, chặt chẽ hơn và nhất là chương trình con có
thể giúp cho các em hoàn thành những chương trình lớn hơn vượt ra những bài toán bình
thường và chương trình con cũng là chương trình tổng hợp các kiến thức các em đã học
trong cả năm học lớp 11. Đó cũng là vấn đề để tôi nêu một số kinh nghiệm trong đề tài:
“Một số kinh nghiệm nâng cao hiệu quả dạy học chương trình con”, phần chương trình
con – SGK lớp 11. Nhằm giúp các em học sinh noi chung và học sinh ở trường THPT
Nông Cống 4 nói riêng có khả năng tư duy lập trình và học tốt bộ môn Pascal.
II. Mục đích nghiên cứu
Nâng cao hiệu quả dạy học của giáo viên và tiếp thu kiến thức trong quá trình học tập
của học sinh đối với môn học đòi hỏi tư duy sáng tạo như lập trình pascal, đặc biệt là phần
chương trình con.
Tạo động cơ cho học sinh ý thức về ý nghĩa của các hoạt động khi sử dụng chương
trình con trong công việc lập trình. Từ đó, học sinh có thể liên hệ , vận dụng sáng tạo vào
giải quyết các bài toán lập trình và các tình huống thực tế nhằm góp phần hình thành và
phát triển năng lực trí tuệ chung cho học sinh THPT.
III. Đối tượng và phạm vi nghiên cứu
Đối tượng nghiên cứu:
- Nghiên cứu dạy học lập trình trong chương trình Tin học phổ thông, đặc biệt là
phần chương trình con – SGK lớp 11.

- Nghiên cứu các tài liệu liên quan đến thuật toán và ngôn ngữ lập trình Pascal.
- Nghiên cứu một số tài liệu về đổi mới phương pháp giáo dục.
- Nghiên cứu hoạt động dạy và học của giáo viên và học sinh ở trường THPT.
Phạm vi nghiên cứu:
2
Một số kinh nghiệm nâng cao hiệu quả dạy học chương trình con
Là giáo viên Tin học mới vào ngành, thời gian hạn chế nên trong đề tài này tôi xin
nêu lên một số kinh nghiệm nâng cao hiệu quả dạy học chương trình con, SGK lớp 11.
IV. Nhiệm vụ nghiên cứu
Nhằm đạt được mục đích nghiên cứu đã nêu, cần phải thực hiện các nhiệm vụ sau:
- Nghiên cứu tình hình dạy và học Tin học ở trường THPT hiện nay. Trao đổi, tìm
hiểu kinh nghiệm của giáo viên phổ thông, tiếp cận học sinh khi học ngôn ngữ lập trình
Pascal về năng lực và trí tuệ.
- Nghiên cứu những cơ sở về lý luận dạy học.
- Áp dụng vào thực tiễn nhằm rèn luyện các thao tác tư duy, hình thành và phát triển
tư duy logic, suy đoán trừu tượng nhằm giúp các em giải các bài tập Pascal.
- Đưa ra các phương pháp, động cơ trong dạy học, xây dựng hệ thống bài tập có
chuyên đề cụ thể để học sinh dễ tiếp cận bài học.
V. Phương pháp nghiên cứu
1. Nghiên cứu lý thuyết:
- Nghiên cứu các tài liệu, bài giảng về phương pháp dạy học Tin học.
- Nghiên cứu các tài liệu về phương pháp dạy học môn Toán, các tài liệu giáo dục
học, tâm lý học
- Nghiên cứu vị trí, khối lượng kiến thức về ngôn ngữ lập trình Pascal trong chương
trình THPT.
- Nghiên cứu các tài liệu về ngôn ngữ lập trình Pascal.
- Nghiên cứu các công văn hướng dẫn của Bộ Giáo dục và Đào tạo, Sở Giáo dục và
Đào tạo về vấn đề đưa Tin học vào chương trình THPT cũng như các vấn đề về yêu cầu
chất lượng giáo dục.
2. Thực nghiệm sư phạm:

- Tìm hiểu qua giáo viên để nắm được tình hình giảng dạy và học tập Tin học trong
nhà trường THPT Nông Cống 4 hiện nay.
- Kiểm chứng bước đầu qua đợt thực tập sư phạm: sẽ tiến hành giảng dạy ở các lớp
trong trường THPT nhằm kiểm tra giả thuyết khoa học, minh họa tính khả thi và tính hiệu
quả của giải pháp đề xuất.
- Tiến hành cụ thể bằng 2 giai đoạn tại trường THPT Nông Cống 4:
o Giai đoạn 1: Năm học 2011 – 2012 tại các lớp 11A3 và 11A6.
3
Một số kinh nghiệm nâng cao hiệu quả dạy học chương trình con
o Giai đoạn 2: Năm học 2012 – 2013 tại các lớp 11B3 và 11B1.
4
Một số kinh nghiệm nâng cao hiệu quả dạy học chương trình con
B. PHẦN NỘI DUNG
I. Cơ sở lý luận của đề tài.
1. Nghiên cứu lý luận
Qua nghiên cứu cho thấy, Lý luận dạy học Tin học được coi như là một bộ phận của
khoa học giáo dục. Và theo quan điểm đó thì lý luận dạy học Tin học cũng như lý luận dạy
học các môn học khác lấy tri thức về tâm lý học, về lý luận giáo dục và về lý luận dạy học
đại cương làm nền tảng. Tuy nhiên, lý luận dạy học Tin học còn phải dựa vào nội dung và
phương pháp nghiên cứu của bộ môn Tin học. Từ cơ sở này làm nảy sinh tính đặc thù của
lý luận dạy học Tin học so với lý luận dạy học các môn khác Quá trình nghiên cứu lý luận
áp dụng vào các tài liệu, lý thuyết đã được khẳng định trong Tâm lý học, Giáo dục học,
Công nghệ thông tin,… để từ đó tìm ra các phương pháp hợp lý có tính thuyết phục cao
nhằm áp dụng vào phương pháp dạy học cho bộ môn tin học. Trong đó yếu tố quan trọng
của phương pháp là “Lấy người học làm trung tâm”.
2. Nghiên cứu thông qua phương pháp quan sát - điều tra:
Quan sát điều tra là quá trình tri giác (Mắt thấy, tai nghe) và ghi chép lại mọi yếu tố
liên quan đến đối tượng nghiên cứu, phù hợp với mục tiêu nghiên cứu… nhằm mô tả, phân
tích, nhận định, đánh giá.
- Quan sát trực tiếp: Quan sát và ghi chép lại hành vi của con người ngay tại bối

cảnh và thời gian thực tế diễn ra.
- Quan sát gián tiếp: Không quan sát trực tiếp hành vi mà đi thu thập các dấu vết của
hành vi con sót lại như: Lịch hoạt động của phòng đa năng của các giờ học bằng máy
Projecter, phòng thực hành Tin học…
Qua các phương pháp này nhằm điều tra, dõi hiện tượng giáo dục theo trình tự thời
gian, phát hiện những biến đổi số lượng, chất lượng gây ra do tác động giáo dục. Từ đó
thấy được những vấn đề thời sự cấp bách đòi hỏi phải nghiên cứu hoặc góp phần giải quyết
nhiệm vụ nghiên cứu.
3. Tổng kết kinh nghiệm:
Tổng kết kinh nghiệm là đánh giá và khái quát hóa những kinh nghiệm đã thu thập
được trong hoạt động thực tiễn, từ đó phát hiện ra những vấn đề cần khẳng định để đưa ra
áp dụng rộng rãi hoặc cần tiếp tục nghiên cứu hay loại bỏ. Nó có nguồn gốc từ kinh
nghiệm, mang tính khoa học, được lĩnh hội, kiểm chứng từ quá trình hoạt động thực tiễn
5
Một số kinh nghiệm nâng cao hiệu quả dạy học chương trình con
sinh động. Bài học kinh nghiệm là sự cụ thể hóa một cách sáng tạo tư tưởng, luận điểm, lý
luận giáo dục đã đi vào cuộc sống. Trong quá trình nghiên cứu tổng kết kinh nghiệm, có
khi người ta khám phá ra những mối liên hệ có tính quy luật của những hiện tượng giáo
dục.
6
Một số kinh nghiệm nâng cao hiệu quả dạy học chương trình con
II. Thực trạng của vấn đề nghiên cứu:
* Một số thuận lợi và khó khăn khi thực hiện nghiên cứu đề tài:
1. Thuận lợi:
- Đối với nhà trường:
Được sự quan tâm của Ban giám hiệu, tổ chuyên môn của nhà trường, trong những
năm học gần đây luôn tạo điều kiện tốt nhất trong khả năng kinh tế của nhà trường để giúp
giáo viên và học sinh tham gia dạy - học có hiệu quả.
Phát triển công nghệ thông tin, đặc biệt là kết nối Internet để cán bộ giáo viên và học
sinh tham khảo tài liệu trên mạng.

- Đối với giáo viên:
Giáo viên bộ môn Tin học trong nhà trường nói chung và bản thân nói riêng được
đào tạo chuẩn chuyên ngành về Tin học để đáp ứng yêu cầu cho dạy và học môn Tin học
trong bậc THPT.
Đa số các giáo viên trong toàn trường đều quan tâm đến Tin học, ứng dụng công
nghệ thông tin vào công tác học tập và giảng dạy. Đó cũng là cơ sở để tạo động lực phát
huy tính ham học, tích cực của học sinh đối với bộ môn Tin học.
2. Khó khăn:
- Đối với nhà trường:
Mặc dù nhà trường đã quan tâm và tạo điều kiện tốt nhất, tuy nhiên cơ sở vật chất
còn thiếu thốn rất nhiều. Trong khi đó đối với bộ môn, thực hành trên thiết bị máy tính
chiếm đa số thời lượng học tập của các em.
- Đối với giáo viên:
Giáo viên sẽ trở nên rất khó khăn khi các em tham gia học tập trong điều kiện không
đầy đủ máy tính thực hành. Mặc dù kiến thức lớp 11 thiên về tư duy lập trình nhưng khi có
thiết bị thực hành thì thao tác kiểm tra – tư duy và trình bày ý tưởng sẽ trở nên phong phú
hơn.
- Đối với học sinh:
100% học sinh trường THPT Nông Cống 4 là học sinh vùng nông thôn, điều kiện
kinh tế gia đình thấp nên các em không có thiết bị máy tính thực hành tại nhà. Vì vậy mà
vấn đề áp dụng công nghệ thông tin (đặc biệt là Internet) cho học tập là không có. Hơn nữa,
chương trình Pascal là ngôn ngữ lập trình bằng tiếng Anh các em học rất khó khăn, vì kiến
7
Một số kinh nghiệm nâng cao hiệu quả dạy học chương trình con
thức ngoại ngữ của các em rất kém, cộng với tư duy lập trình chưa tốt nên thật sự đây là
vấn đề mà bản thân tôi rất băn khoăn khi thực hiện nghiên cứu đề tài này.
III. Các giải pháp và quá trình thực hiện:
Làm thế nào để các em học sinh có động cơ hứng thú học tập đối với môn tin học
lớp 11? Phương pháp gợi động cơ hoạt động cho học sinh rất quan trọng để các em tham
gia hoạt động tác động lên đối tượng. Làm cho học sinh có ý thức về ý nghĩa của những

hoạt động và của đối tượng hoạt động. Theo đó, gợi động cơ hoạt động cũng là 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.
Thông thường, giáo viên khuyến khích các em học tập tốt thường dùng những cách
như cho điểm, khen thưởng, thông báo cho gia đình kết quả học tập của các em, Tuy
nhiên, càng lên lớp cao, cùng với sự trưởng thành của học sinh, với trình độ nhận thức và
giác ngộ chính trị ngày càng cao những cách gợi động cơ xuất phát từ nội dung hướng và
những nhu cầu nhận thức, nhu cầu đời sống, trách nhiệm đối với xã hội ngày càng trở nên
quan trọng.
Vì vậy những phương pháp truyền thống trên áp dụng cũng có hiệu quả nhưng chỉ
tạo cho các em về quyền lợi trước mắt, chưa định hướng về nhiệm vụ lâu dài.
Gợi động cơ là kinh nghiệm mà tôi đã kiểm nghiệm trong thời gian thực tập sư
phạm cũng như giảng dạy trên lớp rất hiệu quả. Với mỗi bài học các em đều có hứng thú
mà không quan trọng về điểm đánh giá của bản thân, các em hứng thú khi mình đã hiểu bài
và áp dụng cho các tiết học, các bài tập tiếp theo. Gợi động cơ gồm 3 bước: Gợi động cơ
mở đầu, gợi động cơ trung gian và gợi động cơ kết thúc.
1. Gợi động cơ mở đầu:
Gợi động cơ mở đầu được xuất phát từ các vấn đề thực tiễn, có thể nêu lên thực tiễn
của Tin học, góp phần hình thành thế giới duy vật biện chứng. Cách đặt vấn đề mở đầu
phải đảm bảo tính chân thực, không đòi hỏi quá nhiều các kiến thức bổ sung, con đường từ
lúc nêu cho tới lúc giải quyết vấn đề càng ngắn càng tốt. Nhờ đó, học sinh nhận rõ việc
nhận thức và cải tạo thế giới đã đòi hỏi phải suy nghĩ và giải quyết những vấn đề Tin học
như thế nào, tức là nhận rõ Tin học bắt nguồn từ những nhu cầu của đời sống thực tế. Vì
vậy, ta cần khai thác triệt để mọi khả năng để gợi động cơ xuất phát từ thực tế.
8
Một số kinh nghiệm nâng cao hiệu quả dạy học chương trình con
Khi gắn nội dung bài học với sự xuất phát từ thực tiễn, thì trong dạy học Tin học
chúng ta cần phải gợi động cơ từ nội bộ Tin học, đó là nêu vấn đề Tin học xuất phát từ nhu
cầu Tin học. Gợi động cơ theo cách này là cần thiết vì:
- Việc gợi động cơ xuất phát từ thực tế không phải bao giờ cũng thực hiện được.

- Việc gợi động cơ từ nội bộ Tin học sẽ giúp học sinh hình dung được đúng sự hình
thành và phát triển của Tin học cùng với những đặc điểm của nó và có thể dần dần tiến tới
hoạt động Tin học một cách độc lập.
Chúng ta có những phương pháp sau đây áp dụng cho những bài học có nhiều nội dung
cần liên hệ thực tế:
9
Một số kinh nghiệm nâng cao hiệu quả dạy học chương trình con
a) Xóa bỏ các hạn chế khi lập trình giải toán:
Xét bài toán: Viết chương trình nhập kích thước 2 cạnh góc vuông của 3 hình tam giác
vuông, tính chu vi và diện tích của mỗi hình. Trong đó:
- Kích thước 2 cạnh của hình thứ nhất là a1, a2.
- Kích thước 2 cạnh của hình thứ hai là b1, b2.
- Kích thước 2 cạnh của hình thứ ba là c1, c2.
Chương trình:
Var x1, x2, y1, y2, z1, z2, C1, C2, C3, S1, S2, S3: Real;
Begin
Writeln('Nhap hai canh tam giac thu nhat:'); Readln(x1,x2);
Writeln('Nhap hai canh tam giac thu hai:'); Readln(y1,y2);
Writeln('Nhap hai canh tam giac thu ba:'); Readln(z1,z2);
C1:= x1 + x2 + sqrt(x1*x1 + x2*x2);
C2:= y1 + y2 + sqrt(y1*y1 + y2*y2);
C3:= z1 + z2 + sqrt(z1*z1 + z2*z2);
S1:= (x1 * x2)/2;
S2:= (y1 * y2)/2;
S3:= (z1 * z2)/2;
Writeln('Hinh tam giac thu nhat co:');
Writeln('- Chu vi bang : ',C1:8:2);
Writeln('- Dien tich bang : ',S1:8:2);
Writeln('Hinh tam giac thu hai co:');
Writeln('- Chu vi bang : ',C2:8:2);

Writeln('- Dien tich bang : ',S2:8:2);
Writeln('Hinh tam giac thu ba co:');
Writeln('- Chu vi bang : ',C3:8:2);
Writeln('- Dien tich bang : ',S3:8:2);
Readln
End.
Theo yêu cầu của đề bài, chương trình trên đã thực hiện đúng, tuy nhiên các thao tác
thực hiện phải lặp đi lặp lại 3 lần để tính chu vi và diện tích 3 hình tam giác. Giả sử nếu
phải tính chu vi và diện tích cho N hình tam giác thì làm thế nào? Nếu áp dụng phương
pháp trên thì quá phức tạp, chương trình dài dòng và sẽ không thật sự phù hợp, đó là chưa
10
Một số kinh nghiệm nâng cao hiệu quả dạy học chương trình con
kể trong mỗi hình khi nhập các giá trị của các cạnh chúng ta cần kiểm tra các giá trị nhập
đều phải thỏa mãn giá trị cạnh của tam giác vuông. Đó thật sự là hạn chế của chương trình
này. Vậy làm thế nào để khắc phục các hạn chế trên? Trong mở bài để chúng ta có thể áp
dụng để vào bài cho phương pháp ứng dụng chương trình con. 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 tam giác vuông.
2. Thủ tục tính chu vi và diện tích cho mỗi hình.
Var a, b: Real;
i,N: Byte;
Procedure Nhap(Var x, y: Real; k: Byte);
Begin
Writeln('Nhap hai cạnh cua hinh tam giac thu ',k,':');
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(m, n: Real; j: Byte);
Begin
Writeln(‘Chu vi hinh tam giac thu ',j,':', (m + n + sqrt(m*m + n*n)):8:2);
Writeln(‘Dien tich hinh tam giac thu ',j,':', (m * n)/2):8:2);
End;
Begin
Writeln(‘Nhap so luong tam giac N = ’); Readln(N);
For i:= 1 to N do
begin
Nhap(a, b,i);
Tinh(a,b,i);
end;
Readln
End.
b) Phân tích các khái niệm:
11
Một số kinh nghiệm nâng cao hiệu quả dạy học chương trình con
Trong một số bài độc lập, các khái niệm đã được ứng dụng cụ thể. Ví dụ khái niệm
về tham biến trong các bài toán có giá trị biến thay đổi, ngược lại trong bài toán giá trị biến
không thay đổi thì dùng tham trị. Điều này học sinh hầu như chỉ áp dụng trong các bài toán
độc lập trên, vì vậy khi gặp các bài toán tổng hợp các em chưa thể phân tích, kết luận chính
xác để áp dụng nhuần nhuyễn các khái niệm trên. Vì vậy ta có thể gợi lại vấn đề và giúp
học sinh áp dụng chính xác 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ị, 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; i:Byte);
Begin

Repeat
Write('Nhap ban kinh cua duong tron thu ',i,': ');
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:8:2,' Dien tich bang: ',pi * sqr(r1):8:2);
Writeln('Duong tron 2 Chu vi bang:',2 * pi * r2:8:2,' Dien tich bang:',pi * sqr(r2):8:2);
Writeln('Duong tron 3 Chu vi bang:',2 * pi * r3:8:2,' Dien tich bang:',pi * sqr(r3):8:2);
Readln
End.
Sau khi học sinh chạy thử chương trình trên, các em sẽ phát hiện ra kết quả không
như mong muốn vì kết quả chu vi và diện tích của cả ba đường tròn đều bằng 0. Vậy
chương trình sai ở chỗ nào? Lúc này ta 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ẽ
12
Một số kinh nghiệm nâng cao hiệu quả dạy học chương trình con
không còn lưu giữ giá trị đó. Điều này sẽ giúp cho chúng ta đưa ra các ví dụ cụ thể nhằm
chứng minh cho khái niệm tham biến và tham trị cho học sinh thấy rõ. Chương trình trên
được sửa lại như sau:
Var r1, r2, r3: Real;
Procedure Nhap(Var r: Real; i:Byte);
Begin
Repeat
Write('Nhap ban kinh cua duong tron thu ',i,': ');

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:8:2,' Dien tich bang: ',pi * sqr(r1):8:2);
Writeln('Duong tron 2 Chu vi bang:',2 * pi * r2:8:2,' Dien tich bang:',pi * sqr(r2):8:2);
Writeln('Duong tron 3 Chu vi bang:',2 * pi * r3:8:2,' Dien tich bang:',pi * sqr(r3):8:2);
Readln
End.
c) Sự tiện lợi và hợp lý khi sử dụng chương trình con:
Xét bài toán sau: “Nhập 1 dãy gồm n số nguyên lớn hơn 1. In ra màn hình tất cả các số
nguyên tố ở trong dãy”.
Const Nmax = 100;
Var A: Array[1 Nmax] Of Integer;
k,n: Integer;
Function NgTo(a: Integer):Boolean;
Var i: Integer;
Begin
NgTo:=False;
For i := 2 To Trunc(sqrt(a)) Do
If a mod i = 0 Then Exit;
13
Một số kinh nghiệm nâng cao hiệu quả dạy học chương trình con
NgTo := True;
End;
Begin

Write('Nhap so phan tu: '); Readln(n);
Writeln('Nhap cac phan tu cua day’);
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;
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.
Giả sử chương trình trên nếu viết theo chương trình thông thường thì mỗi phần tử
khi kiểm tra sẽ là 1 dãy câu lệnh, như phân tích ở trên rõ ràng 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 phủ đị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).
14
Một số kinh nghiệm nâng cao hiệu quả dạy học chương trình con
d) Xây dựng hệ thống chi tiết chương trình con:
Để 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:
Bài tập sau đây sẽ giúp học sinh nhận biết cụ thể hơn về các khái niệm biến toàn
cục, biến cục bộ, cách sử dụng các tham biến, tham trị… Cách gọi chương trình con thực

hiện như thế nào?
VD: “Viết chương trình tính tích của 2 số A và B, sau đó hoán vị giá trị 2 số trên”
Var A, B: Integer; {Biến toàn cục A,B}
Procedure tich(x1, y1: Integer); {Tham trị x1, y1}
var t: integer;
Begin
t := x1 * y1;
writeln(‘Tich cua ‘,x1,’ va ‘,y1,’ la:’, t);
End;
Procedure hoanvi(var x2, y2: Integer); {Tham biến x2, y2}
var tg: integer;
Begin
tg := x2;
15
CHƯƠNG TRÌNH CON
Thủ tục Hàm
Một số kinh nghiệm nâng cao hiệu quả dạy học chương trình con
x2 := y2;
y2 := tg;
writeln(‘sau khi hoan vi A = ‘,x2,’ va B = ‘,y2);
End;
BEGIN
write(‘ nhap 2 so nguyen A va B: ‘); Readln(A,B);
tich(A,B);
hoanvi(A,B);
readln END.
e. Khai thác bài toán:
Nắm vững cấu trúc chương trình con là bước đầu rất quan trọng đối với những
người đầu tiên tìm hiểu tới chương trình con, đặc biệt là học sinh. Chính vì vậy, sau khi
hoàn thành tìm hiểu chương trình con, giáo viên tiếp tục cho học sinh khai thác các bài toán

có nhiều hướng để giải quyết vấn đề. Bài tập ví dụ sau sẽ giải quyết 2 vấn đề cơ bản của bài
toán:
1. Viết chương trình chuyển đổi xâu ký tự bất kỳ thành xâu ký tự in hoa.
2. Viết chương trình chuyển đổi xâu ký tự in hoa thành ký tự thường.
TH1: Chuyển đổi xâu ký tự bất kỳ thành xâu ký tự in hoa.
Var st: String;
Procedure Doi(st: String);
Var i: Integer;
Begin
Write('Xau ky tu in hoa la: ');
For i := 1 to Length(st) Do
Write(Upcase(st[i]));
End;
Begin
Write('Nhap xau: '); Readln(st);
Doi(st);
Readln
End.
TH2: Chuyển đổi xâu ký tự in hoa thành xâu ký tự thường.
16
Một số kinh nghiệm nâng cao hiệu quả dạy học chương trình con
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 st: String;
Procedure Doi(st: String);

Var d, i: Integer;
Begin
d := 0;
Write('Doi sang chu thuong: ');
For i := 1 to Length(st) Do
Begin
d := ord(st[i]);
If (d >= 65) And (d <= 90) Then d := d + 32;
Write(chr(d));
End;
End;
17
Một số kinh nghiệm nâng cao hiệu quả dạy học chương trình con
Begin
Write('Nhap xau: '); Readln(st);
Doi(st);
Readln
End.
f. Xét tính tương tự giữa các bài toán: Hướng dẫn học sinh phát hiện ra các điểm giống
nhau giữa các bài toán để áp dụng.
Đầu tiên xét bài toán: “Viết CTC dạng hàm để tính n! = 1.2 n.”
VAR N: INTEGER;
Function GiaiThua(x:Word):longint;
Var P:longint;
i:Word;
Begin
If x=0 then P:=1
Else
Begin
P:=1;

For i:=1 To x Do P:=P*i;
End;
GiaiThua:=P;
End;
BEGIN
write('nhap n= '); readln(n);
write(N,'! = ',giaithua(n));
readln
END.
Tiếp theo, giáo viên cho học sinh xét bài toán sau: “Viết chương trình tính giá trị x
n
”. Lưu ý với học sinh công thức tính N giai thừa và tích của n lần giá trị x. Từ đó suy ra
tính tương tự của bài toán thứ 2 với bài toán 1.
Var x:byte;
n:byte;
Function XMU(x:byte;n:Byte):longint;
Var i:Byte; S:longint;
18
Một số kinh nghiệm nâng cao hiệu quả dạy học chương trình con
Begin
S:=1;
For i:=1 To n Do S:=S*x;
XMU:=S;
End;
Begin
Write('Nhap x='); Readln(x);
Write('Nhap n= '); Readln(n);
Writeln('x mu n = ', XMU(x,n):2);
Readln;
End.

g. Tổng quát bài toán: Từ bài toán tìm ƯCLN của 2 số nguyên A,B. Hướng dẫn học sinh
thực hiện bài toán tìm ƯCLN của N số nguyên.
Xuất phát từ bài toán: “Tìm ƯCLN của 2 số nguyên A,B”. Giáo viên hướng dẫn học
sinh sử dụng thuật toán Ơclit để thuật toán được thực hiện nhanh hơn. Chương trình được
thực hiện như sau:
Var a, b, tg: Integer;
Function UCLN(Var x, y: Integer): Integer;
Var tg: Integer;
Begin
While y<>0 do
Begin
tg := x mod y;
x := y;
y := tg;
End;
UCLN := x;
End;
Begin
Write('Nhap 2 so nguyen: '); Readln(a, b);
Write('UCLN cua ',a,' va ',b,' la: ',UCLN(A,B));
Readln
End.
19
Một số kinh nghiệm nâng cao hiệu quả dạy học chương trình con
Với chương trình tìm ƯCLN của 2 số nguyên, chúng ta sẽ khái quát hóa bài toán
sang tìm ƯCLN của N số nguyên. Nhằm giải quyết bài toán trên, chúng ta hướng dẫn học
sinh áp dụng bài toán tìm ƯCLN của 2 số. Trong chương trình này sử dụng một biến trung
gian để lưu các giá trị gọi là biến K, biến K có tác dụng lưu trữ giá trị đầu tiên của dãy số,
sau đó qua vòng FOR-DO để xác định ƯCLN của K với các số tiếp theo. Cuối cùng ƯCLN
chính là số K, vì sau mỗi lần gọi chương trình con thì số K đã thay đổi thành số ƯCLN của

K với các số trong dãy.
CONST Nmax = 200;
Var A: Array[1 Nmax] Of Integer;
k, i, n: Integer;
Procedure UCLN(Var x, y: Integer);
Var tg: Integer;
Begin
While y<>0 do
Begin
tg := x mod y; x := y; y := tg;
End;
End;
Begin
Write('Nhap so luong day so: '); Readln(n);
For i := 1 to n do
Begin
Write('So thu ',i,': '); Readln(A[i]);
End;
Write('UCLN(');
For i := 1 to n-1 do Write(A[i],',');
Write(A[n],') = ');
K := A[1];
For i:= 2 to n do UCLN(k, A[i]);
Write(K);
Readln
End.
h. Liên hệ và hướng tới cách giải quyết bài toán.
20
Một số kinh nghiệm nâng cao hiệu quả dạy học chương trình con
Sau khi đã giải quyết các bài toán lần lượt theo các bước gợi mở vấn đề như đã nêu

trên, đó là: Tìm ra hạn chế của chương trình  Phân tích bài toán  Khai thác bài toán 
Xét các bài toán tương tự  Rút ra tính tổng quát thực hiện cho nhiều bài toán, thì bước
tiếp theo là liên hệ tới nhiều bài toán, nhằm hướng tới cách giải quyết bài toán theo phương
pháp trải nghiệm nhiều lần, điều này thật sự rất có hiệu quả trong việc lập trình.
2. Gợi động cơ trung gian
Gợi động cơ trung gian là gợi động cơ cho những hoạt động tiến hành trong những
bước đó để đạt được mục tiêu.
a. Hướng đích:
Đặt mục đích cuối cùng hay từng bước cho học sinh thấy để chủ động hướng hoạt
động của mình vào đó. Muốn vậy chúng ta cần nắm chắc nội dung, các văn bản hướng dẫn
và giải thích chương trình, sách giáo khoa và các tài liệu tham khảo, để xác định được
mục đích cần đạt mà không sa và các chi tiết "kĩ thuật" trong khi chứng minh hay giải bài
toán. Từ đó làm cho học sinh ý thức được con đường mình phải đi tới đích, đi theo những
bước cụ thể nào, với "công cụ" gì, tránh được việc làm cầu may được chăng hay chớ, mà
phải tìm ra con đường đi thích hợp.
b. Tổng hợp, xem xét các bài toán thành các dạng quen thuộc:
Chính là phương pháp quy bài toán khác nhau, thậm chí chưa có hướng giải quyết
ngay lúc đó trở về các bài toán có dạng quen thuộc, là một yếu tố quan trọng vì khi đưa vấn
đề mới nào đó dựa trên cơ sở của kiến thức đã học để học sinh có suy nghĩ logic và cuối
cùng là đưa được vấn đề mới này về dạng quen thuộc để học sinh nhận dạng. Khi đó kiến
thức mới này sẽ được học sinh tiếp thu một cách dễ dàng
Ví dụ: Tính
k
n
C
.
Chúng ta nhận thấy công thức của
k
n
C

chính là
)!(!
!
knk
n
C
k
n

=
, vì vậy cần triển khai
bài toán dưới dạng các bài toán quen thuộc để học sinh dễ dàng áp dụng. Như vậy giáo viên
hướng dẫn học sinh chỉ cần áp dụng công thức N! là thực hiện được bài toán trên vì n!, k!
và (n-k)! được xét tính tương tự như N!, (trong đó điều kiện n-k>0 hay n > k để thõa mãn
tập xác định). Chương trình được thực hiện như sau:
Var k, n: Integer; C:Real;
Procedure Nhap;
21
Một số kinh nghiệm nâng cao hiệu quả dạy học chương trình con
Begin
Repeat
Write('Nhap k = '); Readln(k);
Write('Nhap n = '); Readln(n);
If (k < 0) Or (n < 0) Or (k > n) Then Writeln('Nhap lai!');
Until (k > 0) And (n > 0) And (k < n);
End;
Function GT(a:Integer): Integer;
Var kq, i:Integer;
Begin
kq:=1;

For i:=1 to a do kq:=kq * i;
GT:=kq;
End;
Begin
Nhap;
C := GT(n) / (GT(k) * GT(n - k));
Writeln(' Ket qua C = ', C:8:2);
Readln
End.
c. Xét tính tương tự giữa các bài toán: Phần này được áp dụng như phần 1, giúp học sinh
tìm và nhận biết các điểm giống nhau giữa các bài toán để áp dụng.
VD: Nhập n, m là các số nguyên dương, liệt kê các số nguyên tố nằm trong khoảng từ n
đến m. (n < m).
Var n, m, k, i: Integer;
Function ktnt(k : integer): boolean;
Begin
Ktnt := false;
If k<=1 then exit;
i := 2;
While k mod i <> 0 do inc(i);
if i=k then ktnt := true;
End;
22
Một số kinh nghiệm nâng cao hiệu quả dạy học chương trình con
BEGIN
Write('nhap n va m, n<m'); readln(n, m);
For k:= n+1 to m-1 do If ktnt(k) then write(i:6);
Readln
End.
Tương tự áp dụng bài toán trên giáo viên hướng dẫn học sinh triển khai bài toán:

Nhập n và liệt kê n các số nguyên tố đầu tiên lên màn hình.
Var n, d, k: Integer;
Function ktnt(k : integer): boolean;
Var i:integer;
Begin
ktnt := false;
If k<=1 then exit;
i := 2;
While k mod i <> 0 do inc(i);
If i=k then ktnt := true;
End;
BEGIN
Write('nhap n= '); readln(n);
d:=0; k:=1;
writeln(n,' so nguyen to dau tien la:');
while d<n do
begin
inc(k);
if ktnt(k) then
begin
write(k:4); inc(d);
end;
end;
Readln
END.
3. Gợi động cơ kết thúc:
23
Một số kinh nghiệm nâng cao hiệu quả dạy học chương trình con
Quá trình học tập sẽ được nhấn mạnh tại bước cuối cùng. Trong phần gợi động cơ
kết thúc sẽ có tác dụng 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. Đối với 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, tuy nhiên gợi động cơ kết thúc nhằm 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.
VD: Xét bài toán: Tối giản phân số a/b.
Với bài toán trên, chúng ta có thể hướng dẫn học sinh thực hiện bài toán tìm ƯCLN
của 2 số a và b, mục đích là tìm ước số chung lớn nhất để thực hiện phép chia. Tuy nhiên
trong tình huống này, sau khi đã thực hiện 2 động cơ đã nêu thì học sinh đã tích lũy được
lượng kiến thức tốt nhất để các em có thể phân tích bài toán. Chính vì vậy cần kết hợp
phương pháp khen, chê, cho điểm và điểm tối đa cho các em chính là chương trình được
viết hoàn chỉnh như sau (chương trình là kết quả đạt được khi đặt ra vấn đề cần giải quyết):
Var tu,mau,c,d:Integer;
Function UCLN(a,b:Integer):Integer;
Begin
While a<>b do
if a>b then a:=a-b else b:=b-a;
UCLN:=a;
end;
BEGIN
Write('Nhap tu so va mau so:'); Readln(tu,mau);
c:=tu div UCLN(tu,mau);
d:=mau div UCLN(tu,mau);
Writeln('Phan so toi gian=',c,'/',d);
Readln;
END.
Để phát huy tác dụng kích thích, thúc đẩy hoạt động học tập, cần phải phối hợp
nhiều phương pháp khác nhau và chú ý đến xu hướng phát triển của cá nhân học sinh.
Trong một tiết học, để đảm bảo kiến thức cho học sinh cần tập trung vào một số nội dung
mà việc quyết định cần căn cứ vào những yếu tố sau đây:
 Tầm quan trọng của nội dung hoạt động cần được xem xét.

 Khả năng gợi động cơ ở nội dung đó hoặc hoạt động đó.
24
Một số kinh nghiệm nâng cao hiệu quả dạy học chương trình con
 Kiến thức có sẵn và thời gian cần thiết.
C. KẾT QUẢ KIỂM NGHIỆM ĐỀ TÀI:
Đề tài thực hiện được phân thành 2 giai đoạn, mỗi giai đoạn là 1 năm thực hiện với
các đối tượng học sinh tương ứng.
Giai đoạn 1: Trong năm học 2011-2012 là năm học mà bản thân tôi đã áp dụng đối
với lớp học 11A3 là lớp có học sinh học tốt hơn về các môn khoa học tự nhiên, lớp 11A6 là
lớp học kém hơn lớp 11A3. Cả 2 lớp trên sử dụng phương pháp dạy học thông thường.
Giai đoạn 2: Được áp dụng phương pháp dạy học gợi động cơ học tập như đã nêu ở
trên đối với lớp 11B3 theo ban KHTN và lớp 11B1 theo ban xã hội.
Khả năng tiếp thu kiến thức của lớp 11A3 tương đương với 11B3, 11A6 tương
đương với 11B1. Kết quả thu được như sau:
Lớp Năm học Số học sinh đạt điểm trên 8
11A3
2011 - 2012
22/50 (44%)
11A6 10/38 (26,3%)
11B3
2012 - 2013
41/50 (82%)
11B1 31/43 (72%)
D. KẾT LUẬN VÀ ĐỀ XUẤT
I. Kết luận:
Sau một thời gian tiến hành giảng dạy và kiểm nghiệm giữa phương pháp mới tôi nhận
thấy phương pháp gợi động cơ nhằm cuốn hút học sinh yêu thích học môn tin học và tư
duy lập trình tốt về phần chương trình con thật sự là có hiệu quả.
Đối với giáo viên:
+ Tạo ra được các tình huống có vấn đề, dẫn dắt vấn đề và giải quyết vấn đề một cách

triệt để và có hiệu quả.
+ Phương pháp giảng dạy rất phù hợp với xu hướng lấy học sinh làm trung tâm, bởi
giáo viên chỉ hướng dẫn cho các em giải quyết vấn đề.
Đối với học sinh:
+ Tích cực tham gia học tập, phát huy tối đa tính chủ động sáng tạo, học tập của học
sinh. Học sinh vừa học, vừa kết hợp tìm hiểu các kiến thức liên quan đến bài học.
25

×