Tải bản đầy đủ (.doc) (25 trang)

Chuyên đề: GIÚP HỌC SINH TỰ TÌM VÀ SỬA LỖI KHI VIẾT CHƯƠNG TRÌNH BẰNG NGÔN NGỮ LẬP TRÌNH PASCAL TRONG CHƯƠNG TRÌNH TIN HỌC 8

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (221.06 KB, 25 trang )

TÊN CHUYÊN ĐỀ:
“GIÚP HỌC SINH TỰ TÌM VÀ SỬA LỖI KHI VIẾT CHƯƠNG
TRÌNH BẰNG NGÔN NGỮ LẬP TRÌNH PASCAL TRONG CHƯƠNG
TRÌNH TIN HỌC 8”
I. LÍ DO CHỌN ĐỀ TÀI
Tin học là một môn học mới và tương đối khó đối với học sinh THCS.
Trong đó, môn lập trình Pascal trong chương trình lớp 8 lại càng khó. Để
viết được một chương trình hoàn chỉnh thỏa mãn yêu cầu của bài toán đặt ra
trên máy tính thì học sinh phải có tư duy lôgic về thuật toán, khả năng sử
dụng máy tính thành thạo, sử dụng các câu lệnh và khai báo kiểu dữ liệu một
cách hợp lý. Tuy nhiên khi tiến hành viết chương trình trên máy tính hay viết
chương trình trên giấy học sinh thường gặp một số lỗi cơ bản về mặt cú pháp
và ngữ nghĩa.
Trong quá trình giảng dạy và hướng dẫn học sinh viết chương trình
hầu hết giáo viên thường để học sinh tự tìm và sửa chữa lỗi sai. Các lỗi sai
được SGK Tin học 8 đưa ra tuy nhiên nếu làm theo cách mà các giáo viên
thường dùng sẽ tạo cho học sinh tính thụ động. Chỉ khi nào lên thực hành
trên máy tính thì học sinh mới tìm ra lỗi sai và sửa. Hiện nay các trường
THCS trên địa bàn Đồng Hới trường nào có điều kiện thì cũng chỉ xây dựng
được 3 phòng máy để học sinh thực hành. Như vậy học sinh sẽ không được
thực hành viết chương trình trên máy tính thường xuyên dẫn đến các lỗi sai
cơ bản học sinh vẫn mắc phải. Để khắc phục vấn đề này cũng như giúp học
sinh chủ động tìm lỗi sai và sửa khi viết chương trình tôi đã mạnh dạn xây
dựng chuyên đề: “Giúp học sinh tự tìm và sửa lỗi khi viết chương trình
bằng ngôn ngữ lập trình Pascal trong chương trình Tin học 8”.

1


II. MỤC ĐÍCH CHUYÊN ĐỀ
Thực tế cho thấy rằng, việc đưa kiến thức lập trình Pascal vào chương


trình Tin học 8, bước đầu các em còn rất mơ hồ và chưa thực sự hiểu sâu về
cấu trúc của ngôn ngữ. Dẫn đến tình trạng các em mắc phải quá nhiều lỗi khi
thực hành lập trình trên máy tính.
Vì vậy, chuyên đề “Giúp học sinh tự tìm và sửa lỗi khi viết chương
trình bằng ngôn ngữ lập trình Pascal trong chương trình Tin học 8” sẽ
phần nào giúp các em hiểu sâu hơn bản chất và cấu trúc ngôn ngữ lập trình
Pascal. Rèn tư duy và kỹ năng sử dụng ngôn ngữ Pascal vào giải quyết một
số bài tập trong quá trình học tập của học sinh, giúp học sinh tự tin hơn khi
thực hành trên máy tính.
III. NỘI DUNG.
1. Cơ sở lý luận:
a. Thuận lợi:
- Trước yêu cầu ngày càng cao của việc dạy và học Tin học của giáo viên và
học sinh Trường THCS Đồng Phú đã trang bị 2 phòng thực hành để học sinh
học tốt hơn.
- Đội ngũ giáo viên dạy môn Tin học còn trẻ, nhiệt tình, năng động luôn tìm
tòi những phương pháp giảng dạy tốt nhất để mang lại cho học sinh những
tiết học thú vị và bổ ích.
b. Khó khăn
- Lập trình bằng ngôn ngữ lập trình Pascal là môn học hoàn toàn mới, chưa
có tính kế thừa từ các năm trước nên đa phần các em còn rất bỡ ngỡ khi
bước đầu tiếp cận.
- Ngôn ngữ lập trình Pascal đòi hỏi tính chặt chẽ, logic cao nên dẫn đến khó
khăn cho các em trong quá trình thực hành trên máy tính.
2


