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

3.5. Типичные ошибки программирования

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

2)Забывают включить файл iostream.h в программу, которая вводит данные с клавиатуры или выводит данные на экран.

3)Пренебрежение точкой с запятой в конце оператора является син­таксической ошибкой. Синтаксическая ошибка возникает тогда, когда компилятор не может распознать оператор. Обычно компи­лятор выдает сообщение об ошибке, чтобы помочь программисту локализовать и исправить неверный оператор. Синтаксические ошибки — это нарушения правил языка. Синтаксические ошибки называются также ошибками компиляции или ошибками во времякомпиляции, потому что они обнаруживаются на этапе компиляции.

4) Попытка использования операции вычисления остатка % с нецело­численными операндами является синтаксической ошибкой.

5) Если операции ==, !=, >= и <= содержат между своими символами пробелы, это — синтаксическая ошибка.

6) Перестановка символов в обозначении операций: вместо !=, >= и <= запись =!, => и =< соответственно. Это вызывает синтаксическую ошибку.

7)Смешивание операции проверки на равенство == с операцией при­ сваивания =. Операция проверки на равенство должна читаться как«равно», а операция присваивания должна читаться как «присва­ ивает». Некоторые предпочитают читать операцию проверки на ра­венство как «двойное равенство». Как мы вскоре увидим, смеши­ вание этих операций может вызывать нелегко распознаваемую синтаксическую ошибку, а может вызвать и чрезвычайно запутан­ ные логические ошибки.

8)Постановка точки с запятой после правой круглой скобки, завер­ шающей условие в структуре if. Такая ошибочная точка с запятой приводит к тому, что тело структурыifстановится пустым, так чтосама структура if не выполняет никаких действий, независимо от того, истинно условие или нет. Более того, подлинный оператор тела структуры if превращается в оператор, следующий за струк­ турой if, и выполняется всегда.

3.6. Хороший стиль программирования

1) Пишите программы на С++ в простом и четком стиле. Не «насилуйте» кодируемый алгоритм попытками причудливого использования языка программирования.

2)Читайте руководства для той версии С++, которой вы пользуетесь.Чаще обращайтесь к этим руководствам, чтобы быть уверенным в знании богатого набора возможностей С++ и в том, что вы правильно пользуетесь этими возможностями.

3)Ваши компьютер и компилятор — хорошие учителя. Если после тща­ тельного чтения руководства по той версии С++, которой вы пользу­ етесь, у вас нет уверенности в правильном понимании того, как реа­ лизуется та или иная особенность С++, экспериментируйте и смотрите, что происходит. Установите опции вашего компилятора в режим «предупреждений о максимальном числе ситуаций». Изучайте каждое сообщение, поступающее к вам при компиляции ваших программ иисправляйте программы до исчезновения этих сообщений.

4) Каждая программа должна начинаться с комментария, описываю­ щего цель программы.

5) Последний символ, печатаемый любой функцией печати, должен быть \n (новая строка). Это дает уверенность в том, что функция переместит курсор в начало новой строки. Соглашения подобного рода способствуют возможности повторного использования про­ граммного обеспечения — ключевой задаче любой среды разработки программного обеспечения.

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

7) Установите соглашение о величине желательного отступа и затем везде придерживайтесь этого соглашения. Для создания отступа можно использовать клавишу табуляции, а позиции табуляции можно изменять. Мы рекомендуем для формирования величины от­ступа примерно 0,5 см или (предпочтительнее) три пробела.

8) Ставьте пробел после каждой запятой (,), чтобы программу было легче читать.

9) Выбор осмысленных имен переменных помогает программе быть «самодокументируемой», т.е. такую программу легче понимать при чтении, даже не обращаясь к справочным пособиям или обширнымкомментариям.

10) Избегайте идентификаторов, которые начинаются с подчеркиваний, потому что компилятор С++ может использовать похожие на них имена для своих собственных внутренних целей. Это предотвратитпутаницу в именах, выбираемых вами и компилятором.

11) Всегда помещайте пустую строку перед объявлением, которое на­ ходится между выполняемыми операторами. Это делает объявления заметными в программе и способствует ее четкости.

12) Если вы предпочитаете размещать объявления в начале функции, отделяйте эти объявления от выполняемых операторов в этой функ­ции пустой строкой, чтобы выделить конец объявлений и начало выполняемых операторов.

13) Размещайте пробелы с обеих сторон бинарной операции. Это выде­ лит операцию и улучшит читаемость программы.

14) Отступы в теле структурыifвыделяют тело структуры и упрощают чтение программы.

15) В каждой строке программы должно быть не более одного оператора.

16) Оператор может занимать несколько строк. Если один оператор дол­ жен быть разбит на несколько строк, выбирайте характерные точкиразбиения, такие, как позиция после запятой в списке с запятыми в качестве разделителя или позиция после операции в длинном вы­ ражении.

17) Обращайтесь к таблице старшинства операций при написании вы-­ ражений, содержащих много операций. Убедитесь, что операции в выражениях выполняются в ожидаемой вами последовательности. Если вы не уверены в последовательности выполнения в сложных выражениях, используйте для задания последовательности круглые скобки так же, как вы это делаете в алгебраических выражениях. Убедитесь путем наблюдений, что некоторые операции, такие как присваивание (=), имеют ассоциативность не слева направо, а справа налево.

Соседние файлы в папке МетодУказЛабРабот