Hướng dẫn học sinh lớp 11 trường THPT bá thước 3 phân biệt tham biến, tham trị trong NNLT pascal - Pdf 44

MỤC LỤC
1.
đầu..............................................................................................................2

Mở

1


1. Mở đầu
1.1 Lí do chọn đề tài
Khi giảng dạy về phần chương trình con ( CTC ) trong ngôn ngữ lập trình
(NNLT) Pascal – 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 số 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ị.
Hiện nay hầu hết các ngôn ngữ lập trình 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 như mong muốn, điều này dẫn đến những lỗi logic rất khó phát
hiện. Đề tài này chỉ ra những lỗi thường gặp đồng thời tìm cách truyền tham
chiếu cho đúng để đạt được mục đích đã đề ra của chương trình.
Bài viết này không chú trọng vào 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 để hướng dẫn học sinh, giúp các
em dễ nắm bắt. Bài viết chú trọng đến vấn đề: “Hướng dẫn học sinh lớp 11
trường THPT Bá Thước 3 phân biệt tham biến, tham trị trong NNLT
pascal”. Đây có thể là vấn đề không quá phức tạp nhưng nó đem lại những hiệu
quả rất thực tế trong công tác giảng dạy.
1.2 Mục đích nghiên cứu

- Các phòng học có máy chiếu, có phòng máy đáp ứng được các yêu cầu
giảng dạy của bộ môn như có máy chiếu, các máy đều được kết nối
internet.
- Sự quan tâm và chỉ đạo kịp thời của Ban giám hiệu nhà trường.

Khó khăn:
- Chương trình con là một phần mới và khó đối với học sinh.
- Môn tin là môn học không được học sinh đầu tư nhiều thời gian như các
môn học khác.
- Để học tốt chương trình tin học 11 học sinh phải có kiến thức môn toán
tốt.
- Phần lớn học sinh trường THPT Bá Thước 3 là người dân tộc thiểu số,
sống ở khu vực đặc biệt khó khăn nên được tiếp xúc với máy tính
còn hạn chế (rất ít nhà học sinh có máy tính).
- Đầu vào của học sinh rất thấp, kiến thức môn toán rất hạn chế.
- Vốn tiếng Anh hạn chế.
- Hầu hết học sinh ở các trường THCS khu vực Quốc Thành chưa được
học môn tin học do đó ảnh hưởng trực tiếp đến chất lượng môn tin
ở cấp THPT.
- Kết quả khảo sát năm học 2011-2012
HS giải được
HS lúng túng
HS không biết
STT Lớp Sĩ số
SL
%
SL
%
SL
%

SL
%
1
11A1 44
7
15.9
12
27.27 25
56.83
2
11A2 42
7
16.7
11
26.19 24
57.11
3
11A3 45
8
17.8
13
28.9
24
53.3

3


2.3. Các giải pháp đã sử dụng để giải quyết vấn đề.
2.3.1. Những tình huống có thể xảy ra trong khi sử dụng tham biến và tham

30, 3, 7, 13 tương ứng với các tham số a, b, c, d. Nhưng kết qủa nhận được sau
khi chạy chương trình lại là 10, 3, 7, 13 tương ứng với các tham số a, b, c, d.
Vậy tại sao lại có kết quả này?
Thật vậy, do a, b được truyền theo trị nên khi có lời gọi Tong_hieu(a,b,c,d)
thì giá trị của a, b vẫn được giữ nguyên như ban đầu a = 10, b = 3 còn c, d được
truyền theo biến nên khi có lời gọi Tong_hieu(a,b,c,d) thì các giá trị của c, d
thay đổi c = 7, d = 13
Nhận xét: Qua ví dụ 1, sau khi chạy chương trình thì tham biến có kết quả
thay đổi còn tham trị 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 VD2;
Var x,y: Integer ;
Procedure Thamso(Var Z: Integer ; W: Integer);
4


Begin
Z:= 1; W:=1;
End;
Begin

{chuong trinh chinh}
x:= 0; y:= 0;
Writeln(x:5,y:5);
Thamso(x,y);
Writeln(x:5,y:5);
Readln;
End.
Kết quả nào sẽ xuất hiện trên màn hình khi chương trình được thực hiện:

Procedure Hoandoi(x,y:Integer);
Var t:Integer;
Begin
t:= x; x:= y; y:= t;
End;
Begin
x:=1; y:= 2;
Hoandoi(x,y);
5


Writeln(‘Hai so chua hoandoi:’,x:2,y:2);
Write('x=',x:2,' y=',y:2);
Readln;
End.
Thủ tục Hoandoi(x,y) trong ví dụ này dùng để đổi giá trị giữa 2 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 2
biến nguyên x và y trước khi gọi thủ tục x có giá trị bằng 1, y có giá trị bằng 2
và sau khi gọi thủ tục Hoandoi(x,y) giá trị của x, y có giá trị vẫn không đổi:
x=1, y=2.
Vậy lỗi xảy ra do thủ tục Hoandoi(x,y) tổ chức truyền theo trị nên các giá
trị của các biến x và y không bị ảnh hưởng bởi các lệnh đổi giá trị trong thủ tục
này. Nếu sữa lại việc khai báo các tham số trong thủ tục tráo đổi là truyền theo
biến (thêm từ khoá Var trước x, y trong phần đầu của thủ tục) thì chương trình sẽ
cho kết quả như mong muốn: x=2, y=1.
Ví dụ 4:
Program VD4;
Var tu,mau,d:word;
Function UCLN(Var a,b:Word):Word;
Begin

báo các tham số trong hàm UCLN là truyền theo tham trị ( bỏ từ khoá Var trước
a, b).
Nhận xét: Việc tổ chức truyền theo trị hay truyền theo biến cho một tham số
là không thể tuỳ tiện 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. Qua hai ví dụ trên đã minh hoạ các tình huống có thể xảy ra. Ví dụ
3 cho một kết quả sai khi truyền theo trị trong khi nếu sửa lại việc khai báo
các tham số trong thủ tục Hoandoi là truyền theo tham biến thì chương trình
sẽ cho kết quả đúng với yêu cầu của bài toán. Còn ở ví dụ 4 cho thấy một kết
quả sai khi truyền theo tham biến.
Ví dụ 5:
Program VD5;
Var a: Byte;
Function F(Var x:Byte):Byte;
Begin
x:=x+1; F:=x;
End;
Begin
a:=5; Writeln(F(a)+F(a));
Readln;
End.
Chương trình đơn giản trên đưa ra màn hình giá trị F(a)+F(a) với a = 5.
Bằng suy luận thông thường, kết quả đúng phải là 12 vì tại a = 5, F (a) cho giá
trị 6. Tuy nhiên khi chạy chương trình ta sẽ nhận được kết quả 13. Có thể sửa
biểu thức F(a)+F(a) thành biểu thức 2*F(a) lúc này ta sẽ nhận được kết quả là
12. Chương trình vẫn thực hiện đúng những lệnh mà ta viết, chỉ có điều ở đây
xuất hiện hiệu ứng phụ do hàm F được tổ chức truyền theo biến đối với tham
biến x của nó. Lệnh x:= x + 1 trong hàm F sẽ làm biến a tăng lên một đơn vị
mỗi khi gọi F(a) khi thực hịên biểu thức F(a)+F(a), giá trị F(a) được gọi hai lần.
Tại lần thứ nhất a = 5, do đó F(a) = 6 , tại lần gọi thứ hai lúc đó a = 6 do đó F(a)
= 7 và ta nhận được kết quả 13.

