Tài liệu 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

  • Số trang: 19 |
  • Loại file: PDF |
  • Lượt xem: 144 |
  • Lượt tải: 0
nguyen-thanhbinh

Tham gia: 27/07/2015

Mô tả:

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 -