SKKN 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
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.
MỤC LỤC 1. Mở đầu..............................................................................................................2 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 Trong đề tài này tôi xây dựng và đề xuất: 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. 1.3 Đối tượng nghiên cứu Học sinh lớp 11 trường THPT Bá Thước 3 các năm học từ 2011 – 2012 đến năm học 2015-2016. 1.4. Phương pháp nghiên cứu - Phương pháp quan sát sư phạm; - Phương pháp nêu vấn đề trong giảng dạy; - phương pháp thống kê, tổng hợp, so sánh. 2. Nội dung sáng kiến kinh nghiệm 2.1. Cơ sở lí luận của sáng kiến kinh nghiệm - Những lý luận, lý thuyết sau đã giúp cho tôi định hướng được việc nghiên cứu cũng như tìm kiếm những giải pháp, biện pháp cho việc giảng dạy: - Phương pháp dạy học ngôn ngữ lập trình từ một hoạt động chia nhỏ thành những hoạt động nhỏ hơn để học sinh có thể dễ hiểu: - Phương pháp phát vấn; - Phương pháp quy nạp; - Lý thuyết các khái niệm và vai trò của chương trình con, khái niệm và vai trò của các loại tham số được sử dụng trong chương trình con. 2.2. Thực trạng vấn đề trước khi áp dụng sáng kiến kinh nghiệm. Thuận lợi: Có nhiều tài liệu viết về chương trình con. Thời lượng cho các tiết bài tập và thực hành Tin học khối 11 nhiều thuận lợi cho việc áp dụng các bài tập trong sáng kiến vào bài dạy. 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 STT Lớp Sĩ số HS giải được HS lúng túng HS không biết SL % SL % SL % 1 11A1 40 5 12.5 10 25 25 62.5 2 11A2 42 4 9.52 12 28.57 26 61.9 3 11A3 43 6 13.95 14 32.56 23 53.49 - Kết quả khảo sát năm học 2012-2013 STT Lớp Sĩ số HS giải được HS lúng túng HS không biết 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 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 trị trong NNLT pascal. 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 Delta (Var x: integer ; y: real); Function Beta ( a, b: real): real; Danh sách tham số là x, y, a, b. Với x có kiểu dữ liệu Integer y, a, b, có kiểu số thực. Vậy trong danh sách tham số x, y, a, b đâu là tham biến, đâu là tham trị? Bằng trực quan ta dễ dàng nhận thấy x là tham biến vì x có từ khoá Var đứng trước; y, a, b 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; Procedure Tong_hieu(a, b: Integer; Var c, d: Integer ); Begin c:= a – b ; d:= a + b ; a:= a*b ; End; Begin clrscr; a:= 10; b:= 3; c:= 5; d:= 6; Tong_hieu(a,b,c,d); Write(a,b,c,d); Readln; End. Mới nhìn vào chương trình nhiều học sinh có thể chủ quan đưa ra các giá trị 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); 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: 0 0 0 0 0 0 0 0 1 0 1 1 0 1 0 0 Bước vào thân chương trình chính ban đầu x và y đều có giá trị là 0 (do các lệnh x:= 0, y:= 0). Khi gọi thủ tục Thamso(x,y), tham số biến được thay bởi biến x. Điêù này có nghĩa là mọi thao tác đối với z trong thủ tục sẽ xẩy ra đối với x; cụ thể là lệnh gán z:= 1 bây giờ sẽ là x:= 1, tức gán giá trị 1 cho biến x. Còn khi gọi thủ tục Thamso(x,y) tham số w được thay bởi biến y; giá trị của biến y được sao chép sang cho biến w. Tức là w có giá trị 0. Khi bước vào thân thủ tục không có một liên quan nào nữa giữa biến y với w, vì vậy lệnh gán w:= 1 không ảnh hưởng gì đến giá trị của y. Như vậy, giá trị của x được in ra là 1, còn y là 0. Với thủ tục Procedure Thamso(Var z: Integer ; w: Integer ) thì các lời gọi sau đây có hợp lý không? Thamso(x + 1, y) hay Thamso(2, y). Khi thay lời gọi Thamso(x,y) bằng 2 lời gọi trên thì máy sẽ báo lỗi. Bởi trong lời gọi CTC các tham số biến chỉ được phép thay bởi các biến cùng kiểu, không được là hằng(2) hay biểu thức(x+1), còn các tham số giá trị được phép thay thế bởi hằng, biểu thức hoặc biến đơn. Sự thay thế phải theo đúng trật tự các tham số đã khai báo trong đầu của CTC. Ngoài lời gọi Thamso(x,y) thì các lời gọi Thamso(x,y+1); Thamso(x,3); đều không hợp lý. Đây chính là một sự khác nhau nữa giữa tham biến và tham trị. 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ị? Ví dụ 3: Program VD3; Var x,y: Integer; Procedure Hoandoi(x,y:Integer); Var t:Integer; Begin t:= x; x:= y; y:= t; End; Begin x:=1; y:= 2; Hoandoi(x,y); 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 While ab 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); writeln('d =:',d); If d>1 Then Begin Tu:= tu Div d; mau:= mau Div d; End; Writeln('phan so duoc toi gian la:',tu,'/',mau); Readln; 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ó. Nhìn vào chương trình ta không phải bàn đến tính đúng đắn của công thức. Vì ta thấy chương trình trên trả về UCLN của hai số nguyên dương a và b và dùng hàm này để tính d là UCLN của tử và mẫu. Phân số tối giản nhận được bằng cách cùng chia tử và mẫu cho d. Tuy nhiê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 logic này xảy ra do hàm UCLN được tổ chức truyền theo tham biến, nên sau lời gọi d:= UCLN(tu,mau) , ta được đồng thời các giá trị d, tu, mau bằng nhau và bằng d. Để 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 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. Trong khi đó biểu thức 2*F(a) chỉ gọi giá trị F(a) một lần vì thế mà ta nhận được kết quả là 12. Nếu sửa lại việc truyền cho tham biến x của hàm F là theo trị thì không còn sự khác nhau như vậy nữa. 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. 2.3.2. Xây dựng một số câu hỏi trắc nghiệm và bài tập phục vụ cho tiết kiểm tra. Câu 1: Với a là tham biến, b là tham trị thì khai báo phần đầu cho thủ tục nào sau đây là đúng? (a, b đều có kiểu DL Integer) Procedure M(Var a:Integer ; b: Integer ); Procedure M(a,b: Integer ); Procedure M(Var a,b: Integer ); Procedure M(a: Integer ; Var b: Integer ) ; Đáp án: A Câu2: Cho biết giá trị tương ứng cho các biến a, b, c, d sau khi chạy thử chương trình : Progam Vidu1; Procedure Tong_hieu(a, b: Integer; Var c, d: Integer ); Begin c:= a – b ; d:= a + b ; a:= a*b ; End; 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? program C4; 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 5: Chương trình sau cho kết quả gì? 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. A. 10 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ệ? N(m,m+3); N(2,m); N(m+1,4); 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<3 then fibo:= 1 Else fibo:= fibo(n-1)+fibo(n-2); End; Write(‘nhap n:’); Readln; Writeln(fibo(n)); Readln; End. Đáp án: Chương trình được sữa lỗi: Program C8; Var n:integer; Function fibo(n: longint):longint; Begin If n<3 then fibo:= 1 Else fibo:= fibo(n-1)+fibo(n-2); End; Begin Write(‘nhap n:’); Readln(n); Writeln(fibo(n)); Readln; End. Chương trình dùng hàm để tính dãy số Fibonaxi F1, F2, , Fn với F1= F2=1 Fn =Fn-1+Fn-2(n>2) . 2.4. Hiệu quả của sáng kiến kinh nghiệm đối với hoạt động giáo dục, với bản thân, đồng nghiệp và nhà trường. Xây dựng được hệ thống câu hỏi, bài tập để giảng dạy chương VI – phần CTC và lập trình có cấu trúc, Sử dụng các ví dụ này vào trong các đề kiểm tra: tìm đáp án đúng hay sửa lỗi chương trình Đề tài đã được ứng dụng để giảng dạy và đạt kết quả tốt trong những năm học vừa qua. Phần lớn học sinh đã phân biệt được bản chất của sự khác nhau giữa tham biến và tham trị và cách sử dụng chúng. Đối với học sinh giỏi môn tin cũng rất có ích, giúp các em nắm vững hơn kiến thức cơ bản. Kết quả thu được trong các năm áp dụng SKKN Năm học 2013 – 2014 STT Lớp Sĩ số HS giải được HS lúng túng HS không biết 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.13 Năm học 2014 - 2015 STT Lớp Sĩ số HS giải được HS lúng túng HS không biết SL % SL % SL % 1 11A1 34 27 79.41 5 14.7 2 5.89 2 11A2 39 31 79.48 6 15.38 2 5.14 3 11A3 35 29 82.85 5 12.82 1 4.33 Năm học 2015 - 2016 STT Lớp Sĩ số HS giải được HS lúng túng HS không biết SL % SL % SL % 1 11A1 42 34 80.95 6 14.28 2 4.77 2 11A2 41 33 80.48 7 17.07 1 2.45 3 11A3 44 37 84.09 6 13.63 1 2.28 Trên đây là những kết quả cụ thể trong quá trình giảng dạy, từ đó có thể thấy được hiệu quả thực tế trong việc áp dụng SKKN nâng cao chất lượng học tập của học sinh. 3. Kết luận, kiến nghị 3.1. Kết luận 3.1.1 Những kết quả đạt được - Phần lớn học sinh nắm được kiến thức, hiểu rõ được bản chất tham biến, tham trị vận dụng vào làm các bài tập và rèn luyện được kỹ năng thực hành các thao tác đối với CTC, sử dụng thành thạo tham biến, tham trị trong NNLT Pascal. - 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 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. Trần Văn Đức TÀI LIỆU THAM KHẢO Sách giáo khoa Tin học 11 (Hồ Sĩ Đàm chủ biên, NXB Giáo dục, năm 2006) Sách Bài tập Tin học 11 (Hồ Sĩ Đàm, Nguyễn Thanh Tùng, NXB Giáo dục, năm 2006) Sách giáo viên Tin học 11 (Hồ Sĩ Đàm chủ biên, NXB Giáo dục, năm 2006) Lí luận dạy học tin học ở trường phổ thông (Trương Trọng Cần, ĐH Vinh, năm 2000) 5. Các vấn đề về lập trình Pascal (Trần Đức Huyên, NXB trẻ, 1996) 6. Một số nguồn thông tin trên mạng Internet.
Tài liệu đính kèm:
- skkn_huong_dan_hoc_sinh_lop_11_truong_thpt_ba_thuoc_3_phan_b.doc