Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Bilety_programmirovanie_Balunova11.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
1.5 Mб
Скачать

Стиль программирования, облегчающий отладку

    По мнению экспертов, около 90% рабочего времени программиста затрачивается на отладку программы, и только 10% - на ее разработку и написание, поэтому лучшим средством облегчить неизбежную отладку является профилактика ошибок еще на этапе разработки программы и написания ее текста. Правильно написанная программа содержит меньше ошибок и значительно облегчает их поиск.

    Существует ряд простых правил, которых желательно придерживаться при составлении программы:

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

  2. Желательно разбивать текст программы на процедуры и функции. Не следует писать большие процедуры (содержащие более 20-30 строк). Если процедура получается большой, лучше разбить ее на несколько подпрограмм меньших размеров.

  3. Следует по возможности передавать информацию в процедуры через параметры, избегая ссылок на глобальные переменные. Это позволит избежать побочные эффекты и облегчит отладку программы, поскольку будет проще отслеживать всю входную и выходную информацию подпрограммы.

  4. Следует стремиться к простоте алгоритма программы. Главное- чтобы программа начала работать правильно, а уже потом можно украсить ее эффектными средствами ввода-вывода, добиться скорости работы и более рационального использования памяти.

  5. Текст программы должен быть "рыхлым", не следует писать операторы компактно, вплотную друг к другу. Желательно, чтобы на строке было не более одного оператора. Поскольку отладчик Турбо-Паскаля работает построчно, такой подход облегчит локализацию ошибки. На одной строке в виде списка можно писать лишь те операторы, которые надежны в отношении отладки и в проверке не нуждаются: A:=10; B:=3.14; Str:='Строка символов'; C:=True; .

  6. Выполняемые в программе действия надо как можно чаще сопровождать комментариями { }, (* *). Известные программисты Керниган и Плоджер в своей книге "Элементы стиля программирования" рекомендуют, чтобы комментарием сопровождался каждый оператор программы.

Основные виды ошибок программирования

    В ходе отладки программы приходится сталкиваться с тремя видами ошибок:

  1. Синтаксические ошибки - текст программы не отвечает требованиям языка Паскаль. Такие ошибки выявляются сразу при попытке компиляции и запуска программы.

  2. Ошибки периода выполнения программы (RUNTIME ERROR) - ошибки, возникающие при выполнении программы, когда текст программы формально записан правильно, но при выполнении программы в результате неблагоприятного стечения обстоятельств возникает ошибочная ситуация и компьютер не может продолжить работу (например, в случае деления на ноль).

  3. Ошибки в алгоритме (семантические ошибки) - программа работает без сбоев, но результаты получаются неверные.

    Ошибки 1 и 2 видов помогает отыскать сам компьютер, приостанавливая работу и выводя на первой строке сообщение о характере ошибки. Более того, при компиляции неправильной программы Турбо-Паскаль автоматически загружает в окно редактора сбойный участок текста программы и помещает курсор вблизи обнаруженной ошибки.

    Перечислим ошибки, наиболее часто допускаемые начинающими программистами, и разъясним сообщения Турбо-Паскаля, выдаваемые им при выявлении этих ошибок в процессе компиляции текста программы:

  1. Identifier expected - в этом месте программы должен находиться идентификатор (имя программного объекта). Возможно, программист пытался использовать в качестве идентификатора слово, зарезервированное Паскалем для других целей.

  2. Unknown identifier - идентификатор (имя переменной, константы, процедуры и т.п.) не был упомянут в разделе описаний программы.

  3. Duplicate identifier - попытка дважды описать один и тот же идентификатор.

  4. Syntax error - синтаксическая ошибка, например строка символов не была заключена в кавычки.

  5. Line too long - компилятор не может обрабатывать текст программы со строками длиннее 126 символов. Скорее всего, программист забыл поставить апостроф, закрывающий текстовую строку, записываемую в переменную или выводимую на экран.

  6. Type identifier expected - не указан тип идентификатора.

  7. Variable identifier expected - на этом месте в программе должна стоять переменная.

  8. Error in type - объявление типа данных не может начинаться с этого символа.

  9. Type mismatch - а)тип переменной, стоящей слева от знака присваивания, отличается от значения выражения, стоящего справа; б)при обращении к процедуре типы формального и фактического параметров не совпадают; в)переменная данного типа не может служить индексом массива.

  10. Begin expected - нужен begin.

  11. End expected - нужен end.

  12. Integer expression expected - требуется выражение типа integer.

  13. Boolean expression expected - требуется выражение типа boolean.

  14. Do expected - пропущено слово "Do".

  15. Of expected - пропущено слово "of".

  16. Then expected - пропущено слово "then".

  17. To expected - пропущено слово "to".

  18. String variable expected - требуется строковая переменная.

  19. Error in expression - данный символ не может участвовать в выражении таким образом.

  20. Division by zero - деление на ноль.

  21. Constant and case types do not math - тип меток и тип селектора в операторе CASE не соответствуют друг другу.

  22. Label not within current block - оператор GOTO не может ссылаться на метку, находящуюся вне текущего модуля.

  23. Label already defined - такая метка уже есть.

  24. Floating point overflow operation - величина вещественного числа вышла за пределы диапазона, допускаемого Паскалем (обычно при делении на ноль).

  25. Invalid procedure or function reference - неправильный вызов подпрограммы.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]