Sáng kiến kinh nghiệm: Gợi động cơ hoạt động trong việc giảng dạy chương trình con với mục đích 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ế.
Trang 1MỤC LỤC
A PHẦN MỞ ĐẦU 2
I Lý do chọn đề tài 2
II Định hướng nghiên cứu 3
1 Mục đích nghiên cứu 3
2 Nhiệm vụ nghiên cứu 3
B NỘI DUNG 4
I Cơ sở lý luận 4
1 Nghiên cứu lý luận 4
2 Quan sát - điều tra 4
3 Tổng kết kinh nghiệm 4
II Cơ sở thực tiễn: 4
1 Thuận lợi: 4
2 Khó khăn: 5
III Nội dung đề tài gợi động cơ hoạt động trong việc giảng dạy chương trình con 5
1 Gợi động cơ mở đầu: 5
a Đáp ứng nhu cầu xóa bỏ sự hạn chế 6
b Hướng tới sự tiện lợi hợp lý hóa công việc 8
c Chính xác hóa một khái niệm 9
d Hướng tới sự hoàn chỉnh hệ thống 10
e Lật ngược vấn đề 11
f Xét tương tự 12
g Khái quát hóa 14
h Tìm sự liên hệ và phụ thuộc 15
2 Gợi động cơ trung gian 17
a Hướng đích 17
b Quy lạ về quen 19
c Xét tương tự 20
d Khái quát hóa 20
e Xét sự biến thiên và phụ thuộc 22
3 Gợi động cơ kết thúc 23
C KẾT LUẬN 29
D KIẾN NGHỊ………30
Trang 2ĐỀ TÀI: GỢI ĐỘNG CƠ HOẠT ĐỘNG TRONG VIỆC GIẢNG DẠY CHƯƠNG TRÌNH CON
A PHẦN MỞ ĐẦU
I Lý do chọn đề tài
rãi máy tính không còn chỉ bó hẹp trong viện nghiên cứu, các trường đại học, các trung tâm máy tính mà còn mở rộng ra mọi cơ quan, xí nghiệp và nhà máy Song song với quá trình trên, việc giảng dạy Tin học trong các trường đại học, trung học và phổ thông cũng được đẩy mạnh đi đôi với việc tăng cường trang bị máy vi tính Chính vì vậy, đối với mỗi giáo viên giảng dạy môn Tin học ở các trường phổ thông, việc tìm hiểu, nghiên cứu các vấn đề về Tin học, cùng với việc tìm các biện pháp giảng dạy Tin học trong nhà trường phổ thông là một công việc cần phải làm thường xuyên, nhằm đáp ứng với sự đòi hỏi ngày càng cao của xã hội
- Trong nghiệp vụ của người giáo viên có hai vấn đề quan trọng: thứ nhất là thực tiễn về tiềm năng - những kiến thức lý thuyết cơ bản Thứ hai là thực tiễn
về nghiệp vụ - Cách truyền thụ kiến thức phù hợp với trình độ của học sinh Trong đó, thực tiễn thứ hai là điều quyết định trong nghiệp vụ của giáo viên,
nó đánh giá chất lượng giảng dạy của giáo viên Hai thực tiễn trên vừa mâu thuẫn với nhau, lại vừa thống nhất với nhau Giáo viên không thể mang hết các kiến thức lý thuyết cao xa và trừu tượng dạy cho học sinh, nhưng cũng không thể dạy tốt cho học sinh nếu thầy giáo hiểu biết quá ít Chính vì vậy để
có thể phát huy khả năng nghiệp vụ, giáo viên cần phải biết kích thích tính tích cực, sáng tạo say mê học hỏi của học sinh trong việc học tập giúp học sinh có ý thức về những mục tiêu đặt ra và tạo được động lực bên trong thúc
đẩy bản thân họ hoạt động để đạt các mục tiêu đó Điều này chính là gợi động
cơ trong dạy học
- Trong các vấn đề về Tin học được đưa vào giảng dạy ở chương trình bậc học
phổ thông hiện nay Khi nói đến vấn đề dạy học lập trình cho học sinh, 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 Bởi vì, 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 mà nội bộ môn học đòi hỏi Chính vì vậy, việc gợi động cơ cho học
Trang 3sinh 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.Vấn đề đặt ra là: gợi
động cơ hoạt động cho học sinh khi giảng dạy về chương trình con như thế nào? Đó chính là vấn đề mà bản thân tôi hết sức quan tâm
II Định hướng nghiên cứu
1 Mục đích nghiên cứu
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ế
2 Nhiệm vụ nghiên cứu
Pascal, các tài liệu về phương pháp giảng dạy Từ đó, đưa ra các biện pháp có thể gợi động cơ hoạt động cho học sinh thông qua các ví dụ cụ thể về chương trình con
Trang 4B NỘI DUNG
I Cơ sở lý luận
1 Nghiên cứu lý luận
được khẳng định, những thành tựu của nhân loại trên những lĩnh vực khác nhau như Tâm lý học, Giáo dục học, Tin học, để xem xét vấn đề, tìm ra giải pháp hợp lý có sức thuyết phục vận dụng vào PPDH Tin học Bên cạnh đó cũng nghiên cứu những kết quả của bản thân chuyên ngành PPDH Tin học để
kế thừa những cái hay, phê phán và gạt bỏ những cái dở, bổ xung và hoàn chỉnh những nhận thức đã đạt được
2 Quan sát - điều tra
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 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 và môi trường tự nhiên là nguồn cung cấp dữ liệu trực tiếp Người nghiên cứu đến trực tiếp một nơi nào đó mà họ quan tâm và thu thập dữ liệu, bởi vì các hoạt động chỉ có thể hiểu tốt nhất là
3 Tổng kết kinh nghiệm
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 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
II Cơ sở thực tiễn:
* Một số thuận lợi và khó khăn khi thực hiện chuyên đề:
1 Thuận lợi:
Nhà trường:
những năm gần đây nhưng nhà trường đã tạo điều kiện để học sinh có thể học từ khối lớp 10, tạo điều kiện sắm sửa máy móc, trang thiết bị
Giáo viên:
- Giáo viên đượ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
Trang 5- Phần lớn giáo viên quan tâm đến Tin học, quan tâm đến lập trình và tạo được động cơ hứng thú cho học sinh qua từng đoạn chương trình, cho học sinh thấy được tầm quan trọng trong lập trình nhất là các em học sinh khối 11 được học môn học lý thú là lập trình pascal.
2 Khó khăn:
trường THPT nên còn nhiều bỡ ngỡ và mới mẽ, giáo viên chưa sẵn sàng trang bị cho mình kiến thức thật tốt để truyền đạt những kiến thức tốt nhất về bộ môn tin học đến cho học sinh đặc biệt trong lập trình pascal nên việc truyền đạt kiến thức đến cho học sinh còn nhiều bỡ ngỡ
hành tốt nhất nên việc thực hành học sinh trong các giờ học lập trình pascal còn khó khăn
III Nội dung đề tài gợi động cơ hoạt động trong việc giảng dạy chương trình con
- Gợi động cơ là 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 Gợi động 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
- Ở những lớp dưới, giáo viên thường dùng những cách như cho điểm, khen chê, thông báo kết quả học tập cho gia đình, để gợi động cơ 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
thức nào đó, mà phải xuyên suốt quá trình dạy học Vì vậy, có thể phân biệt gợi động cơ mở đầu, gợi động cơ trung gian và gợi động cơ kết thúc Trong đề tài này tôi xin đưa ra một số giải pháp gợi động cơ hoạt động trong việc giảng dạy chương trình con của ngôn ngữ lập trình Pascal theo từng giai đoạn như trên
1 Gợi động cơ mở đầu:
từ nội bộ Tin học
phần hình thành thế giới quan duy vật biện chứng 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
Trang 6vấ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ế Tuy nhiên, để gợi động cơ xuất phát từ thực tế cần chú ý các điều kiện sau:
hóa vì lý do sư phạm trong trường hợp cần thiết
càng tốt
nhiên không phải bất cứ nội dung nào, hoạt động nào cũng có thể gợi động cơ xuất phát từ thực tế Vì vậy, ta còn tận dụng cả những khả năng gợi động cơ xuất phát từ nội bộ Tin học
học, từ việc xây dựng khoa học Tin hoc, từ những phương thức tư duy và hoạt động Tin học Gợi động cơ theo cách này là cần thiết vì:
đượ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 nên cố gắng xuất phát từ thực tế Còn đối với từng bài hay từng phần của bài thì cần tính tới những khả năng gợi động cơ từ nội bộ Tin học
Đó là những cách sau đây:
a Đáp ứng nhu cầu xóa bỏ sự hạn chế
- 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ứ 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;
Trang 7Writeln('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
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ì vấn đề quả thực là hết sức 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ể xóa bỏ được sự hạn chế này? Ở đây, 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
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);
Write('Canh thu hai : '); Readln(y);
If (x <= 0) Or (y <= 0) Then Writeln('Nhap lai!');
Trang 8Writeln('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);
b Hướng tới sự tiện lợi hợp lý hóa công việc
cả các số của dãy thỏa mãn điều kiện là số nguyên tố”
Var A: Array[1 100] Of Integer;
Write('Nhap so phan tu: '); Readln(n);
Writeln('Nhap cac phan tu cua day Chu y: A[k] >= 2');
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:
Writeln(‘Cac so la hop so cua day so tren la:’);
Trang 9c Chính xác hóa một khái niệm
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ì 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ị, 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 đó”
- 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
Trang 10d 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:
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ị, các chương trình con gọi lẫn nhau như thế nào?, Chúng ta có thể đưa ra ví dụ sau:
“Viết chương trình nhập vào số cạnh của n tam giác, sau đó tính diện tích
của mỗi tam giác vừa nhập và tổng diện tích của tất cả các tam giác đó”
Var a:array[1 3,1 100] Of Real; {Bien toan cuc}
Function Ktra(x, y, z: Real): Boolean; {Ham co tham tri}
Trang 11Write('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;
Function DT(m, n, p:Real): Real; {Ham co tham tri}
Var d: Real; {Bien cuc bo}
Begin
d := (m + n + p) / 2;
DT := sqrt(d * (d - m) * (d - n) * (d - p));
End;
Procedure Tinh; {Thu tuc khong co tham chieu}
Var k, n, j: Integer; tong: Real; {Bien cuc bo}
Tong := tong + DT(a[1, k], a[2,k], a[3,k]);
Writeln('Dien tich cua tam giac thu ',k,': ',DT(a[1, k], a[2, k], a[3, k]):6:1); End;
Writeln('Tong dien tich cua ',n,' tam giac la: ',tong:6:1);
Trang 12- Ngược lại, 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:
Write('Doi sang chu thuong: ');
For i := 1 to Length(x) Do Begin
tam giác khi biết độ dài 3 cạnh của tam giác đó”
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:');
Trang 13Tươ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”
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:');
Trang 14Trung_Tuyen;
Readln
End
g Khái quát hóa
Var a, b: Integer;
Begin
Repeat
Writeln('Nhap vao 2 so:'); Readln(a,b);
If (a<=0) Or (b<=0) then Writeln(‚Nhap lai!’);
Until (a>0) And (b>0);
chung lớn nhất của ba số ” Đến đây, để viết hàm tính ước chung lớn nhất của
hai số, chúng ta nên hướng dẫn học sinh sử dụng thuật toán Ơclit để viết chương trình nhằm tăng tốc độ tính toán
Var a, b, c, tam: Integer;
Function UCLN(Var x, y: Integer): Integer;
Var tam: Integer;
Trang 15- Để thực hiện, ta có thể hướng dẫn học sinh dùng thủ tục tìm ước chung lớn nhất của hai số Sau đó, dùng một biến tạm là u để lưu giữ giá trị đầu tiên của dãy số, tiếp theo ta lần lượt xác định ước chung lớn nhất của u với từng giá trị của dãy từ vị trí thứ hai Cuối cùng, ước chung lớn nhất của dãy chính là giá trị
u
Var A: Array[1 100] Of Integer;
a1, u, i, n: Integer;
Procedure UCLN(Var x, y: Integer);
Var tam, tg: Integer;
hoạt động phổ biến trong Tin học như xét tương tự, khái quát hóa, xét sự liên
hệ và phụ thuộc, sự quen thuộc đối với phương thức này không chỉ là kết quả
mà còn là điều kiện của việc gợi động cơ theo cách đó Thật vậy, việc xét tương tự, việc xét khái quát hóa, việc xét sự liên hệ và phụ thuộc chỉ có tác dụng gợi động cơ người học sinh đã quen thuộc với những cách xem xét này,
đã trải nghiệm thành công nhiều lần là việc theo cách đó Để thực hiện được điều này khi dạy học cho học sinh về chương trình con Chúng ta có thể yêu cầu học sinh giải bài toán sau:
“Có một cái túi chứa tối đa D (kg) với n đồ vật, Cần chọn các đồ vật sao
cho giá trị của túi là lớn nhất Biết rằng mỗi đồ vật i có khối lượng là W[i] và giá trị là C[i] đồng (i = 1, 2, , n) ”.