Глава 2
нисходящая пошаговая детализация операции арифметического
присваивания +=, —=, *=, /= и % = операция ! операция && операция ++ операция --операция ?: операция ||
операция декремента (--) операция инкремента (++) операция приведения к типу ошибка занижения (или завышения)
на единицу параметризованный манипулятор
потока
передача управления повторение
повторение заданное число раз повторение неопределенное число раз повторение, управляемое счетчиком последовательное выполнение постфиксная форма операции
декремента постфиксная форма операции
инкремента префиксная форма операции
декремента префиксная форма операции
инкремента псевдокод пустой оператор (;)
раздел default в switch
решение
символы-разделители синтаксическая ошибка составной оператор структура выбора if структура выбора if/else структура выбора switch структура двойного выбора структура множественного выбора структура повторения структура повторения for структура повторения while структура повторения do/while структура с единственным выбором структурное программирование счетчик цикла тело цикла
трехчленная (тернарная) операция унарная операция управляющая структура управляющие структуры с одним входом и одним выходом условие продолжения цикла условная операция ?: формат с фиксированной точкой функция cin.get() функция pow целочисленное деление цикл ширина поля
Типичные ошибки программирования
Использование ключевого слова в качестве идентификатора.
Пропуск одной или обеих фигурных скобок, ограничивающих со ставной оператор.
Запись точки с запятой после условия в структуре if приводит к логической ошибке в структуре с единственным выбором и к син таксической ошибке в структуре с двойным выбором (если часть if в действительности содержит оператор).
В теле структуры while не предусматривается действие, которое при ведет к тому, что со временем условие while станет ложным. Вы полнение подобной структуры повторения никогда не прервется — такая ошибка называется «зацикливание».
Запись ключевого слова while как While с символом W в верхнем регистре (помните, что язык С++ чувствителен к регистру). Все зарезервированные ключевые слова С++, такие, как while, if и else, содержат только символы нижнего регистра.
Управляющие структуры 153
Если для счетчика или переменной суммы не задады начальные значения, то результат работы вашей программы будет, вероятно, неправильным. Это пример логической ошибки.
Выбор такого значения метки, которое могут принимать и входные данные.
Попытка деления на нуль вызывает сбой программы.
Использование чисел с плавающей запятой в предположении, что они совершенно точные, может приводить к некорректным резуль татам. Числа с плавающей запятой на большинстве компьютеров являются приближенными.
Попытка использовать в операции инкремента или декремента опе ранд, отличный от имени простой переменной, например, выраже ние ++(х+1) является синтаксической ошибкой.
Поскольку числа с плавающей запятой являются приближенными, контроль количества выполнений цикла с помощью переменной с плавающей запятой может приводить к неточному значению счет чика и неправильному результату проверки условия окончания.
Использование неправильной операции отношения или использова ние неправильной конечной величины счетчика цикла в условиях структур while или for может приводить к ошибке занижения (или завышения) на единицу.
Использование запятых вместо точек с запятой в заголовке струк туры for.
Размещение точки с запятой сразу после правой закрывающей скоб ки заголовка for делает тело структуры пустым оператором. Обычно это логическая ошибка.
Использование несоответствующей операции отношения в условии продолжения цикла при счете циклов сверху вниз (например, ис пользование i <= 1 при счете циклов сверху до 1).
Забывают включить файл math.h в программы, использующие биб лиотеку математических функций.
Забывают вставить оператор break, когда он нужен в структуре switch.
Пропуск пробела между ключевым словом case и целым значением, которое проверяется в структуре switch, может вызвать логическую ошибку. Например, запись case3: вместо case 3: просто создаст не используемую метку (мы поговорим об этом подробнее в главе 18). Дело в том, что в этой структуре switch не будут совершены соот ветствующие действия, когда управляющее выражение switch будет иметь значение 3.
Отсутствие обработки символа новой строки при вводе, если символы читаются по одному, может привести к логической ошибке.
Если условие продолжения цикла в структурах while, for или do/while никогда не становится ложным, то возникает зациклива-
- 116 Глава 2
- 2.13. Основы повторения, управляемого счетчиком
- 2.14. Структура повторения for (цикл)
- 120 Глава 2
- 122 Глава 2
- 2.15. Пример использования структуры for
- 124 Глава 2
- 126 Глава 2
- 2.16. Структура множественного выбора switch
- Глава 2
- 130 Глава 2
- 132 Глава 2
- 2.17. Структура повторения do/while
- 134 Глава 2
- 2.18. Операторы break и continue
- Глава 2
- 2.19. Логические операции
- 138 Глава 2
- Глава 2
- 2.21. Заключение по структурному программированию
- IfcrpyKTypa (единственный выбор)
- Глава 2
- Глава 2
- 148 Глава 2
- Глава 2
- Глава 2
- Глава 2
- 156 Глава 2
- 158 Глава 2
- 160 Глава 2
- 2.1. А) следование, выбор и повторение, b) if/else. С) управляемым счет чиком или определенным заранее, d) Метку, сигнал, флаг или лож ный сигнал.
- 162 Глава 2
- 164 Глава 2
- 166 Глава 2
- 168 Глава 2
- 170 Глава 2
- 172 Глава 2
- 174 Глава 2
- 176 Глава 2
- 178 Глава 3
- Глава 3
- 3.3. Математические библиотечные функции
- 3.4. Функции
- Глава 3
- 3.5 Определения функций
- 184 Глава 3
- 186 ГлаваЗ
- 3.6. Прототипы функций
- 188 Глава 3
- 3.7. Заголовочные файлы
- 3.8. Генерация случайных чисел
- Глава 3
- 192 Глава 3
- 194 Глава 3
- 3.9. Пример: азартная игра
- Глава 3
- 198 Глава 3
- 3.10. Классы памяти
- 200 Глава 3
- 3.11. Правила, определяющие область действия
- 202 Глава 3
- 204 Глава 3
- 3.12 Рекурсия
- Глава 3
- 6) Значения, возвращаемые после каждого рекурсивного вызова
- 3.13. Пример использования рекурсии: последовательность чисел Фибоначчи
- Глава 3
- 3.14. Рекурсии или итерации
- 212 Глава 3
- Глава 3
- Глава 4
- Глава 5
- Глава 6
- 3.15. Функции с пустыми списками параметров
- 214 Глава 3
- 3.16. Встраиваемые функции