132 Глава 2
Хороший стиль программирования 2.25
Если в структуре switch предложение default помещено последним в списке, то оператор break в нем не требуется. Но некоторые программисты включают break и тут для четкости и для симметрии с другими случаями.
В структуре switch на рис. 2.22 строки
case '\n': case break;
позволяют программе пропускать символы новой строки и пробелы. Чтение по одному символу за раз создает некоторые проблемы. Чтобы программа могла прочитать символы, они должны быть посланы в компьютер нажатием клавиши возврат каретки (ввод) на клавиатуре. Это вызывает во входном потоке символ новой строки после символа, который мы хотим ввести. Часто этот символ новой строки должен быть специально обработан, чтобы работа программы была корректной. Включая указанный случай в нашу структуру switch, мы предотвращаем сообщения об ошибках, которые печатались бы каждый раз по метке default при вводе новой строки или пробела.
Типичная ошибка программирования 2.19
Отсутствие обработки символа новой строки при вводе, если символы читаются по одному, может привести к логической ошибке.
Хороший стиль программирования 2.26
Не забывайте обеспечить обработку возможности появления во входном потоке символа перехода на новую строку и других символов-разделителей, если обрабатываете по одному символу за раз.
Отметим, что последовательное перечисление несколько меток (например, case 'D' : case 'd' : на рис. 2.22) просто означает, что для каждого из этих случаев должны выполняться одни и те же действия.
Когда используете структуру switch, помните, что она может применяться только для проверки на совпадение с константным целым выражением, т.е. с любой комбинацией символьных и целых констант, которая имеет целое постоянное значение. Символьная константа представляется как соответствующий символ, заключенный в одиночные кавычки, например, 'A'. Целая константа — просто целое число.
Когда мы дойдем до части книги, посвященной объектно-ориентированному программированию, мы представим более элегантный способ реализации логики switch. Мы будем использовать технологию, называемую полиморфизмом, для создания программ, которые часто более ясные, более удобные для сопровождения и легче расширяются, чем программы, использующие логику switch.
Машинно-независимый язык типа С++ должен иметь гибкость относительно размеров типов данных. Различные приложения могут требовать целые данные различного размера. С++ имеет несколько типов для представления целых чисел. Диапазон целых значений для каждого типа данных зависит от типа конкретного компьютера. В дополнение к типам int и char С++ имеет типы short (сокращение от short int) и long (сокращение от
Управляющие структуры 133
long int). Минимальный диапазон значений для целых типа short равен 32767. Для огромного большинства вычислений с целыми числами достаточно типа long. Минимальный диапазон значений для целых типа long равен 2147483647. В большинстве компьютеров int эквивалентен или short, или long. Диапазон значений для целых int по крайней мере такой же, как для short, и не больше, чем для long. Данные типа char могут использоваться для представления любых символов из множества символов компьютера. Тип char можно также использовать для представления небольших целых.
Замечание по мобильности 2.3
Поскольку размер типа int варьируется от системы к системе, используйте тип long, если вы предусматриваете обработку целых, значения которых могут лежать вне диапазона 32767, и вы, вероятнее всего, сможете выполнять свою программу на нескольких различных компьютерных системах.
Совет по повышению эффективности 2.4
В ситуациях, где важна эффективность, где жесткие требования к памяти или критична скорость исполнения программы, может оказаться желательным использовать целые минимальных размеров.
- 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. Встраиваемые функции