Какие существуют виды ошибок?
Существует три основных типа ошибок: ошибки этапа компиля- ции, ошибки этапа выполнения и логические ошибки. Если вы уже хо- рошо знакомы с этими понятиями, то можете пропустить следующий раздел до методов отладки.
Ошибки этапа компиляции
Ошибки этапа компиляции или синтаксические ошибки происхо- дят, когда ваш исходный код нарушает правила синтаксиса Паскаля. Borland Pascal на может скомпилировать вашу программу, пока она не будет содержать допустимые операторы Паскаля. Когда компилятор встречает оператор, который он не может распознать, соответствую- щий файл выводится в окне редактирования, курсор позиционируется на то место, которое не понял компилятор, и выводится сообщение об ошибке.
Компилятор, работающий в режиме командной строки, также дает вам некоторую информацию. Когда он находит синтаксическую ошибку, то выводит содержащую ошибку строку с номером этой строки и сооб- щением об ошибке.
Наиболее общей причиной ошибок этапа компиляции являются ошибки набора (опечатки), пропущенные точки с запятой, ссылки на неописанные переменные, передача неверного числа (или типа) пара- метров процедуры или функции и присваивание переменной значений неверного типа.
После исправления ошибки вы можете выполнить компиляцию за- ново. После устранения в программе всех синтаксических ошибок и ее успешной компиляции программа будет готова к выполнению и по- иску ошибок этапа выполнения и логических ошибок.
Ошибки этапа выполнения
Ошибки этапа выполнения или семантические ошибки происходят, когда вы компилируете полную программу, которая при ее выполнении делает что-то недопустимое. То есть, программа содержит допусти- мые операторы Паскаля, но при выполнении операторов что-то проис- ходит неверно. Например, ваша программа может пытаться открыть для ввода несуществующий файл или выполнить деление на ноль.
Когда программа Borland Pascal обнаруживает такую ошибку, она завершает выполнение и выводит сообщение следующего вида:
Run-time error ## at seg:ofs
Если вы выполняете программу из IDE, Borland Pascal автома- тически находит вызвавший ошибку оператор (как в случае синтакси- ческих ошибок). Если вы выполняете программу вне IDE, то вы може- те запустить IDE и, чтобы найти вызвавший ошибку оператор, ис- пользовать команду Search|Find Error, которая дает вам адрес сег- мента и смещения (seg:ofs). Если вы используете компилятор ко- мандной строки, то можете для поиска ошибки использовать параметр /F.
Логические ошибки
Логические ошибки - это ошибки проектирования и реализации программы. То есть, ваши операторы допустимы и что-то делают, но не то, что вы предполагали. Эти ошибки часто трудно отследить, поскольку IDE не может найти их автоматически, как синтаксические и семантические ошибки. К счастью, IDE включает в себя средства отладки, помогающие вам найти логические ошибки.
Логические ошибки приводят к некорректному или непредвиден- ному значению переменных, неправильному виду графических изобра- жений или невыполнению кода, когда это ожидается. В остальной части этой главы обсуждаются методы отслеживания этих логических ошибок.