logo
Харви Дейтел, Пол Дейтел Как программировать на С++ / 02-Deitel-Стр-115-214

Глава 2

нисходящая пошаговая детализация операции арифметического

присваивания +=, —=, *=, /= и % = операция ! операция && операция ++ операция --операция ?: операция ||

операция декремента (--) операция инкремента (++) операция приведения к типу ошибка занижения (или завышения)

на единицу параметризованный манипулятор

потока

передача управления повторение

повторение заданное число раз повторение неопределенное число раз повторение, управляемое счетчиком последовательное выполнение постфиксная форма операции

декремента постфиксная форма операции

инкремента префиксная форма операции

декремента префиксная форма операции

инкремента псевдокод пустой оператор (;)

раздел default в switch

решение

символы-разделители синтаксическая ошибка составной оператор структура выбора if структура выбора if/else структура выбора switch структура двойного выбора структура множественного выбора структура повторения структура повторения for структура повторения while структура повторения do/while структура с единственным выбором структурное программирование счетчик цикла тело цикла

трехчленная (тернарная) операция унарная операция управляющая структура управляющие структуры с одним входом и одним выходом условие продолжения цикла условная операция ?: формат с фиксированной точкой функция cin.get() функция pow целочисленное деление цикл ширина поля

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

  1. Использование ключевого слова в качестве идентификатора.

  2. Пропуск одной или обеих фигурных скобок, ограничивающих со­ ставной оператор.

  3. Запись точки с запятой после условия в структуре if приводит к логической ошибке в структуре с единственным выбором и к син­ таксической ошибке в структуре с двойным выбором (если часть if в действительности содержит оператор).

  4. В теле структуры while не предусматривается действие, которое при­ ведет к тому, что со временем условие while станет ложным. Вы­ полнение подобной структуры повторения никогда не прервется — такая ошибка называется «зацикливание».

  5. Запись ключевого слова while как While с символом W в верхнем регистре (помните, что язык С++ чувствителен к регистру). Все зарезервированные ключевые слова С++, такие, как while, if и else, содержат только символы нижнего регистра.

Управляющие структуры 153

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

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

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

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

  5. Попытка использовать в операции инкремента или декремента опе­ ранд, отличный от имени простой переменной, например, выраже­ ние ++(х+1) является синтаксической ошибкой.

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

  7. Использование неправильной операции отношения или использова­ ние неправильной конечной величины счетчика цикла в условиях структур while или for может приводить к ошибке занижения (или завышения) на единицу.

  8. Использование запятых вместо точек с запятой в заголовке струк­ туры for.

  9. Размещение точки с запятой сразу после правой закрывающей скоб­ ки заголовка for делает тело структуры пустым оператором. Обычно это логическая ошибка.

  10. Использование несоответствующей операции отношения в условии продолжения цикла при счете циклов сверху вниз (например, ис­ пользование i <= 1 при счете циклов сверху до 1).

  11. Забывают включить файл math.h в программы, использующие биб­ лиотеку математических функций.

  12. Забывают вставить оператор break, когда он нужен в структуре switch.

  13. Пропуск пробела между ключевым словом case и целым значением, которое проверяется в структуре switch, может вызвать логическую ошибку. Например, запись case3: вместо case 3: просто создаст не­ используемую метку (мы поговорим об этом подробнее в главе 18). Дело в том, что в этой структуре switch не будут совершены соот­ ветствующие действия, когда управляющее выражение switch будет иметь значение 3.

  14. Отсутствие обработки символа новой строки при вводе, если символы читаются по одному, может привести к логической ошибке.

  15. Если условие продолжения цикла в структурах while, for или do/while никогда не становится ложным, то возникает зациклива-