trong quá trình giảng dạy tại trường các năm qua tôi xin đưa ra một đề tài nhỏ“Phương pháp dạy học chương trình con nhằm gây hứng thú và nâng cao kết quả học tập môn Tin học” nằm trong c
Trang 1MỤC LỤC
I 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 3
II NỘI DUNG 4
2.1 CƠ SỞ LÍ LUẬN 4
2.2 THỰC TRẠNG VẤN ĐỀ 4
2.3 BIỆN PHÁP DẠY HỌC CỤ THỂ 5
1 Một số khái niệm về biến 5
2 Lời gọi chương trình con 6
3 Truyền tham số cho chương trình con 11
4 Các bước cần làm khi viết một chương trình con 14
2.4 KẾT QUẢ 16
III KẾT LUẬN VÀ KIẾN NGHỊ 18
3.1 Kết luận 18
3.2 Kiến nghị 18
TÀI LIỆU THAM KHẢO 20
Trang 2I MỞ ĐẦU
1.1 LÝ DO CHỌN ĐỀ TÀI
Ngày nay, trên thế giới đang diễn ra quá trình tin học hoá trên nhiều lĩnh vựchoạt động của xã hội loài người và đem lại nhiều hiệu quả to lớn Việc sử dụngmá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 trungtâm máy tính mà còn mở rộng ra mọi cơ quan, tổ chức kinh tế, và trong các giađình Song song với quá trình trên, việc giảng dạy Tin học trong các trường đạihọc, THPT cũng được đẩy mạnh đi đôi với việc tăng cường trang bị máy vi tính.Đảng và Nhà nước ta đã nhận thấy được tầm quan trọng của ngành Tin học và đãđưa môn học này vào trường phổ thông như những môn học khác bắt đầu từ nămhọc 2006-2007
Trong chương trình Tin học ở nhà trường THPT, ngôn ngữ lập trình Pascal lớp
11 là một nội dung quan trọng Bởi vì, nó là kiến thức nền móng giúp học sinh hìnhthành tư duy lập trình để sử dụng cho các bậc học cao hơn Turbo Pascal là ngônngữ 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ácgiảng dạy, lập trình tính toán, đồ họa Turbo Pascal được dùng trong chương trìnhgiảng dạy Tin học ở hầu hết các trường đại học, cao đẳng, trung học phổ thông và
nó được mệnh danh là “ngôn ngữ học đường”
Xuất phát từ thực tiễn giảng dạy tại trường THPT Quảng Xương 3 tôi thấyrằng, để đạt hiệu quả cao trong mỗi phần học, tiết học cần có cách thiết kế bàigiảng cho phù hợp với nội dung kiến thức, phương pháp, phương tiện dạy học phảiphù hợp với từng đối tượng học sinh Để qua mỗi phần học, tiết học học sinh thíchthú 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ọcsinh 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áccông việc thực tiễn trong đời sống xã hội (nếu có) Với kinh nghiệm được đúc rút
Trang 3trong quá trình giảng dạy tại trường các năm qua tôi xin đưa ra một đề tài nhỏ
“Phương pháp dạy học chương trình con nhằm gây hứng thú và nâng cao kết quả học tập môn Tin học” nằm trong chương IV - chương trình tin học 11 nhằm giúp
các em học sinh nói chung và học sinh trường THPT Quảng Xương III nói riênghiểu rõ hơn về chương trình con, phân biệt và biết cách sử dụng 2 loại chương trìnhcon trong các chương trình chính Giúp các em có khả năng tư duy lập trình và họctốt bộ môn Pascal
1.2 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ìnhpascal, đặ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ụngchươ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ụngsá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ópphần hình thành và phát triển năng lực trí tuệ chung cho học sinh THPT
Khi lập trình, học sinh cần hình dung được chương trình thường có nhữngđoạn chương trình hay phép tính lặp lại nhiều lần Nếu mỗi lần lặp lại, ta phải viếtnhững đoạn lệnh như nhau thì chương trình trở nên dài dòng, rối rắm và mất thờigian vô ích Để giải quyết những trường hợp như vậy, Pascal cho phép tạo ra cácmodule, mỗi module mang một đoạn chương trình gọi là chương trình con Mỗichương trình con sẽ mang một tên khác nhau Một module chỉ cần viết một lần vàsau đó có thể truy xuất nó nhiều lần, bất kỳ nơi nào trong chương trình chính Khicần thiết, ta chỉ việc gọi tên chương trình con đó ra để thi hành lệnh
1.3 ĐỐI TƯỢNG NGHIÊN CỨU
- Học sinh khối 11 qua các năm của trường THPT Quảng Xương 3
Trang 4- 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 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
1.4 PHƯƠNG PHÁP NGHIÊN CỨU
- Kết hợp thực tiễn giáo dục ở trường THPT Quảng Xương III
- Có tham khảo các tài liệu về ngôn ngữ lập trình Pascal và tài liệu về sáng kiếnkinh nghiệm
Trang 5II NỘI DUNG 2.1 CƠ SỞ LÍ LUẬN
Nội dung nghiên cứu này có nhiều phần, trong phạm vi nghiên cứu củachương này ta cần làm rõ các vấn đề sau:
- Chương trình con được viết dưới hai dạng: thủ tục(procedure) và hàm (function)
- So sánh cấu trúc của 2 kiểu chương trình con này thì tương tự với nhau, mặc dầucách truy xuất của chúng có khác nhau và cách trao đổi thông tin trong mỗi kiểucũng có điểm khác nhau Hàm (function) trả lại một giá trị kết quả vô hướngthôngqua tên hàm và hàm được sử dụng trong biểu thức
- Một chương trình có chứa chương trình con có 3 khối:
- Khối khai báo
- Khối chương trình con
- Khối chương trình chính
Để thực hiện những mục tiêu trên, yêu cầu học sinh cần nắm vững một số kháiniệm: biến toàn cục, biến cục bộ, tham số thực sự, tham số hình thức, lời gọichương trình con
2.2 THỰC TRẠNG VẤN ĐỀ
Từ thực tế giảng dạy của bản thân và qua dự giờ một số tiết dạy của đồngnghiệp tôi thấy, hầu hết học sinh đang còn mơ hồ về việc sử dụng chương trình con
Trang 6trong các chương trình chính Học sinh còn lúng túng khi lựa chọn chương trìnhcon là hàm hay thủ tục, nhầm lẫn giữa cách khai báo, lời gọi hàm và thủ tục Vì vậyvới đề tài này tôi nêu ra một số chú ý khi dạy học chương trình con cho học sinhnhằm giúp học sinh hiểu rõ hơn về chương trình con, không còn lúng túng khi sửdụng chương trình con trong các chương trình chính.
2.3 BIỆN PHÁP DẠY HỌC CỤ THỂ
- Khi dạy về chương trình con giáo viên cần lưu ý những kiến thức sau:
1 Một số khái niệm về biến
a Biến toàn cục: Còn được gọi là biến chung, là biến được khai báo ở đầu chương
trình, nó được sử dụng bên trong chương trình chính và cả bên trong chương trìnhcon Biến toàn cục sẽ tồn tại trong suốt quá trình thực hiện chương trình
b Biến cục bộ: Còn được gọi là biến riêng, là biến được khai báo ở đầu chương
trình con, và nó chỉ được sử dụng bên trong thân chương trình con hoặc bên trongthân chương trình con khác nằm bên trong nó (các chương trình con lồng nhau).Biến cục bộ chỉ tồn tại khi chương trình con đang hoạt động, nghĩa là biến cục bộ
sẽ được cấp phát bộ nhớ khi chương trình con được gọi để thi hành, và nó sẽ đượcgiải phóng ngay sau khi chương trình con kết thúc
c Tham số thực sự là một tham số mà nó có thể là một biến toàn cục, một biểu thức
hoặc một giá trị số (cũng có thể biến cục bộ khi sử dụng chương trình con lồngnhau) mà ta dùng chúng khi truyền giá trị cho các tham số hình thức tương ứng củachương trình con
d Tham số hình thức là các biến được khai báo ngay sau tên chương trình con, nó
dùng để nhận giá trị của các tham số thực truyền đến Tham số hình thức cũng làmột biến cục bộ, ta có thể xem nó như là các đối số của hàm toán học
Trang 72 Lời gọi chương trình con
Để chương trình con được thi hành, ta phải có lời gọi đến chương trình con,lời gọi chương trình con thông qua tên chương trình con và danh sách các tham sốtương ứng (nếu có) Các qui tắc của lời gọi chương trình con:
- Trong thân chương trình chính hoặc thân chương trình con, ta chỉ có thể gọi tớicác chương trình con trực thuộc nó
- Trong chương trình con, ta có thể gọi các chương trình con ngang cấp đã đượcthiết lập trước đó
a Thủ tục (Procedure):
Thủ tục là một đoạn cấu trúc chương trình được chứa bên trong chương trìnhPascal như là một chương trình con Thủ tục được đặt tên và có thể chứa danh sáchtham số hình thức Các tham số này phải được đặt trong dấu ngoặc đơn ( ) Ta cóthể truy xuất thủ tục bằng cách gọi tên của thủ tục Chương trình sẽ tự động truyxuất thủ tục đúng tên đã gọi và thực hiện các lệnh chứa trong thủ tục đó Sau khithực hiện thủ tục xong, chương trình sẽ trở lại ngay lập tức sau vị trí câu lệnh gọithủ tục đó
Ví dụ 1: Tìm số lớn nhất trong 3 số nguyên được nhập từ bàn phím
Program VI_DU;
Trang 8Var a, b, c : integer ;
Procedure So_LN;
Var max : integer ;Begin
If a > b then max := a else max := b ;
if c > max then max := c ;Writeln ( ‘ So lon nhat la ‘, max ) ;end;
* Cấu trúc của thủ tục có tham số
PROCEDURE < Tên thủ tục > (<danh sách tham số hình thức : kiểu biến>);
{ Các khai báo hằng, biến, kiểu cục bộ }BEGIN
{ các lệnh trong nội bộ thủ tục }END;
Khi viết một thủ tục, nếu có các tham số cần thiết, ta phải khai báo nó (kiểu,
số lượng, tính chất, ) Các tham số này gọi là tham số hình thức
Trang 9Một thủ tục có thể có 1 hoặc nhiều tham số hình thức Khi các tham số hìnhthức có cùng một kiểu thì ta viết chúng cách nhau bởi dấu phẩy (,) Trường hợp cáckiểu của chúng khác nhau hoặc giữa khai báo tham số truyền bằng tham biến vàtruyền bằng tham trị (sẽ học ở phần sau) thì ta phải viết cách nhau bằng dấu chấmphẩy (;).
Ví dụ 2: Tính giai thừa của một số
Program Tinh_Giai_thua ;
Var n : integer ; gt : real ;
Procedure giaithua (m : integer );
Var i : integer ;Begin
gt := 1 ;For i := 1 to m do gt := gt * i ;end;
Trang 10b Hàm (Function) :
Hàm là một chương trình con cho ta 1 giá trị kiểu vô hướng Hàm tương tựnhư thủ tục nhưng trả về một giá trị thông qua tên hàm và lời gọi hàm tham giatrong biểu thức
Cấu trúc một hàm tự đặt gồm:
FUNCTION <Tên hàm>(<Tham số hình thức: kiểu biến>): <Kiểu kết quả> ;
{ các khai báo hằng, biến cục bộ } BEGIN
{ các khai báo trong nội bộ hàm }END ;
Trong đó:
- Tên hàm là tên tự đặt cần tuân thủ theo nguyên tắc đặt tên trong Pascal
- Kiểu kết quả là một kiểu vô hướng, biểu diễn kết quả giá trị của hàm
- Một hàm có thể có 1 hay nhiều tham số hình thức, khi có nhiều tham số hình thứccùng một kiểu giá trị thì ta có thể viết chúng cách nhau bằng dấu phẩy (,) Trườnghợp các tham số hình thức khác kiểu thì ta viết chúng cách nhau bằng dấu chấmphẩy (;)
- Trong hàm có thể sử dụng các hằng, kiểu, biến đã được khai báo trong chươngtrình chính nhưng ta có thể khai báo thêm các hằng, kiểu, biến dùng riêng trong nội
bộ hàm Chú ý là phải có một biến trung gian có cùng kiểu kết quả của hàm để lưukết quả của hàm trong quá trình tính toán để cuối cùng ta có 1 lệnh gán giá trị củabiến trung gian cho tên hàm
Ví dụ : FUNCTION TINH (x, y : integer ; z : real ) : real ;
Đây là một hàm số có tên là TINH với 3 tham số hình thức x, y, z Kiểu của x
và y là kiểu số nguyên integer còn kiểu của z là kiểu số thực real Hàm TINH sẽ
cho kết quả kiểu số thực real
Ví dụ 3: Bài toán tính giai thừa
Trang 11For heso := 2 to n dotich:= tich * heso ;gt:= tich;
End ;End;
BEGIN
Write (‘ Nhap vao so nguyen duong x = ‘ ); Readln (x) ;
Writeln (‘ Voi x = ‘, x , ‘ thi giai thua se la: x ! = ‘, gt(x))
Readln;
END
Khi khai báo kiểu dữ kiệu cho các tham số hình thức trong thủ tục và hàm, tacần phải chú ý điểm sau: Nếu kiểu dữ liệu của các tham số hình thức là các kiểu dữliệu có cấu trúc (kiểu array, string, kiểu record, ) thì việc khai báo kiểu dữ liệucho các tham số hình thức nên được khai báo theo cách gián tiếp, tức là phải thôngqua từ khóa TYPE
Ví dụ : Procedure Xuat1(hoten : string[25]);
Procedure Xuat2(mang: array[1 10] of integer);
Trang 12Hai chương trình con Xuat1 và Xuat2 đều bị lỗi ở phần khai báo kiểu dữ liệu cho hai tham số hình thức là hoten và mang.
Để khắc phục lỗi này, ta sẽ khai báo gián tiếp một kiểu dữ liệu str25 và M10thông qua từ khóa TYPE như sau:
TYPE
Str25=string[25]; {Str25 là một kiểu xâu có độ dài 25}
M10=Array[1 10] of integer; {M10 là một kiểu dữ kiệu mảng có 10 phần tửnguyên}
Tiếp đến, dùng 2 kiểu dữ liệu mới định nghĩa Str25 và M10 để định kiểu chocác tham số hình thức hoten và mang như sau:
Procedure Xuat1(hoten : Str25);
Procedure Xuat2(mang: M10);
3 Truyền tham số cho chương trình con
Khi truyền tham số trong Pascal, đòi hỏi phải có sự tương ứng về tên củakiểu dữ liệu của các tham số hình thức và tham số thực sự Một số định nghĩa vàqui tắc về truyền tham số trong Pascal:
- Những tham số hình thức nằm sau từ khóa VAR gọi là tham số biến Vớitham số biến, các tham số thực sự bắt buộc phải là biến chứ không được là giá trị.Khi giá trị của tham số biến thay đổi thì nó sẽ làm thay đổi giá trị của tham số thực
sự tương ứng và khi ra khỏi chương trình con đó, tham số thực sự vẫn giữ giá trị đãđược thay đổi đó
- Những tham số hình thức không đứng sau từ khóa VAR gọi là tham số trị,khi đó các tham số thực sự có thể là một biến, một biểu thức, một hằng, hoặc mộtgiá trị số Các tham số trị nhận giá trị từ tham số thực sự khi truyền như là giá trịban đầu, khi giá trị của tham số trị thay đổi thì nó sẽ không làm thay đổi giá trị củatham số thực sự, nghĩa là giá trị của tham số thực sự sau khi thoát khỏi chươngtrình con vẫn luôn bằng với giá trị của tham số thực sự trước khi truyền đến chương
Trang 13trình con đó Do vậy một tham trị không bao giờ là kết quả tính toán của chươngtrình con.
Ví dụ 4: Viết chương trình tính lập phương.
PROGRAM Tinh_Lap_Phuong;
VAR x: integer; {x là biến toàn cục}
PROCEDURE LapPhuong(var a:integer); {a là một tham số biến}
Begin
a:=a*a*a;
End;
BEGIN
write(‘Nhập số cần tính lập phương x = ‘); readln(x);
LapPhuong(x); {tham số thực x được truyền cho tham số biến a}
writeln(‘Lập phương của số vừa nhập = ‘, x);
Readln;
END
Ví dụ 5: Về sự thay đổi giá trị của tham số biến và tham số giá trị
Trong chương trình dưới đây, thủ tục có hai tham số a và b: a là tham số giá trị còn
b là tham số biến Hãy xem sự thay đổi giá trị của 2 biến x và y của chương trình
chính trước và sau khi gọi thủ tục thamso:
Program vidu_5;
Uses crt;
Var x,y: integer;
Procedure thamso(a: integer; var b: integer);
Begin
a:= a + 6;
b:= b + 8;
end;
Trang 14Write(‘ nhap x = ‘); readln(x);
Write(‘ nhap y = ‘); readln(y);
Writeln(‘gia tri hai so vua nhap la x = ‘,x:2,’ va y =’,y:2);
Thamso(x,y);
Writeln(‘ gia tri hai so sau khi goi thu tuc tham so la x = ‘,x:2,’ va y =’,y:2);Readln;
END
Ta thấy sau khi thực hiện chương trình thì x sẽ không thay đổi giá trị còn y
sẽ có giá trị thay đổi Kết quả thực hiện chương trình như sau:
Ví dụ 6: Viết hàm tính ước chung lớn nhất của 2 số nguyên dương, tiếp đó sử dụng hàm này để xây dựng hàm tính bội số chung nhỏ nhất của hai số nguyên dương
- Hàm tính ước chung lớn nhất:
Function UCLN(a,b:integer) : integer;
Var sodu, t : integer;
Begin
If b>a then
Begin
Trang 154 Các bước cần làm khi viết một chương trình con
Bước 1: Đặt câu hỏi chương trình con là Procedure hay Function?
Giải quyết:
Chương trình con là Function khi và chỉ khi thỏa mản đồng thời các yêu cầu sau:
- Nếu ta muốn nhận lại một và chỉ một kết quả mà thôi
- Kết quả phải là kiểu xác định (kiểu vô hướng)
- Có cần dùng tên của Hàm để viết trong các biểu thức hay không ?