2. Cơ sở thực tiễn
- Khi viết chương trình học sinh thường mắc các lỗi sau:
+ Lỗi cú pháp: Là lỗi mà khi viết chương trình học sinh không tuân thủ đúng

quy định về cấu trúc của ngôn ngữ lập trình như: thiếu dấu, sai câu lệnh, đặt
tên biến, tên chương trình sai,… Đối với lỗi này khi thực hiện chương trình
ta ấn tổ hợp phím Alt + F9 là chương trình dịch báo lỗi và căn cứ vào bảng
mã lỗi trong sách giáo khoa là ta có thể sửa được.
+ Lỗi ngữ nghĩa: Là khi chương trình không còn xảy ra lỗi cú pháp. Nhưng
khi thực hiện chương trình thi kết quả không đúng hoặc không giới hạn hết
các trường hợp xảy ra theo yêu cầu của bài toán
- Phần lớn khi dạy lập trình cho học sinh giáo viên thường sử dụng hai
phương pháp:
+ Phương pháp dùng bảng: Đối với phương pháp này giáo viên thường viết
sẵn chương trình cho học sinh hoặc cho học sinh khá giỏi lên viết chương
trình và những học sinh còn lại chỉ việc chép vào vở. Các chương trình viết
sẵn này thông thường không có lỗi sai.
+ Phương pháp dạy tại phòng thực hành: Giáo viên viết chương trình bằng
ngôn ngữ lập trình Pascal rồi chạy chương trình đó cho học sinh. Học sinh
ghi bài và gõ lại đúng chương trình đó. Tuy nhiên khi gặp bài toán tương tự
thì học sinh lại lập trình mắc rất nhiều lỗi sai.
* Dự báo
Nếu Giáo viên không thay đổi cách dạy nhằm giúp học sinh chủ động
hơn trong quá trình tìm lỗi và sửa lỗi thì học xong chương trình Tin học 8
học sinh vẫn chưa viết được một chương trình hoàn chỉnh.
3. Các biện pháp đã tiến hành:
Trong quá trình giảng dạy tôi dùng cả hai phương pháp dạy học là dạy bảng
và dạy tại phòng thực hành.
3


a. Lỗi cú pháp:
 Khi viết chương trình học sinh thường mắc một số lỗi cơ bản như:
+ Khi kết thúc câu lệnh phải có dấu “ ; ” .

+ Khi viết từ khóa học sinh hay viết thiếu hoặc thừa từ
Ví dụ: Từ khóa: Program thì học sinh viết là Progam
End thì học sinh viết là And.
+ Sau từ khóa End kết thúc chương trình là “.” Nhưng học sinh lại viết “;”
+ Khi viết chương học sinh thường hay viết thiếu hoặc thừa các dấu: “(”, “)”,
“ ,”, “.”, “:=”, “=”, “ ’ ”, …
+ Học sinh viết chương trình mà không xuống dòng dẫn đến dòng quá dài.
+ Khai báo quá nhiều biến.
+ Đặt tên biến, tên chương trình, tên tệp không đúng theo quy định của ngôn
ngữ lập trình.
+ Giữa các biến được viết cách nhay bằng dấu “,”
+ Trong một câu lệnh nếu số lệnh >=2 thì phải được đặt trong cặp từ khoá
Begin … End;(Câu lệnh ghép).
+ Học sinh khai báo kiểu dữ liệu một đường nhưng khi viết chương trình thì
dùng kiểu dữ liệu khác dẫn đến sai kiểu...
- Để tránh những lỗi sai cho học sinh khi viết chương trình tôi dùng phương
pháp sau:
Ví dụ 1:
Đề bài: Viết chương trình in ra màn hình dòng chữ: “Lop 8/1 truong THCS
Đong Phu”
- Chương trình sau Giáo viên chiếu lên bảng:
Progam vi du1;
Uses crt
Begin;
4


Clrscr;
Writeln( Lop 8/1 truong THCS Đong Phu’);
Realn

End;
• Nếu dạy trên bục giảng:
+ Chia lớp học thành các nhóm (mỗi bàn học sinh ngồi là một nhóm) để
thảo luận
+ Đưa ví dụ lên bảng yêu cầu học sinh viết chương trình. Khi học sinh
viết xong yêu cầu các nhóm kiểm tra và sửa các lỗi của nhóm vừa lên
bảng thực hiện.
+ Giáo viên đưa chương trình viết lên bảng qua bảng phụ, chương trình
này nên viết sai các lỗi cú pháp, sau đó yêu cầu các nhóm thảo luận và sửa
chữa rồi cho điểm nhóm nào sửa chữa đúng nhất để tạo hứng thú cho học
sinh trong quá trình học.
+ Giáo viên đưa chương trình đúng lên bảng để các nhóm xem và ghi bài.
- Giáo viên Yêu cầu học sinh thảo luận theo nhóm tìm ra lỗi trong chương
trình trên
Các lỗi sai trong chương trình trên là:
• Từ khoá Progam sai đúng là: Program (mã lỗi: 36).
• Tên chương trình vi du1 là sai vì tên chương trình được đặt theo quy tắc
đặt tên của ngôn ngữ lập trình nên không được chứa dấu cách (mã lỗi: 85).
• Sau Uses crt phải có dấu; (mã lỗi 85).
• Sau từ khóa Begin không có dấu “;”(mã lỗi: 85).
• Thủ tục Realn sai, phải là Readln(mã lỗi: 3).
• End; sai phải là End.(End. là từ khóa để kết thúc chương trình)
(mã lỗi: 94).
Qua ví dụ trên học sinh sẽ không mắc vào các lỗi cơ bản đã nêu và biết cách
5


sửa lại chương trình trên lại cho đúng là:
Program vidu1;
Uses crt;

Begin
Clrscr;
Writeln(‘ Lop 8/1 truong THCS Đong Phu’);
Readln
End.
• Nếu dạy trên phòng máy:
+ Giáo viên chép bài tập 1, 2 lên bảng, yêu cầu học sinh thực hiện 2 bài tập
đó trên máy.
+ Sau khi học sinh thực hiện xong ấn phím F9 để kiểm tra lỗi, căn cứ vào mã
lỗi báo dưới dạng: Error mã lỗi: Lỗi mắc phải đối chiếu vào bảng lỗi ở trang
136,137,138 SGK để sửa.
+ Các lỗi hay mắc phải trong trường hợp này là:
Error 21: Duplicate identifier Trùng tên
Error 21: Error in type Lỗi kiểu
Error 26: Type mismatch Sai kiểu
Error 36: BEGIN expected Phải là BEGIN
Error 37: END expected Phải là END
Error 85: ";" expected Phải là dấu ";"
Error 86: ":" expected Phải là dấu ":"
Error 87” "," expected Phải là dấu ","
Error 88: "(" expected Phải là dấu "("
Error 89: ")" expected Phải là dấu ")"
Error 90: "=" expected Phải là dấu "="
Error 91: ":=" expected Phải là dấu ":="
6


Error 92: "[" or "(." Expected Phải là dấu "[" hoặc "(."
Error 93: "]" or ".)" expected Phải là dấu "]" hoặc ".)"
Error 94: "." expected Phải là dấu "."

Error 113: Error in statement Lỗi trong câu lệnh
 Những lỗi sai cơ bản trong câu lệnh rẽ nhánh và lặp:
- Đối với trường hợp này học sinh hay mắc phải các lỗi:
+ Thiếu từ khoá then hoặc do, downto,to,..
+ Điều kiện trong câu lệnh rẻ nhánh là biểu thức lôgic.
+ Trong một câu lệnh nếu số lệnh >=2 thì phải được đặt trong cặp từ khoá
Begin … End;(Câu lệnh ghép).
+ Trước từ khoá Else không có dấu “;”.
+ Giá trị đầu luôn luôn mhỏ hơn hoặc bằng giá trị cuối trong câu lệnh lặp và
là những hằng số.
+ Trong câu lệnh lặp While … do phải có lệnh làm thay đổi giá trị biến đếm.
+ Điều kiện trong câu lệnh Whlie … do là một biểu thức Logic.
+ Phải khai báo biến đếm trong chương trình.
Ví dụ 2:
Đề bài: Viết chương trình giải và biện luận số nghiệm của phương trình
ax2 + bx + c =0 (a#0).
• Nếu dạy trên bục giảng:
- Giáo viên yêu cầu học sinh thảo luận theo nhóm và sau đó gọi một nhóm
lên thực hiện. Đây là chương trình mà một nhóm viết lên bảng:
Program vidu2;
Uses crt;
Var
a,b,c: real;
7


delta,x1,x2:read;
Begin
Clrscr;
Write(‘ nhap a,b,c); readln(a,b,c);

Delta:=b2-4ac;
If delta=0 then
Writeln(‘phuong trinh co nghiem kep,’ –b/2a);
Else
If delta>0 then
x1:= (-b+delta)/2a;
x2:=(-b-delta)/2a;
Writeln(‘phương trinh co 2 nghiem,’x1,x2);
If delta<0 then
Writeln(‘Phuong trinh vo nghiem’);
Readln
End.
- Sau khi nhóm trên viết xong giáo viên yêu cầu các nhóm còn lại phát
hiện lỗi sai và sửa chương trình trên cho đúng.
Các lỗi sai trong chương trình trên là:
• Không có kiểu dữ liệu nào là Read mà chỉ là Real(mã lỗi: 21).
• Câu thông báo trên màn hình được đặt trong dấu ‘’(mã lỗi :8).
Cụ thể:
Write(‘ nhap a,b,c); sửa lại là Write(‘ nhap a,b,c’);
• Biểu thức toán học
Delta:=b2-4ac; sai phải viết lại là: Delta:=b*b-4*a*c; (mã lỗi :26).
b/2a sai phải sửa lại là b/2*a
x1:= (-b+delta)/2a;
8


x2:=(-b-delta)/2a;
sai phải sửa lại là x1:= (-b+sqrt(delta))/2*a;
sai phải sửa lại là x2:= (-b-sqrt(delta))/2*a;
• Các kết quả được viết cách nhau bàng dấu “,”(mã lỗi :26).

Writeln(‘phuong trinh co nghiem kep,’ –b/2a); sai
Sửa lại là: Writeln(‘phuong trinh co nghiem kep’, –b/2*a);
Writeln(‘phương trinh co 2 nghiem,’x1,x2);
Sửa lại là: Writeln(‘phương trinh co 2 nghiem ’,x1,x2);
• Trước lệnh Else không có dấu “;”(mã lỗi: 113).
• Trong câu lệnh:
If delta>0 then
x1:= (-b+delta)/2a;
x2:=(-b-delta)/2a;
Writeln(‘phương trinh co 2 nghiem,’x1,x2);
Có nhiều hơn 2 lệnh nên phải được đặt trong cụm từ khóa Begin.. End;
Else If delta>0 then x1:= (-b+delta)/2a;
x2:=(-b-delta)/2a;
Writeln(‘phương trinh co 2 nghiem,’x1,x2);
If delta<0 then
Writeln(‘Phuong trinh vo nghiem’);
Có nhiều hơn 2 lệnh nên phải được đặt trong cụm từ khóa Begin.. End;
- Giáo viên chỉnh sửa lại chương trình trên thành chương trình hoàn chỉnh:
Program vidu2;
Uses crt;
Var a,b,c: real;
delta,x1,x2:real;
9


Begin
Clrscr;
Write(‘ nhap a,b,c’); readln(a,b,c);
Delta:=b*b-4*a*c;
If delta=0 then

Writeln(‘phuong trinh co nghiem kep’, –b/2*a)
Else
Begin
If delta>0 then
Begin x1:= (-b+Sqrt(delta))/2*a;
x2:=(-b-sqrt(delta))/2*a;
Writeln(‘phương trinh co 2 nghiem’,x1,x2);
End;
If delta<0 then
Writeln(‘Phuong trinh vo nghiem’);
End;
Readln
End.
• Nếu dạy trên phòng phực hành:
Sau khi gõ chương trình xong học sinh thực hiện chương trình. Căn cứ
vào mã lỗi được thông báo để sửa lỗi.
Các lỗi thường gặp là:
Error 8: String constant exceeds line Hằng xâu vượt quá một dòng
Error 21: Error in type Lỗi kiểu
Error 26: Type mismatch Sai kiểu
Error 40: Boolean expression expected Phải là thể biện của biến logic
Error 50: DO expected Thiếu DO
10


Error 57: THEN expected Thiếu từ khoá THEN
Error 58: TO or DOWNTO expected Phải là từ khoá TO hoặc DOWNTO
Error 97: Invalid FOR control variable Biến điều khiển FOR không hợp lệ
Error 98: Integer variable expected Phải là một biến số nguyên
Error 129: ENDIF directive missing Thiếu chỉ dẫn END IF

 Những lỗi sai cơ bản trong kiểu dữ liệu có cấu trúc :
- Đối với trường hợp này học sinh hay mắc phải các lỗi:
+ Khi khai báo học sinh viết sai từ khoá.
+ Trong khai báo mảng thì chỉ số đầu và chỉ số cuối là hai chỉ số hoàn
toàn xác định.
+ Độ rộng tối đa của xâu là xác định, nhỏ hơn 255.
+ Hằng xâu được đặt trong cặp dấu “ ‘ ….’ ”.
Ví dụ 3: Cho dãy A gồm n số nguyên dương a1,a2,..an. Tìm giá trị nhỏ nhất
của dãy, đưa ra vị trí của số đó.
• Nếu dạy trên bục giảng:
Giáo viên đưa chương trình đã chuẩn bị lên bảng phụ sau khi các nhóm đã
thảo luận và yêu cầu học sinh thực hiện chỉnh sửa lại chương trình cho
đúng.
Chương trình:
Program Vidu3;
Uses crt;
Const nmax:=50;
Var A:Aray[1..nmax] 0f Integer;
N,I,csmin:byte;
Min: integer;
Begin
11


Clrscr;
Write(‘Nhap n:’); readln(n);
For i:= 1 to n do
Begin Write(‘nhap A[‘I’]’); readln(A[i]); End;
Min:=A[1]; csmin:=1;
For i:=2 to n do

If A[i]
Begin
Min:=A[i];
Csmin:=I;
End;
Writeln(‘ Gia tri nho nhat la:’,min:3,’Tai vi tri:’,csmin:2);
Readln
End.
- Đối với bài toán này học sinh dễ dàng phát hiện ra các lỗi sau:
• Khai báo hằng sai: const nmax:=50; phải sửa lại là const nmax=50;
• Khai báo mảng sai từ khóa khai báo mảng là Array chứ không phải
là Aray.
• Câu lệnh Write(‘nhap A[‘I’]:’); không xuất hiện đúng theo ý tưởng của
người viết phải sửa lại là Write(‘nhap A[‘,I,’]:’);
Chương trình được sửa lại là:
Program Vidu3;
Uses crt;
Const nmax=50;
Var A:Array[1..nmax] 0f Word;
N,I,csmin:byte;
Min: Word;
12


Begin
Clrscr;
Write(‘Nhap n:’); readln(n);
For i:= 1 to n do
Begin
Write(‘nhap A[‘,I,’]’); readln(A[i]);

End;
Min:=A[1]; csmin:=1;
For i:=2 to n do
If A[i]
Begin Min:=A[i]; Csmin:=i; End;
Writeln(‘ gia tri nho nhat la:’,min:3,’Tai vi tri:’,csmin:2);
Readln
End.
Với phương pháp dạy giáo viên vừa kết hợp bài giảng vừa kết hợp cả
thao tác kiểm tra lỗi và học sinh tự nhận biết lỗi khi viết chương trình. Sau
mỗi tiết học học sinh sẽ biết được những lỗi mà mình mắc phải khi viết
chương trình để rút kinh nghiệm cho lần sau.
• Nếu dạy trên phòng máy:
Sau khi gõ chương trình xong học sinh thực hiện chương trình. Căn cứ
vào mã lỗi được thông báo để sửa lỗi.
Các lỗi thường gặp là:
Error 22: Structure too large Cấu trúc quá lớn
Error 23: Set base type out of range Kiểu cơ bản bị tràn
Error 25: Invalid string length Độ dài xâu không hợp lệ
Error 66: String variable expected Phải là biến xâu
Error 74: Constant and case types don't match: Hằng và các kiểu không
13


hợp.
Error 75: Record variable expected Phải là biến record
Error 92: "[" or "(." Expected Phải là dấu "[" hoặc "(."
Error 93: "]" or ".)" expected Phải là dấu "]" hoặc ".)"
Error 100: String length mismatch Độ dài xâu không hợp
b. Lỗi ngữ nghĩa:

- Trong quá trình dạy học sinh viết chương trình tôi đã phát hiện ra một số
lỗi ngữ nghĩa mà học sinh thường gặp phải như sau:
+ 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,..an. Tìm giá trị nhỏ nhất
của dãy, đư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] 0f 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 vẫn thỏa mãn điều này sai với
yêu cầu của bài toán.
• N,i, csmin <=nmax nên ta khai báo kiểu dữ liệu là Byte.
Sửa lại là:
Const nmax=50;
Var A:Array[1..nmax] 0f word;
N,i,csmin:byte;
Min: word;
Vậy để khai báo biến cho đúng với yêu cầu của bài toán thì yêu cầu
học sinh phải nắm được các kiểu dữ liệu chuẩn, phạm vi giá trị, bộ nhớ, để
14


áp dụng vào từng bài toán cho hợp lý.
+ Học sinh không biết sử dụng câu lệnh ghép. Nếu số lệnh lớn hơn hoặc
bằng 2 trong một câu lệnh thì phải dùng câu lệnh ghép.
+ Học sinh không phân biệt được trong trường hợp nào thì dùng lặp For ..
Do trường hợp nào dùng câu lệnh While … Do.
Nếu trong bài toán xác định được số lần lặp thì dùng For … Do.

Nếu trong bài toán mà số lần lặp phải dựa vào điều kiện thì dùng
While … Do. Khuyến khích học sinh dùng câu lệnh While … do.
Ví dụ:
Yêu cầu In ra xâu st sau khi đã xoá 3 ký tự tại vị trí số 5 của xâu st.
Học sinh viết:
ST1:= delete(st,5,3);
Đối với trường hợp này giáo viên nhắc lại các chú ý sau:
• Hàm Trả về giá trị qua tên của nó. Thủ tục không trả về giá trị.
• Trong quá trình viết chương trình con phải có một lệnh trả về giá trị
cho hàm qua tên của nó.
• Để học sinh hiểu rõ hơn giáo viên dùng bảng các hàm và thủ tục xử
lý trong xâu giải thích cho học sinh.
III. KẾ HOẠCH THỰC HIỆN
- Tháng 9/2018, tổ chuyên môn phân công giáo viên viết nội dung chuyên
đề, thể nghiệm chuyên đề.
- Thời gian viết nội dung chuyên đề: trong tháng 2,3/2019.
- Thời gian thể nghiệm chuyên đề:
+ Tiết 55: Lớp 81, tiết 3, thứ 5, ngày 28 tháng 3.
+ Tiết 56: Lớp 83, tiết 1, sáng thứ 4, ngày 3 tháng 4.
15


- Giáo án thể nghiệm chuyên đề:
Tiết 55, 56: Bài thực hành 7: Xử lý dãy số trong chương trình.
- Người được phân công viết nội dung và thể nghiệm chuyên đề: Thầy
Nguyễn Văn Sơn, Thầy Trương Phú Chon.
NGƯỜI VIẾT CHUYÊN ĐỀ

Nguyễn Văn Sơn


16


GIÁO ÁN THỂ NGHIỆM CHUN ĐỀ
Ngày soạn:………../……../……..
Ngày giảng:………../……../……..
Tiết 55.

Bài thực hành 7:

XỬ LÝ DÃY SỐ TRONG CH ƯƠNG TRÌNH
I. Mục tiêu:
1. Kiến thức:
- Biết khai báo và sử dụng biến mảng.
- Biết cách sử dụng câu lệnh if..then, for… do;
- Hiểu và chỉnh sửa chương trình.
- Hiểu và viết được chương trình với thuật toán tìm
giá trò lớn nhất, nhỏ nhất của một dãy số, tính
tổng dãy số.
2. Kĩ năng:
- Viết được các chương trình Pascal đơn giản
3. Thái độ:
- Thái độ học tập nghiêm túc, u thích mơn học.
II. Chuẩn bị của Giáo viên và Học sinh:
1. Giáo viên: Giáo án, bảng, phấn.
2. Học sinh: sách, tập, viết, xem sách trước.
III. Tiến trình bài dạy
1. Kiểm tra bài cũ:
Câu 1) Viết cú pháp câu lệnh if… then và for… do.
Tl: câu lệnh if then: if <điều kiện> then <câu lệnh>;

Câu lệnh fo do: for <biến đếm>:=<giá trò đầu> to
17


<giá trò cuối> do <câu lệnh>;
Câu 2) Viết cú pháp khai báo biến mảng? cho ví dụ
khai báo biến mảng kiểu nguyên và kiểu thực?
Tl: tên mảng:array[<chỉ số đầu>..<chỉ số cuối>]
of <KDL>;
Ví dụ:
Tuoi: array[20..80]of integer;
Chieucao:array[1.100] of real;
2. Giới thiệu bài mới:
3. Nội dung bài mới:
Hoạt động của Giáo viên

Hoạt động của Học sinh

Hoạt động 1: Bài 1
GV: u cầu hs đọc bào 1 /80(SGK)
? Trong chương trình ta sử dụng bao Bài 1: Đếm số hs giỏi, khá, trung bình và kém
nhiêu biến? kiểu dữ liệu sử dụng của lớp:
kiểu nào?

Program phanloai;
Uese crt;

? Nêu mục đích của chương trình bài Var I, n,gioi, kha, trungbinh, kem: integer;
A: array[1..100] of real;


1?

? GV sửa lỗi cú pháp cho từng học Begin
sinh.

Clrscr;

? GV tổng khái qt những lỗi sai về Write(‘nhap so cac ban co trong lop, n = ’);
cú pháp mà đa số học sinh mắc phải: readln(N);
+ Viết thiếu dấu ; cuối mỗi câu lệnh. Writeln(‘nhap diem’);
+ Viết sai các từ khóa.

For i:= 1 to n do
18


+ Chưa nắm rõ cú pháp từng câu Begin
lệnh cụ thể.

Write(1‘ . ’);readln(a[i]]);

+ Sau từ khóa End kết thúc chương End;
trình là “.” Nhưng học sinh lại viết Gioi:=0; kha:=0; trungbinh:=0; kem:=0;
“;”

For i:=1 to n do

+ Khi viết chương học sinh thường

Begin


hay viết thiếu hoặc thừa các dấu:

If a[i]>=8 then gioi:=gioi + 1;

“(”, “)”,

If a[i]<5 then kem:=kem + 1;

“ ,”, “.”, “:=”, “=”, “ ’ ”, …

If (a[i]<8 ) and (a[i]>=6.5 ) then

+ Học sinh viết chương trình mà kha:=kha + 1;
quên không xuống dòng dẫn đến
dòng quá dài.

If

(a[i]>=5)

and

(a[i]<6.5)

gioi:=gioi + 1;

+ Khai báo quá nhiều biến.

End;


