Sáng kiến kinh nghiệm Một số phương pháp giúp học sinh phát hiện lỗi và học tốt ngôn ngữ lập trình Pascal Lớp 8

Để đá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ế bộ môn lập trình Pascal là môn học rất quan trọng giúp học sinh hình thành năng lực lập trình để giải quyết nhu cầu thực tế cuộc sống.
Tuy nhiên, trong thực tế, Tin học còn là một môn học tự chọn ở các trường phổ thông và là môn chính khóa với mô hình trường học mới nên học sinh còn nhiều bỡ ngỡ, chưa nhận thấy tầm quan trọng của môn học này. Nội dung tin học lập trình lớp 8 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 như (Học sinh thường gặp khó khăn khi xác định bài toán, học sinh 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 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, Robot, … 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 lựa sau này, xuất phát từ cơ sở trên đã thúc đẩy tôi chọn biện pháp “ Một số phương pháp giúp học sinh phát hiện lỗi và học tốt ngôn ngữ lập trình Pascal lớp
” .
docx 20 trang Chăm Nguyễn 16/03/2025 310
Bạn đang xem tài liệu "Sáng kiến kinh nghiệm Một số phương pháp giúp học sinh phát hiện lỗi và học tốt ngôn ngữ lập trình Pascal 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ố phương pháp giúp học sinh phát hiện lỗi và học tốt ngôn ngữ lập trình Pascal Lớp 8

Sáng kiến kinh nghiệm Một số phương pháp giúp học sinh phát hiện lỗi và học tốt ngôn ngữ lập trình Pascal Lớp 8
o viên hướng dẫn học sinh cách tìm kết quả
mà tác giả đã xây dựng cho bài toán qua các bước của thuật toán.
Ví dụ: Hãy cho biết kết quả của thuật toán sau:
Bước 1- SUM ß 0; i ß 0;
Bước 2- Nếu i > 100 thì chuyển tới bước 4.
Bước 3- i ßi + 1; SUM ß SUM + i. Quay lại bước 2.
Bước 4- Thông báo giá trị SUM và kết thúc thuật toán.
2
.1.3. 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:
Uses crt; Var i:integer;
Begin
Clrscr; I:=7; 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.
-
7 -
2
.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
3
4
b
4
c
5
a<b
T (3<4)
a<c
Vậy số lớn nhất là 4 "Kết quả sai
-
a=5,b=4,c=7
a
5
7
b
4
c
7
a<b
F (5<4)
a<c
T (5<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
Begin
If b<c then a:=c else a:=b;
-
8 -
End
Else
If a<c then a:=c;
Write(‘So lon nhat la:’,a);
Readln
End.
2
.2. Trình bày thuật toán, 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 ý 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í dụ: Lập chương trình cắt bỏ các kí tự trống thừa của một xâu cho trước. Hãy viết
chương trình theo thuật toán sau:
-
Bước 1- i :=1;Tword:= ‘’;XauM:= ‘’;
-
-
-
Bước 2- Kiểm tra xau[i] ‘ ’. nếu đúng thì đến bước 3, sai đến bước 5.
Bước 3- Tword:=Tword+xau[i]
Bước 4- Kiểm tra i<=length(xau). Đúng thì tăng i lên 1 và quay lại bước 2; sai thì
đến bước 8.
-
-
Bước 5- Kiểm tra Tword ‘’. Đúng thì xauM:=xauM+Tword+ ‘ ’ ; gán Tword= ‘’
và quay lại bước 4. Sai thì chuyển đến bước 6.
Bước 6- Kiểm tra Tword ‘’. Đúng thì gán xauM:=xauM+Tword; sai thì xoá kí tự
trống ở vị trí length(xauM) của xauM.
-
-
Bước 7- Gán xau:=xauM;
Bước 8- Kết thúc.
Chương trình có thể được viết như sau:
Uses crt;
Var xau, xauM,Tword:string;
I:byte;
Begin
-
9 -
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)
2
.3. Nhận xét lời giải bài toán, phát hiện thiếu sót từ chương trình.
Ví dụ: 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
Begin
If (xau[i]>= ‘0’) and (xau[i]<= ‘9’) then
-
10 -
Begin
xauM:= ‘’;
while (xau[i]>= ‘0’) and (xau[i]<= ‘9’) do
begin
xauM:=xauM+xau[i];
i:=i+1;
end;
dem:=dem+1;
val(xauM,a[dem],n);
i:=i-1;
End;
I:=i+1;
End;
Write(‘xau co ’,dem, ‘ so la:’);
For i:=1 to dem-1 do write(a[i], ‘,’);
Write(a[dem]);
Đối với bài tập này, giáo viên yêu cầu học sinh nhận xét chương trình đã thực
hiện đúng hay chưa, có đúng đối với tất cả các trường hợp hay không?
Học sinh có thể phát hiện chương trình chỉ đúng với xâu chứa các số thông thường,
còn nếu xâu chứa số thực thị chương trình chưa cho kết quả đúng. Từ nhận xét đó
giáo viên hướng dẫn các em bổ sung và chỉnh sửa lại chương trình.
2
.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.
-
11 -
2
.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 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
Unknown identifier
Duplicate indentifier
Syntax error
Ý NGHĨA
Tên gọi chưa được mô tả
Khai báo lặp một tên gọi
Lỗi cú pháp
3
4
5
8
String constant exceeds line Hằng xâu vượt quá một dòng
2
3
3
4
5
5
5
6
8
8
8
8
8
9
9
9
9
9
9
9
6
6
7
2
0
4
7
3
5
6
7
8
9
0
1
2
3
4
5
6
Type mismatch
Begin expected
End expected
Error in expression
DO expected
OF expected
THEN expected
Invalid file type
“;” expected
“:” expected
“,” expected
“(” expected
“)” expected
“=” expected
“:=” expected
“(.” expected
“.)” expected
“.” expected
“..” expected
Too many variables
Sai kiểu (kiểu không thích hợp)
Thiếu BEGIN
Thiếu END
Lỗi trong biểu thức
Thiếu DO
Thiếu OF
Thiếu THEN
Kiểu tệp không hợp lệ
Thiếu dấu “;”
Thiếu dấu “:”
Thiếu dấu “,”
Thiếu dấu “(”
Thiếu dấu “)”
Thiếu dấu “=”
Thiếu dấu “:=”
Thiếu dấu “(.”
Thiếu dấu “.)”
Thiếu dấu “.”
Thiếu dấu “..”
Quá nhiều biến
MỘT SỐ LỖI THƯỜNG GẶP:
(LỖI SINH RA TRONG QUÁ TRÌNH CHẠY CHƯƠNG TRÌNH)
Runtime Error
MÃ LỖI
THÔNG BÁO LỖI
File not found
Ý NGHĨA
Không tìm thấy tệp
Không tìm thấy đường dẫn
Lỗi khi đọc đĩa
2
3
Path not found
Disk read error
Disk write error
File not open
Division by zero
1
1
1
2
00
01
03
00
Lỗi khi ghi đĩa
Tệp chưa được mở
Lỗi chia cho số 0
-
12 -
3
. Một số bài tập tham khảo (dành cho học sinh khá, giỏi):
Dạng 1: Viết chương trình giải các dạng phương trình.
Ví dụ: Viết chương trình giải phương trình bậc 2 (ax2 + bx +c =0)
Uses crt;
Var a,b,c,d,x,x1,x2:real;
Begin
Writeln('GIAI PHUONG TRINH BAC II:');
Write('Nhap he so a=');readln(a);
Write('Nhap he so b=');readln(b);
Write('Nhap he so c=');readln(c);
If a=0 then
If b=0 then
If c=0 then
Writeln('Phuong trinh co vo so nghiem')
Writeln('Phuong trinh vo nghiem')
Else
Else
Else
Writeln('Phuong trinh co mot nghiem: x=',-c/b:4:2)
Begin
d:=b*b-4*a*c;
If d=0 then
Writeln('Phuong trinh co nghiem kep: x=',-b/(2*a):4:2)
If d<0 then
Writeln('Phuong trinh vo nghiem')
Else
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;
-
13 -
Readln
End.
Dạng 2: Viết chương trình giải các bài toán cổ.
Ví dụ: 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:');
Writeln('----------------------------------');
Writeln('Trau dung Trau nam Trau gia');
For td:=0 to 20 do
For tn:=0 to 33 do
For tg:=0 to 100 do
If ((5*td+3*tn+tg div 3=100) and (td+tn+tg=100) and (tg mod 3=0))then
Writeln(td:5, tn:5, tg:5);
Readln;
End.
Dạng 3: Viết chương trình tính diện tích một hình
Viết các chương trình con tính diện tích tam giác, tròn, vuông, chữ nhật trong một
chương trình. Sau đó hỏi chọn một trong các phương án tính diện tích bằng cách chọn
trong bảng chọn lệnh sau:
0
1
2
. Không làm gì hết và trở về màn hình soạn thảo.
. Tính diện tích hình vuông
. Tính diện tích hình tròn
-
14 -
3
4
. Tính diện tích tam giác
. Tính diện tích hình chữ nhật
Uses crt;
Procedure HV;
Var s,a:real;
Begin
Writeln('TINH DIEN TICH HINH VUONG:');
Write('Nhap chieu dai cua canh a = ');readln(a);
s:=a*a;
Writeln('Dien tich hinh vuong = ',s:6:2);
Procedure HT;
End;
Var s,r:real;
Begin
Writeln('TINH DIEN TICH HINH TRON:');
Write('Nhap ban kinh R = ');readln(r);
s:=pi*r*r;
Writeln('Dien tich hinh tron = ',s:6:2);
End;
Procedure TG;
Var a, b, c,s,p:real;
Begin
Writeln('TINH DIEN TICH TAM GIAC:');
Write('nhap a =');readln(a);
Write ('nhap b =');readln(b);
Write('nhap c =');readln(c);
If ((a+b)>c)and((b+c)>a)and((a+c)>b) then
Begin
p:=(a+b+c)/2;
s:=sqrt(p*(p-a)*(p-b)*(p-c));
Writeln('Chu vi tam giac:',2*p:4:2) ;
Writeln('Dien tich tam giac:',s:4:2);
End
Else
-
15 -
Writeln(a,', ',b,', ',c,' khong phai la ba canh cua tam giac') ;
End;
Procedure CN;
Var a, b, s:real;
Begin
Writeln('TINH DIEN TICH HINH CHU NHAT:');
Write('Nhap chieu dai a =');readln(a);
Write('Nhap chieu rong b= ');readln(b);
s:= a*b;
Writeln('Dien tich hinh chu nhat, s= ',s:6:2);
End;
Procedure menu;
Var d:integer;
Begin
Clrscr;
Writeln('CHON MOT TRONG CAC PHUONG AN SAU:');
Writeln('0: Quay ve man hinh soan thao');
Writeln('1: Tinh dien tich hinh vuong');
Writeln('2: Tinh dien tich hinh tron');
Writeln('3: tinh dien tich tam giac');
Writeln('4: Tinh dien tich hinh chu nhat');
Write(' Hay chon mot phuong an: '); readln(d);
Writeln;
Case d of
0
1
2
3
4
: Exit;
: HV;
: HT;
: TG;
: CN;
End;
End;
Begin
-
16 -
menu;
Readln;
End.
Dạng 4: Viết chương trình giải các bài toán thực tế.
Ví dụ: viết chương trình giải bài toán sau :
Hằng tháng các hộ dân đều nhận được hóa đơn tiền điện. Tiền điện tiêu dùng của
mỗi hộ gia đình được tính như sau:
-
-
-
-
-
100 số đầu tiên: mỗi số phải trả 1 678 đồng.
Từ 101 đến 150 số mỗi số phải trả 1 734 đồng.
Từ 151 đến 200 số mỗi số phải trả 2 014 đồng.
Từ 201 số trở lên mỗi số phải trả 2 500 đồng
Số tiền phải trả là tổng số tiền tính được cộng thêm 10% thuế VAT.
Biết rằng lượng điện tiêu thụ trong một tháng của nhà bạn Tuấn là a ( KW). Hãy
tính số tiền điện phải trả cho tháng đó của gia đình bạn Tuấn.
Program tinh_tien_dien;
Var S: real;
a: integer;
Begin
Writeln ( ‘ Cho biet so dien tieu thu:’) ;
Readln(a);
If a<=100 then S:= 1678*a else
If a<=150 then S:= 100*1678+ (a-100)*1734 else
If a<= 200 then S:= 100*1678+50*1734+( a-150)*2014
else S:= 100*1678+50*1734+ 50*2014+ ( a-200)*2500;
Writeln (‘ So tien phai tra la:’, S+S*10/100: 9:0, ‘VND’);
Readln
End.
Dạng 5: Viết chương trình kiểm tra số nguyên tố
Nhập vào một số n bất kỳ và kiểm tra xem n có phải là số nguyên tố không.
uses crt;
var n,i:integer;
BEGIN
clrscr;
write('Nhap so nguyen duong n: ');
readln(n);
if n<2 then writeln(n,' khong la so nguyen to')
else
begin
-
17 -
i:=2;
while ((i0)) do
i:=i+1;
if i>trunc(sqrt(n)) then writeln(n,' la so nguyen to')
else writeln(n,' khong la so nguyen to');
end;
readln
END.
Dạng 6: Viết chương trình tính quãng đường di chuyển với 2 vận tốc khác nhau
Viết chương trình để giải bài toán sau: 1 người di chuyển trong thời gian đầu t1 (giờ)
bằng xe máy với vận tốc đều là v1(km/h). Sau đó người đó đi bộ vời vận tốc đều là
v2(km/h), trong t2 (phút). Hãy tính quãng đường S mà người đó đi được đi được.
program TinhQuangDuong;
var
t1, t2, v1, v2, S: real;
begin
write('Nhap vao thoi gian di chuyen bang xe may (h): ');
readln(t1);
write('Nhap vao van toc xe may (km/h): ');
readln(v1);
write('Nhap vao thoi gian di bo (phut): ');
readln(t2);
write('Nhap vao van toc di bo (km/h): ');
readln(v2);
S := t1 * v1 + t2 / 60 * v2;
writeln('Quang duong nguoi do di duoc la: ', S:0:2, ' km');
end.
IV. HIỆU QUẢ ÁP DỤNG.
-
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.
-
-
-
18 -
-
Bảng số liệu kết quả đạt được của học sinh lớp 8 cuối năm học 2021-2022 sau khi thực
hiện biện pháp:
Giỏi
TL
30%
Khá
Trung bình
Yếu
TL
STT Lớp Sỉ số
SL
9
SL
12
12
TL
SL
9
TL
30%
SL
0
0
1
2
8A
8C
30
32
40%
37.5%
20 62.5%
0
V. KẾT LUẬN.
Trong nội dung của biện pháp 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.
Qua quá trình, áp dụng biện pháp tôi nhận thấy nội dung này phù hợp với nhu cầu
thực tiễn trong quá trình giảng dạy nhất là khi thực hành.
Khi áp dụng biện pháp cũng đòi hỏi người hướng dẫn phải luôn biết tự nghiên
cứu, tạo cảm hứng và khơi gợi sự sáng tạo cho học sinh. Đồng thời nó có sức ảnh hưởng
đến học sinh qua các bài kiểm tra, nhất là học sinh được làm việc ở dạng kiến thức tổng
quát của một nội dung Toán học cụ thể.
Biện pháp này cũng có thể áp dụng dạy kiến thức nâng cao cho học sinh ở cấp
trung học phổ thông lớp 11 chương trình GDPT 2006 với mô đun lập trình Pascal.
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 8
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 biện pháp của tôi được hoàn thiện hơn.
Mộ Đức, ngày 10 tháng 10 năm 2022
Người viết
Phan Vũ Song Quỳnh
Xác nhận của Hiệu trưởng
Biện pháp đã được áp dụng cho .........................và được đánh giá ở
mức .............
Hiệu trưởng
-
19 -
Võ văn Dung
-
20 -

File đính kèm:

  • docxsang_kien_kinh_nghiem_mot_so_phuong_phap_giup_hoc_sinh_phat.docx
  • pdfSáng kiến kinh nghiệm Một số phương pháp giúp học sinh phát hiện lỗi và học tốt ngôn ngữ lập trình P.pdf