5.В ходе отладки программы приходится сталкиваться с тремя видами ошибок: 1. Синтаксические ошибки - текст программы не отвечает требованиям языка Паскаль. Такие ошибки выявляются сразу при попытке компиляции и запуска программы. 2. Ошибки периода выполнения программы (RUNTIME ERROR) – ошибки, возникающие при выполнении программы, когда текст программы формально записан правильно, но при выполнении программы в результате неблагоприятного стечения обстоятельств возникает ошибочная ситуация и компьютер не может продолжить работу (например, в случае деления на ноль). 3. Ошибки в алгоритме (семантические ошибки) - программа работает без сбоев, но результаты получаются неверные.
Ошибки 1 и 2 видов помогает отыскать сам компьютер, приостанавливая работу и выводя на первой строке сообщение о характере ошибки. Более того, при компиляции неправильной программы Турбо-Паскаль автоматически загружает в окно редактора сбойный участок текста программы и помешает курсор вблизи обнаруженной ошибки.
Перечислим ошибки, наиболее часто допускаемые начинающими программистами, и разъясним сообщения Турбо-Паскаля, выдаваемые им при выявлении этих ошибок в процессе компиляции текста программы:
Identifier expected - в этом месте программы должен находиться идентификатор (имя программного объекта). Возможно, программист пытался использовать в качестве идентификатора слово, зарезервированное Паскалем для других целей. Unknown identifier - идентификатор (имя переменной, константы. процедуры и т.п.) не был упомянут в разделе описаний программы. Duplicate identifier - попытка дважды описать один и тот же идентификатор. Syntax error - синтаксическая ошибка, например строка символов не была заключена в кавычки. Line too long - компилятор не может обрабатывать текст программы со строками длиннее 126 символов. Скорее всего, программист забыл поставить апостроф, закрывающий текстовую строку, записываемую в переменную или выводимую на экран. Type identifier expended - не указан тип идентификатора. Variable identifier expended - на этом месте в программе должна стоять переменная. Error in type - объявление типа данных не может начинаться с этого символа. Type mismath -
2. тип переменной, стоящей слева от знака присваивания, тличается от значения выражения, стоящего справа;
3. при обращении к процедуре типы формального и фактического параметров не совпадают;
4. переменная данного типа не может служить индексом массива. Begin expected - нужен begin. End expected - нужен end. Integer expression expected - требуется выражение типа integer. Boolean expression expected - требуется выражение типа boolean. Do expected - пропущено слово "Do". Of expected - пропущено слово "of". Then expected - пропущено слово "then". To expected - пропущено слово "to". String variable expected - требуется строковая переменная. Error in expression - данный символ не может участвовать в выражении таким образом. Division by zero - деление на ноль. Constant and case types do not math - тип меток и тип селектора в операторе CASE не соответствуют друг другу. Label not within current block - оператор GOTO не может ссылаться на метку, находящуюся вне текущего модуля. Label already defined - такая метка уже есть. Floating point overflow operation - величина вещественного числа вышла за пределы диапазона, допускаемого Паскалем (обычно при делении на ноль). Invalid procedure or function reference - неправильный вызов подпрограммы.