NhËn biÕt vÒ truyÒn tham biÕn vµ tham trÞ trong
Ch-¬ng tr×nh con b»ng m« t¶ lÖnh
PHẦN MỞ ĐẦU
I. LÍ DO CHỌN ĐỀ TÀI
Theo những nguyên tắc biên soạn SGK, điểm nổi bật nhất trong SGK Tin
học lớp 11 là tinh thần tích hợp kiến thức, kỹ năng trong từng bài học, chú trọng
tới việc thực hành. Điều này tạo điều kiện cho học sinh phát triển đồng thời cả
về kiến thức và kỹ năng làm việc. Điểm nổi bật thứ hai là tinh thần đổi mới
phương pháp dạy học theo hướng tích cực hoá hoạt động học tập của học sinh.
iện nay trong lí luận dạy học n i chung và lí luận dạy học m n Tin học
n i riêng yêu cầu s d ng khá nhiều phương pháp: phương pháp thảo luận,
phương pháp đặt câu hỏi, phương pháp chia nh m…
Tuy nhiên với bất kỳ một phương pháp nào thì giáo viên vẫn phải c một
yêu cầu chung là phải hiểu rõ về bản chất của vấn đề thì từ đ mới c khả năng
s d ng một hoặc nhiều phương pháp thích hợp để truyền đạt hay gợi mở vấn đề
cho học sinh.
Là một giáo viên giỏi, trước hết phải là một người học giỏi, người ta n i:
Nếu anh nghe
->
thì anh sẽ quên
Nếu anh thấy
->
thì anh sẽ nhớ
Nếu anh làm
->
thì anh sẽ hiểu
Nếu anh giảng
->
thì anh sẽ tinh th ng
Trong chương trình Tin học phổ th ng thì chương trình Tin học lớp 11 tìm
hiểu về ng n ngữ lập trình mà c thể là ng n ngữ lập trình Pascal. Đây là một
ng n ngữ kh ng chỉ chặt chẽ về mặt cú pháp mà còn chặt chẽ về mặt dữ liệu.
Chính vì thế, thảo chương bằng ng n ngữ Pascal là một cơ hội tốt kh ng chỉ rèn
luyện tư duy mà còn rèn luyện tính cẩn thận và chính xác.
Ng n ngữ Pascal được dùng để viết các chương trình ứng d ng trong nhiều
lĩnh vực. Với văn phạm sáng sủa, dễ hiểu, với khả năng đủ mạnh, Pascal được
xem là ng n ngữ thích hợp nhất để giảng dạy ở các trường phổ th ng và đại học.
Trong suốt quá trình giảng dạy từ khi m n Tin học được đưa vào trường PT
đến nay, t i nhận thấy rằng khi giảng dạy về nội dung của Chương 6 "Chương
trình con và lập trình c cấu trúc" phần lớn học sinh đều kh ng hiểu được cách
truyền tham trị và tham biến như thế nào mà lý do chính là c một số giáo viên
cũng chỉ dạy những gì mình biết chứ cũng chưa hiểu rõ bản chất của vấn đề.
Từ những lý do trên, qua quá trình giảng dạy trên lớp của bản thân t i đã
chọn đề tài "Một cách nhận biết và truyền tham biến và tham trị trong Chương
trình con" là đề tài Sáng kiến kinh nghiệm của mình để c thể giúp cho giáo
Design: Lª Anh Dòng - tr-êng THPT Lª V¨n H-u
1
NhËn biÕt vÒ truyÒn tham biÕn vµ tham trÞ trong
Ch-¬ng tr×nh con b»ng m« t¶ lÖnh
viên, học sinh hiểu rõ được vấn đề tương đối phức tạp này.
II. MỤC ĐÍCH CỦA SÁNG KIẾN KINH NGHIỆM
- G p phần thúc đẩy quá trình đổi mới phương pháp dạy học theo hướng
phát huy tính tích cực của học sinh.
- G p phần nâng cao kiến thức và khả năng thực hành cho giáo viên.
- Giúp học sinh c khả năng nhận thức kiến thức và tự hoàn thiện kiến
thức.
III. KHÁCH THỂ VÀ ĐỐI TƯỢNG NGHIÊN CỨU
Khách thể: ọc sinh lớp 11 trường T PT Lê Văn ưu.
Đối tượng: Truyền tham biến và tham trị trong chương trình con, ng n ngữ
lập trình Pascal.
IV. NHIỆM VỤ NGHIÊN CỨU
Trên cơ sở nhận thức, tìm hiểu và phân tích, đề tài đưa ra các bài thực hành
c thể về truyền tham trị và tham biến trong chương trình con, trong ng n ngữ
lập trình Pascal.
V. PHƯƠNG PHÁP NGHIÊN CỨU
Đề tài s d ng các phương pháp:
- Đọc tài liệu.
- Thực nghiệm.
- Phân tích đánh giá
VI. NHỮNG ĐÓNG GÓP MỚI
iệu quả và chất lượng trong dạy học ph thuộc vào nhiều yếu tố. Tuy
nhiên việc giáo viên nhận thức vấn đề c sâu sắc, chính xác hay kh ng, chuẩn bị
thiết kế c chu đáo hay kh ng cũng như trong phương pháp giảng dạy việc nêu
vấn đề và giải quyết vấn đề đối với một bài học đ ng một vai trò quan trọng.
Một cách nhận thức, cách hiểu, phân tích và đưa ra các chương trình c thể mà
t i đưa ra sau đây, hy vọng sẽ g p một phần nhỏ định hướng để đồng nghiệp rút
kinh nghiệm trong nhiệm v giảng dạy tốt m n Tin học.
Design: Lª Anh Dòng - tr-êng THPT Lª V¨n H-u
2
NhËn biÕt vÒ truyÒn tham biÕn vµ tham trÞ trong
Ch-¬ng tr×nh con b»ng m« t¶ lÖnh
PHẦN NỘI DUNG
I. CƠ SỞ LÍ LUẬN
Ng n ngữ lập trình (programming language) là một tập con của ng n ngữ
máy tính. Đây là một dạng ng n ngữ được chuẩn h a (đối lập với ng n ngữ tự
nhiên). N được dùng để miêu tả những quá trình, những ngữ cảnh một cách rất
chi tiết.
Ng n ngữ lập trình là một hệ thống được ký hiệu h a để miêu tả những tính
toán (qua máy tính) trong một dạng mà cả con người và máy đều c thể đọc và
hiểu được.
Theo định nghĩa ở trên thì một ng n ngữ lập trình phải thỏa mãn được hai
điều kiện cơ bản là:
1. N phải dễ hiểu và dễ s d ng đối với người lập trình, để con người c
thể dùng n giải quyết các bài toán khác.
2. N phải miêu tả một cách đầy đủ và rõ ràng các tiến trình (process), để
c thể chạy được trên các máy tính khác
Chương trình con (subprograms) là một phép toán trừu tượng được định
nghĩa bởi người lập trình. Chương trình con c các đặc tính như sau:
Mỗi chương trình con c một điểm vào duy nhất.
Chương trình gọi tạm ngừng việc thực hiện trong quá trình thực hiện
chương trình con.
Ðiều khiển lu n được trả về chương trình gọi khi sự thực hiện chương trình
con kết thúc.
Khi n i đến chương trình con, chúng ta quan tâm đến hai khía cạnh: sự
định nghĩa chương trình con và lời gọi thực hiện chương trình con.
Sự đặc tả chương trình con bao gồm:
* Tên của chương trình con
* Số lượng các tham số, thứ tự của chúng và kiểu dữ liệu của mỗi một tham
số .
* Số lượng các kết quả, thứ tự của chúng và kiểu dữ liệu của mỗi một kết
quả.
* oạt động được thực hiện bởi chương trình con.
Chương trình con biểu diễn một hàm toán học, là một ánh xạ từ tập hợp các
tham số đến tập hợp các kết quả.
Design: Lª Anh Dòng - tr-êng THPT Lª V¨n H-u
3
NhËn biÕt vÒ truyÒn tham biÕn vµ tham trÞ trong
Ch-¬ng tr×nh con b»ng m« t¶ lÖnh
- Chương trình con trả về một kết quả duy nhất trong tên chương trình con
thường được gọi là một hàm. Cú pháp điển hình đặc tả hàm được quy định trong
ng n ngữ lập trình Pascal:
Function Ten_ham(Danh sách các tham số cùng với kiểu dữ liệu tương
ứng): Kiểu kết quả trả về
Ví d :
Function FN(x:real; y:integer) : real
Ðặc tả này xác định hàm FN : REAL x INTEGER -> REAL
- Chương trình con trả về nhiều hơn một kết quả hoặc kh ng c kết quả trả
về trong tên chương trình con thường được gọi là thủ t c (procedure hoặc
subroutine). Cú pháp điển hình đặc tả thủ t c được quy định trong ng n ngữ lập
trình Pascal:
Procedure Ten_thu_tuc(Danh sách các tham số cùng với kiểu dữ liệu tương
ứng)
Ví d :
Procedure SUB(X:real; Y:Integer; Var Z:Real; Var U:boolean);
Trong sự đặc tả này, tham số c tên đứng sau VAR biểu thị một kết quả
hoặc một tham số c thể bị thay đổi. Cú pháp của sự đặc tả này là:
Procedure SUB(X: IN Real; Y: IN Integer; Z: IN OUT Real; U: OUT
Boolean)
Thủ t c này khai báo một chương trình con với sự xác định:
SUB : Real x Integer x Real -> Real x Boolean
Các từ IN, OUT và IN OUT phân biệt ba trường hợp sau đây: IN chỉ định
một tham số kh ng thể bị thay đổi bởi cương trình con, IN OUT chỉ định một
tham số c thể bị thay đổi và OUT chỉ định một kết quả.
Như vậy, việc đưa ra cách nhận biết và truyền tham số sẽ làm cho học sinh
hiểu rõ hơn tầm quan trọng của chương trình con đồng thời cũng như càng làm
tăng khả năng tư duy của học sinh đối với các bài toán khác.
II. CƠ SỞ THỰC TIỄN
* Điều kiện của Nhà trường: Cũng như tình trạng chung của các trường
T PT trong tỉnh n i riêng và cả nước n i chung trang thiết bị của Nhà trường
còn nhiều thiếu thốn đối với tất cả các m n học chức kh ng riêng gì bộ m n Tin
học. Mặt khác, trang thiết bị đối với bộ m n lại c khối lượng kinh phí lớn. Vì
vậy, trang thiết bị tin học còn khá khiêm tốn, thiếu thốn cả về lượng và chất. số
lượng máy tính ít (còn chưa đủ 2 học sinh/01 máy tính trong giờ thực hành),
trang thiết bị hỗ trợ cho phòng máy hầu như kh ng c gì.
Design: Lª Anh Dòng - tr-êng THPT Lª V¨n H-u
4
NhËn biÕt vÒ truyÒn tham biÕn vµ tham trÞ trong
Ch-¬ng tr×nh con b»ng m« t¶ lÖnh
* Điều kiện của giáo viên: Nhà trường c 03 giáo viên tin học đều đạt
chuẩn, tuổi đời trẻ, c năng lực, c ý thức học hỏi để nâng cao trình độ chuyên
m n của bản thân, lu n cố gắng khắc ph c mọi kh khăn tận d ng mọi trang
thiết bị hiện c để c những bài giảng hay và sinh động nhằm truyền tải một
cách tốt nhất kiến thức tới học sinh.
* Điều kiện học sinh: ầu hết học sinh đều là con em ở n ng th n. Nhưng
do kinh tế địa phương những năm gần đây phát triển mạnh, các dịch v Internet
và kinh doanh máy tính trên địa bàn cũng phát triển vì vậy học sinh ít nhiều đã
được tiếp cận máy tính và Internet. Mặt khác, đây là m n học mới lại được ứng
d ng nhiều trên thực tế đời sống. Vì vậy, học sinh cũng khá hứng thú và c ý
thức với m n học nên trong các tiết học hầu hết các em đều hăng say xây dựng
bài và tìm hiểu thực tế đối với m n học. Tuy nhiên, đây là m n học kh đồng
thời lại liên quan đến rất nhiều lĩnh vực khoa học tự nhiên, xã hội nên việc tiếp
cận của học sinh cũng tương đối kh .
III. ĐẶT VẤN ĐỀ
Khi giảng dạy về phần chương trình con (CTC) – Tin học 11 tôi nhận thấy
hầu hết học sinh rất bỡ ngỡ với các khái niệm hoàn toàn mới mẻ mang tính trừu
tượng như: Danh sách tham số, tham số giá trị (tham trị), tham số biến (tham
biến), tham số hình thức, tham số thực sự…
Điều làm tôi không khỏi băn khoăn đ là làm thế nào để học sinh hiểu và
nắm bắt được các khái niệm này một cách hiệu quả nhất, nhằm tránh những sự
hiểu lầm giữa các khái niệm tham biến và tham trị .
iện nay hầu hết các ngôn ngữ bậc cao đều tổ chức hai cách truyền tham số
khi gọi một CTC, đ là truyền theo trị và truyền theo biến. Việc truyền tham
chiếu theo hai cách khác nhau nhiều khi gây ra những kết quả khác nhau không
mong muốn, điều này dẫn đến những lỗi logic rất khó phát hiện.
Bài viết này không ngiêng về thuật toán của các bài toán khó mà chỉ đưa ra
các bài toán có thuật toán đơn giản nhất để giáo viên và học sinh không rơi vào
việc giải quyết thuật toán mà chú trọng đến vấn đề của bài viết.
IV. GIẢI QUYẾT VẤN ĐỀ
1. Khái niệm về tham biến và tham trị
Theo SGK Tin học 11, tham biến và tham trị được định nghĩa như sau:
* Tham trị: Trong lệnh gọi CTC, các tham số hình thức được thay bằng các
tham số thự sự tương ứng là các giá trị c thể được gọi là các tham số giá trị
(tham trị).
Design: Lª Anh Dòng - tr-êng THPT Lª V¨n H-u
5
NhËn biÕt vÒ truyÒn tham biÕn vµ tham trÞ trong
Ch-¬ng tr×nh con b»ng m« t¶ lÖnh
* Tham biến: Trong lệnh gọi CTC, các tham số hình thức được thay bằng
các tham số thự sự tương ứng là tên các biến được gọi là các tham số biến (tham
biến)
2. Truyền tham số khi dùng tham biến và tham trị
Nếu một CTC có danh sách tham số thì các tham số phải được khai báo ở
phần đầu sau tên CTC, trong cặp dấu ngoặc tròn. Khai báo một tham số có nghĩa
là chỉ ra nó thuộc loại tham số nào (tham số biến hay tham số trị) và nó có kiểu
dữ liệu là gì?
Ví d :
Procedure Test(x, y: integer ; var z: boolean);
Function Delta( a, b, c: real): real;
- Danh sách tham số là x, y, z, a, b.
- x, y có kiểu dữ liệu Integer (số nguyên);
- a, b, c có kiểu dữ liệu real (số thực);
- z c kiểu dữ liệu boolean (logic).
Vậy trong các tham số x, y, z, a, b đâu là tham biến, đâu là tham trị?
Bằng trực quan ta dễ dàng nhận thấy:
- z là tham biến vì z có từ khoá Var đứng trước;
- x, y, a, b, c là tham trị vì không có từ khoá Var đứng trước.
Để thấy rõ hơn về bản chất sự khác nhau giữa tham biến và tham trị ta xét
ví d sau:
Ví d 1:
Progam Vidu1;
var a, b, c: Integer;
Procedure Exp(x, y: Integer; Var z: Integer );
Begin
z:= x + y ;
(4.1)
x:= x*y ;
(4.2)
End;
Begin
a:= 5;
(1)
b:= 10;
(2)
c:= 7;
(3)
Exp(a,b,c);
(4)
Write(a:5,b:5,c:5);
(5)
End.
Nhìn vào chương trình, chủ quan người đọc c thể đưa ra kết quả
Design: Lª Anh Dòng - tr-êng THPT Lª V¨n H-u
6
NhËn biÕt vÒ truyÒn tham biÕn vµ tham trÞ trong
Ch-¬ng tr×nh con b»ng m« t¶ lÖnh
50 10 15
(*)
Nhưng kết quả nhận được sau khi chạy chương trình là:
5 10 15
(**)
Vậy tại sao lại có kết quả này?
Thật vậy, do x và y là tham trị nên khi có lời gọi Exp(a,b,c) thì x nhận được
giá trị của a, y nhận được giá trị của b (c nghĩa a, b vẫn c giá trị như ban đầu a
= 10, b = 3). Nhưng còn z là tham biến nên khi có lời gọi Exp(a,b,c) thì z nhận
được biến c.
M tả thực hiện chương trình c thể theo thứ tự lệnh:
Lệnh
Kết quả CT chính
Kết quả CT con
Diễn giải
(1)
a=5
(2)
a = 5, b = 10
(3)
a = 5, b = 10 và c = 7
(4)
x = 5, y = 10, z = c(7) Truyền tham số
(4.1)
z (c) = 15
(4.2)
x = 15
(5)
a = 5, b = 10 và c = 15
In kết quả (**)
Nhận xét: khi chạy chương trình thì tham số thực sự truyền cho tham biến
có kết quả thay đổi (theo CTC) còn tham số thực sự truyền cho tham trị có kết
quả không thay đổi, đ chính là sự khác nhau cơ bản giữa tham biến và tham trị,
ta xét ví d sau.
Ví d 2:
Program Vidu2 ;
Var a, b: Integer ;
Procedure Hoan_doi(x, y: Integer);
var tg:Integer;
Begin
tg:=x;
(4.1)
x:=y;
(4.2)
y:=tg;
(4.3)
End;
Begin
a:= 5;
(1)
y:= 10;
(2)
Writeln(a:5, b:5);
(3)
Hoan_doi(a,b);
(4)
Design: Lª Anh Dòng - tr-êng THPT Lª V¨n H-u
7
NhËn biÕt vÒ truyÒn tham biÕn vµ tham trÞ trong
Ch-¬ng tr×nh con b»ng m« t¶ lÖnh
Writeln(a:5, b:5);
(5)
Readln;
End.
Kết quả xuất hiện trên màn hình khi chương trình được thực hiện:
5 10
(*)
5 10
(*)
Thủ t c oandoi(a,b) trong ví d này dùng để đổi giá trị giữa 2 biến
nguyên a và b. Tuy nhiên khi chạy chương trình, điều này kh ng xảy ra. Giá trị
của 2 biến nguyên a và b trước và sau khi gọi thủ t c oan_doi(a,b) vẫn kh ng
đổi: a = 5 và b = 10.
Tại sao lại như vậy?
Lý do: trong m tả thủ t c oan_doi thì x và y là tham trị nên khi c lời gọi
oan_doi(a,b) thì x nhận được giá trị chứa trong a còn y nhận được giá trị chứa
trong b.
M tả thực hiện chương trình c thể theo thứ tự lệnh:
Lệnh
(1)
(2)
(3)
(4)
(4.1)
(4.2)
(4.3)
(5)
Kết quả CT chính
Kết quả CT con
a=5
a = 5 và b = 10
a = 5 và b = 10
x = 5 và y = 10
tg = 5
x = 10
y=5
a = 5 và b = 10
Diễn giải
In kết quả (*)
Truyền tham số
In kết quả (**)
Ví d 3:
Program Vidu3;
Var a, b: Integer ;
Procedure Hoan_doi(x: Integer; var y: Integer);
var tg:Integer;
Begin
tg:=x;
(4.1)
x:=y;
(4.2)
y:=tg;
(4.3)
End;
Begin
Design: Lª Anh Dòng - tr-êng THPT Lª V¨n H-u
8
NhËn biÕt vÒ truyÒn tham biÕn vµ tham trÞ trong
Ch-¬ng tr×nh con b»ng m« t¶ lÖnh
a:= 5;
(1)
y:= 10;
(2)
Writeln(a:5,b:5); (3)
Hoan_doi(a,b);
(4)
Writeln(a:5,b:5); (5)
Readln;
End.
Kết quả xuất hiện trên màn hình khi chương trình được thực hiện:
5 10 (*)
5 5 (**)
Trong ví d này khi chạy chương trình ta lại thấy chỉ c biến b thay đổi còn
biến a lại được giữ nguyên.
Lý do trong m tả thủ t c oan_doi thì x là tham trị và y là tham biến nên
khi c lời gọi oan_doi(a,b) thì x nhận được giá trị chứa trong a còn y nhận
được biến b.
M tả thực hiện chương trình c thể theo thứ tự lệnh:
Lệnh
Kết quả CT chính
Kết quả CT con
Diễn giải
(1)
a=5
(2)
a = 5 và b = 10
(3)
a = 5 và b = 10
In kết quả (*)
(4)
Gọi CT con
x = 5 và y = b(10)
Truyền tham số
(4.1)
tg = 5
(4.2)
x = 10
(4.3)
y(b) = 5
y là b
(5)
a = 5 và b = 5
In kết quả (**)
Vậy, nếu s a lại việc khai báo các tham số trong thủ t c Hoan_doi là truyền
theo biến bằng cách thay phần khai báo tên thủ t c lại như sau:
Procedure Hoan_doi(var x, y: Integer);
thì chương trình sẽ cho kết quả như mong muốn là:
5 10
10 5
Nhận xét: Khi đã nhận biết được sự khác nhau giữa tham biến và tham trị
thì một CTC có tham số lúc nào cần đến tham biến, lúc nào cần đến tham trị là
một vấn đề ta cần phải quan tâm khi s a d ng trong những chương trình c thể.
Vì vậy, ta xét tiếp một ví d sau đây:
Ví d 4:
Design: Lª Anh Dòng - tr-êng THPT Lª V¨n H-u
9
NhËn biÕt vÒ truyÒn tham biÕn vµ tham trÞ trong
Ch-¬ng tr×nh con b»ng m« t¶ lÖnh
Program Vidu4;
Var tu,mau,d:word;
Function UCLN(Var a,b:Word):Word;
Begin
While a<>b Do
If a>b Then a:= a-b
Else b:= b-a;
UCLN:= a;
End;
Begin
Write('nhap tu so:'); Readln(tu);
Write('nhap mau so:'); Readln(Mau);
d:= UCLN(tu,mau);
If d>1 Then
Begin
Tu:= tu Div d;
mau:= mau Div d;
End;
Writeln(tu,'/',mau);
End.
Chương trình trên s d ng hàm UCLN(a, b) để tối giản một phân số khi
nhập từ bàn phím các giá trị t số và mẫu số của nó.
Khi chạy chương trình, ta luôn nhận được kết quả không mong muốn là 1/1
cho mọi phân số. Vậy lỗi do đâu?
Lỗi này xảy ra do hai tham số hình thức của hàm UCLN: a, b là tham biến,
nên sau lời gọi d:= UCLN(tu,mau), thì a nhận được là tu; b nhận được là mau và
khi đ trong quá trình thực hiện hàm
d = tu = mau dẫ đến kết quả luôn là 1/1.
Để chương trình cho kết quả đúng ta phải s a lại việc khai báo các tham số
trong phần mô tả hàm như sau:
Function UCLN(a,b:Word):Word;
Nhận xét: Việc xác định truyền theo tham trị hay truyền theo tham biến cho
một tham số là không thể tuỳ ý vì nó có thể dẫn đến những kết quả sai với yêu
cầu của bài toán.
Tuy nhiên đối với một chương trình khi x d ng CTC, việc xác định được
một tham số hình thức là tham biến hoặc tham trị còn chưa đủ, ta nên nhớ một
Design: Lª Anh Dòng - tr-êng THPT Lª V¨n H-u
10
NhËn biÕt vÒ truyÒn tham biÕn vµ tham trÞ trong
Ch-¬ng tr×nh con b»ng m« t¶ lÖnh
CTC được thực hiện là dựa vào lời gọi nó từ Chương trình chính. Vì vậy, CTC
có thể được thực hiện nhiều lần và mỗi lần gọi giá trị các tham số có thể thay
đổi:
Ví d 5:
Program VD5;
Var a, b, c: Byte;
Function F(Var x: Byte; y: Byte): Byte;
Begin
x:=x+y;
(3.1)
F:=x + y;
(3.2)
End;
Begin
a:=5;
(1)
b:= 10;
(2)
c := F(a,b)+F(a,b);
(3)
Writeln(c);
(4)
End.
Quan sát chương trình chương trình trên ta nhận thấy:
Chương trình ra màn hình giá trị c = F(a,b)+F(a,b) với a, b ban đầu tương
ứng là 5 và 10.
Bằng suy luận ta thấy:
Với a = 5; b = 10 -> F(a,b) = 25
Suy ra: c = 25 +25 = 50.
Kiểm tra bằng test lệnh c thể, ta s d ng:
M tả thực hiện chương trình c thể theo thứ tự lệnh:
Tuy nhiên: đối với lệnh c := F(a,b)+F(a,b); (3) c 4 bước được thực hiện
trình tự như sau:
Bước (3.a) - Tính toán hạng F(a,b) đầu.
Bước (3.b) - Tính toán hạng F(a,b) sau.
Bước (3.c) - Thực hiện phép toán + và gán giá trị biểu thức cho c.
Lệnh
(1)
(2)
(3.a)
(3.1)
(3.2)
Kết quả CT chính
a=5
a = 5 và b = 10
Gọi hàm F
Kết quả CT con
x = a(5) và y = 10
x(a) = 15
F = 25
Design: Lª Anh Dòng - tr-êng THPT Lª V¨n H-u
Diễn giải
Truyền tham số
11
NhËn biÕt vÒ truyÒn tham biÕn vµ tham trÞ trong
Ch-¬ng tr×nh con b»ng m« t¶ lÖnh
F (đầu) = 25; a = 15
(3.b)
Gọi hàm F
x = a(15) và y = 10
Truyền tham số
(3.1)
x(a) = 25
(3.2)
F = 35
F (sau) = 35; a = 25
(3.c)
c = 60
(4)
In kết quả
Vậy kết quả khi chạy chương trình sẽ là 60 chứ không phải là giá trị 50 như
ban đầu ta đã xác nhận:
Lý do: x là tham biến nên sau lời gọi hàm F đầu thì giá trị của a đã thay đổi
làm ảnh hương đến lời gọi hàm F sau.
Nhận xét: Như vậy, khi truyền một tham số cho CTC, nếu ta muốn bảo vệ
giá trị của tham số đ khỏi bị CTC “ vô tình phá” thì tham số đ phải được dùng
như là tham trị. Khi đ cho phép giá trị đầu vào tương ứng có thể là hằng, biểu
thức hoặc biến nguyên. Còn một tham số nếu muốn dùng để lấy kết quả (những
biến đổi) do chương trình con đem lại thì tham số đ phải là tham biến và giá trị
đầu vào tương ứng chỉ có thể là biến.
3. Một số bài tập kiểm tra.
Câu 1: Với a là tham biến, b là tham trị thì khai báo nào trong các khai báo
sau đây là đúng?
A. Procedure M(Var a:Integer ; b: Integer );
B. Procedure M(a,b: Integer );
C. Procedure M(Var a,b: Integer );
D. Procedure M(a: Integer ; Var b: Integer ) ;
Đáp án: A
Câu2: Giá trị tương ứng của các biến a, b, c, d sau khi chạy chương trình:
Progam Cau2;
Procedure Tong_hieu(Var a, b: Integer; c: Integer );
Begin
a:= c – b ;
b:= a + c ;
c:= a*b ;
End;
Begin
clrscr;
a:= 3; b:= 5; c:= 10;
Tong_hieu(a,b,c);
Design: Lª Anh Dòng - tr-êng THPT Lª V¨n H-u
12
NhËn biÕt vÒ truyÒn tham biÕn vµ tham trÞ trong
Ch-¬ng tr×nh con b»ng m« t¶ lÖnh
Write(a,b,c);
Readln;
End.
A. 3 5 10
B. 5 5 10
C. 5 -5 10
D. 5 -5 -25
Đáp án: C
Câu 3: Kết quả sau khi thực hiện chương trình sau?
program Cau3;
Var x:integer;
Procedure Thaydoi( x:integer);
Begin
x:=1;
end;
Begin
x:=0; Thaydoi(x); Writeln(x:3);
readln
End.
A. 1
B. 0
C. 1 0
D. 0 1
Đáp án: B
Câu 4: Kết quả sau khi thực hiện chương trình sau?
program Cau4;
Var x:integer;
Procedure Thaydoi( x:integer);
Begin
Write(x:3)
x:=1;
end;
Begin
x:=0; Thaydoi(x); Writeln(x:3);
readln
End.
A. 1
B. 0
C. 1 0
D. 0 1
Đáp án: D
Câu 5: Kết quả sau khi thực hiện chương trình sau?
Program Cau5;
Var a: Byte;
Function F(Var x:Byte):Byte;
Design: Lª Anh Dòng - tr-êng THPT Lª V¨n H-u
13
NhËn biÕt vÒ truyÒn tham biÕn vµ tham trÞ trong
Ch-¬ng tr×nh con b»ng m« t¶ lÖnh
Begin
x:=x+1; F:=x;
End;
Begin
a:=5; Writeln(F(a));
Readln;
End.
A. 5
B. 11
C. 6
D. 13
Đáp án: C
Câu 6: Kết quả sau khi thực hiện chương trình sau?
Program Cau6;
Var a, b, c: Byte;
Function F(Var x: Byte; y: Byte): Byte;
Begin
x:=x+y;
F:=x + y;
End;
Begin
a:=5;
b:= 10;
c := 2* F(a,b);
Writeln(c);
End.
A.
15
B.
25
C.
30
D.
50
Đáp án: D
Câu 7: Kết quả sau khi thực hiện chương trình sau?
Program Cau6;
Var a, b, c: Byte;
Function F(Var x: Byte; y: Byte): Byte;
Begin
x:=x+y;
F:=x + y;
End;
Begin
a:=5;
b:= 10;
Design: Lª Anh Dòng - tr-êng THPT Lª V¨n H-u
14
NhËn biÕt vÒ truyÒn tham biÕn vµ tham trÞ trong
Ch-¬ng tr×nh con b»ng m« t¶ lÖnh
c := F(a,b) + F(a,b);
Writeln(c);
End.
A.
60
B.
50
C.
30
D.
20
Đáp án: A
Câu 8: Với phần khai báo tên thủ t c:
Procedure N( x:Integer ; Var y:Integer );
m là biến nguyên, các lời gọi sau đây lời gọi nào là hợp lệ?
A.
N(m,m+3);
B.
N(2,m);
C.
N(m+1,4);
D.
N(2,3*m+5);
Đáp án: B
Câu 9: Cho biết chương trình sau làm việc gì?
Program
Cau9;
Var n:longint;
Begin
Function gt(n: longint):longint;
Begin
If n = 1 then gt:= 1
Else gt := gt * gt;
End;
Begin
Write(‘nhap n > 0:’); Readln;
Writeln(gt(n));
Readln;
End.
Write(‘nhap n:’); Readln(n);
Writeln(gt(n));
Readln;
End.
Chương trình dùng hàm để tính n! với n được nhập từ bàn phím.
V. KẾT QUẢ THỰC NGHIỆM
Sau một thời gian áp d ng phương pháp trên ở cả 2 nh m học sinh c học
lực m n tương đương nhau, gồm:
- Nhóm A: ọc sinh các lớp 11B3, 11B4
Design: Lª Anh Dòng - tr-êng THPT Lª V¨n H-u
15
NhËn biÕt vÒ truyÒn tham biÕn vµ tham trÞ trong
Ch-¬ng tr×nh con b»ng m« t¶ lÖnh
- Nhóm B: ọc sinh các lớp 11B1, 11B2
Kết quả thu được c thể như sau:
Th ng qua việc kiểm tra bài cũ, kiểm tra 15’ kết quả thu được là
+ Nhóm A: (s s d ng phương pháp mới) c trên 80% hoàn thành được
những yêu cầu giáo viên đưa ra.
+ Nhóm B: (kh ng s d ng – nh m đối chứng), chỉ c gần 60% học sinh
hoàn thành được yêu cầu kiểm tra kiến thức của giáo viên.
Từ kết quả thu được rõ ràng như vậy, nên việc áp d ng s d ng phương
pháp những kết quả rõ rệt. Thể hiện ở bảng kết quả học tập của học sinh như
sau:
Bảng kết quả học lực môn Tin học kỳ I. năm học 2012 – 2013
43
41
43
Hs có học
lực giỏi
04
05
05
Hs có học lực
khá
29
27
29
Hs có học
lực TB
10
09
09
Tỉ lệ hs có học lực Khá
trở lên (%)
76.0
78.1
79.1
44
06
28
10
77.2
Lớp
Sĩ số
11B1
11B2
11B3
11B4
Bảng kết quả kiểm tra tại các lớp sau khi thực nghiệm
Lớp
Sĩ số
Hs có học
lực giỏi
Hs có học
lực khá
Hs có học
lực Tb
Tỉ lệ hs có học lực Tb trở
lên (%)
11B1
11B2
11B3
11B4
43
41
43
44
05
05
07
09
29
29
34
37
09
07
02
0
79.1
82.9
95.3
100.0
Từ kết quả trên, t i nhận thấy:
Đối với giáo viên: C ng việc giảng dạy trở nên nhẹ nhàng, thoải mái hơn,
việc x lý các tình huống trong dạy học trở nên linh hoạt giao tiếp trong tiết học
giữa thầy và trò cũng trở kh ng căng thẳng.
Đối với học sinh: các em cũng thấy giờ học nhẹ nhàng hơn c hứng thú đối
với tiết học do vậy mà việc tiếp thu kiến thức c hiệu quả hơn và đặc biệt giờ
thực hành sau đ c hiệu quả rõ rệt.
Design: Lª Anh Dòng - tr-êng THPT Lª V¨n H-u
16
NhËn biÕt vÒ truyÒn tham biÕn vµ tham trÞ trong
Ch-¬ng tr×nh con b»ng m« t¶ lÖnh
PHẦN KẾT LUẬN VÀ KIẾN NGHỊ
Kết luận
Bộ m n Tin học là một bộ m n mới và kh đối với học sinh bởi tính phức
tạp và khả năng ứng d ng của n đối với đời sống thực tế.
Dạy Tin học đã kh - Dạy thế nào để học sinh c thể mau ch ng nắm bắt
kiến thức và vận d ng hành thạo kiến thức vào các bải tập thực hành lại càng đòi
hỏi người giáo viên phải c nhiều cố gắng, c phương pháp dạy học sáng tạo c
thể đáp ứng ngày càng cao yêu cầu của m n học.
Trên đây là những kinh nghiệm nhỏ của bản thân trong việc giảng dạy học
sinh nhận biết về tham biến và tham trị trong chương trình c s d ng chương
trình con của ng n ngữ lập trình PASCAL mà t i đưa ra để đồng nghiệp tham
khảo g p ý kiến.
Rất mong nhận được những đ ng g p của đồng nghiệp để bản thân t i nói
riêng và giáo viên tin học n i chung c thể c những cách dạy hay và phù hợp
với đặc trưng bộ m n, với mỗi bài học và đối tượng học sinh.
Kiến nghị
Trên cơ sở vật chất hiện c của Nhà trường đối với bộ m n tin học, việc
việc dạy và học của thầy và trò còn gặp rất nhiều kh khăn, như: thiết bị kh ng
đồng bộ, máy đang còn là dạng phòng học cải tạo nên kh ng đảm bảo cả về tiêu
chuẩn và chất lượng.
Vì vậy, để c thể nâng cao chất lượng hơn nữa, rất mong Nhà trường cũng
như sở, ngành c kết hoạch đầu tư về cơ sở vật chất cũng như, tạo điều kiện
quan tâm đối với đội ngũ giáo viên tin học và đặc biệt xây dựng được một đội
ngũ quản trị các phòng máy tại các Nhà trường.
Xin chân thành cảm ơn!
XÁC NHẬN
CỦA THỦ TRƯỞNG ĐƠN VỊ
Thanh Hóa, ngày15 tháng 5 năm 2013
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.
Người viết
LÊ ANH DŨNG
Design: Lª Anh Dòng - tr-êng THPT Lª V¨n H-u
17
NhËn biÕt vÒ truyÒn tham biÕn vµ tham trÞ trong
Ch-¬ng tr×nh con b»ng m« t¶ lÖnh
TÀI LIỆU THAM KHẢO
1.
ồ Sĩ Đàm - ồ Cẩm Hà - Trần Đỗ Hùng - Nguyễn Đức Nghĩa Nguyễn Thành Tùng - Ngô ánh Tuyết . Tin học 11(SGK), NXB Giáo D c.
2.
ồ Sĩ Đàm - ồ Cẩm Hà - Trần Đỗ Hùng - Nguyễn Đức Nghĩa Nguyễn Thành Tùng - Ngô ánh Tuyết . Tin học 11(SGV), NXB Giáo D c.
3. Lê Khắc Thành - ồ Cẩm Hà - Nguyễn Vũ Quốc ưng. Tài liệu bồi
dưỡng thường xuyên cho GV THPT chu kỳ III (2004 - 2007).
4. Quách Tuấn Ngọc. Ngôn ngữ lập trình PASCAL (lý thuyết và bài tập).
5. Đỗ Xuân L i. Cấu trúc dữ liệu và giải thuật, NXB Đ Quốc Gia à
Nội
6. http://vi.wikipedia.org/wiki/ Bách khoa toàn thư mở
Design: Lª Anh Dòng - tr-êng THPT Lª V¨n H-u
18
NhËn biÕt vÒ truyÒn tham biÕn vµ tham trÞ trong
Ch-¬ng tr×nh con b»ng m« t¶ lÖnh
MỤC LỤC
Nội dung
Trang
Phần mở đầu
1
1
2
2
2
2
2
3
3
4
5
5
5
6
12
15
17
I. Lý do chọn đề tài
II. M c đích của SKKN
III. Khách thể và đối tượng nghiên cứu
IV. Nhiệm v nghiên cứu
V. Phương pháp nghiên cứu
VI. Những đ ng g p mới
Phần nội dung
I. Cơ sở lý luận
II. Cơ sở thực tiễn
III. Đặt vấn đề
IV. Giải quyết vấn đề
1. Khái niệm về tham biến và tham trị
2. Truyền tham số khi dùng tham biến và tham trị
3. Một số bài tập kiểm tra.
V. Kết quả thực nghiệm
Phần kết luận và kiến nghị
Design: Lª Anh Dòng - tr-êng THPT Lª V¨n H-u
19
- Xem thêm -