+ Đặt tên biến, tên chương trình, tên Writeln(‘ket quahoc tap ’0;
tệp không đúng theo quy định của Writeln(gioi,’ ban hoc gioi’);
ngôn ngữ lập trình.

Writeln(kha,’ ban hoc kha’);

+ Giữa các biến đực viết cách nhay Writeln(trungbinh,’ ban hoc trungbinh’);
bằng dấu “,”

Writeln(kem,’ ban hoc kem’);

+ Trong một câu lệnh nếu số lệnh Readln
>=2 thì phải được đặt trong cặp từ End.
khoá Begin … End;(Câu lệnh ghép).
+ Học sinh khai báo kiểu dữ liệu
một đường nhưng khi viết chương
trình thì dùng kiểu dữ liệu khác dẫn
đến sai kiểu...
19

then


4. Củng cố:
Câu hỏi, bài tập củng cố:
- Câu 1: Nhắc lại kiến thức câu lệnh lặp for…do và while…do?
- Đáp án câu 1:
For <biến đếm>:<giá trị đầu> to <giá trị cuối> do <câu lệnh>;
While <điều kiện> do <câu lệnh>;

5. Hướng dẫn về nhà:
- Đối với bài học ở tiết này:
Xem lại các tao tác mới thực hiện. Có thể thực hành thêm ở nhà nếu có điều
kiện.
- Đối với bài học ở tiết tiếp theo:
Ôn lại các bài thực hành để chuẩn bị cho tiết kiểm tra thực hành.

20


Ngày soạn:………../……../……..
Ngày giảng:………/……../……...
Tiết 56.

Bài thực hành 7:

XỬ LÝ DÃY SỐ TRONG CH ƯƠNG TRÌNH
I. Mục tiêu:
1. Kiến thức:
- Biết khai báo và sử dụng biến mảng.
- Biết cách sử dụng câu lệnh if..then, for… do;
- Hiểu và chỉnh sửa chương trình.
- Hiểu và viết được chương trình với thuật toán tìm
giá trò lớn nhất, nhỏ nhất của một dãy số, tính
tổng dãy số.
2. Kĩ năng:
- Viết được các chương trình Pascal đơn giản
3. Thái độ:
- Thái độ học tập nghiêm túc, u thích mơn học.
II. Chuẩn bị của Giáo viên và Học sinh:

1. Giáo viên: Giáo án, bảng, phấn.
2. Học sinh: sách, tập, viết, xem sách trước.
III. Tiến trình bài dạy
1. Kiểm tra bài cũ:
- Kiểm tra trong q trình thực hành.
2. Giới thiệu bài mới:
3. Nội dung bài mới:
Hoạt động của Giáo viên

Hoạt động của Học sinh
21


Hoạt động 2: Bài 2

Bài 2: Tính điểm trung bình môn toán và

GV: Yêu cầu hs đọc bào 2 /81(SGK) môn văn của lớp
? Trong chương trình ta sử dụng bao Program phanloai;
nhiêu biến? kiểu dữ liệu sử dụng Uese crt;
kiều nào?

Var I, n,gioi, kha, trungbinh, kem: integer;

? Nêu mục đích của chương trình bài
1?

Diemtoan, diemvan: array[1..100] of real;
Begin


+ Sau khi học sinh thực hiện xong Clrscr;
ấn phím F9 để kiểm tra lỗi, căn cứ Write(‘nhap so cac ban co trong lop, n = ’);
vào mã lỗi báo dưới dạng: Error mã readln(N);
lỗi: Lỗi mắc phải đối chiếu vào bảng Writeln(‘nhap diem’);
lỗi ở trang 136,137,138 SGK để sửa. For i:= 1 to n do
+ Các lỗi hay mắc phải trong trường Begin
hợp này là:

Write(‘diem toan va diem van thu ‘, I ,’ :

Error 21: Duplicate identifier Trùng ’);
tên

readln(diemtoan[i],diemvan[i]);

Error 21: Error in type Lỗi kiểu

End;

Error 26: Type mismatch Sai kiểu

Writeln(‘diem trung binh’);

Error 36: BEGIN expected Phải là For i:=1 to n do writeln(I,’ . ‘,(diemvan[i] +
BEGIN

diemtoan[i])/2:3:1);

Error 37: END expected Phải là Tbtoan:=0; tbvan:=0;
END


For i:=1 to n do

Error 85: ";" expected Phải là dấu ";"

Begin tbtoan:=tbtoan + diemtoan[i];

Error 86: ":" expected Phải là dấu ":"

Tbvan:=tbvan + diemvan[i];

Error 87” "," expected Phải là dấu

End;
22


","

Tbtoan:=tbtoan/n;

Error 88: "(" expected Phải là dấu Tbvan:=tbvan/n;
"("

Writeln(‘diem trung binh mon toan ’,tbtoan);

Error 89: ")" expected Phải là dấu Writeln(‘diem trung binh mon van ’,tbvan);
")"

Readln


Error 90: "=" expected Phải là dấu End.
"="
Error 91: ":=" expected Phải là dấu
":="
Error 92: "[" or "(." Expected Phải là
dấu "[" hoặc "(."
Error 93: "]" or ".)" expected Phải là
dấu "]" hoặc ".)"
Error 94: "." expected Phải là dấu "."
Error 113: Error in statement Lỗi
trong câu lệnh
b. Những lỗi sai cơ bản trong câu
lệnh rẻ nhánh và lặp:
- Đối với trường hợp này học sinh
hay mắc phải các lỗi:
+ Thiếu từ khoá then hoặc do,
downto,to,..
+ Điều kiện trong câu lệnh rẻ nhánh
là biểu thức lôgic.
+ Trong một câu lệnh nếu số lệnh
23


>=2 thì phải được đặt trong cặp từ
khoá
Begin … End;(Câu lệnh ghép).
+ Trước từ khoá Else không có dấu
“;”.
+ Giá trị đầu luôn luôn mhỏ hơn

hoặc bằng giá trị cuối trong câu lệnh
lặp và là những hằng số.
+ Trong câu lệnh lặp While … do
phải có lệnh làm thay đổi giá trị biến
đếm.
+ Điều kiện trong câu lệnh Whlie …
do là một biểu thức Logic.
+ Phải khai báo biến đếm trong
chương trình.

4. Củng cố:
Câu hỏi, bài tập củng cố:
- Câu 1: Nhắc lại kiến thức câu lệnh lặp for…do và while…do?
- Đáp án câu 1:
For <biến đếm>:<giá trị đầu> to <giá trị cuối> do <câu lệnh>;
While <điều kiện> do <câu lệnh>;
5. Hướng dẫn về nhà:
- Đối với bài học ở tiết này:
24


Xem lại các tao tác mới thực hiện. Có thể thực hành thêm ở nhà nếu có điều
kiện.
- Đối với bài học ở tiết tiếp theo:
Ôn lại các bài thực hành để chuẩn bị cho tiết kiểm tra thực hành.

Ký duyệt của Tổ trưởng chuyên môn:
Kiểm tra ngày:....../......../..........

25



×