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

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 (312.54 KB, 12 trang )

SỞ GIÁO DỤC VÀ ĐÀO TẠO THANH HOÁ
TRƯỜNG THPT NGA SƠN

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

Họ tên:
Nguyễn Văn Hải
Chức vụ:
Giáo viên
Đơn vị công tác :
Trường THPT Nga Sơn
SKKN thuộc bộ môn: Tin học

THANH HOÁ NĂM 2019


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 .................................................................................
e. Bài tập 5 .................................................................................
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ị...................................................................................

1

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

4
4
4
4
4
5
5
6
7
8
9
9
10
10
10


1. 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.
Nghị quyết Hội nghị Trung ương 8 khóa XI về đổi mới căn bản, toàn diện giáo dục
và đào tạo nêu rõ: “Tiếp tục đổi mới mạnh mẽ phương pháp dạy và học theo hướng
hiện đại; phát huy tính tích cực, chủ động, sáng tạo và vận dụng kiến thức, kỹ năng
của người học; khắc phục lối truyền thụ áp đặt một chiều, ghi nhớ máy móc. Tập
trung dạy cách học, cách nghĩ, khuyến khích tự học, tạo cơ sở để người học tự cập
nhật và đổi mới tri thức, kỹ năng, phát triển năng lực. Chuyển từ học chủ yếu trên
lớp sang tổ chức hình thức học tập đa dạng, chú ý các hoạt động xã hội, ngoại

khóa, nghiên cứu khoa học. Đẩy mạnh ứng dụng công nghệ thông tin và truyền
thông trong dạy và học” [1].
Điều 24.2 Luật giáo dục qui định: “Phương pháp giáo dục phổ thông phải phát
huy tính tích cực, tự giác, chủ động của học sinh; phù hợp với đặc điểm từng lớp
học, môn học; bồi dưỡng phương pháp tự học, rèn luyện kỹ năng vận dụng kiến
thức vào thực tiễn, tác động đến tình cảm, đem lại niềm vui, hứng thú học tập cho
học sinh”[2].
Để thực hiện tốt mục tiêu về đổi mới căn bản, toàn diện GD&ĐT theo Nghị quyết
số 29-NQ/TW, Luật giáo dục, giáo viên cần có nhận thức đúng về bản chất của đổi
mới phương pháp dạy học theo định hướng phát triển năng lực người học và một số
biện pháp đổi mới phương pháp dạy học theo hướng 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, hiện nay 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 lập trình như : việc soạn thảo chương trình, gỡ lỗi
chương trình, chạy chương trình, kiểm thử....
[1] Nghị quyết Hội nghị TW8 – Khóa XI về đổi mới căn bản, toàn diện giáo dục và đào tạo
[2] Luật Giáo dục 2005
2


Việc dạy học nội dung chương trình con, các khái niệm như: 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, các em 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à lựa chọn tham biến, tham trị khi viết chương trình tôi chọn sáng
kiến kinh nghiệm : “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 ”.
1.2. Mục đích nghiên cứu.
Đư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.
2. 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 gặp 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. 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[3]
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ự [3].
[3]: Hồ Sĩ Đàm – SGK Tin học 11
3


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 [3].
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ị [3].
Để 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.
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. Các tiết học được sử dụng máy chiếu, phòng thực hành nhiều hơn
giúp cho học sinh học tập sinh động, trực quan hơn. 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ác bài tập sử dụng chương trình con, giải quyết được
các bài tập về lập trình chưa được nhiều. Những khái niệm về chương trình con
như: tham số hình thức, tham biến, 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 , khó khăn khi 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ị
[3]: Hồ Sĩ Đàm – SGK Tin học 11
4


a. Bài tập 1[3]: 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.
Program baitap1;
Var a,b : longint;
Procedure hoan_doi(x,y: longint);
Var tg: longint;
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);
Readln; Readln;
END.
Giá trị nhập vào
4 6
4 6
4 6

Kết quả lấy ra

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 giá trị của hai biến nhập vào
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 2[4]: 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,d : longint;
Function UCLN( var x,y: longint): longint;
[3]: Hồ Sĩ Đàm – SGK Tin học 11
[4]: Nguyễn Tô Thành - Lập trình nâng cao trên ngôn ngữ pascal
5



Begin
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='); read(a);
Write('Nhap gia tri cua mau so b='); read(b);
d:= UCLN(a,b);
Writeln('Phan so toi gian', a div d, '/' ,b div d);
readln; readln;
END.
Giá trị nhập vào
Kết quả lấy ra
2 6
1/0
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. Với các giá trị nhập vào a và b tương ứng là 2 và
6 ta được kết quả trên màn hình là 1/0. Đây là kết quả không đúng do chương trình
con tìm ước chung lớn nhất các tham số được khai báo là tham biến. Để có kết quả
đúng chương trình cần sửa lại phần đầu chương trình con các tham số được khai
báo là tham trị.
c. Bài tập 3[4]: 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
y:=y+1;
F:=y;
End;
BEGIN
Write('Moi nhap x'); read(x);
writeln(F(x)+F(x));
Readln; readln;
END.
[4]: Nguyễn Tô Thành - Lập trình nâng cao trên ngôn ngữ pascal

6


Giá trị nhập vào
Kết quả lấy ra
5
13
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ì ta được kết quả mong muốn.
d. Bài tập 4[5]: Lập trình nhập vào bốn số nguyên a,b,c,d. Tính giá trị của các số
c=a-b; d= a+b; a=2*a. Đưa kết quả ra màn hình.

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;
End;
BEGIN
Write('Moi nhap a, b, c, d'); read(a,b,c,d);
Tong_hieu(a,b,c,d);
Write(a,' ', b,' ', c,' ', d);
Readln; readln;
END.
Giá trị nhập vào
Kết quả lấy ra
10 3 5 6
10 3 7 13
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=20, 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.
[5]: Một số bài tập trên internet

7


e. Bài tập 5[5]: Viết chương trình thực hiện sắp xếp các mảng a và b có kiểu

dữ liệu nguyên
Program baitap5;
type mang=array[1..100] of integer;
var a,b: mang;
n:byte;
{------------------------------------------------------}
Procedure nhap(c:mang);
var i: integer;
begin
for i:=1 to n do
begin
write('nhap phan tu thu i= ',i,' '); read(c[i]);
end;
end;
{------------------------------------------------------}
Procedure sapxep(c:mang);
var i,j,tg: integer;
Begin
for i:=1 to n-1 do
for j:=i+1 to n do
if c[i]>c[j] then
begin
tg:=c[i]; c[i]:=c[j]; c[j]:=tg;
end;
End;
{----------------------------------------------------}
procedure in_mang(c:mang);
var i: integer;
begin
for i:=1 to n do write(c[i],' ');

writeln;
end;
{-------------------------------------------------------}
BEGIN
write('nhap so phan tu cua hai mang a va b'); read(n);
nhap(a);
nhap(b);
[5]: Một số bài tập trên internet
8


sapxep(a);
sapxep(b);
in_mang(a);
in_mang(b);
readln;
readln;
END.
Giá trị nhập vào

Kết quả lấy ra

4
3421
3675

0000
0000

Chương trình trên với giá trị n nhập vào bằng 4, mảng a được nhập giá trị các phần

tử lần lượt là 3,4,2,1; mảng b được nhập giá trị là 3,6,7,5 . Sau khi thực hiện lời gọi
sắp xếp mảng a và sắp xếp mảng b ta nhập được kết quả lấy ra là những số 0, lỗi ở
đây do người sử dụng tổ chức chương trình theo kiểu tham trị ở mỗi chương trình
con. Để chương trình chạy kết quả đúng như mong muốn người viết chương trình
sửa lại phần đầu các đoạn chương trình con: phần nhập và phần khai báo là truyền
tham số theo biến.
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.
Việc truyền tham số theo biến hay tham số theo trị không thể tùy tiện vì có
thể dẫn đến những kết quả khác nhau.
2.4. Kết quả thu được.

9


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, 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:
11E
11G
11H
11I
Tỉ lệ (%)\Lớp
(lớp dạy)
(lớp đối chứng)
(lớp dạy)
(lớp đối chứng)
Giỏi
25
14
10
8
Khá
15
40
14
13
Trung bình
15
12
22
23
Yếu
0

13
8
20
Kém
0
0
0
3
3. 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ị
- Đố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, thực
hành để học sinh có kỹ năng về lập trình và giải quyết nhiều dạng bài toán.
- Đối với nhà trường cần quan tâm xây dựng cơ sở vật chất, thiết bi để 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 Thanh Hóa, ngày 25 tháng 5 năm 2019
ĐƠN VỊ
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.

10


Nguyễn Văn Hải
TÀI LIỆU THAM KHẢO
1
2
3
4
5

Nghị quyết Hội nghị TW8 – Khóa XI về đổi mới căn bản, toàn diện giáo dục
và đào tạo
Luật Giáo dục 2005
Hồ Sĩ Đàm - Sách giáo khoa tin học 11
Nguyễn Tô Thành - Lập trình nâng cao trên ngôn ngữ pascal
Một số bài tập tham khảo trên Internet.

11



×