SKKN 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

SKKN 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

 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.

 

doc 13 trang thuychi01 5343
Bạn đang xem tài liệu "SKKN 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", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
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
TRANG
I. Mở đầu.............................................................................................
1
 1.1 Lí do chọn đề tài......................................................................
1
 1.2 Mục đích nghiên cứu...............................................................
1
 1.3 Đối tượng nghiên cứu.............................................................
2
 1.4 Phương pháp nghiên cứu........................................................
2
II. Nội dung của sáng kiến kinh nghiệm..........................................
2
 2.1 Cơ sở lý luận của sáng kiến kinh nghiệm.................................
2
 a. Tham số hình thức................................................................
2
 b. Tham số thực sự..................................................................
3
 c. Tham biến ...........................................................................
3
 d. Tham trị.................................................................................
3
 e. Truyền tham số theo trị........................................................
3
 f. Truyền tham số theo biến......................................................
3
 2.2 Thực trạng vấn đề trước khi áp dụng sáng kiến kinh nghiệm....
4
 2.3 Các giải pháp giải quyết vấn đề................................................
4
 2.3.1 Các bài tập về tham biến và tham trị.................................. 
4
 a. Bài tập 1 ................................................................................ 
4
 b. Bài tập 2................................................................................. 
5
 c. Bài tập 3 ................................................................................
6
 d. Bài tập 4 .................................................................................
7
 2.3.2 Truyền theo trị hay truyền theo biến.................................... 
8
 2.4 Kết quả thu được........................................................................
9
III.Kết luận, kiến nghị.........................................................................
9
 3.1 Kết luận.....................................................................................
9
 3.2 Kiến nghị...................................................................................
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.
 Đư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 
 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 
 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;
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
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
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;
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.
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
11A
(lớp dạy)
11E
(lớp đối chứng)
11C
(lớp dạy)
11D
(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
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ị
- Đố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
TÀI LIỆU THAM KHẢO
[1]. Sách giáo khoa tin học 11	 Hồ Sĩ Đàm chủ biên 
[2]. Lập trình nâng cao trên ngôn ngữ pascal	 Nguyễn Tô Thành chủ biên 
[3]. Một số bài tập tham khảo trên Internet.

Tài liệu đính kèm:

  • docsu_dung_mot_so_bai_tap_de_cung_co_cach_su_dung_tham_bien_va.doc
  • docDanh muc de tai SKKN da duoc xep giai cua tac gia.doc