MỘT SỐ LỖI CÚ PHÁP THƯỜNG GẶP CỦ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 (có thể do chưa khai báo biến, hằ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.( có thể do sai chính tả một tên, từ khoá nà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 ngồ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 tốn hạng khơng phù hợp với tố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 tố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 ở ngồ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 ngồ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 ngồ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 tố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. (Lỗi khi chạy chương trình)
Tài liệu đính kèm: