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

Sử dụng một số bài tập để củng cố cách sử dụng tham biến và tham trị khi viết chương trình con trong pascal

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 (90.86 KB, 13 trang )

SỞ GIÁO DỤC VÀ ĐÀO TẠO THANH HOÁ

TRƯỜNG THPT NGA SƠN

SÁNG KIẾN KINH NGHIỆM

SỬ DỤNG MỘT SỐ BÀI TẬP ĐỂ CỦNG CỐ CÁCH SỬ DỤNG
THAM BIẾN VÀ THAM TRỊ KHI VIẾT CHƯƠNG TRÌNH
CON TRONG PASCAL

Người thực hiện: Nguyễn Văn Hải
Chức vụ:
Giáo viên
SKKN thuộc lĩnh vực môn: Tin Học

THANH HOÁ NĂM 2018


MỤC LỤC
NỘI DUNG
I. Mở đầu.............................................................................................
1.1 Lí do chọn đề tài......................................................................
1.2 Mục đích nghiên cứu...............................................................
1.3 Đối tượng nghiên cứu.............................................................
1.4 Phương pháp nghiên cứu........................................................
II. Nội dung của sáng kiến kinh nghiệm..........................................
2.1 Cơ sở lý luận của sáng kiến kinh nghiệm.................................
a. Tham số hình thức................................................................
b. Tham số thực sự..................................................................
c. Tham biến ...........................................................................
d. Tham trị.................................................................................


e. Truyền tham số theo trị........................................................
f. Truyền tham số theo biến......................................................
2.2 Thực trạng vấn đề trước khi áp dụng sáng kiến kinh nghiệm....
2.3 Các giải pháp giải quyết vấn đề................................................
2.3.1 Các bài tập về tham biến và tham trị..................................
a. Bài tập 1 ................................................................................
b. Bài tập 2.................................................................................
c. Bài tập 3 ................................................................................
d. Bài tập 4 .................................................................................
2.3.2 Truyền theo trị hay truyền theo biến....................................
2.4 Kết quả thu được........................................................................
III.Kết luận, kiến nghị.........................................................................
3.1 Kết luận.....................................................................................
3.2 Kiến nghị...................................................................................

TRANG
1
1
1
2
2
2
2
2
3
3
3
3
3
4

4
4
4
5
6
7
8
9
9
9
10


I.MỞ ĐẦU
1.1. Lí do chọn đề tài.
Sự phát triển như vũ bão của khoa học công nghệ - kỹ thuật hiện đại đã đặt giáo
dục vào thử thách mới, đó là nhằm đào tạo ra thế hệ tương lai vừa có phẩm chất,
vừa phải có năng lực tiếp cận khoa học hiện đại để hội nhập với xu thế chung của
xã hội. Hiện nay trong các trường phổ thông đã chú trọng tới vấn đề này.
Nếu như trước đây môn Tin học chủ yếu chỉ truyền đạt cho các em kiến thức lý
thuyết, hàn lâm thì nay đã chú trọng tới thực hành và giải các bài tập, giúp các em
làm quen với lập trình trên máy tính, do đó các trường phổ thông đã được trang bị
cơ sở vật chất phục vụ dạy và học: phòng máy, phòng nghe nhìn đã được chuẩn
hóa, học sinh ý thức được môn học nên tập trung hơn,...Tuy nhiên, những thay đổi
đó chưa thực sự mang lại hiệu quả cao trong việc tiếp thu và nhận thức bài học của
học sinh và phần lớn học sinh chưa có điều kiện để tiếp cận với nhiều tài liệu, cũng
như thời gian để làm việc với máy tính đang còn ít. Môn Tin học đối với học sinh là
môn khó, đặc biệt là chương trình lớp 11 vì kiến thức lập trình đa số với nhiều học
sinh là khó tiếp cận.
Trong quá trình giảng dạy chương trình lớp 11 học sinh gặp rất nhiều khó khăn

trong việc giải quyết các bài tập từ việc soạn thảo chương trình cho đến việc cho
chương trình chạy được.Việc dạy học nội dung chương trình con, tham số hình thức
tham biến, tham trị là những khái niệm trừu tượng đối với học sinh, học sinh
thường gặp khó khăn trong việc tiếp thu các kiến thức về lập trình. Do đó để phần
nào giúp học sinh viết và sử dụng chương trình con, tôi chọn sáng kiến kinh
nghiệm : “Sử dụng một số bài tập để củng cố cách sử dụng tham biến và tham trị
khi viết chương trình con trong pascal ”. Giúp học sinh chọn tham biến hoặc
tham trị khi sử dụng chương trình con.
1.2. Mục đích nghiên cứu.

1


Đưa ra khái niệm về tham biến và tham trị để qua đó thấy được bản chất của hai
khái niệm này trong pascal. Củng cố cách viết và sử dụng chương trình con trong
pascal
1.3. Đối tượng nghiên cứu.
- Nghiên cứu khái niệm tham biến và tham trị khi viết chương trình con trong
pascal và một số bài tập về chương trình con.
- Thực trạng học và làm bài tập môn Tin học của học sinh khối 11 tại trường THPT
Nga Sơn.
1.4. Phương pháp nghiên cứu.
- Phương pháp nghiên cứu lý thuyết.
- Phương pháp nghiên cứu thực tiễn.
- Phương pháp thực nghiệm sư phạm.
- Phương pháp thống kê toán học.
II. NỘI DUNG SÁNG KIẾN KINH NGHIỆM
Khi học sinh học bài học Bài 18 ‘Ví dụ cách viết và sử dụng chương trình
con’ học sinh đã có rất nhiều khó khăn, nhầm lẫn trong việc lựa chọn cách sử dụng
hàm, sử dụng thủ tục trong các bài toán khác nhau. Sáng kiến kinh nghiệm này sẽ

giúp học sinh củng cố cách sử dụng tham biến và tham trị khi sử dụng chương trình
con trong pascal.
2.1 .Cơ sở lí luận
Việc sử dụng chương trình con được thể hiện qua một số khái niệm về tham biến,
tham trị, biến toàn cục, biến địa phương, tham số hình thức, tham số thực sự. Trong
sáng kiến kinh nghiệm này xin được trình bày về phần tham biến và tham trị.
a. Tham số hình thức:
Các biến được khai báo cho dữ liệu vào/ra của chương trình con được gọi là
tham số hình thức[1]
Trong mục 2.1 Khái niệm về tham số hình thức được tham khảo từ tài liệu tham khảo số 1
2


b. Tham số thực sự :
Trong lời gọi chương trình con, các biến và hằng thay thế tương ứng bởi tham số
hình thức được gọi là tham số thực sự [1].
c. Tham biến:
Trong lời gọi chương trình con các tham số hình thức được thay thế tương ứng là
tên các biến chứa dữ liệu ra được gọi là tham biến [1].
d. Tham trị:
Trong lời gọi chương trình con các tham số hình thức được thay thế tương ứng là
các giá trị cụ thể được gọi là tham trị [1].
Để phân biệt giữa tham trị và tham biến, ngôn ngữ lập trình pascal sử dụng từ
khóa var để khai báo những tham số biến.
e. Truyền tham số theo trị:
Việc thực hiện truyền tham số theo trị được thực hiện qua bản sao. Giá trị bên
ngoài (hằng, biến, hàm, biểu thức) được sao chép vào một vùng nhớ được cấp phát
tương ứng với kích thước của tham số. Chương trình con sẽ làm việc với dữ liệu
chứa trong bản sao này theo những lệnh đã xây dựng cho tham số tương ứng.Nếu
trong chương trình con có những lệnh làm thay đổi giá trị của tham số hình thức thì

những thay đổi này không có ảnh hưởng gì đến giá trị của biến được truyền ở đầu
vào vì những thay đổi này chỉ được thực hiện trên bản sao tương ứng.
f. Truyền tham số theo biến:
Việc truyền tham số theo biến được thực hiện vào chính địa chỉ của biến được
truyền, nghĩa là mọi lệnh của chương trình con đối với tham số hình thức cũng
chính là các lệnh đối với các biến này. Do đó truyền tham số theo trị làm thay đổi
giá trị của tham số hình thức những thay đổi này cũng chính là những thay đổi trên
biến được truyền.
Trong mục 2.1 Khái niệm về tham số thực sự, tham biến, tham trị được tham khảo từ tài liệu
tham khảo số 1
3


2.2. Thực trạng vấn đề trước khi áp dụng sáng kiến kinh nghiệm
Mặc dù hiện nay công tác dạy và học môn Tin học tại các trường phổ thông đã
được quan tâm, cơ sở vật chất được trang bị nhưng chất lượng học sinh vẫn chưa
thực sự được nâng cao.
Tại trường THPT Nga Sơn, phần lớn học sinh có ý thức học tập và hứng thú với
môn Tin học. Trong những năm trở lại đây, ý thức được yêu cầu của xã hội, cũng
như là điều kiện cơ sở vật chất được nâng lên nên các em học sinh càng dành nhiều
thời gian cho môn học, từ đó mà chất lượng học sinh được nâng lên, đặc biệt ở lớp
10 và lớp 12. Tuy nhiên, có một thực tế mà tôi và các đồng nghiệp trong tổ còn
nhiều băn khoăn, trăn trở đó là chất lượng học sinh ở khối lớp 11 chưa cao, đặc biệt
là các bài tập sử dụng chương trình con, khi nào khai báo tham số hình thức là tham
biến hoặc tham trị nhiều học sinh còn lúng túng , tỉ lệ giải quyết được các bài toán
còn thấp. Do đó học sinh rất ngại làm các bài tập về chương trình con.
2.3. Các giải pháp để giải quyết vấn đề
2.3.1 Các bài tập về tham biến và tham trị
a. Bài tập 12: Viết chương trình con thực hiện hoán đổi giá trị của hai số nguyên a
và b được nhập vào từ bàn phím.

Đối với bài toán hoán đổi giá trị của hai số a và b học sinh sẽ tự hỏi chương trình
con dùng hàm hay thủ tục. Giáo viên giải thích cho học sinh bài toán này
không trả về một giá trị nào qua tên của chương trình con nên phải khai báo
chương trình con ở đây là thủ tục. Đoạn chương trình một học sinh viết như
sau :
Program baitap1;
Var a,b :integer;
Procedure hoan_doi(x,y: integer);
Var tg:integer;

4


Bài tập 1 được tham khảo từ tài liệu tham khảo số 1

Begin
tg:=x; x:=y;

y:=tg;

End;
BEGIN
Write('Nhap gia tri cua a va b'); read(a,b);
Writeln('Gia tri cua a va b truoc khi hoan doi');
Writeln(a:6,b:6);
Hoan_doi(a,b);
Writeln('Gia tri cua a va b sau khi hoan doi');
Writeln(a:6,b:6);
END.
Trong bài tập trên thủ tục hoan_doi(x,y: integer) dùng để hoán đổi giá trị của hai

biến nguyên x và y. Tuy nhiên khi chạy chương trình , điều này không xảy ra. Giá
trị của hai biến x và y trước và sau khi gọi thủ tục hoan_doi(x,y) vẫn không thay
đổi. Lỗi ở đây là học sinh đã khai báo thủ tục hoan_doi(x,y) được khai báo truyền
theo trị nên các giá trị của biến x và y không bị ảnh hưởng. Nếu sửa lại việc khai
báo tham số trong thủ tục hoán đổi là truyền theo biến( thêm từ khóa Var trước các
tên tham số x và y) thì chương trình cho kết quả mong muốn.
b. Bài tập 22: Viết chương trình con thực hiện tối giản phân số với tử số là a và
mẫu số là b (b ≠0). Các số a và b được nhập vào từ bàn phím
Program baitap2;
Var a,b :integer;
Procedure UCLN( var x,y: integer): integer;
Begin
5


Bài tập 2 được tham khảo từ tài liệu tham khảo số 2

