Sáng kiến kinh nghiệm Một số lưu ý khi dạy lập trình Pascal cho học sinh lớp 11
• Sự phát triển mạnh mẽ như vũ bão của tin học đã làm cho xã hội có nhiều nhận thức mới về cách tổ chức các hoạt động. Nhiều quốc gia trên thế giới ý thức được rất rõ tầm quan trọng của tin học và có những đầu tư lớn cho lĩnh vực này, đặc biệt trong giáo dục nâng cao dân trí về tin học và đào tạo nguồn nhân lực có chất lượng cao. Người Việt Nam có nhiều tố chất thích hợp với ngành khoa học này, vì thế chúng ta hi vọng có thể sớm hoà nhập với khu vực và trên thế giới.
• Trong thời đại thông tin bùng nổ ngày nay, việc lập được các chương trình tự hoạt động cho máy tính, máy gia dụng là cần thiết. Và để làm được việc đó cần có một quá trình nghiên cứu, học tập về ngôn ngữ lập trình lâu dài, qua đó nhà lập trình có thể chọn một ngôn ngữ lập trình thích hợp.
• Tin học là một môn học mới ở các trường phổ thông nên học sinh còn nhiều bỡ ngỡ khi tiếp cận với môn học này. Nội dung tin học lập trình lớp 11 là một nội dung mới lạ đối với đa số học sinh với nhiều khái niệm, thuật ngữ, cấu trúc dữ liệu mà học sinh mới được tiếp xúc lần đầu. Chính vì vậy mà học sinh dễ mắc sai lầm khi lập trình giải quyết các bài toán. Nguyên nhân dẫn đến những khó khăn mà học sinh thường gặp là rất phong phú.
• Tuy nhiên mọi thứ điều có điểm khởi đầu của nó, với học sinh việc học ngôn ngữ lập trình Turbo Pascal là khởi đầu cho việc tiếp cận ngôn ngữ lập trình bậc cao, qua đó giúp các em hình dung được sự ra đời, cấu tạo, hoạt đông cũng như ích lợi của các chương trình hoạt động trong máy tính, các máy tự động Qua đó giúp các em có thêm một định hướng, một niềm đam mê về tin học, về nghề nghiệp mà các em chọn sau này.
Xuất phát từ cơ sở trên, tôi đã chọn đề tài “Một số lưu ý khi dạy lập trình Pascal cho học sinh lớp 11”.
MỤC LỤC A. PHẦN I: MỞ ĐẦU Lý do chọn đề tài .............................................................................................2 Mục đích nghiên cứu ...................................................................................... 2 Đối tượng nghiên cứu.......................................................................................3 Phương pháp nghiên cứu............................... ..................................................3 B. PHẦN II: NỘI DUNG SÁNG KIẾN KINH NGHỆM 2.1. Cơ sở lí luận của sáng kiến kinh nghiệm..................................................3 2.2. Thưc trạng vấn đề trước khí áp dụng sáng kiến kinh nghiệm...................3 2.3. Sáng kiến kinh nghiệm và các giải pháp đã sử dụng để giải quyết vấn đề. I. Một số lỗi sai thường gặp của học sinh trong lập trình Pascal Sử dụng dấu ; sai vị trí..................................................................................3 Không phân biệt được hằng xâu và biến......................................................4 Khai báo sai miền chỉ số cho dữ liệu kiểu mảng..........................................4 Khai báo biến thuộc kiểu dữ liệu này nhưng trong phần thân chương trình lại dùng biến với kiểu dữ liệu khác..............................................................4 Tràn số do kết quả tính toán vượt quá giới hạn .......................................... 4 Không hiểu nguyên tắc làm tròn đối với số thực.........................................4 Chưa nắm chắc nguyên lí hoạt động của vòng lặp For................................4 Giá trị biến điều khiển vượt quá miền chỉ số của mảng...............................5 Chưa hiểu thứ tự ưu tiên phép toán..............................................................5 II. Giải pháp sử dụng để giải quyết vấn đề Bài tập về đọc hiểu chương trình.................................................................6 Bài tập về sửa lỗi chương trình....................................................................6 Bài tập về khai báo biến...............................................................................7 Bài tập về viết thuật toán..............................................................................8 Chia bài toán thành nhiều bài toán nhỏ........................................................8 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......................................................................9 C. PHẦN III: KẾT LUẬN VÀ KIẾN NGHỊ DANH MỤC TÀI LIỆU THAM KHẢO .......................................................... 10 PHẦN I: MỞ ĐẦU 1) Lý do chọn đề tài : Sự phát triển mạnh mẽ như vũ bão của tin học đã làm cho xã hội có nhiều nhận thức mới về cách tổ chức các hoạt động. Nhiều quốc gia trên thế giới ý thức được rất rõ tầm quan trọng của tin học và có những đầu tư lớn cho lĩnh vực này, đặc biệt trong giáo dục nâng cao dân trí về tin học và đào tạo nguồn nhân lực có chất lượng cao. Người Việt Nam có nhiều tố chất thích hợp với ngành khoa học này, vì thế chúng ta hi vọng có thể sớm hoà nhập với khu vực và trên thế giới. Trong thời đại thông tin bùng nổ ngày nay, việc lập được các chương trình tự hoạt động cho máy tính, máy gia dụng là cần thiết. Và để làm được việc đó cần có một quá trình nghiên cứu, học tập về ngôn ngữ lập trình lâu dài, qua đó nhà lập trình có thể chọn một ngôn ngữ lập trình thích hợp. Tin học là một môn học mới ở các trường phổ thông nên học sinh còn nhiều bỡ ngỡ khi tiếp cận với môn học này. Nội dung tin học lập trình lớp 11 là một nội dung mới lạ đối với đa số học sinh với nhiều khái niệm, thuật ngữ, cấu trúc dữ liệu mà học sinh mới được tiếp xúc lần đầu. Chính vì vậy mà học sinh dễ mắc sai lầm khi lập trình giải quyết các bài toán. Nguyên nhân dẫn đến những khó khăn mà học sinh thường gặp là rất phong phú. Tuy nhiên mọi thứ điều có điểm khởi đầu của nó, với học sinh việc học ngôn ngữ lập trình Turbo Pascal là khởi đầu cho việc tiếp cận ngôn ngữ lập trình bậc cao, qua đó giúp các em hình dung được sự ra đời, cấu tạo, hoạt đông cũng như ích lợi của các chương trình hoạt động trong máy tính, các máy tự động Qua đó giúp các em có thêm một định hướng, một niềm đam mê về tin học, về nghề nghiệp mà các em chọn sau này. Xuất phát từ cơ sở trên, tôi đã chọn đề tài “Một số lưu ý khi dạy lập trình Pascal cho học sinh lớp 11”. 2) Mục đích nghiên cứu: Do gặp phải những khó khăn trên nên khi lập trình giải các bài toán học sinh thường mắc rất nhiều lỗi, thậm chí có những lỗi các em mắc phải nhiều lần do không hiểu nguyên nhân xuất hiện lỗi. Vì vậy trong nội dung đề tài này tôi nêu ra một số lỗi phổ biến các em thường mắc phải và cách sửa các lỗi này. Tuy vậy, đối với đối tượng học sinh khá giỏi, đa phần các em rất hào hứng với việc học lập trình, cụ thể là ngôn ngữ lập trình Turbo Pascal. Do đó trong đề tài này tôi cũng trình bày thêm một số lưu ý cũng như kinh nghiệm dạy lập trình Pascal đề giúp học sinh có thể hiểu bài một cách nhanh chóng, nắm chắc kiến thức và kĩ năng lập trình Pascal và một số ví dụ mở rộng, nâng cao với đối tượng học sinh này. 3) Đối tượng nghiên cứu: Đối tượng nghiên cứu: học sinh các lớp 11A1, 11A2 , 11A3 trường THPT Nông Cống I. 4) Phương pháp nghiên cứu: Trực tiếp qua các bài dạy. PHẦN II: 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 Đảng và Nhà nước ta đã nhận thấy được tầm quan trọng của ngành Tin học và đã đưa môn học này vào nhà trường phổ thông như những môn khoa học khác bắt đầu từ năm học 2006-2007. Thành quả to lớn của ngành công nghệ này ngày ngay không chỉ vận dụng riêng trong giáo dục và rộng rãi khắp các lĩnh vực trong xã hội. Riêng trong trường phổ thông Tin học cũng được vận dụng triệt để, đặc biệt là với cơ sở vật chất đầy đủ như trường THPT Nông Cống I, tất cả các môn học đều khả năng áp dụng công nghệ thông tin vào giảng dạy. Chính vì vậy đây cũng là một lợi thế to lớn cho riêng môn Tin học, đặc biệt là trong chương trình Tin học 11 các em bước đầu làm quen với việc lập trình. Kỹ năng của môn học này là giúp học sinh hướng tới việc học tập chủ động, chống lại thói quen học tập thụ động. Mục tiêu của giáo viên là làm thế nào sau khi kết thúc chương trình lớp 11 các em hiểu và nắm được như thế nào là ngôn ngữ lập trình, cụ thể là ngôn ngữ lập trình Pascal. Với một số nội dung trong đề tài này, học sinh có thể tự học, tự rèn luyện thông qua một số bài tập, dạng bài tập cụ thể. 2.2. Thực trạng vấn đề trước khi áp dụng sáng kiến kinh nghiệm Qua thực tế giảng dạy ở trường THPT Nông Cống I các năm qua, tôi nhận thấy khi học đến chương trình tin học lớp 11 đa số học sinh đều nhận xét bộ môn này rất khó. Các học sinh thường gặp khá nhiều lỗi khi viết một chương trình trong ngôn ngữ lập trình Pascal. Tuy nhiên cũng có một số lượng không nhỏ học sinh rất yêu thích tin học và thích tìm hiểu một số bài toán, dạng toán ngoài phạm vi sách giáo khoa. 2.3. Sáng kiến kinh nghiệm và các giải pháp sử dụng để giải quyết vấn đề. I. Một số lỗi sai thường gặp của học sinh trong lập trình Pascal: Sử dụng dấu ; sai vị trí. Trước Else không có dấu chấm phẩy. - Sử dụng dấu chấm phẩy sau từ khoá do trong các câu lệnh lặp ) Không phân biệt được hằng xâu và biến: học sinh cần phải chú ý hằng xâu đặt trong cặp nháy đơn còn biến thì không cần đặt trong cặp nháy đơn. Writeln(' Nhap phan tu thu ',i,' cua mang'); Nhap phan tu thu, cua mang: là hằng xâu. i: là biến. Khai báo sai miền chỉ số cho dữ liệu kiểu mảng. Ví dụ : Nhập vào một mảng số nguyên gồm các số lớn hơn 5 và nhỏ hơn 100. In mảng vừa nhập. Học sinh khai báo mảng như sau: Var a: array[5..100] of integer; Khai báo biến thuộc kiểu dữ liệu này nhưng trong phần thân chương trình lại dùng biến đó với kiểu dữ liệu khác. Ví dụ: Khai báo biến a thuộc kiểu nguyên, nhưng trong phần thân chương trình lại có câu lệnh a:=a/2; biểu thức a/2 thuộc kiểu số thực, biến a thuộc kiểu nguyên không thể lưu trữ giá trị số thực. ) Tràn số do kết quả tính toán vượt quá giới hạn. Tính tổng các số nguyên từ 50 đên 500 Var SUM,i:integer; Begin SUM:=0; For i:=50 to 500 do SUM:=SUM+i; Writeln('Tong:=',SUM); End. Song trong thực tế, tổng SUM sẽ lớn hơn 32767 tức là tràn ô nhớ. Vì vậy, cần khai báo tổng SUM à Real thì chương trình mới chạy được. ) Không hiểu nguyên tắc làm tròn số đối với số thực. Trong toán học: Tuy nhiên trong Pascal biểu thức sau sẽ cho kết quả sai: If 10/sqrt(5)=3/sqrt(5)+5/sqrt(5)+2/sqrt(5) then write(‘Dung!’) else write(‘sai!’); Khi thực hiện vế trái máy tính chỉ tính sai số 1lần, còn vế phải chịu sai số 3 lần. Do đó kết quả khi thực hiện là không giống nhau. Đây chỉ là 1 nguyên nhân khiến cho quá trình tính toán gần đúng trên máy tính thành tính toán sai. Chưa nắm chắc nguyên lí hoạt động của vòng lặp For nên dễ sai trong quá trình dùng biến trong vòng lặp For lồng nhau Ví dụ: Trong bài toán sắp xếp dãy không giảm có đoạn chương trình For j:=N downto 2 do For i:=1 to j-1 do If a[i]>a[j] then begin t:=a[i]; a[i]:=a[i+1]; a[i+1]:=t; end; Nhiều học sinh tự sửa lại câu lệnh For j:=N downto 2 do bằng câu lệnh For j:=2 to n do, vì nghĩ hai câu lệnh này như nhau. Giá trị biến điều khiển vượt quá miền chỉ số của mảng. Ví dụ 2: Nhập vào một dãy số gồm 7 phần tử và cho biết dãy vừa nhập có tạo thành cấp số cộng không? Học sinh lập trình giải bài toán trên như sau: Var a: array[1..7] of integer; i,d:integer;kt:boolean; Begin Write(‘nhap day so:’); For i:=1 to 7 do Begin Write(‘a[’ ,i, ‘]’); Readln(a[i]); End; d:=a[2]-a[1];kt:=true;i:=1; while (kt) and (i<=7) do if (a[i]-a[i-1]d) then kt:=false else i:=i+1; if kt then writeln(‘Day so tao thanh cap so cong!’) else writeln(‘Day so khong tao thanh cap so cong!’); readln End. Khi thực hiện chương trình trên, chương trình dịch không báo lỗi nhưng kết quả khi thực hiện chương trình sẽ bị sai lệch. 9) Chưa hiểu thứ tự ưu tiên phép toán. Thứ tự ưu tiên các phép toán trong ngôn ngữ lập trình Pascal như sau: Lời gọi hàm Biểu thức trong ngoặc Toán tử NOT * / div mod + - or >=,>, II. Giải pháp sử dụng để giải quyết vấn đề: Đa dạng các loại bài tập: Khi dạy lập trình nói chung và Pascal nói riêng, nhiều khi người dạy chỉ chú ý tới các bài tập về lập trình mà không nghĩ rằng trong những bước đầu để học sinh hiểu bài cần phải đưa ra nhiều dạng bài tập, trong số các dạng bài tập đó ở đây ta có thể nêu ra một số dạng như sau: bài tập về viết thuật toán, bài tập về đọc hiểu chương trình, bài tập về sửa lỗi chương trình, Bài tập về đọc hiểu chương trình: Loại bài tập này sẽ giúp phát triển tư duy, giúp học sinh hiểu bài, nhất là khi dạy các cấu trúc lệnh. Đối với dạng bài tập này, giáo viên nên hướng dẫn các em thực hiện tuần tự từng lệnh theo từng câu lệnh cụ thể. Ví dụ: Cho biết kết quả khi thực hiện chương trình sau: Program vd; Uses crt; Var i,n,t :integer; var a:array[1..100] of integer; Begin Clrscr; write('N:='); readln(N); for i:=1 to N do readln(a[i]); for i:=1 to N div 2 do begin t:=a[i]; a[i]:=a[n-i+1]; a[n-i+1]:=t; end; for i:=1 to n do write(a[i]:5); Readln; End. Bài tập về sửa lỗi chương trình: Trong lập trình Pascal việc giúp học sinh nhận ra lỗi sai và cách sửa các lỗi là vô cùng cần thiết. Để có thể sửa lỗi nhanh chóng cần có sự tích luỹ kinh nghiệm những lỗi thường hay gặp. Nếu có điều kiện sử dụng máy chiếu trong các tiết học này sẽ đem lại hiệu quả trực quan cao. Cả lớp có thể nhìn thấy toàn chương trình và quy trình dịch cũng như sửa lỗi của giáo viên. Lỗi về cú pháp thì được chương trình dịch phát hiện và báo, nhưng lỗi ngữ nghĩa thì không. Function UCLN(var a,b:vord):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); write('d:=',d); If d>1 then begin tu:=tu div d; mau:=mau div d; end; Writeln('phan so 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 phân số có tử số và mẫu số nhập từ bàn phím. Nhìn vào chương trình ta thấy không phải bàn đến tính đúng đắn của công thức, tuy nhiên khi chạy chương trình ta luôn nhận được kết quả là 1/1 cho mọi phân số. Vậy lỗi do đâu? Lỗi do chương trình trên hàm UCLN được tổ chức truyền theo tham biến, nên sau lời goi d:=UCLN(tu,mau), ta được đông thời các giá trị d, tu, mau bằng nhau và bằng d. Để sửa lại chương trình cho đúng ta phải sửa lại khai bao tham số trong hàm UCLN là truyền theo tham trị ( tức là bỏ từ khoá Var trước a,b). Bài tập về khai báo biến: Ví dụ: Hãy chỉ ra các lỗi sai trong khai báo sau: Var K,M,I,L: Integer; C,C1: Char; i,il,j: integer; PI=3.14; Biến i khai báo 2 lần ( trong Pascal không phân biệt chữ hoa và chữ thường). PI là hằng thực nên khai báo đúng phải là: Const PI=3.14; Khai báo kiểu dữ liệu không chuẩn ( khai báo đúng nhưng tốn nhiều bộ nhớ và không sát với yêu cầu của bài toán) Ví dụ: Cho dãy A gồm n số nguyên dương a1, a2,a3...an. Tìm giá trị nhỏ nhất của dãy và đưa ra vị trí của số đó. Học sinh viết khai báo như sau: Const nmax=50; Var A: array[1..nmax] ò integer; n,i,min,csmin:integer; Bài toán cho ta là dãy số nguyên dương nhưng học sinh khai báo là Integer có nghĩa là khi nhập giá trị cho phần tử mảng âm vẫn thoả mãn điều này sai với yêu cầu của bài toán. Bài tập về viết thuật toán: Theo định nghĩa trong sách giáo khoa Tin học 10, thuật toán là một dãy hữu hạn các thao tác được sắp xếp theo một trình tự xác định, sao cho sau khi thực hiện dãy thao tác ấy từ INPUT ta nhận được OUTPUT. Nói cách khác, trình bày thuật toán tức là chỉ ra các bước cần thực hiện để đi đến kết quả. Việc trình bày thuật toán trước khi viết chương trình là hết sức quan trọng. Thuật toán đúng thì chương trình mới có khả năng đúng, còn một thuật toán sai chắc chắn là cho một chương trình sai. Tuy nhiên đối với phần lớn học sinh lớp 11 thường bỏ qua bước này do tâm lý học sinh không thích các loại bài tập như thế. Trong nhiều trường hợp tưởng như không cần thuật toán cụ thể học sinh vẫn viết được chương trình. Thực tế thuật toán đó không được viết ra nhưng đã hình thành sẵn trong đầu người viết. Một bài toán có thể có nhiều cách giải khác nhau ứng với mỗi cách giải ta có một thuật toán. Để giúp học sinh có khả năng nhanh chóng nắm được ý tưởng của người khác cần luỵên cho các em biết giải bài toán theo một thuật toán đã được trao đổi. Khả năng hiểu được nhanh ý tưởng của người khác cũng chính là yêu cầu trong hoạt động nhóm. Phát triển khả năng này là phát triển một phẩm chất tư duy quí báu để các em biết hợp tác trong công việc, một trong những yêu cầu của người lao động, sáng tạo trong thời đại mới, thời đại mà một sản phẩm là sự kết tinh lao động của nhiều người. Với đa số học sinh hiện nay, cần phải dành một lượng thời gian thích hợp để rèn luỵên loại bài tập này. Phải làm sao cho việc viết thuật toán trở thành kĩ năng để khi các em lập trình trên máy, tuy không cần viết thuật toán ra song các em có thể hình dung được thuật toán đó trong đầu. Cần phải tạo cho các em có ý thức khi viết một chương trình Pascal là phải tuân thủ theo trình tự sau: Bài toán "Xây dựng thuật toán"Viết chương trình Ví dụ: Một lớp có 40 học sinh, giờ chào cờ nhà trường yêu cầu xếp thành 1 hàng dọc theo thứ tự từ thấp đến cao. Với bài toán trong thực tế như trên ta có thể phát biểu lại bài toán trong toán học như sau: Cho dãy 40 số nguyên, hãy sắp xếp dãy đó theo thứ tự tăng dần. Khi đó có thể trình bày thuật toán như sau: B1: Nhập N, a1,a2,...a40. B2: Gán M=40 B3: Nếu M<2 thì đưa ra dãy đã được sắp xếp và kết thúc B4: Gán M=M-1, i=0 B5: Gán i=i+1 B6: Nếu i>M thì quay lại B3 B7: Nếu ai>ai+1 thì tráo đổi ai cho ai+1 B8: Quay lại B5 5. Chia một bài toán thành nhiều bài toán nhỏ: Trong thực tế. chúng ta thường gặp những vấn đề lớn mà với sức của một người thì không thể giải quyết được. khi gặp những vấn đề như vậy, ta thường nhờ bạn bè, người thân giúp một tay, mỗi người lo một phần việc.Khi giải một bài toán, ta thường chia bài toán lớn ban đầu thành nhiều bài toán con để việc giải bài toán ban đầu trở nên dễ dàng hơn, Và như vậy, khi cần giải quyết một vấn đề nào đó bằng máy tính, để viết một chương trình phức tạp ta có thể viết từng phần chương trình giải quyết từng vấn đề nhỏ. Như vậy, việc phân chia một bài toán thành nhiều bài toán nhỏ sẽ giúp cho việc giải quyết bài toán mạch lạc, vịêc kiểm tra sai sót thuận tiện, có thể thấy kết quả ở từng bước và có thể điều chỉnh kịp thời. Cụ thể chính là rèn luyện tư duy và khả năng sư dụng chương trình con. 2.4. Hiệu quả của sáng kiến kinh nghiệm đối với hoạt động giáo dục, bản thân, đồng nghiệp và học sinh. Bảng số liệu kết quả đạt được của học sinh lớp 11 năm học 2014-2015 khi chưa thực hiện đề tài: STT Lớp Sỉ số Đạt yêu cầu Không đạt yêu cầu 1 11C1 49 70% 30% 2 11C2 48 62.5% 37.5% 3 11C5 50 44% 56% Khi thực hiện thực nghiệm qua các đối tượng học sinh đã nêu trên, đa số các em tránh được các lỗi thường gặp khi học lập trình Pascal. Một số không ít học sinh có tiến bộ rõ rệt khi viết các chương trình có sử dụng lập trình có cấu trúc. Nâng cao việc yêu thích học tin học đối với một bộ phận học sinh và một số em có định hướng nghề nghiệp sau này. Bảng số liệu kết quả đạt được của học sinh lớp 11 năm học 2015-2016 sau khi thực hiện đề tài: STT Lớp Sỉ số Đạt yêu cầu Không đạt yêu cầu 1 11A1 45 92% 8% 2 11A2 43 85% 15% 3 11A3 48 66% 34% III. KẾT LUẬN VÀ KIẾN NGHỊ Có thể nói sáng kiến kinh nghiệm trên là một trong những vấn đề tuy đơn giản nhưng lại là nền tảng vững chắc để bước đầu các em hiểu rõ và yêu thích môn học. Nó cũng là một tài liệu hữu ích đối với những giáo viên vừa mới đứng lớp giảng dạy lập trình Pascal. Việc ứng dụng của sáng kiến đã được vận dụng ngay tại tại trường THPT Nông Cống I và đem lại hiệu quả trông thấy thông qua các số liệu khảo sát. Hy vọng sáng kiến này sẽ được nhiều đồng nghiệp cùng chuyên môn ở các trường tham khảo và hướng tiếp tục nghiên cứu phát triển mở rộng hơn nữa để sáng kiến được hoàn thiện hơn. DANH MỤC TÀI LIỆU THAM KHẢO Hội Tin học Việt Nam - Tạp chí “Tin học và nhà trường” Hồ Sĩ Đàm (chủ biên)- Sách giáo khoa, sách giáo viên tin học lớp 11 GS-TS Hoàng Kiếm -“Giải một bài toán trên máy tính như thế nào” 4. Quách Tuấn Ngọc - Ngôn ngữ lập trình Pascal XÁC NHẬN CỦA THỦ TRƯỞNG ĐƠN VỊ Thanh Hoá, ngày 1 tháng 5 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.
Tài liệu đính kèm:
- sang_kien_kinh_nghiem_mot_so_luu_y_khi_day_lap_trinh_pascal.doc