Begin
clrscr;
a:= 10; b:= 3; c:= 5; d:= 6;
Tong_hieu(a,b,c,d);
Write(a,b,c,d);
Readln;
End.
A. 30, 3, 7, 13
B. 10, 3, 7, 13
C. 10, 3, 5, 6
D. 30, 3, 5, 6
Đáp án: B
Câu 3: Số nào được in ra màn hình khi thực hiện chương trình sau?
Program c3;
Var a,b:byte;
Procedure Thu1(Var a:byte);
Begin
a:= 2*a; b:=b+5;
End;
Begin
a:= 3; b:= 7; Thu1(b);
a:= a+b; Writeln(a);
Readln;
End.
A. 13
B. 19
C. 22
D……. (Một đáp án khác)
Đáp án: C
Câu 4: Số nào được in ra màn hình khi thực hiện chương trình sau?

B. 11
C. 12
D. 13
Đáp án: D
Câu 6: (Ta cũng có thể có câu hỏi như sau đối với Vd5):
Hãy sửa lỗi chương trình trên để chương trình có kết quả là 12 ?
Đáp án: Cách 1: Function F( x:Byte):Byte;
Cách 2: Thay biểu thức (F(a)+F(a))thành biểu thức (2*F(a))
Câu 7: Với đầu 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 8: Hãy sữa lỗi chương trình sau và cho biết chương trình sau làm việc gì?
Program C8;
Var n:integer;
Begin
Function fibo( Var n: longint):longint;
Begin
If n
Năm học 2013 – 2014
HS giải được
HS lúng túng
HS không biết
STT Lớp Sĩ số
SL
%
SL
%
SL
%
1
11A1 42
32
76.19 7
16.67 3
7.14
2
11A2 40
29
72.5
8
20
3
7.5
3
11A3 39
29
74.36 8
20.51 2

5
14.7
6
15.38
5
12.82

HS không biết
SL
%
2
5.89
2
5.14
1
4.33

Năm học 2015 - 2016
HS giải được
HS lúng túng
HS không biết
STT Lớp Sĩ số
SL
%
SL
%
SL
%
1
11A1 42

- Các em đã khắc phục được những lỗi hay mắc phải khi dùng tham biến,
tham trị.
- Có thái độ tích cực trong học tập, yêu thích môn học hơn.
- Các em có hứng thú hơn trong các giờ thực hành do không gặp phải khó
khăn khi thao tác trực tiếp trên máy tính.
3.1.2 Nguyên nhân tồn tại, hạn chế
- Phần lớn học sinh là người dân tộc thiểu số, vùng cao được tiếp xúc ít với
máy vi tính nên còn chậm trong các thao tác khi thực hành.
- Một số học sinh năng lực còn hạn chế trong việc áp dụng lý thuyết vào làm
bài tập.
- Môn Tin học mà đặc biệt là Tin học lập trình lớp 11 là môn học khó và mới
mẻ, đặc biệt là đối với học sinh ở các vùng khó khăn như vùng 30A, vùng 135.
- Số học sinh gia đình có máy tính đang còn ít, một số em còn chưa chịu khó
và giành thời gian cho môn học.
- Kinh nghiệm giảng dạy của cá nhân còn chưa nhiều.
3.2 Kiến nghị
Với những kinh nghiệm còn chưa nhiều nhưng bản thân tôi đã giúp các em
học sinh phát hiện và sửa một số lỗi khi dùng tham biến và tham trị trong
PASCAL trong chương trình Tin học lớp 11, các em tỏ ra tích cực học tập hơn
khi nắm rõ được vấn đề, từ đó chất lượng từng bước được nâng cao.
Mặc dù bản thân cũng đã có nhiều cố gắng để hoàn thành đề tài nhưng
chắc chắn không thể tránh khỏi những thiếu sót. Tôi rất mong được sự đóng góp
của hội đồng giám khảo và các đồng nghiệp để đề tài được hoàn thiện hơn nữa
góp phần nâng cao hiệu quả thực tế trong giảng dạy bộ môn.
Tôi xin chân thành cảm ơn!
XÁC NHẬN CỦA THỦ TRƯỞNG ĐƠN VỊ

Lê Việt Hồng

Thanh Hóa, ngày 10 tháng 04 năm 2016


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status