Вообще говоря, использование условных выражений не являетcя обязательным, поскольку тех же результатов можно достичь при помощи операторов if-else
. Однако условные выражения более компактны, и их применение обычно приводит к получению более компактного машинного кода. Резюме: операция условия
I. Операция условия: ?:
В этой операции имеются три операнда, каждый из которых является выражением, причем вся запись выглядит следующим образом:
выражение1
? выражение2 : выражение3. Значение всего выражения равно величине выражения2
, если выражение1 истинно, и величине выражения3 в противном случае. II. ПРИМЕРЫ:
Выражение: (5 > 3) ? 1 : 2 имеет значение 1
Выражение: (3 > 5) ? 1 : 2 имеет значение 2
Выражение: (а > b) ? a : b имеет значение большей из величин а
и b. МНОЖЕСТВЕННЫЙ ВЫБОР: ОПЕРАТОРЫ switch И break
Операция условия и конструкция if-else
облегчают написание программ, в которых осуществляется выбор между двумя вариантами. Однако иногда в программе необходимо произвести выбор одного из нескольких вариантов. Мы можем сделать это используя конструкцию if-else if - ... - else, но во многих случаях оказывается более удобным использовать оператор switch. Ниже приводится пример, иллюстрирующий его работу. Программа читает с терминала букву, затем выводит на печать название животного начинеющееся с этой буквы. /*животные*/
main( )
{
char ch;
printf("Введите букву алфавита, а я укажу");
printf("название животного, \n начинающееся с нее.\n");
printf("Введите, пожалуйста, букву; для завершения работы введите #. \n");
while((ch = getchar())!= '#')
{
if(ch != '\n') /* пропуск символа "новая строка" */
{ if(ch >= 'a' && ch <= 'я') /*разрешены только строчные буквы */
switch (ch)
{ case 'a' : printf(" аргали, дикий горный азиатский баран\n");
break;
case 'б' : printf(" бабирусса, дикая малайская свинья \n");
break;
case 'в' : printf(" выхухоль, водоплавающий крот \n");
break;
case 'г' : printf(" гиббон, длиннорукая обезьяна \n");
break;
case 'д' : printf(" дамандревесный\n");
break;
default: printf(" Это трудная задача!\n");
break;
} else
printf(" Я распознаю только строчные буквы. \n");
printf(" Введите, пожалуйста, следующую букву или #.\n");
} /* конец if, пропускающего символ "новая строка" */
} /* конец цикла while */
}
РИС. 7.7. Программа, печатающая названия животных.
Нам стало скучно продолжать, и мы остановились на букве д
. Давайте теперь рассмотрим один пример выполнения программы перед тем, как обсудить использованные в ней новые средства языка. Введите букву алфавита, а я укажу название животного, начинающееся с нее.
Введите, пожалуйста, букву; для завершения работы введите #.
а [возврат]
аргали, дикий горный азиатский баран Введите, пожалуйста, следующую букву или #. г
[возврат]
гиббон, длиннорукая обезьяна Введите, пожалуйста, следующую букву или #. р
[возврат]
Это трудная задача!
Введите, пожалуйста, следующую букву или #. Т
[возврат]
Я распознаю только строчные буквы. Введите, пожалуйста, следующую букву или #. #
[возврат]