
- •Цикл с параметром
- •Операторы ограничения и прерывания цикла
- •Cледование и ветление
- •Команды повторения Цикл со счётчиком
- •Цикл с условием
- •Цикл типа пока
- •Вложенные циклы
- •Интегрированная среда программирования Turbo Pascal 7.0
- •17.1. Вход в интегрированную среду
- •Структура программы
- •Комментарии
- •Оператор присваивания
- •Процедура ввода информации
- •Процедура вывода информации на печать
- •Операции над строками
- •Логический тип данных. Логические операции not, and, or. Нахождение значений логических выражений
- •Стиль программирования, облегчающий отладку
- •Основные виды ошибок программирования
- •Средства, которыми располагает отладчик Турбо-Паскаля
- •Оператор присваивания
- •Составной оператор
- •Основные математические функции
- •Операции над множествами
Стиль программирования, облегчающий отладку
По мнению экспертов, около 90% рабочего времени программиста затрачивается на отладку программы, и только 10% - на ее разработку и написание, поэтому лучшим средством облегчить неизбежную отладку является профилактика ошибок еще на этапе разработки программы и написания ее текста. Правильно написанная программа содержит меньше ошибок и значительно облегчает их поиск.
Существует ряд простых правил, которых желательно придерживаться при составлении программы:
Писать текст программы и отлаживать ее следует небольшими частями. Перед тем, как использовать результаты работы одной части программы в другой ее части, следует добиться правильной работы первого блока.
Желательно разбивать текст программы на процедуры и функции. Не следует писать большие процедуры (содержащие более 20-30 строк). Если процедура получается большой, лучше разбить ее на несколько подпрограмм меньших размеров.
Следует по возможности передавать информацию в процедуры через параметры, избегая ссылок на глобальные переменные. Это позволит избежать побочные эффекты и облегчит отладку программы, поскольку будет проще отслеживать всю входную и выходную информацию подпрограммы.
Следует стремиться к простоте алгоритма программы. Главное- чтобы программа начала работать правильно, а уже потом можно украсить ее эффектными средствами ввода-вывода, добиться скорости работы и более рационального использования памяти.
Текст программы должен быть "рыхлым", не следует писать операторы компактно, вплотную друг к другу. Желательно, чтобы на строке было не более одного оператора. Поскольку отладчик Турбо-Паскаля работает построчно, такой подход облегчит локализацию ошибки. На одной строке в виде списка можно писать лишь те операторы, которые надежны в отношении отладки и в проверке не нуждаются: A:=10; B:=3.14; Str:='Строка символов'; C:=True; .
Выполняемые в программе действия надо как можно чаще сопровождать комментариями { }, (* *). Известные программисты Керниган и Плоджер в своей книге "Элементы стиля программирования" рекомендуют, чтобы комментарием сопровождался каждый оператор программы.
Основные виды ошибок программирования
В ходе отладки программы приходится сталкиваться с тремя видами ошибок:
Синтаксические ошибки - текст программы не отвечает требованиям языка Паскаль. Такие ошибки выявляются сразу при попытке компиляции и запуска программы.
Ошибки периода выполнения программы (RUNTIME ERROR) - ошибки, возникающие при выполнении программы, когда текст программы формально записан правильно, но при выполнении программы в результате неблагоприятного стечения обстоятельств возникает ошибочная ситуация и компьютер не может продолжить работу (например, в случае деления на ноль).
Ошибки в алгоритме (семантические ошибки) - программа работает без сбоев, но результаты получаются неверные.
Ошибки 1 и 2 видов помогает отыскать сам компьютер, приостанавливая работу и выводя на первой строке сообщение о характере ошибки. Более того, при компиляции неправильной программы Турбо-Паскаль автоматически загружает в окно редактора сбойный участок текста программы и помещает курсор вблизи обнаруженной ошибки.
Перечислим ошибки, наиболее часто допускаемые начинающими программистами, и разъясним сообщения Турбо-Паскаля, выдаваемые им при выявлении этих ошибок в процессе компиляции текста программы:
Identifier expected - в этом месте программы должен находиться идентификатор (имя программного объекта). Возможно, программист пытался использовать в качестве идентификатора слово, зарезервированное Паскалем для других целей.
Unknown identifier - идентификатор (имя переменной, константы, процедуры и т.п.) не был упомянут в разделе описаний программы.
Duplicate identifier - попытка дважды описать один и тот же идентификатор.
Syntax error - синтаксическая ошибка, например строка символов не была заключена в кавычки.
Line too long - компилятор не может обрабатывать текст программы со строками длиннее 126 символов. Скорее всего, программист забыл поставить апостроф, закрывающий текстовую строку, записываемую в переменную или выводимую на экран.
Type identifier expected - не указан тип идентификатора.
Variable identifier expected - на этом месте в программе должна стоять переменная.
Error in type - объявление типа данных не может начинаться с этого символа.
Type mismatch - а)тип переменной, стоящей слева от знака присваивания, отличается от значения выражения, стоящего справа; б)при обращении к процедуре типы формального и фактического параметров не совпадают; в)переменная данного типа не может служить индексом массива.
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 - неправильный вызов подпрограммы.