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

doc 21 trang sklop8 25/08/2024 570
Bạn đang xem 20 trang mẫu của tài liệu "Sáng kiến kinh nghiệm Một số lỗi cần lưu ý khi dạy lập trình Pascal cho học sinh Lớp 8", để 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 Một số lỗi cần lưu ý khi dạy lập trình Pascal cho học sinh Lớp 8

Sáng kiến kinh nghiệm Một số lỗi cần lưu ý khi dạy lập trình Pascal cho học sinh Lớp 8
 A. PHẦN MỞ ĐẦU
 Trong thời buổi công nghệ hiện đại như ngày nay, nền công nghệp 4.0 
được xem là ngành công nghiệp chủ lực để ứng dụng vào việc phát triển kinh tế 
của một quốc gia. Với thực tế đó ở góc độ giáo dục việc đào tạo, hướng dẫn cho 
thế hệ trẻ học sinh hiện nay nhất là việc học lập trình đối với học sinh được xem 
là một học phần khó và trừu tượng. Để đáp ứng cho nền kinh tế phát triển theo 
hướng công nghiệp 4.0 thì người lao động và làm việc hiện nay cần phải biết sử 
dụng từ mức độ biết đến thành thạo những trang thiết bị ở lĩnh vực công nghệ là 
điều rất cần thiết với mọi người, trong đó lĩnh vực giáo dục nói chung và phân 
môn Tin học nói riêng ở nhà trường đóng vai trò khá quan trọng đối với học 
sinh. Mà xuất phát điểm cho các trang thiết bị sẳn có trong lĩnh vực công nghệ là 
khâu lập trình cho các máy móc hay dây chuyền sản xuất, vì thế tôi quyết định 
chọn đề tài “Một số lỗi cần lưu ý khi dạy lập trình Pascal cho học sinh lớp 8” để 
hướng dẫn học sinh.
 I. Lý do chọn đề tài 
 1. Cơ sở lý luận
 - Chỉ thị số 55/2008/CT-BGDĐT ngày 30/09/2008 về tăng cường giảng dạy, 
đào tạo và ứng dụng công nghệ thông tin trong ngành giáo dục giai đoạn 2008 - 
2012. Công nghệ thông tin (sau đây viết tắt là CNTT) là công cụ đắc lực hỗ trợ 
đổi mới phương pháp giảng dạy, học tập và hỗ trợ đổi mới quản lý giáo dục, góp 
phần nhằm nâng cao hiệu quả và chất lượng giáo dục. Phát triển nguồn nhân lực 
CNTT và ứng dụng CNTT trong giáo dục là một nhiệm vụ quan trọng có ý 
nghĩa quyết định sự phát triển CNTT của đất nước.
 - Với thời đại thông tin bùng nổ ngày nay, việc lập được các chương trình 
chạy trên máy tính, các thiết bị điện tử thông minh, tạo ra các trò chơi học vui – 
vui học là điều rất 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 để viết chương trình. 2. Phương pháp nghiên cứu
 Viết sáng kiến kinh nghiệm thường xuyên liên tục cũng là nhiệm vụ chính 
trị của mỗi giáo viên, nhưng cần phải lựa chọn phương pháp nghiên cứu đúng 
đắn và phù hợp với nhà trường trung học phổ thông. Sáng kiến kinh nghiệm 
đang trình bày của tôi dựa theo các luận cứ khoa học hướng đối tượng, cụ thể: 
thuyết trình, quan sát, điều tra cơ bản, phân tích kết quả thực nghiệm sư phạm, 
... phù hợp với bài học và môn học.
 III. Giới hạn của đề tài
 Nội dung khi dạy ngôn ngữ lập trình nói chung, ngôn ngữ lập trình Turbo 
Pascal hay Free Pascal nói riêng là rất nhiều, rất phong phú. Tuy nhiên trong 
phạm vi sáng kiến kinh nghiệm này tôi chỉ trình bày một số lỗi cần lưu ý, kinh 
nghiệm của cá nhân tôi qua các nội dung cụ thể sau:
- Một số lỗi sai phổ biến của học sinh khi học lập trình Pascal;
- Một số kinh nghiệm dạy lập trình nói chung và Turbo Pascal nói riêng;
- Một số bài tập làm thêm với đối tượng học sinh khá, giỏi.
 IV. Kế hoạch thực hiện
 Thực hiện thu thập thông tin trực tiếp qua các tiết dạy lý thuyết cũng như 
các tiết thực hành viết chương trình của các em trên giấy và thông qua phần 
mềm trên máy tính.
 B. PHẦN NỘI DUNG
 I. Cơ sở lý luận
 Để có thể hướng dẫn cho học sinh nhận thấy và hiểu rõ những lỗi khi gặp 
phải trong việc lập trình bản thân đã tham khảo một số tài liệu: Sách Tin học 
dành cho THCS quyển 3; Sách hướng dẫn học Tin học 8 (sách thử nghiệm); Các 
bài tập Pascal được thẩm định cấp Phòng giáo dục; Lập trình Pascal của Bùi 
Việt Hà; Sách Tin học 11; 100 bài tập Turbo Pascal lớp 8; ...
 II. Cơ sở thực tiễn
 Qua thực tế giảng dạy tại trường THCS Đại Phước những năm qua, tôi 
nhận thấy khi học đến chương trình Tin học lớp 8 đa số học sinh đều cảm thấy 3- Đặt tên biến sai quy tắc
 - Tên biến bị trùng với từ khóa;
 - Tên biến bị trùng nhau trong cùng một chương trình;
 - Tên biến bị chứa dấu cách như viết văn bản hay có khoảng cách phía trước,
 4- 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 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;
 5- 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:
 - Biểu thức trong ngoặc: 
 *, /, div, mod
 - +, -, or, and
 - Các phép so sánh: >=,>,
 6- Tràn số do kết quả tính toán vượt quá giới hạn
 Function GT(n:integer):integer; 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- Khai báo sai (không tương thích) kiểu dữ liệu
 Ví dụ: Chương trình tính chu vi và diện tích hình chữ nhật;
uses crt; var a,b:real; s,cv:integer; Begin; clrscr; writeln ('chieu dai a='); 
eadln(a); writeln ('chieu rong b='); readln(b); s:=a*b; CV:= (a+b)*2; 
writeln('dien tich la ',s); write('chu vi la ',cv); readln End. sinh hiểu yêu cầu đề bài và phân loại bài tập cần phải đưa ra nhiều dạng bài tập 
khác nhau, 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ề viết chương trình, 
 1.1 Bài tập về viết thuật toán:
 - Theo khái niệm thuật toán trong sách giáo khoa Tin học quyển 3, thuật 
toán là một dãy hữu hạn các thao tác cần thực hiện để giải một bài toán. 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 8 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. Điểm này cũng giống như một người viết 
tập làm văn là lập dàn ý xong rồi viết bài văn hoàn chỉnh từ dàn bài đã lập.
 - 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 mà 
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ụ: Có n hộp có khối lượng khác nhau và một cái cân dĩa. Hãy chỉ ra 
cách cân để tìm được hộp nặng nhất.Với bài toán trong thực tế như trên ta có thể 
phát biểu lại dưới dạng bài toán trong toán học như sau: Cho tập hợp A có số 
phần tử hữu hạn. Tìm phần tử lớn nhất trong tập A nói trên. Khi đó ta có thể 
trình bày thuật toán như sau: 1.4 Bài tập về sửa lỗi chương trình:
 Ví dụ: Để 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:
 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:
 - a=3,b=4,c=5
 a B c a<b a<c
 3 4 5 T (3<4)
 4
 Vậy số lớn nhất là 4 Kết quả sai
 - a=5,b=4,c=7
 a B c a<b a<c
 5 4 7 F (5<4) T (5<7)
 7
 Vậy số lớn nhất là 7 Kết quả đúng
Chương trình trên thực hiện lúc đúng lúc sai do chương trình mới chỉ so sánh 2 
số a và b thôi đã đưa ra kết luận. Ta có thể sửa lại chương trình như sau:
Uses crt;
Var a,b,c:integer;
Begin
 Clrscr;
 Write(‘nhap vao 3 so:’);
 Readln(a,b,c);
 If a<b then Chương trình có thể được viết như sau:
Uses crt;
Var xau, xauM,Tword:string;
 I:byte;
Begin
 Wrire(‘nhap vao mot xau ki tu’);readln(xau);
 xauM:= ‘’;Tword:= ‘’;
 for i:=1 to length(xau) do
 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); 4. Phân 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.
 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:
 MỘT SỐ LỖI THƯỜNG GẶP
 (LỖI BIÊN DỊCH)
 MÃ LỖI THÔNG BÁO LỖI Ý NGHĨA
 3 Unknown identifier Tên gọi chưa được mô tả
 4 Duplicate indentifier Khai báo lặp một tên gọi
 5 Syntax error Lỗi cú pháp
 8 String constant exceeds line Hằng xâu vượt quá một dòng
 26 Type mismatch Sai kiểu (kiểu không thích hợp)
 36 Begin expected Thiếu BEGIN
 37 End expected Thiếu END
 42 Error in expression Lỗi trong biểu thức
 50 DO expected Thiếu DO
 54 OF expected Thiếu OF
 57 THEN expected Thiếu THEN
 63 Invalid file type Kiểu tệp không hợp lệ
 85 “;” expected Thiếu dấu “;”
 86 “:” expected Thiếu dấu “:”
 87 “,” expected Thiếu dấu “,”
 88 “(” expected Thiếu dấu “(”
 89 “)” expected Thiếu dấu “)” Else
 Begin
 d:=b*b-4*a*c;
 If d=0 then
 Writeln('Phuong trinh co nghiem kep: x=',-b/(2*a):4:2) 
Else
 If d<0 then
 Writeln('Phuong trinh vo nghiem') 
Else
 Begin
 x1:= (-b+sqrt(d))/(2*a);
 x2:= (-b-sqrt(d))/(2*a);
 Write('Phuong trinh co hai nghiem: ‘);
 Writeln(‘ x1=',x1:4:2,' va x2=',x2:4:2);
 End;
 End;
 Readln;
 End.
Bài 2: Bài toán cổ
Trăm trâu trăm cỏ
Trâu đứng ăn năm
Trâu nằm ăn ba
Trâu già ba con một bó.
Hỏi có bao nhiêu con mỗi loại?
 Uses crt;
 Var td,tn,tg:integer;
 Begin
 Clrscr;
 Writeln(' TRAM TRAU TRAM CO:');

File đính kèm:

  • docsang_kien_kinh_nghiem_mot_so_loi_can_luu_y_khi_day_lap_trinh.doc