While (x>0) and (y>0) do
If x>y then x:=x mod y else y:= y mod x;
UCLN:=x+y;
End;
BEGIN
Write('Nhap gia tri cua tu so a=',a); read(a);
Write('Nhap gia tri cua mau so b=',b); read(b);
d:= UCLN(a,b);
Writeln('Phan so toi gian', a div d, '/' ,b div d);
END.
Chương trình trên đưa ra màn hình dạng tối giản của một phân số khi nhập từ bàn
phím tử số và mẫu số. Chương trình xây dựng hàm UCLN(x,y) trả về ước chung
lớn nhất của hai số nguyên dương x và y, dùng hàm này để tính d là ước chung lớn

nhất của tử và mẫu đã nhập. Dạng tối giản của phân số nhận được bằng cách chia
lấy nguyên cả tử và mẫu cho số d. Tuy nhiên khi chạy chương trình bạn sẽ luôn
nhận được kết quả là 1/1 cho mọi phân số. Lỗi sảy ra do hàm UCLN được tổ chức
truyền theo biến nên sau lời gọi UCLN(a,b) ta được đồng thời các giá trị d, a, b
bằng nhau. Nếu sửa lại việc khai báo truyền tham số theo trị (bỏ từ khóa Var trước
tham số hình thức x ,y) thì chương trình sẽ cho kết quả đúng.
c. Bài tập 32: Viết chương trình thực hiện tính tổng s=f(x)+f(x) với f(x)=x+1 , x
được nhập vào từ bàn phím.
Program baitap3;
Var x:integer;
Function F(var y:integer):integer;
Begin
6


Bài tập 3 được tham khảo từ tài liệu tham khảo số 2

y:=y+1;
F:=y;
End;
BEGIN
Write('Moi nhap x'); read(x);
writeln(F(x)+F(x));
END;
Chương trình đơn giản trên với x nhập vào là 5 thì bằng cách suy luận thông
thường ta nhận được kết quả là 12. Tuy nhiên khi chạy chương trình sẽ nhận được
thông báo là 13. Bây giờ sửa lại biểu thức F(x) +F(x) bằng biểu thức 2*F(x) ta nhận
được kết quả là 12. Sự khác nhau thật khó giải thích cho những học sinh mới lập
trình. Chương trình chúng ta viết vẫn đúng nhưng khi thực hiện biểu thức F(x)
+F(x) , giá trị F(x) được gọi hai lần. Lần gọi thứ nhất x=5 khi đó F(x)=6 , tại lần

gọi thứ hai x=6 khi đó F(x)=7 và ta nhận được kết quả là 13. Biểu thức 2*F(x) chỉ
tính một lần nên kết quả là 12. Chương trình trên sửa lại truyền cho đối số x của
hàm F là theo trị thì kết quả không còn khác nhau nữa.
Việc tổ chức truyền theo trị hay truyền theo biến không thể tùy tiện vì có thể dẫn
đến những kết quả khác nhau.
d. Bài tập 4:
Program baitap4;
Var a,b,c,d :integer;
Procedure tong_hieu( a, b : integer; var c, d: integer);
Begin
c:= a-b;
d:=a+b;
a:=2*a;
7


Bài tập 4 được tham khảo từ tài liệu tham khảo số 3

End;
BEGIN
Write('Moi nhap a, b, c, d'); read(a,b,c,d);
Tong_hieu(a,b,c,d);
Write('a:6, b:6, c:6, d:6');
END;
Chương trình trên khi thực hiện với bộ giá trị nhập vào tương ứng theo a, b, c, d là
10, 3, 5, 6 nhiều học sinh sẽ cho kết quả a=30, b= 3, c=7 ,d =13 nhưng khi thực
hiện chương trình kết quả hoàn toàn khác. Trong thủ tục tong_hieu các tham số a
và b được khai báo là tham trị nên giá trị không thay đổi nên kết quả a=10 và b=3
còn tham số c và d được khai báo là tham biến nên kết quả sẽ thay đổi tương ứng
với giá trị 7 và 13.

2.3.2 Truyền theo trị hay truyền theo biến
Từ những bài tập trên ta có thể rút ra kết luận về việc truyền tham số trong
chương trình con :
• Nếu trong thân chương trình con không có những lệnh làm thay đổi giá trị
tham số hình thức thì việc truyền tham số theo trị hay truyền theo biến
không gây ra một sự khác biệt nào về kết quả mà chương trình con mang lại.
• Trong trường hợp chương trình con có những lệnh làm thay đổi giá trị tham
số hình thức thì phải tùy vào nhiệm vụ chương trình con đối với tham số mà
quyết định truyền:
 Nếu chương trình con có nhiệm vụ phải thay đổi tham số thực sự
thì phải tổ chức truyền theo biến cho tham số này.
 Nếu tham số được dùng để gửi giá trị ở đầu vào cho chương trình
con hoạt động mà không làm hỏng giá trị này thì phải tổ chức
truyền theo trị cho tham số này.
8


2.4. Kết quả thu được.

Trong quá trình trao đổi, thảo luận, trình bày học sinh được thể hiện khả năng
vận dụng, hiểu biết của mình nên các em tỏ ra hăng hái trong việc giơ tay phát biểu
tranh luận. Đồng thời tiết học trở nên sinh động hơn và giáo viên không đóng vai
trò là người xây dựng lý luận mà học sinh là người chủ động để giải quyết các vấn
đề.
Tiến hành trong giảng dạy ở các lớp, tôi nhận thấy sau khi được hướng dẫn học
sinh đã biết làm bài tập. Từ đó, kết quả kiểm tra, đánh giá đã có sự thay đổi theo
hướng tích cực, kết quả cụ thể ở lớp áp dụng dạy và lớp đối chứng như sau:
Tỉ lệ (%)\Lớp
Giỏi
Khá

Trung bình
Yếu
Kém

11A

11E

11C

11D

(lớp dạy)
25
15
15
0
0

(lớp đối chứng)
14
40
12
13
0

(lớp dạy)
10
14
22

8
0

(lớp đối chứng)
8
13
23
20
3

III. KẾT LUẬN, KIẾN NGHỊ
3.1. Kết luận
Sau khi vận dụng vào để củng cố, hướng dẫn học sinh thực hiện, tôi nhận thấy:
- Học sinh tiếp thu bài tốt hơn, các em đã làm được bài tập, chạy được chương trình
do đó tạo hứng thú trong học tập.
- Kết quả kiểm tra, đánh giá được nâng lên. Ở các lớp được hướng dẫn thực hiện, tỉ
lệ đạt khá giỏi tăng lên, không còn học sinh yếu kém hoặc tỉ lệ này còn rất thấp.
- Khi vận dụng vào hướng dẫn cho học sinh đòi hỏi bản thân phải tiếp cận nhiều tài
liệu để có nguồn tri thức phong phú, là điều kiện để tôi nâng cao tính tự học, nâng
cao kiến thức.
3.2. Kiến nghị
9


- Đối với đồng nghiệp, cần tăng cường hướng dẫn học sinh làm nhiều bài tập để
việc kiểm tra đánh giá học sinh bằng việc sử dụng bài tập, ngôn ngữ lập trình được
đồng bộ.
- Đối với nhà trường, quan tâm; xây dựng cơ sở vật chất đạt chuẩn để việc giảng
dạy tin học, đặc biệt là các giờ thực hành được thuận lợi.
- Đối với Sở Giáo dục, cần thường xuyên tập huấn về chuyên môn để giáo viên có

cơ hội được trao đổi, học hỏi chuyên môn nghiệp vụ của giáo viên trong các trường
THPT khác nhau.
XÁC NHẬN CỦA THỦ TRƯỞNG ĐƠN VỊ

Thanh Hóa, ngày 25 tháng 5 năm 2018
Tôi xin cam đoan đây là SKKN của
mình viết, không sao chép nội dung của
người khác.

Nguyễn Văn Hải

10


TÀI LIỆU THAM KHẢO
[1]. Sách giáo khoa tin học 11

Hồ Sĩ Đàm

[2]. Lập trình nâng cao trên ngôn ngữ pascal

Nguyễn Tô Thành

[3]. Một số bài tập tham khảo trên Internet.

chủ biên
chủ biên




×