1. Trang chủ
  2. » Luận Văn - Báo Cáo

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

19 194 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 19
Dung lượng 502,77 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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ầ

Trang 1

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

Trang 2

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

Trang 3

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ả

Trang 4

- 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ì

Trang 5

* Đ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ị)

Trang 6

* 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

End;

Begin

End

Nhìn vào chương trình, chủ quan người đọc c thể đưa ra kết quả

Trang 7

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

(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

End;

Begin

Trang 8

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 Kết quả CT chính Kết quả CT con Diễn giải

(1) a = 5

(2) a = 5 và b = 10

Ví d 3:

Program Vidu3;

Var a, b: Integer ;

Procedure Hoan_doi(x: Integer; var y: Integer);

var tg:Integer;

Begin

End;

Begin

Trang 9

a:= 5; (1)

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

(4) Gọi CT con x = 5 và y = b(10) Truyền tham số

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:

Trang 10

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

Ngày đăng: 05/06/2016, 21:45

HÌNH ẢNH LIÊN QUAN

Bảng kết quả học lực môn Tin học kỳ I. năm học 2012 – 2013 - 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
Bảng k ết quả học lực môn Tin học kỳ I. năm học 2012 – 2013 (Trang 16)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w