- •6 Глава 1
- •12 Глава 1
- •14 Глава 1
- •16 Глава 1
- •18 Глава 1
- •20 Глава 1
- •22 Глава 1
- •24 Глава 1
- •26 Глава 1
- •31 Глава 1
- •34 Глава 2
- •36 Глава 2
- •Puc. 2.4. Дополнительные опции консольного приложения Win32
- •38 Глава 2
- •40 Глава 2
- •42 Глава 2
- •44 Глава 2
- •48 Глава 2
- •50 Глава 2
- •52 Глава 2
- •54 Глава 2
- •56 Глава 2
- •58 Глава 2
- •60 Глава 2
- •62 Глава 2
- •64 Глава 2
- •66 Глава 2
- •68 Глава 2
- •70 Глава 2
- •74 Глава 2
- •76 Глава 2
- •79 Глава 2
- •82 Глава 2
- •84 Глава 2
- •86 Глава 2
- •88 Глава 2
- •92 Глава 2
- •94 Глава 2
- •96 Глава 2
- •98 Глава 2
- •103 Глава 2
- •105 Глава 2
- •107 Глава 2
- •110 Глава 2
- •115 Глава 3
- •119 Глава 3
- •121 Глава 3
- •123 Глава 3
- •125 Глава 3
- •129 Глава 3
- •131 Глава 3
- •133 Глава 3
- •139 Глава 3
- •141 Глава 3
- •143 Глава 3
- •145 Глава 3
- •148 Глава 3
- •150 Глава 3
- •155 Глава 3
- •165 Глава 4
- •168 Глава 4
- •170 Глава 4
- •173 Глава 4
- •175 Глава 4
- •178 Глава 4
- •184 Глава 4
- •186 Глава 4
- •188 Глава 4
- •190 Глава 4
- •192 Глава 4
- •194 Глава 4
- •198 Глава 4
- •201 Глава 5
- •203 Глава 5
- •205 Глава 5
- •207 Глава 5
- •213 Глава 5
- •217 Глава 5
- •219 Глава 5
- •221 Глава 5
- •223 Глава 5
- •225 Глава 5
- •227 Глава 5
- •232 Глава 5
- •234 Глава 5
- •236 Глава 5
125 Глава 3
Вы можете комбинировать условные выражения и логические операции так, как вам будет удобно. Например, вы можете сконструировать тест, определяющий, отно- сится ли символ к буквам, применив единственный оператор if. Давайте рассмотрим рабочий пример.
Описание полученных результатов
Пример начинается так же, как ЕхЗ_01. срр — с чтения символа, введенного поль- зователем в ответ на приглашение. Что здесь интересно, так это условие оператора if — оно состоит из двух логических выражений, скомбинированных операцией | | (ИЛИ), так что если любое из них равно true, то все условие возвращает true, и на экран выдается сообщение:
Если же оба выражения возвращают false, то выполняется оператор else, кото- рый выдает сообщение:
Каждое из логических выражений, объединенных | |, само состоит из комбина- ций пары выражений, объединенных операцией && (И), поэтому каждое выражение, участвующее в этих парах, должно возвращать true, чтобы данная пара вернула true. Первое логическое выражение возвращает true, если введена буква верхнего реги- стра, а второе — если это буква нижнего регистра.
Условная операция
Условную операцию иногда называют тернарной операцией, потому что она ра- ботает с тремя операндами. Лучше всего объяснить ее на примере. Предположим,
Решения
и
циклы
что имеется две переменных — а и b — и вы хотите присвоить максимальное из этих двух значений третьей переменной с. Это можно сделать с помощью следующего опе- ратора:
Первый операнд условной операции должен быть выражением, которое возвра- щает значение типа bool — true или false, как в случае с а > Ь. Если это выражение возвращает true, то в качестве результирующего значения возвращается значение второго операнда — а. Если же первый аргумент равен false, то возвращается зна- чение третьего операнда — то есть Ь. Таким образом, результатом условного выраже- ния а > b ? а : b будет а, если а больше Ь, и b — в противном случае. Это значение записывается в переменную с операцией присваивания. Такое применение условной операции в операторе присваивания эквивалентно следующей конструкции if:
В общем виде условная операция может быть записана так:
Если условие оценивается как true, результатом будет значение выражение1, если
же оно равно false, то результатом будет значение выражение2.
Вывод
этой программы:
а 3
Описание полученных результатов
Сначала вы инициализируете переменную nCakes значением 1; затем идет выра- жение, выводящее на экран сообщение о количестве пирожных. Часть, использую- щая условную операцию, просто проверяет значение переменной, чтобы определить, сколько есть пирожных — одно или больше:
Выражение оценивается как "ых. ", если nCakes больше 1, или "ое. " — в против- ном случае. Это позволяет использовать один оператор вывода для любого количе- ства пирожных, получая грамматически корректное сообщение. Это доказывает по- вторный вывод сообщения после увеличения значения переменной nCakes. ' Существует много аналогичных ситуаций, в которых вы можете применить этот механизм; например, выбирая между "является" и "являются".
Оператор switch
Оператор switch дает возможность выбирать из множества вариантов, основыва- ясь на наборе фиксированных значений заданного выражения. Он действует подобно вращающемуся переключателю, который можно установить в одно из фиксирован- ного числа положений. Некоторые стиральные машины снабжены подобным пере- ключателем, которым выбирается режим стирки. Есть заданное число возможных позиций, в которые его можно установить — хлопок, шерсть, синтетическое волокно и тому подобное, и вы можете выбрать любой из них, установив переключатель в со- ответствующее положение.
В операторе switch выбор определяется значением указанного выражения. Вы устанавливаете возможные позиции switch одним или более case-значений, одно из которых выбирается, если значение выражения совпадает с ним. Каждому возможно- му значению выражения оператора switch соответствует одно case-значение, при- чем эти case-значения должны отличаться друг от друга.
Если значение выражения switch не соответствует ни одному из case-значений, то switch автоматически выбирает ветвь default. При желании вы можете специ- фицировать код ветви default, как это показано ниже. Если этого не сделать, то ког- да выражение switch не соответствует ни одному из case-значений, по умолчанию не делается ничего, а управление просто передается оператору, следующему за завер- шающей фигурной скобкой switch.
Увидеть на практике работу оператора switch можно, запустив приведенный ниже пример.
Решения
и циклы
Описание полученных результатов
После выдачи в выходной поток списка возможных вариантов выбора и прочте- ния введенного пользователем значения в переменную choice оператор switch ис- полняется с условием, специфицированным в скобках просто как (choice), которое следует за ключевым словом switch. Все возможные варианты switch заключены в фигурные скобки, и каждый снабжен меткой case. Эта метка состоит из ключевого слова case, за которым идет значение choice, соответствующее данному выбору, и завершается двоеточием.
Как видите, выполняемые операторы для конкретного case записываются между двоеточием данной метки case и завершаются оператором break. Слово break пере- дает управление оператору, следующему за закрывающей фигурной скобкой switch, break — необязательная часть конструкции, но если вы ее пропустите, то выполне- ние продолжится с оператора, идущего за следующим case, а это обычно не совсем то, что вам нужно. Можете попробовать убрать несколько break в последнем приме- ре и посмотреть, что получится.
Если значение choice не соответствует ни одному значению case, то выполняют- ся операторы, которым предшествует метка default. Однако эта метка не обязатель- на. В случае ее отсутствия, если значение проверочного выражения не соответствует ни одному значению case, управление передается за пределы switch, и программа выполняет оператор, следующий за закрывающей скобкой switch.
Каждое из выражений, которые вы специфицируете для идентификации вариан- тов case, должно быть константой, чтобы его значение могло быть определено во время компиляции, и должно бать уникальным целым числом. Причина в том, что