Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Комментарии, пустые строки и пробелы






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

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

Существует три типа комментариев: вводные, оглавления и пояснительные. Ввод­ные комментарии поясняют назначение программы или модуля. Они могут включать указания по использованию, перечисление файлов, связанных с программой или мо­дулем, названия применяемых методов, требуемый объем памяти, сведения об авторе, дату создания и другие сведения. В комментариях к подпрограмме обязательно специ­фицируются ее параметры и ограничения на их возможные значения.

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

Комментарии оглавления полезны в программах, имеющих много подпрограмм. Обычно они указывают названия, размещение и назначение используемых подпро­грамм и других программных единиц.

Пояснительные комментарии описывают словами логику программы. При нисхо­дящем проектировании программы уточняемые фразы предыдущего уровня детализа­ции обычно имеют вид приказов или команд на выполнение некоторых действий. Они часто записываются в виде комментариев перед частями программы, уточняю­щими эти команды {команды-комментарии).

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

Естественно, комментарии должны соответствовать содержанию фрагмента про­граммы и изменяться при модификации фрагмента.

В операторах if-then-else полезны комментарии после слова else, особенно если оно находится далеко от соответствующего слова if. В таком комментарии записыва­ется отрицание условия, указанного после if.

После оператора цикла while полезно записать комментарий с отрицанием условия продолжения цикла. Часто это дает подсказку о состоянии памяти по завершении цикла.

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

Пробелы также облегчают чтение программы. Ими часто выделяют знаки операций в выражениях, знаки присваивания, элементы в списках имен, констант и т.п.

2. Программа написана – что дальше?

Отлаженная программаэто программа, для которой по­ка еще не найдены

такие условия, в которых она окажется неработоспособной.

У. Огден

Мы строим системы так же, как братья Райт строили свои самолеты:

создаем всю систему целиком, запускаем ее – пусть она развалится!

и начинаем все сначала.

Р. Грэхем

2.1. " Правильная программа" и ошибки

Термин " правильная программа" можно понимать по-разному. Выделим следую­щие уровни правильности программы:

1) не содержит синтаксических ошибок;

2) выдает правильные результаты для некоторых экземпляров входных данных;

3) выдает правильные результаты для всех возможных входных данных, удовлетво­ряющих спецификации задачи;

4) обеспечивает правильный ответ для любых входных данных, даже содержащих произвольные ошибки.

Очевидно, первый уровень неприемлем. Второй обычно достигается новичками на занятиях по программированию, когда они впервые собираются сдавать свою про­грамму преподавателю. Третьего уровня можно достичь после тщательной и много­кратной проверки программы на специально подобранных данных и исправления всех выявленных при этом ошибок. Четвертый уровень – это то, к чему иногда, хотя и не всегда, нужно стремиться в реальных программах, но чего достичь практически невозможно. Правильность реальных приложений обычно находится между третьим и четвертым уровнем, хотя бывает, что и третий уровень не обеспечен.

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

Уровень правильности программы весьма желательно определять при постановке задачи и фиксировать в ее спецификации, иначе заказчик может долго предъявлять претензии, повышая уровень своих требований. Очевидно, чем выше уровень пра­вильности, тем больше усилий нужно затратить на проектирование, разработку, от­ладку и испытание программы.

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

Синтаксические ошибки связаны с нарушением правил языка. О них сообщает ком­пилятор при попытке трансляции программы. Чаще всего встречаются следующие:

§ ошибка набора, например, буква " о" вместо нуля, переставлены или пропуще­ны символы в имени или ключевом слове;

§ пропущен разделитель (", ", ": ", "; " и т.п.);

§ ошибка в записи знаков операций, особенно сравнений;

§ не определены имена (переменных, констант, типов или подпрограмм) или не указано использование другой программной единицы;

§ неправильно записан оператор, например, в языке Паскаль знак "; " перед сло­вом else;

§ несбалансированы или отсутствуют необходимые пары скобок в выражениях;

§ отсутствует баланс операторных скобок begin-end.

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

После исправления синтаксических ошибок программа запускается на выполне­ние, и появляются признаки более серьезных и тонких семантических ошибок, подав­ляющее большинство которых компилятор обнаружить не может. Вот наиболее ти­пичные и легко исправимые (но не всегда легко выявляемые) семантические ошибки:

§ пропущен оператор или группа операторов;

§ не инициализированы переменные;

§ неправильно записаны условия в операторах ветвления и циклов, например, не учтен приоритет операций и не хватает скобок;

§ не инициализированы переменные, обрабатываемые в цикле;

§ неправильно определен диапазон изменения счетчика или параметра цикла;

§ значения индексов массива выходят за допустимые пределы;

§ неправильно использованы вложенные операторы ветвления или цикла;

§ указаны непредусмотренные изменения параметров-переменных;

§ перед делением отсутствует проверка, не равен ли делитель 0;

§ перед чтением файла нет проверки, можно ли его читать;

§ неверно использованы оператор или подпрограмма из-за незнания, как в действительности они выполняются, например, оператор for в Паскале или подпрограммы ввода-вывода;

§ не соблюдается соответствие между аргументами в вызове подпрограммы и ее параметрами по количеству и порядку записи (простое несоответствие типов обычно распознает транслятор);

§ неправильно обрабатывается окончание последовательности входных данных.

Хуже, если исправление ошибки требует более серьезных изменений программы. Вот некоторые ошибки такого рода:

§ неправильно определен диапазон возможных значений входных и других данных;

§ не предусмотрены особые и пограничные ситуации, связанные с вводом и вы­водом данных;

§ неправильно обрабатываются ошибки во входных данных;

§ сочетания значений переменных, например флажков, обрабатываются с ошибками.

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

§ использован неподходящий алгоритм, из-за которого, например, программа работа­ет слишком медленно. При этом фактически сужается область ее применимости;

§ исчерпывается программный стек или свободная память. Это также сужает область применимости;

§ работа программы не соответствует документации;

§ есть ошибки в постановке задачи и спецификациях задачи.

Итак, лучше не ошибаться, но, поскольку это невозможно, придется искать и уст­ранять ошибки, т.е. отлаживать программу.






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.