MỤC LỤC
I. MỞ ĐẦU................................................................................................................2
1.1. LÝ DO CHỌN ĐỀ TÀI.............................................................................................................2
1.2. MỤC ĐÍCH NGHIÊN CỨU.....................................................................................................3
1.3. ĐỐI TƯỢNG NGHIÊN CỨU...................................................................................................3
1.4. PHƯƠNG PHÁP NGHIÊN CỨU.............................................................................................4
II. NỘI DUNG...........................................................................................................5
2.1. CƠ SỞ LÍ LUẬN.......................................................................................................................5
2.2. THỰC TRẠNG VẤN ĐỀ.........................................................................................................5
2.3. BIỆN PHÁP DẠY HỌC CỤ THỂ...........................................................................................6
1. Một số khái niệm về biến.............................................................................................................6
2. Lời gọi chương trình con..............................................................................................................7
3. Truyền tham số cho chương trình con........................................................................................12
4. Các bước cần làm khi viết một chương trình con.......................................................................15
2.4. KẾT QUẢ................................................................................................................................17
III. KẾT LUẬN VÀ KIẾN NGHỊ............................................................................19
3.1. Kết luận...................................................................................................................................19
3.2. Kiến nghị.................................................................................................................................19
TÀI LIỆU THAM KHẢO..............................................................................................................21
I. 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ực
hoạ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ụng 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, 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 đại họ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
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.
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ết
nhữ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ời
gian vô ích. Để giải quyết những trường hợp như vậy, Pascal cho phép tạo ra các
module, mỗi module mang một đoạn chương trình gọi là chương trình con. Mỗi
chươ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. Khi
cầ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
3
- 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
- Phương pháp phân tích
Để 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ái
niệ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ọi
chươ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 đồng
nghiệ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
5
trong 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ình
con 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ậy
vớ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 sinh
nhằ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ình
con. 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 trong
thâ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ẽ được
giả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ồng
nhau) mà ta dùng chúng khi truyền giá trị cho các tham số hình thức tương ứng của
BEGIN
{ ... các lệnh trong nội bộ thủ tục ... }
END ;
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;
7
Var
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;
BEGIN
Writeln ( ‘Nhap 3 so nguyen: ‘ ) ; Readln (a, b, c ) ;
So_LN ;
Readln;
END.
Trong chương trình trên, thủ tục So_LN được khai báo trước khi nó được
truy xuất, các biến a, b, c được khai báo ở phần khai báo của chương trình chính và
biến max được định nghĩa bên trong thủ tục. Điều này cho ta thấy trong chương
trình con có thể không cần khai báo biến mà có thể sử dụng biến của chương trình
chính.
* Cấu trúc của thủ tục có tham số
If n>=0 then
Begin
giaithua (n);
Writeln (‘Giai thua cua ‘, n, ‘ la: ‘, gt: 10 : 0) ;
End
Else Writeln( ‘ khong tinh duoc giai thua!‘ ) ;
Readln;
END.
Trong chương trình trên m là các tham số hình thức của thủ tục giaithua. Khi
gọi thủ tục giaithua(n) thì tham số thực sự n được truyền tương ứng cho tham số
hình thức m.
9
b. 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 gia
trong 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ức
cù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ường
hợ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ấm
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, ta
cầ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ệu
cho 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ông
qua từ khóa TYPE.
Ví dụ : Procedure Xuat1(hoten : string[25]);
Procedure Xuat2(mang: array[1..10] of integer);
11
Hai 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à M10
thô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 cho
cá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ủa
kiể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:
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;
13
BEGIN
Write(‘ 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;
- 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 ?
15
- Nếu không thỏa mản các tinh chất trên thì chương trình con là Procedure.
Ví dụ : Function BinhPhuong( x: real) : real;
Begin
BinhPhuong := x * x;
End;
(*---------------------------------------------*)
Procedure BinhPhuong( x : real; var y: real);
Begin
y:=x*x;
End.
Xem cách tính c = a2 + b2
+ Nếu dùng Function: c: = BinhPhuong(a) + BinhPhuong(b);
+ Nếu dùng Procedure với một biến trung gian tg:
BinhPhuong(a,tg); c:=tg; (c:=a2)
BinhPhuong(b,tg); c:= c+tg; (c:= a2 + b2)
Như vậy với bài này chúng ta nên chọn chương trình con là hàm (Function) thì sẽ
hợp lí và nhanh hơn.
Bước 2: Giải quyết vấn đề tham số của chương trình con.
Giải quyết :
- Chương trình con có cần tham số không?
- Nếu đối tượng của chương trình con là biến toàn cục thì biến này không cần đưa
vào làm tham số.
- Nếu chương trình phải thực hiện với nhiều đối tượng theo cùng một qui cách ta
phải khai báo tham số ở phần đầu chương trình.
Hs hứng thú với
Hs chưa hứng
giờ học
100%
100%
thú với giờ học
0%
0%
(2). Sau khi thực hiện
Năm học
Lớp
2016-2017
2016-2017
11A1
11A4
2. Bằng quan sát trực tiếp
Trong năm học vừa qua tôi đã áp dụng phương pháp này vào việc giảng dạy,
Tôi thấy rằng học sinh hứng thú hơn trong việc lập trình. Một số học sinh có thể tự
lập trình được các bài toán đơn giản. Các em đã có thể tự xác định được bài toán
trong trường hợp nào dùng Hàm hay Thủ tục.
3. Kiểm tra theo hình thức tự luận
22.2%
25
55.6%
10
11A4
46
8
17.4%
25
54.3%
13
Kết quả trên cho thấy 100% học sinh đạt yêu cầu.
%
22.2%
28.3%
SL
0
0
%
0%
0%
18
III. KẾT LUẬN VÀ KIẾN NGHỊ
3.1. Kết luận
ĐƠN VỊ
Thanh Hóa, ngày 16 tháng 05 năm 2017
CAM KẾT KHÔNG COPY.
Người viết
Đoàn Thị Anh
20
TÀI LIỆU THAM KHẢO
1. Sách giáo khoa tin học 11
Hồ Sĩ Đàm chủ biên
2. Sách giáo viên tin học 11
Hồ Sĩ Đàm chủ biên
3. Câu hỏi và bài tập chọn lọc bám sát chuẩn kiến thức, kỹ năng Tin học lớp 11 –
Quách Tuấn Kiên, Nguyễn Hải Thanh
4. Một số sáng kiến kinh nghiệm và ý kiến của đồng nghiệp.
21