|
Программирование >> Структурное программирование
В структуре switch на рис. 2.22 строки case \п: case break; позволяют программе пропускать символы новой строки и пробелы. Чтение по одному символу за раз создает некоторые проблемы. Чтобы программа могла прочитать символы, они должны быть посланы в компьютер нажатием клавиши возврат каретки (ввод) на клавиатуре. Это вызывает во входном потоке символ новой строки после символа, который мы хотим ввести. Часто этот символ новой строки должен быть специально обработан, чтобы работа программы была корректной. Включая указанный случай в нашу структуру switch, мы предотвращаем сообщения об ошибках, которые печатались бы каждый раз по метке default при вводе новой строки или пробела. Типичная ошибка программирования 2.19 Отсутствие обработки символа новой строки при вводе, если символы читаются по одному, может привести к логической ошибке. Хороший стиль программирования 2.26 Не забывайте обеспечить обработку возможности появления во входном потоке символа перехода на новую строку и других символов-разделителей, если обрабатываете по одному символу за раз. Отметим, что последовательное перечисление несколько меток (например, case D : case d : на рис. 2.22) просто означает, что для каждого из этих случаев должны выполняться одни и те же действия. Когда используете структуру switch, помните, что она может применяться только для проверки на совпадение с константным целым выражением, т.е. с любой комбинацией символьных и целых констант, которая имеет целое постоянное значение. Символьная константа представляется как соответствующий символ, заключенный в одиночные кавычки, например, А. Целая константа - просто целое число. Когда мы дойдем до части книги, посвященной объектно-ориентированному программированию, мы представим более элегантный способ реализации логики switch. Мы будем использовать технологию, называемую полиморфизмом, для создания программ, которые часто более ясные, более удобные для сопровождения и легче расширяются, чем программы, использующие логику switch. Машинно-независимый язык типа C-t-t- должен иметь гибкость относительно размеров типов данных. Различные приложения могут требовать целые данные различного размера. С-Ы- имеет несколько типов для представления целых чисел. Диапазон целых значений для каждого типа данных зависит от типа конкретного компьютера. В дополнение к типам int и char C-t-t- имеет типы short (сокращение от short int) и long (сокращение от Хороший стиль программирования 2.25 Если в структуре switch предложение default помещено последним в списке, то оператор break в нем не требуется. Но некоторые программисты включают break и тут для четкоаи и для симметрии с другими случаями. 2.17. Структура повторения do/while Структура повторения do/while похожа на структуру while. В структуре while условие продолжения циклов проверяется в начале цикла, до того, как выполняется тело цикла. В структуре do/while проверка условия продолжения циклов производится после того, как тело цикла выполнено, следовательно, тело цикла будет выполнено по крайней мере один раз. Когда do/while завершается, выполнение программы продолжается с оператора, следующего за предложением while. Отметим, что в структуре do/while нет необходимости использовать фигурные скобки, если тело состоит только из одного оператора. Но фигурные скобки обычно все же ставят, чтобы избежать путаницы между структурами while и do/while. Например, while (условие) обычно рассматривается как заголовок структуры while. Структура do/while без фигурных скобок и с единственным оператором в теле имеет вид оператор while (условие) ; что может привести к путанице. Последняя строка - while (условие); может ошибочно интерпретироваться как заголовок структуры while, содержащий пустой оператор. Таким образом, чтобы избежать путаницы, структура do/while даже с одним оператором часто записывается в виде do { оператор ] while {условие) ; long int). Минимальный диапазон значений для целых типа short равен 32767. Для огромного большинства вычислений с целыми числами достаточно типа long. Минимальный диапазон значений для целых типа long равен 2147483647. В большинстве компьютеров int эквивалентен или short, или long. Диапазон значений для целых int по крайней мере такой же, как для short, и не больше, чем для long. Данные типа char могут использоваться для представления любых символов из множества символов компьютера. Тип char можно также использовать для представления небольших целых. Замечание по мобильности 2.3 Поскольку размер типа int варьируется от системы к системе, используйте тип long, если вы предусматриваете обработку целых, значения которых могут лежать вне диапазона 32767, и вы, вероятнее всего, сможете выполнять свою программу на нескольких различных компьютерных системах. Совет по повышению эффективности 2.4 В ситуациях, где важна эффективность, где жесткие требования к памяти или критична скорость исполнения программы, может оказаться желательным использовать целые минимальных размеров. Типичная ошибка программирования 2.20 Если условие продолжения цикла в структурах while, for или do/while никогда не становится ложным, то возникает зацикливание. Чтобы предотвратить это, убедитесь, что нет точки с запятой сразу после заголовка структуры while. В цикле, управляемом счетчиком, убедитесь, что управляющая переменная увеличивается (или уменьшается) в теле цикла. В цикле, управляемом меткой, убедитесь, что значение метки в конце концов будет введено. Программа на рис. 2.24 использует структуру do/while, чтобы напечатать числа от 1 до 10. Обратите внимание, что к управляющей переменной counter в проверке окончания цикла применяется инкремент в префиксной форме. Отметьте также использование фигурных скобок, заключающих единственный оператор в теле do/while. Блок-схема структуры do/while приведена на рис. 2.25. Она наглядно показывает, что условие продолжения циклов не проверяется, пока тело цикла не выполнится хотя бы один раз. Снова отметим, что (не считая маленьких окружностей и линий связи) блок-схема содержит только символы прямоугольников и ромбов. Снова представьте себе, что программист имеет доступ к глубокому бункеру, содержащему пустые структуры do/while - столько, сколько может потребоваться программисту для складывания их пачками и вложения в другие управляющие структуры, чтобы структурированно отобразить управляющую логику алгоритма. И снова эти прямоугольники и ромбы заполняются необходимыми действиями и условиями выбора в соответствии с алгоритмом. Применение структуры повторения do/while #include <iostream.h> main() { int counter = 1; do { cout counter ; } while (-H-counter <= 10) ; return 0; 123456789 10 Рис. 2.24. Применение структуры do/while Хороший стиль программирования 2.27 Некоторые программисты всегда включают фигурные скобки в структуру do/while, даже если в них нет необходимости. Это помогает устранить двусмысленность, проистекающую из совпадения предложений структуры while и структуры do/while, содержащей один оператор.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |