. Lỗi cú pháp là những lỗi phát sinh do lập trình viên viết sai những quy định về văn phạm của hệ thống hoặc ngôn ngữ. Thí dụ các lỗi sau đây là những lỗi cú pháp:
(a + b * 2: thiếu dấu đóng ngoặc
BEGIM: định viết BEGIN, sai N
2. Xử lý lỗi. Lỗi cú pháp được phát hiện trong quá trình dịch. Turbo Pascal báo lỗi cú pháp theo nguyên tắc "Mỗi lần chỉ báo một lỗi".
Nếu gặp lỗi ta cần trở về chế độ soạn thảo, tìm vị trí xuất hiện lỗi, sửa lại lỗi đó rồi dịch lại chương trình.
2 trang |
Chia sẻ: quynhsim | Lượt xem: 1420 | Lượt tải: 0
Bạn đang xem nội dung tài liệu Bài giảng môn Tin học - Một số lỗi cú pháp thường gặp của pascal, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
MOÄT SOÁ LOÃI CUÙ PHAÙP THÖÔØNG GAËP CUÛA PASCAL
1. Lỗi cú pháp là những lỗi phát sinh do lập trình viên viết sai những quy định về văn phạm của hệ thống hoặc ngôn ngữ. Thí dụ các lỗi sau đây là những lỗi cú pháp:
(a + b * 2: thiếu dấu đóng ngoặc
BEGIM: định viết BEGIN, sai N
2. Xử lý lỗi. Lỗi cú pháp được phát hiện trong quá trình dịch. Turbo Pascal báo lỗi cú pháp theo nguyên tắc "Mỗi lần chỉ báo một lỗi".
Nếu gặp lỗi ta cần trở về chế độ soạn thảo, tìm vị trí xuất hiện lỗi, sửa lại lỗi đó rồi dịch lại chương trình.
Sau khi báo lỗi, Turbo Pascal sẽ chờ ta bấm phím ESC để trở về chế độ soạn thảo. Con trỏ của màn hình soạn thảo sẽ đặt ở cạnh vị trí xuất hiện lỗi, thông thường quá đi 1 ký tự.
3. Các thông báo lỗi thường gặp và gợi ý khắc phục.
Lỗi 2. Identifier expected: mong gặp định danh (coù theå do chöa khai baùo bieán, haèng)
Lỗi 3. Unknown identifier: định danh chưa được khai báo. Hãy khai báo định danh này ở đầu thủ tục hoặc chương trình.( coù theå do sai chính taû moät teân, töø khoaù naøo ñoù)
Lỗi 4. Duplicate identifier: định danh được khai báo 2 lần trở lên.
Lỗi 5. Syntax error: Lỗi cú pháp. Gặp một ký tự sai hoặc viết sai một hằng.
Lỗi 6. Error in real constant: Viết sai hằng thực.
Lỗi 7. Error in integer constant: Viết sai hằng nguyên.
Chú ý rằng khai báo CONST c = 1234 sẽ cho ta một hằng c kiểu nguyên. Muốn có một hằng kiểu thực, ta viết CONST c = 1234.0. Những hằng có giá trị nằm ngoài khoảng -2147483648..2147483647 cần được khai báo theo kiểu thực, thí dụ:
CONST c = 12345678912.0;
Lỗi 8. String constant exceeds line: giá trị của xâu ký tự quả dài, xem lại có thiếu dấu đóng/mở (dấu nháy đơn) hằng văn bản không?
Lỗi 10. Unexpected end of file: Cần gặp dấu kết tệp. Lỗi 10 có thể xuất hiện trong các trường hợp sau:
- Trong trương trình các cặp BIGIN và END không cân đối.
- Tệp khác được gọi lồng tại một vị trí không hợp lệ.
- Chú thích chưa được đóng bằng dấu } hoặc * ).
Lỗi 11. Line too long: Dòng dài quá Bộ soạn thảo cho phép phát sinh các dòng dài tối đa 249 ký tự trong khi khi chương trình dịch chỉ làm việc với các dòng dài tối đa 126 ký tự. Lời khuyên: Không nên viết các dòng dài quá 60 ký tự.
Lỗi 12. Type identifier expected: Cần có định danh kiểu
Lỗi 20. Variable identifier expected: Cần một định danh cho biến Thí dụ FOR = 4 TO 20 DO sẽ sinh lỗi 20.
Lỗi 25. Invalid string length: Chiều dài xâu không hợp lệ. Chiều dài hợp lệ nằm trong khoảng 0 .. 255.
Lỗi 26. TYPE mismatch: Kiểu không tương thích. các nguyên nhân sinh lỗi có thể là: - Biểu thức được gán cho biến không đúng kiểu. Thí dụ
VAR x: char;
BEGIN
x: = 127 * 8
END.
Lỗi 29. Ordinal type expected: Cần một kiểu thứ bậc. Trong trường hợp này không được dùng các kiểu Real, string, Record, PROCEDURE hoặc pointer.
Lỗi 30. Integer constant expected: Cần một hằng nguyên
Lỗi 31. Constant expected: Cần một hằng
Lỗi 33. Type identifier expected: Cần một định danh kiểu
Lỗi 36. BEGIN expected: Thiếu BEGIN
Lỗi 37. END expected: Thiếu END
Lỗi 38. Integer expression expexted: Cần biểu thức nguyên
Lỗi 39. Ordinal expression expected: Cần biểu thức thứ bậc
Lỗi 40. Boolean expression expected: Cần biểu thức kiểu BOOLEAN
Lỗi 41. Operand types do not match operator: Kiểu toán hạng không phù hợp với toán tử
Lỗi 42. Error in expression: Biểu thức sai. Thường gặp trường hợp sử dụng ký tự lạ hoặc quên viết dấu phép toán trong biểu thức.
Lỗi 43. Illegal assigment: Gans Gán không hợp lệ. Không được gán trị cho biến tệp hoặc biến không định kiểu. Không được gán trị cho định danh hàm ở ngoài thân của hàm đó.
Lỗi 44. Field identifier expected: Cần một định danh thường. Lỗi phát sinh khi sử dụng bản ghi (RECORD) không có trường hợp đi kèm.
Lỗi 54. OF expected:Thiếu OF trong TYPE, CASE, FILE, SET, ARRAY
Lỗi 57. THEN expected:Thiếu THEN trong IF
Lỗi 58. TO or DOWN TO expected: Thiếu To hoặc DOWN TO trong FOR
Lỗi 66. String variable expected: Cần một biến string.
Lỗi 67. String expression expected; Cần một biểu thức string.
Lỗi 74. Constant and case types do not match: Kiểu hằng và kiểu biểu thức trong CASE không phù hợp với nhau.
Lỗi 75. Record variable expected: Cần một biến kiểu RECORD.
Lỗi 76. Constant out of range: Hằng vượt quá miền. Lỗi có thể gặp trong các tình huống sau: - Chỉ dẫn mảng vượt ra ngoài giới hạn của mảng - Gọi thủ tục và hàm với các tham trị cụ thể vượt ra ngoài giới hạn đã khai báo.
Lỗi 79. Integer or Real expssion expected: Cần một biểu thức kiểu INTEGER hoặc REAL.
Lỗi 85. ";" expected: Cần có dấu chấm phảy.
Lỗi 86. ": " expected: Cần có dấu hai chấm.
Lỗi 87. " , " expected: Cần có dấu phảy
Lỗi 88. " ( " expected: Cần có dấu mở ngoặc đơn
Lỗi 89 " ) " expected: Cần có dấu đóng ngoặc đơn
Lỗi 99. " = " expected: Cần có dấu bằng.
Lỗi 91. ":= "expected: Cần dấu gán
Lỗi 92 " [ " or " (. " expected: Cần mở dấu ngoặc vuông khi khai báo hoặc chỉ định phần tử của mảng, tập.
Lỗi 93. " ] " or " .) " expected: Cần dấu đóng ngoặc vuông khi khai báo hoặc chỉ định phần tử của mảng hoặc tập.
Lỗi 94. " ." expected: Cần dấu chấm khi chỉ định một trường trong bản ghi
Lỗi 95 " .." expected: Cần dấu nhiều chấm khi liệt kê giới hạn mảng, tập.
Lỗi 98. Integer variable expected: Cần biến nguyên.
Lỗi 100. String. length, mismatch: Chiều dài xâu không phù hợp với số lượng các phần tử của mảng ký tự.
Lỗi 102. String constant expected: Cần một hằng kiểu xâu.
Lỗi 103. Integer or real variable expected: Cần biến nguyên hoặc thực (biến số).
Lỗi 104. Ordinal variable expected: Cần biến (kiểu) thứ tự.
Lỗi 106. Character expressionexpected: Cần biểu thức kiểu ký tự.
Lỗi 112 CASE constant out of range: Hằng của toán tửCASE không nằm trong giới hạn. -32768 dến 32767
Lỗi 113 Error in statement: Câu lệnh sai. Lỗi không sảy ra khi viết sai kí tự đầu tiên của câu lệnh.
Lỗi 200 Division by zero: chia cho số 0. (Loãi khi chaïy chöông trình)
File đính kèm:
- loi cu fap pascal.doc