1. Trang chủ
  2. » Giáo án - Bài giảng

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 11

28 5,6K 10

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 28
Dung lượng 171 KB

Nội dung

Tin học là một môn học mới và tương đối khó đối với học sinh THPT trong đó môn lập trình Pascal trong chương trình lớp 11 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.

Trang 1

A MỞ ĐẦU

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 THPT trong đó môn lập trình Pascal trong chương trình lớp 11 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 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

11 đư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 THPT trên địa bàn Nghệ An 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 dã mạnh dạn áp dụng phương pháp “ 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 11”

Trang 2

II Mục đích nghiên cứu:

- Việc giúp học sinh tự tìm và sửa chữ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 11 được thực hiện cả trên bục giảng và phòng thực hành

III Đối tượng nghiên cứu:

- Học sinh lớp 11A1, 11G năm học 2010 – 2011

- Sách giáo khoa Tin học 11, sách giáo viên, chương trình Pascal

IV Phương pháp nghiên cứu:

- Tiến hành thực nghiệm qua tiết dạy

V Điểm mới trong kết quả nghiên cứu:

- Tỷ lệ học sinh viết chương trình hoàn chỉnh nhiều hơn, chất lượng tốt hơn

- Các em hiểu được tính chặt chẻ khi viết chương trình bằng ngôn nghữ Pascal

Trang 3

- Độ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.

2 Khó khăn

- Học sinh của trường THPT Phan Thúc Trực đa phần là con em nhà nông nên hoàn cảnh kinh tế còn khó khăn Việc tiếp xúc với máy tình còn khá xa lạ nên các thao tác khi các em thực hành trên máy tính còn chậm

- Lập trình bằng ngôn ngữ lập trình Pascal là môn học yêu cầu học sinh phải

tư duy lôgic cao, tính chặt chẻ nên rất khó cho học sinh ở vùng nông thôn

II 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

Trang 4

* 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 11 học sinh vẫn chưa viết được một chương trình hoàn chỉnh

III 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

1 Lỗi cú pháp:

a Những lỗi sai cơ bản:

- Khi viết chương trình học sinh chúng ta 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à quên 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 11A1 truong

THPT Phan Thuc truc”

Trang 5

Progam vi du1;

Uses crtBegin;

Clrscr;

Writeln( lop 11A1 truong THPT Phan Thuc Truc’);

RealnEnd;

- 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 sửa lại chương trình trên lại cho đúng là:

Trang 6

- 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 ":="

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 >=2 thì phải được đặt trong cặp từ khoá

Trang 7

+ 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à

- 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:

Trang 8

- 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)

x1:= (-b+ dela)/2a; sai phải sửa lại là x1:= (-b+sqrt(delta))/2*a;

x2:=(-b- dela)/2a; sai phải sửa lại là x1:= (-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+ dela)/2a;

x2:=(-b- dela)/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;

Trang 9

If delta<0 thenWriteln(‘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 là:

Trang 10

- 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

Error 57: THEN expected Thiếu từ khoá THEN

Error 58: TO or DOWNTO expected Phải là từ khoá TO hoặc DOWNTOError 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

C Những lỗi sai cơ bản trongKiể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:

Đề bài: 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;

Trang 11

- Đố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

Trang 12

- 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à:

Trang 13

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 hợpError 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

D Những lỗi sai cơ bản trong Tệp và thao tác với tệp, chương trình con:

- Đối với trường hợp này học sinh hay mắc phải các lỗi:

+ Không khai báo biến tệp

+ Không mở tệp để đọc hay ghi nhưng vẫn thao tác đọc ghi tệp

+ Đường dẫn tới tệp không đúng hoặc chưa có

+ Mở quá nhiều tệp

+ Không gán tên cho tệp

+ Mở tệp nhưng không đóng tệp lại

+ Không phân biệt được hàm và thủ tục

+ Viết sai từ khoá hàm và thủ tục

+ Trong hàm không có lệnh trả về giá trị cho hàm

+ Gán giá trị của biến cho thủ tục

Ví dụ 4:

Cho tệp SN.INP chứa:

Hàng 1: n

Hàng 2 chứa dãy a1,…,an

Viết chương trình đưa ra các số nguyên tố Kết quả lưu vào tệp SN.OUT

10

7 3 9 6 5 14 16 15 11 13

3 7 5 11 13

Trang 14

- 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 làm bài tập trên Sau đó gọi một nhóm lên bảng thực hiện

Chương trình mà nhóm đó thực hiện như sau:

For i:=1 to M div2 do

If M mod i = 0 Then S:=S+I;

If S=0 then NT:= TrueElse

Trang 15

• Khai báo hàm Function NT(M:Byte); sai sửa lại là

Function NT(M:Byte): Boolean;

• Kết thúc chương trình con là End; không phải là End

• Kết thúc chương trình phải đóng tệp lại

Chương trình trên được viết lại đúng là:

For i:=1 to M div2 do

If M mod i = 0 Then S:=S+I;

If S=0 then NT:= TrueElse

NT:=False;

End;

Begin

Trang 16

- 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 2: File not found Không tìm thấy file

Error 3: Path not found Không tìm thấy đường dẫn

Error 4: Too many open files Mở quá nhiều file

Error 5: File access denied Không truy nhập được file

Error 6: Invalid file handle Số hiệu file không hợp lệ

Error 102: File not assigned File chưa được chỉ định

Error 103: File not open File chưa được mở

Error 13: Too many open files Quá nhiều file được mở

Error 14: Invalid file name Tên file không hợp lệ

Error 15: File not found Không tìm thấy file

Error 16: Disk full Đĩa đầy

Error 18: Too many files Quá nhiều file

Error 34: Invalid function result type Kiểu trả về của hàm không hợp lệ

Error 59: Undefined forward Biến hay hàm chưa được định nghĩa trước đóError 60: Too many procedures Quá nhiều chương trình con

Error 63: Invalid file type Kiểu file không hợp lệ

Error 77: File variable expected Phải là biến file

Error 122: Invalid variable reference Tham chiếu biến không hợp lệ

Error 136: Invalid indirect reference Tham chiếu gián tiếp không hợp lệError 142: Procedure or function variable expected Phải là biến chương trình con

Trang 17

Error 143: Invalid procedure or function reference Tham chiếu chương trình con không hợp lệ

2 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

nghữ 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)

• N,i, csmin <=nmax nên ta khai báo kiểu dữ liệu là Byte

Bảng các kiểu dữ liệu chuẩn:

1 Kiểu thực Real 2.9*10-39 1.7*1038 6 Byte

Trang 18

+ 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êud 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

+ Học sinh không phân biệt được hàm và thủ tục khác nhau như thế nào, cách sử dụng ra sao

Đố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

+ Học sinh không phân biệt được tham biến và tham trị, biến toàn cục và biến cục bộ trong chương trình con

• Nếu một CTC có danh sách tham số thì các tham số phải được khai

Ngày đăng: 10/05/2015, 09:48

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w