Sáng kiến kinh nghiệm về chương trình con: 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 nội dung 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ý 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ấ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.
Trang 1MỤC LỤC
MỤC LỤC 1
I ĐẶT VẤN ĐỀ 2
1 Lý do chọn đề tài 2
2 Mục đích nghiên cứu 3
3 Đối tượng nghiên cứu 4
4 Phạm vi nghiên cứu 4
5 Phương pháp nghiên cứu 4
II PHẦN NỘI DUNG 5
1 Cơ sở lý luận 5
2 Cơ sở thực tiễn 5
3 Một số biện pháp 6
3.1) Tạo động cơ mở đầu 6
3.2) Tạo động cơ trung gian 21
3.2.1)Hướng đích 21
3.2.2)Quy lạ về quen 25
3.3) Động cơ kết thúc 29
3.4) Phối hợp nhiều cách để tạo động cơ học tập cho học sinh 33
III PHẦN KẾT LUẬN 38
1 Kết quả thu được 38
2 Kết luận 40
TÀI LIỆU THAM KHẢO 41
I ĐẶT VẤN ĐỀ
Trang 21.Lý do chọn đề tài :
Đổi mới phương pháp dạy học theo hướng tích cực hóa hoạt động của họcsinh là một quá trình lâu dài; không thể ngày một ngày hai mà đông đảo giáoviên từ bỏ được kiểu dạy học truyền thụ kiến thức, tiếp thu thụ động đã quenthuộc từ lâu việc phát triển các phương pháp tích cực đòi hỏi một số điều kiện,trong đó quan trọng nhất là bản thân mỗi giáo viên cần có một sự nỗ lực để tìmtòi, sáng tạo trong công tác giảng dạy của mình
Đổi mới phương pháp dạy học là một vấn đề hết sức quan trọng, là mộtgiáo viên giảng dạy bộ môn Tin học, theo tôi không phải cứ tìm được nhiều bàitoán khó, bài toán hay để giảng dạy cho học sinh Mà vấn đề đặt ra là chúng tacần phải tích cực tìm tòi, sáng tạo trong việc đưa ra những bài toán đó để giúpcho học sinh có sự hứng thú, tìm tòi sáng tạo trong quá trình giải quyết bài toán,
từ đó biết vận dụng linh hoạt trong các tình huống cụ thể ngoài thực tế
Trong việc giảng dạy cho học sinh, ngoài việc giúp học sinh lĩnh hộinhững kiến thức cơ bản Thầy giáo còn phải biết kích thích tính tích cực, sự sángtạo say mê học hỏi của học sinh trong việc học tập của các em Bởi vì, việc họctập tự giác, tích cực, chủ động và sáng tạo đòi hỏi học sinh phải 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 đó
Turbo Pascal là ngôn ngữ lập trình có cấu trúc, nó được dùng phổ biến ởnước ta hiện nay trong công tác giảng dạy, lập trình tính toán, đồ họa TurboPascal được dùng trong chương trình giảng dạy Tin học ở hầu hết các trường đạihọc, cao đẳng, trung học phổ thông
Trong các vấn đề về Tin học được đưa vào giảng dạy ở chương trình bậchọ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 nội dung về chương trình con là một trong những vấn đề chiếm vaitrò quan trọng Bởi vì, sử dụng chương trình con để hợp lý hóa, tiết kiệm côngsứ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
Trang 3chữa, dễ kiểm tra Vấn đề đặt ra là: gợi động cơ hoạt động cho học sinh khigiảng dạy về chương trình con như thế nào? Đó chính là vấn đề mà bản thân tôihết sức quan tâm.
Trên cơ sở những gì mà học sinh được học tập về môn lập trình Pascal,học sinh có thể sử dụng một cách thành thạo các ngôn ngữ khác để hoàn thànhtốt hơn những ứng dụng trong thực tế Bởi vì, ngôn ngữ Pascal có tính cấu trúcmạnh, có cơ sở và nó đòi hỏi chương trình phải chặt chẽ, logic Đặ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ậptrì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ươngtrì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 ranhữ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 sinh trong việc dạy học chương trình con là một công việc quantrọ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 sinhnhì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
Xuất phát từ cơ sở trên, tôi đã chọn đề tài:
“Một số biện pháp tạo hứng thú học tập cho học sinh khi học nội dung chương trình con môn Tin học 11”.
2 Mục đích nghiên cứu:
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ể vậndụng sáng tạo để giải quyết các bài toán lập trình và xử lí các tình huống thực tế
Qua việc nghiên cứu các vấn đề về chương trình con của ngôn ngữ lậptrình 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ươngtrình con
Trang 43.Đối tượng nghiên cứu:
- Học sinh lớp 11 trường THPT Cao Bá Quát năm học 2019 - 2020.
- Sử dụng một số ví dụ và các bài học.
4 Phạm vi nghiên cứu:
Ngôn ngữ lập trình Turbo Pascal nói riêng là rất nhiều, rất phong phú.Tuy nhiên trong phạm vi sáng kiến kinh nghiệm này tôi chỉ trình bày một sốbiện pháp tạo hứng thú để nâng cao kết quả học tập cho học sinh khi học nộidung chương trình con, kinh nghiệm của cá nhân tôi qua các nội dung cụ thểsau:
- Tạo động cơ mở đầu
- Tạo động cơ trung gian
- Tạo động cơ kết thúc
- Phối hợp nhiều cách để tạo động cơ học tập cho học sinh
5 Phương pháp nghiên cứu:
- Kết hợp thực tiễn giáo dục ở trường THPT Cao Bá Quát
- Đọc kỹ sách giáo khoa, sách giáo viên Tin học 11, tài liệu về sáng kiếnkinh nghiệm và một số tài liệu tham khảo khác
- Tích lũy các kiến thức từ nhiều năm giảng dạy
- Điều tra thực tế, đánh giá kết quả của học sinh trước và sau khi thực hiện
đề tài, phân tích tìm nguyên nhân rồi từ đó đưa ra giải pháp
Trang 5II PHẦN NỘI DUNG
1.Cơ sở lí luận:
Pascal là một ngôn ngữ lập trình cấp cao do Niklaus Wirth, giáo sư điện
toán trường đại học Kỹ thuật Zurich (Thụy sĩ) thiết kế và công bố vào năm 1971
và đặt tên là Pascal để tưởng niệm nhà Toán học và Triết học nổi tiếng BlaisePascal Đây là một ngôn ngữ lập trình có cấu trúc đơn giản, rõ ràng, cấu trúcchặt chẽ, dễ viết, dễ hiểu cũng như dễ sửa chữa, cải tiến Do đó Pascal đượcnhiều quốc gia trong đó có Việt Nam đưa vào chương trình giảng dạy tin học ởcác trường phổ thông và đại học như một môn học cơ sở, đại cương
Ở trường phổ thông chúng ta không chú trọng học chuyên sâu về ngônngữ lập trình để tạo ra các phần mềm máy tính mà tập trung rèn luyện kĩ năng tưduy logic, tư duy hệ thống và sáng tạo không chỉ để giải quyết những vấn đềtrong tin học mà đây còn là những kĩ năng vô cùng quan trọng để giải quyếtnhiều vấn đề trong cuộc sống
Học Pascal giúp cho ta hiểu được cách làm việc của máy tính, cách giaotiếp để ra lệnh cho máy tính làm việc theo sự điều khiển của con người thôngqua ngôn ngữ lập trình Các em có thể tạo ra các chương trình thú vị bằng cách
sử dụng các câu lệnh Pascal Cũng giống như những môn học khác như toánhọc, vật lý, hóa học … khi các em đã thực sự hiểu và yêu thích bộ môn tin họccác em sẽ tìm thấy nhiều niềm vui, sự đam mê khi tìm hiểu và khám phá nhữngđiều mới mẻ nhưng đầy hấp dẫn trong bộ môn tưởng chừng như khô khan này
2.Cơ sở thực tiễn:
Qua một thời gian giảng dạy ở trường, tôi nhận thấy khi học Pascal họcsinh thường không thích thú với môn học này vì nhiều lý do như khó hiểu, tiếpthu chậm, đòi hỏi tư duy nhiều, … nên việc viết được một chương trình chạyđược trên máy tính đối với các em rất khó khăn Do đó để học tốt đòi hỏi họcsinh phải có hứng thú Cốt lõi của việc đổi mới phương pháp dạy học là giúphọc sinh yêu thích, hứng thú với môn học, hướng tới việc học tập chủ động,
Trang 6chống lại thói quen học tập thụ động Để tạo cho các em một niềm hứng khởivới môn học tôi đưa ra một số biện pháp tạo hứng thú học tập cho học sinh khihọc nội dung chương trình con môn Tin học 11.
3 Một số biện pháp.
Làm cho học sinh có ý thức về ý nghĩa của những hoạt động và của đốitượng hoạt động Gợi động cơ nhằm làm cho những mục tiêu sư phạm biếnthà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, thầy giáo thường dùng những cách như cho điểm, khenchê, 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 ngày càng cao,những cách gợi động cơ xuất phát từ nội dung hướng vào những nhu cầu nhậnthức, nhu cầu đời sống, trách nhiệm đối với xã hội của học sinh ngày càng trởnên quan trọng
3.1) Tạo động cơ mở đầu.
Việc xuất phát từ thực tế có tác dụng gợi động cơ cho học sinh nhận thức
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, chúng tacần khai thác triệt để mọi khả năng để gợi động cơ xuất phát từ thực tế Tuynhiên, để gợi động cơ xuất phát từ thực tế cần chú ý các điều kiện sau:
+ Vấn đề đặt ra phải đảm bảo tính chân thực, đương nhiên có thể đơn giảnhóa vì lý do sư phạm trong trường hợp cần thiết
+ Việc nêu vấn đề không đòi hỏi quá nhiều tri thức bổ sung
+ Con đường từ lúc nêu vấn đề cho tới khi giải quyết vấn đề càng ngắncàng tốt
Mặc dù Tin học phản ánh thực tế một cách toàn bộ và nhiều tầng Tuynhiê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
Trang 7Gợ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ầuTin học, từ việc xây dựng khoa học Tin học, 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ì:
- 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
Thông thường khi bắt đầu một nội dung lớn, chẳng hạn một phân mônhay một 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 haytừ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:
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;
Trang 8Writeln('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ảiviế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ừnghì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ệnnhậ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òndà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, chúng ta có thể hướng dẫn cho học sinh sử dụng chương trình con để khắc
Trang 9phụ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 chotừng hình ta có thể viết 2 thủ tục:
+ Thủ tục nhập hai cạnh của hình chữ nhật
+ 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);
Write('Canh thu hai : '); Readln(y);
If (x <= 0) Or (y <= 0) Then Writeln('Nhap lai!');
Writeln('Dien tich bang : ',a * b:0:2);
Writeln('Duong cheo bang: ',sqrt(a * a + b * b):0:2);
Trang 10Từ 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 Đồngthờ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ó 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ớimộ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úphọ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 đó”.
Trang 11Readln;
End.
Chúng ta có thể yêu cầu học sinh thực thi chương trình trên và chạy thử.Học sinh sẽ phát hiện ra kết quả chu vi và diện tích của cả ba đường tròn đềubằ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ònlư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 thambiến và tham trị cho học sinh
Chương trình trên cần sửa lại như sau:
Trang 12Readln
End.
Để có thể giúp học sinh nắm bắt được các kiến thức về chương trình conmộ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:
Tiếp theo, để giúp cho học sinh nhìn thấy vấn đề có hệ thống một cách 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ìnhcon Chẳng hạn đâu là biến toàn cục, đâu là biến địa phương, khi nào dùngtham 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ụ như sau:
Ví dụ: “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 13Repeat
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;
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);
End;
Trang 14Tinh;
Readln
End.
+ Xuất phát, chúng ta cho học sinh thực hiện bài toán sau:
Bài toán 1: “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 đó”.
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);
Trang 15+ Tương tự, chúng ta yêu cầu học sinh giải bài toán sau:
Bài toán 2: “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 16+ Xuất phát từ bài toán sau:
Bài toán 3: “Tìm ước chung lớn nhất của 2 số ”.
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);
Trang 17Var a, b, c, tam: Integer;
Function UCLN(Var x, y: Integer): Integer;
Var tam: Integer;
Trang 18“Viết chương trình tìm ước chung lớn nhất của n số ”.
Để thực hiện, ta có thể hướng dẫn học sinh dùng thủ tục tìm ước chung lớnnhấ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ủadã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, UCLN của dãy 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;
Trang 19Bài toán 4: “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 ).
Var C, W:Array[1 100] Of Integer;
CW: Array[1 100] Of Real;
n, i, j, d, d1, gt, t: Integer;
Procedure Nhap;
Begin
Write('Nhap so luong cac do vat: '); Readln(n);
Write('Nhap khoi luong cua tui: '); Readln(D); D1:=D;
Writeln('Nhap cac gia tri cua C va W: ');
For i:=1 to n do Begin
Trang 20While (i <= n) And (d > 0) And (W[i] > 0) Do Begin
Temp := d Div W[i]; {So do vat duoc chon cua W[i]}
If temp > 0 Then Begin
Writeln('Do vat C[',i,'] = ',C[i],' va W[',i,'] = ',W[i],' duoc chon co so luong ',temp);