Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Тurbo Pascal 7+.doc
Скачиваний:
12
Добавлен:
24.12.2018
Размер:
10.09 Mб
Скачать

Исправление ошибок. Отладка программы Сообщения об ошибках

Ошибки в программах делятся на те, которые Паскаль замечает, и на те, что не замечает. К первым относятся все синтаксические погрешности, например BIGIN вместо BEGIN. Их Паскаль замечает еще на стадии компиляции. На стадии выполнения он замечает такие ошибки, как Sqrt(-25), то есть квадратный корень из -25. Но вот если вы, желая возвести число а в куб, вместо а*а*а пишете а*а, то этого не заметит ни один язык.

Обнаружив грамматическую ошибку, Паскаль выдает желтыми буквами на красном фоне краткое описание ошибки и ставит курсор в то место программы, где, по его мнению, она находится.

Обнаружив ошибку на стадии выполнения, Паскаль выдает белыми буквами на черном фоне окна пользователя сообщение - Runtime error и иногда желтыми буквами на красном фоне краткое описание ошибки и ставит курсор в то место программы, где, она находится.

Вот наиболее типичные для начинающих сообщения об ошибках:

Сообщение

Перевод

Вероятная причина ошибки

Unexpected end of file

Неожиданный конец файла

Вы забыли поставить точку после последнего END. Или не совпадает количество begin с количеством end

";" expected

Ждал точку с запятой

Вы забыли поставить точку с запятой после предыдущего оператора

"," expected

Ждал запятую

Вы указали слишком мало параметров в обращении к подпрограмме

")" expected

Ждал скобку ")"

Вы указали слишком много параметров в обращении к подпрограмме

Unknown identifier

Неизвестное имя

Вы забыли описать это имя в разделе описаний Неправильно записали стандартное имя, например ReedLn вместо ReadLn

Type mismatch

Несовпадение типов

В вашей программе встречаются примерно такие "сладкие парочки": VAR c:String; ... с =1+2 или VAR h:Integer; .. h =9/7

Duplicate identifier

Дубль имени

Одно и то же имя описано два раза. Например. VAR а, с, a :String;

Syntax error

Синтаксическая ошибка

Паскаль затрудняется назвать причину ошибки. Часто причина в том, что вы забыли взять строковую константу в кавычки.

BEGIN expected

Ждал BEGIN

Возможно, не совпадает количество begin с количеством end

END expected

Ждал END

Возможно, не совпадает количество begin с количеством end

String constant exeeds line

Строковая константа Превышает допустимую длину

Вы забыли закрыть кавычки в строковой константе

Line too long

Строчка слишком длинна

Слишком длинная строчка в программе (не пугать со строковой константой, которую нужно брать в кавычки). Не рекомендую залезать программным текстом за правый край экрана

Disk full

Диск заполнен

На вашем диске не осталось места. Надо что-то стереть

Lower bound greater than upper bound

Нижняя граница диапазона больше верхней

Например, вы вместо array[2..5] написали array[5..2]

Invalid floating point operation

Неправильная операция с вещественным результатом

Sqrt(-25), или а/0, или что-нибудь в этом роде

Ordinal expression expected

Ждал выражение порядкового типа

Например, вы вместо for i:=l to 8 написали for i:=l to 8.5

Error in expression

Ошибка в выражении

Например, вы вместо k:=a*8 написали k:=a**8

Range check error

Ошибка проверки диапазона

Переменная в процессе выполнения программы вышла за пределы допустимого диапазона, как, например в разделе 12.9

Constant out of range

Константа не в диапазоне

Величина константы в программе превосходит допустимый диапазон

Invalid numeric format

Неправильный числовой формат

Если, например, вы по оператору

ReadLn(k) в программе VAR k:Integer

ReadLn(k) пытаетесь ввести число 25,3

Более подробное описание некоторых ошибок вы найдете в разделе 4.3.

Понять смысл многих других сообщений об ошибках вам поможет перевод некоторых часто встречающихся в сообщенияхслов:

Expected - ждал,

Identifier - имя,

Invalid - неправильный,

Operation - операция,

Error - ошибка,

Variable - переменная.

Невозможно создать компилятор, который бы всегда точно находил место и причину ошибки. Некоторые сообщения вы будете долго разглядывать в недоумении. Считайте их не реальными ошибками, а намеками на реальные ошибки.