Sáng kiến kinh nghiệm Tin học Lớp 11 - Một số lưu ý khi dạy lập trình Pascal cho học sinh lớp 11 - Thái Thị Hoa Lý

doc 26 Trang tailieuthpt 59
Bạn đang xem 20 trang mẫu của tài liệu "Sáng kiến kinh nghiệm Tin học Lớp 11 - Một số lưu ý khi dạy lập trình Pascal cho học sinh lớp 11 - Thái Thị Hoa Lý", để tải tài liệu gốc về máy hãy click vào nút Download ở trên.

Tóm tắt nội dung tài liệu: Sáng kiến kinh nghiệm Tin học Lớp 11 - Một số lưu ý khi dạy lập trình Pascal cho học sinh lớp 11 - Thái Thị Hoa Lý

Sáng kiến kinh nghiệm Tin học Lớp 11 - Một số lưu ý khi dạy lập trình Pascal cho học sinh lớp 11 - Thái Thị Hoa Lý
 Đề 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: ĐẶT VẤN ĐỀ
 1. Lý do chọn đề tài ................................................................................. 3
 2. Mục đích nghiên cứu ........................................................................... 4
 3. Phạm vi đề tài .......................................................................................4
 4. Đối tượng, kế hoạch và phạm vi nghiên cứu .......................................4
 B. PHẦN II: NỘI DUNG
 CHƯƠNG I : TỔNG QUAN .................................................................... 5
 1. Cơ sở lý luận ....................................................................................... 5
 2. Cơ sở thực tiễn .....,.............................................................................. 5
 CHƯƠNG II : NỘI DUNG VẤN ĐỀ NGHIÊN CỨU ............................. 7
 I. Một số lỗi sai thường gặp của học sinh trong lập trình Pascal .......... 7
 1) Khai báo sai miền chỉ số cho dữ liệu kiểu mảng.................................. 7
 2) Giá trị biến điều khiển vượt quá miền chỉ số của mảng ...................... 7
 3) Dùng cùng tên biến điều khiển cho các vòng lặp For lồng nhau ....... 8
 4) Sử dụng dấu chấm phẩy sai vị trí ....................................................... 8
 5) Không phân biệt được hằng xâu và biến ............................................. 8
 6) Tràn số do kết quả tính toán vượt quá giới hạn ................................... 8
 7) Sử dụng tên hàm làm biến cục bộ  9
 8) Chưa hiểu thứ tự ưu tiên phép toán  10 
 9) Không hiểu nguyên tắc làm tròn số đối với số thực .... 10
 II. Một số kinh nghiệm dạy lập trình Pascal ........................................... 10
 1) Có nhiều dạng bài tập ........................................................................ 10
 2) Trình bày thuật toán, yêu cầu học sinh viết chương trình theo đúng 
 thuật toán đó ...................................................................................... 15
 3) Giải bài toán trong một trường hợp riêng, yêu cầu học sinh phát hiện 
 thiếu sót để từ đó hoàn thiện chương trình ........................................ 17
 Giáo viên: Thái Thị HoaLý Đề tài: “Một số lưu ý khi dạy lập trình Pascal cho học sinh lớp 11”
 A. PHẦN I: ĐẶT VẤN ĐỀ
 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ú nhưng có thể thấy một số nguyên nhân chính sau đây:
 + Học sinh thường gặp khó khăn khi xác định bài toán.
 + Khó liên hệ phương pháp giải một bài toán trong toán học với thuật 
 giải trong tin học. 
- 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. 
 Giáo viên: Thái Thị HoaLý Đề tài: “Một số lưu ý khi dạy lập trình Pascal cho học sinh lớp 11”
B. PHẦN II: NỘI DUNG
 CHƯƠNG I
 TỔNG QUAN
 1. Cơ sở lí luận:
 - Đả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. 
 - Trong bối cảnh toàn ngành Giáo dục và Đào tạo đang nỗ lực đổi mới 
 phương pháp dạy học theo hướng phát huy tính tích cực chủ động của 
 học sinh trong hoạt động học tập. Điều 24.2 của Luật giáo dục đã nêu 
 rõ : “Phương pháp giáo dục phổ thông phải phát huy tính tích cực, tự 
 giác, chủ động, sáng tạo của học sinh, phù hợp với đặc điểm của từng 
 lớp học, môn học; bồi dưỡng phương pháp tự học, rèn luyện kỹ năng 
 vận dụng kiến thức vào thực tiễn, tác động đến tình cảm, đem lại niềm 
 vui, hứng thú học tập cho học sinh”. Như vậy, chúng ta có thể thấy 
 định hướng đổi mới phương pháp dạy học đã được khẳng định, không 
 còn là vấn đề tranh luận. Cốt lõi của việc đổi mới phương pháp dạy học 
 ở trường phổ thông 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. 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. Cơ sở thực tiễn:
 - Qua thực tế giảng dạy ở trường Sơn Mỹ 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.
 Giáo viên: Thái Thị HoaLý Đề tài: “Một số lưu ý khi dạy lập trình Pascal cho học sinh lớp 11”
 CHƯƠNG II
 NỘI DUNG VẤN ĐỀ NGHIÊN CỨU
 I. Một số lỗi sai thường gặp của học sinh trong lập trình Pascal:
 1) Khai báo sai miền chỉ số cho dữ liệu kiểu mảng.
 Ví dụ 1: Nhập vào một mảng số nguyên gồm các số lớn hơn 3 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[3..100] of integer;
 2) 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.
 Giáo viên: Thái Thị HoaLý Đề tài: “Một số lưu ý khi dạy lập trình Pascal cho học sinh lớp 11”
 Var i,t:integer;
 Begin
 T:=1;
 For i:=2 to n do t:=t*i;
 Gt:=t;
 End;
 Begin
 Write(‘GT(8)=’, GT(8));
 Readln;
 End.
 Khi thực hiện chương trình GT(8)=-25126 là sai vì thực tế 8!=40320
 Lỗi này do khai báo hàm trả về số nguyên nên miền giá trị tối đa là 32767
 7) Sử dụng tên hàm làm biến cục bộ.
 Do lệnh trả kết quả cho tên hàm rất giống một lệnh gán bình thường 
 nên học sinh thường nhầm tên hàm là biến cục bộ. Vì vậy khi viết chương 
 trình để tiết kiệm biến cục bộ học sinh đã sử dụng tên hàm làm biến cục 
 bộ.
 Function GT(n:integer):Longint;
 Var i:integer;
 Begin
 For i:=2 to n do GT:=GT*i;
 End;
 Trong thân hàm đã sử dụng tên hàm làm biến cục bộ nên khi biên 
 dịch sẽ báo lỗi gọi hàm nhưng thiếu tham số do chương trình hiểu 
 GT:=GT*i là lời gọi đệ qui.
 Để tránh lỗi này cần lưu ý với học sinh: để trả kết quả cho hàm 
 (không đệ quy), tốt nhất nên tính kết quả hàm vào một biến cục bộ, trước 
 Giáo viên: Thái Thị HoaLý Đề tài: “Một số lưu ý khi dạy lập trình Pascal cho học sinh lớp 11”
 Để chuyển từ kiểu thực sang kiểu nguyên ta dùng hàm Round hoặc 
 Trunc
 - Tránh tràn số (đã trình bày ở mục 6)
 II. Một số kinh nghiệm dạy lập trình Pascal:
 1) Có nhiều dạng 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,
 1.1 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.
 - 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 
 Giáo viên: Thái Thị HoaLý Đề tài: “Một số lưu ý khi dạy lập trình Pascal cho học sinh lớp 11”
 While i>1 do
 Begin
 If (i mod 2)0 then i:=i*3+1
 Else i:=i div 2;
 Writeln(i);
 End;
 Readln;
 End.
 1.3 Bài tập về sửa lỗi chương trình:
 Ví dụ 3: Để tìm số lớn nhất trong 3 số a,b,c được nhập vào từ bàn phím, 
có người đã viết chương trình như sau:
 Program vd3;
 Uses crt;
 Var a,b,c:integer;
 Begin
 Clrscr;
 Write(‘nhap vao 3 so:’);
 Readln(a,b,c);
 If a<b then a:=b
 Else 
 If a<c then a:=c;
 Write(‘So lon nhat la:’,a);
 Readln;
End.
 Chương trình trên cho đáp số lúc đúng, lúc sai tuỳ thuộc vào a,b,c. Hãy 
giải thích tại sao và sửa lại cho đúng.
 Ta thực hiện chương trình trên với 2 bộ input sau đây:
 Giáo viên: Thái Thị HoaLý Đề tài: “Một số lưu ý khi dạy lập trình Pascal cho học sinh lớp 11”
 Readln;
End.
 1.4 Bài tập về khai báo biến:
 Ví dụ 4: Trong một chương trình đã chạy tốt, khi thực hiện không có lỗi 
có một số lệnh như sau:
..
Ok:= ‘n’;
J:=round(sqr(n));
If ch= ‘Ok’ then ch:= ‘It is’ + ch;
..
While kt and (i<=j) do
 Begin
 Kt:=Not(n mod i=0);
 X:=1.5*j+i;
 End;
Hãy viết phần khai báo biến cho đoạn chương trình trên.
 Với dạng bài tập này, ta căn cứ vào các câu lệnh đã cho để viết phần khai 
báo biến cho chương trình trên như sau: 
 Var n,i,j:integer;
 X:real;
 Kt:boolean;
 ok:char;ch:string;
 Tuy nhiên ta cũng có nhiều cách để khai báo biến ví dụ biến ok có thể 
thuộc kiểu string; j có thể thuộc kiểu real,
 2) Trình bày thuật toán, yêu cầu học sinh viết chương trình theo đúng 
 thuật toán đó:
 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 ý 
 Giáo viên: Thái Thị HoaLý Đề tài: “Một số lưu ý khi dạy lập trình Pascal cho học sinh lớp 11”
 if xau[i] ‘ ’ then Tword:=Tword+xau[i];
 else
 begin
 if Tword ‘’ then xauM:=xauM+Tword+ ‘ ’;
 Tword:= ‘’;
 End;
 If Tword ‘’ then xauM:=xauM+Tword
 Else xau:=xauM;
 Write(‘Xau sau khi xoa cac ki tu trang thua la:’,xau);
 Readln;
End.
Tuy nhiên bài toán trên ngoài cách giải trên ta có thể sử dụng thuật toán khác 
để giải. Thuật toán như sau:
- bước 1: Xoá các kí tự trong thừa ở đầu.
 Sử dụng vòng lặp while: while xau[1]= ‘ ’ do delete(xau,1,1);
- Bước 2: Xoá các kí tự trống ở cuối.
 Sử dụng vòng lặp while: while xau[length(xau)]= ‘ ’ do 
 delete(xau,length(xau),1);
- bước 3: xoá các kí tự trống thừa giữa các từ.
 Kiểm tra 2 kí tự liền kề nhau có hơn 1 kí tự trống thì xoá kí tự trống.
 While pos( ‘ ’,xau)0 do delete(xau,pos( ‘ ’,xau),1);
Học sinh có thể viết chương trình theo thuật toán 2.
 3) Giải bài toán trong một trường hợp riêng, yêu cầu học sinh phát hiện 
 thiếu sót để từ đó hoàn thiện chương trình:
Ví dụ 6: Viết chương trình đếm và in ra các số trong 1 xâu đã cho.
Cho đoạn chương trình giải quyết công việc trên như sau:
I:=1; dem:=0;
While i<=length(xau) do
 Giáo viên: Thái Thị HoaLý Đề tài: “Một số lưu ý khi dạy lập trình Pascal cho học sinh lớp 11”
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.
 5) Sửa lỗi chương trình:
 Trong dạy 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à rất cần thiết vàquan trọng. Để 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
 III. Một số bài tập tham khảo:
Bài 1. Hệ đếm
 Trong một cuộc truy tìm một xe ôtô chở hàng lậu, nguồn tin đầu tiên cho 
biết: số của biển xe là số có 3 chữ số đối xứng.
 ( Một số có n chữ số trong một hệ đếm nào đó được gọi là đối xứng nếu chữ 
số thứ 1 giống với chữ số thứ n, chữ số thứ 2 giống với chữ số thứ n - 1, ... ). 
 Sau đó cảnh sát nhận được thêm thông tin: số biển số là một số nguyên 
tố. Cảnh sát dựa vào dự đoán của một chuyên gia tin học đưa ra sau khi phân 
tích các nguồn tin và xác định tập các số có thể là số của biển số: biển số nếu 
viết trong hệ nhị phân cũng là một số đối xứng. Nhờ vậy mà cảnh sát đã bắt 
đúng đối tượng. Hãy cho biết các số mà chuyên gia tin học đã xác định mà số 
biển xe mà ông ta đã dự đoán đúng.
Ý tưởng:
Có thể có nhiều cách giải khác nhau nhưng tất cả đều cần phải giải quyết các 
vấn đề:
 - Kiểm tra xem một số có là số nguyên tố hay không?
 - Tìm dạng biểu diễn nhị phân của một số.
 - Kiểm tra một số có là đối xứng không?
 Giáo viên: Thái Thị HoaLý Đề tài: “Một số lưu ý khi dạy lập trình Pascal cho học sinh lớp 11”
 var b:boolean;
 j:integer;
Begin
 b:=true;
 i:=1;
 while (i<=l div 2) and b do
 begin
 if a[i]a[l-i+1] then b:=false
 else i:=i+1;
 end;
 DoiXung:=b;
 End;
BEGIN
 clrscr;
 b[1]:=1; b[2]:=3;
 b[3]:=7; b[4]:=9;
 for m:=1 to 4 do
 for k:=0 to 9 do
 begin
 n:=101*b[m] + 10*k;
 if ngto(n) then
 begin
 chuyenma(n);
 if doixung then
 begin
 write('Bien so can tim: ',n:5,' Ma nhi phan la ');
 for j:=1 to l do write(a[j]:2);
 writeln;
 Giáo viên: Thái Thị HoaLý Đề tài: “Một số lưu ý khi dạy lập trình Pascal cho học sinh lớp 11”
Bài 3. Điểm trên mặt phẳng
 Cho các số thực a, b, c, d, e, f, g, h. Biết rằng hai điểm (e,f) và (g,h) 
khác nhau và các điểm (a,b); (c,d) không nằm trên đường thẳng l đi qua hai 
điểm (e,f) và (g,h). Đường thẳng l chia mặt phẳng làm hai nửa mặt phẳng . 
Hai điểm (a,b) và (c,d) có vị trí như thế nào so với đường thẳng l ?
Ý tưởng:
 Trong bài này ta sử dụng một kiến thức về hình học: Điểm (x,y) muốn 
thuộc đường thẳng đi qua hai điểm (x1,y1) và (x2,y2) khi và chỉ khi nó thoả 
mãn:
 (x - x2)(y1 - y2) = (y - y2)(x1 - x2) hay
 (x - x2)(y1 - y2) - (y - y2)(x1 - x2) = 0 (*)
 Đường thẳng l sẽ chia các điểm không thuộc nó thành 2 loại (tương ứng 
với hai nửa mặt phẳng): một loại làm cho vế trái của (*) dương và loại còn lại 
làm cho nó âm. Vì lẽ đó nếu 2 điểm cùng phía khi và chỉ khi tích hai vế 
dương.
 Giáo viên: Thái Thị HoaLý Đề tài: “Một số lưu ý khi dạy lập trình Pascal cho học sinh lớp 11”
 Lớp Kết quả từ TB trở lên 
 Số học sinh khảo sát 
 Đầu năm Học kì I Cuối năm 
 11A1 42 36 38 42
 11A2 41 30 37 41
 11A3 53 30 33 46
 C. PHẦN III: PHẦN KẾT THÚC
 Trong nội dung của đề tài này, với mong muốn giúp cho việc dạy và 
 học ngôn ngữ lập trình nói chung và Pascal nói riêng của giáo viên và học 
 sinh được tốt hơn.
 Trên đây là toàn bộ kinh nghiệm của tôi qua nhiều năm liền dạy ở khối 
 lớp 11 cũng như tham khảo qua nhiều nguồn thông tin, tư liệu khác nhau, rất 
 mong được sự đóng góp của các đồng nghiệp nhằm giúp đề tài của tôi được 
 hoàn thiện thêm.
 Giáo viên: Thái Thị HoaLý

File đính kèm:

  • docsang_kien_kinh_nghiem_tin_hoc_lop_11_mot_so_luu_y_khi_day_la.doc