Язык Си - [57]

Шрифт
Интервал

Приведем несколько примеров:

Указаное вами значение stop - 897654  превышает ширину экрана.

Вот это да! У вас START больше, чем STOP.

Попробуйте, пожалуйста, еще раз.

 ВЕЛИЧИНА START ДОЛЖНА БЫТЬ БОЛЬШЕ 0, ИНДЮК.

ОПЕРАЦИЯ УСЛОВИЯ: ?:

     В языке Си имеется короткий способ записи одного из видов оператора if-else. Он называется "условным выражением" и использует операцию условия - ?:. Эта операция состоит из двух частей и содержит три операнда. Ниже приводится пример оператора с помощью которого находится абсолютное значение числа:

x = (y < 0 )? -y : y;

Все, что находится между знаком = и символом "точка с занятой" представляет собой условное выражение. Смысл этого оператора заключается в следующем: если у меньше 0, то х = - у; в противном случае х = у. В терминах оператора if-else данный оператор мог выглядеть так:

if(у < 0)         x = (y < 0 )? -y : y;

    х = -у;

else

    х = у;

В общем виде условное выражение можно записать следующим образом:

выражение1 ? выражение2 : выражение3


Если выражение1 истинно (больше нуля), то значением всего условного выражения является величина выражения2;

если выражение1 ложно (равно 0), то значение всего условного выражения - величина выражения3.

     Условное выражение удобно использовать в тех случаях, когда имеется некоторая переменная, которой можно присвоить одно из двух возможных значений. Типичным примером является присваивание переменной значения большей из двух величин:

mах = (а > b)? а : b;

     Вообще говоря, использование условных выражений не являет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. Программа, печатающая названия животных.

     Нам стало скучно продолжать, и мы остановились на букве д. Давайте теперь рассмотрим один пример выполнения программы перед тем, как обсудить использованные в ней новые средства языка.

Введите букву алфавита, а я укажу название животного, начинающееся с нее.

 Введите, пожалуйста, букву; для завершения работы введите #.

 а [возврат]

аргали, дикий горный азиатский баран Введите, пожалуйста, следующую букву или #. г

 [возврат]

гиббон, длиннорукая обезьяна Введите, пожалуйста, следующую букву или #. р

 [возврат]

Это трудная задача!

Введите, пожалуйста, следующую букву или #. Т

 [возврат]

Я распознаю только строчные буквы. Введите, пожалуйста, следующую букву или #. #

[возврат]

     Этот пример служит иллюстрацией работы оператора swith. Вначале вычисляется выражение в скобках, расположенное за ключевым словом switch. В данном случае значением этого выражения будет символ, присвоенный переменной ch, который мы ввели перед этим. Затем программа просматривает список "меток" (в этом примере case 'a':, case'б': и т. д.) до тех пор, пока не находит "метку", которая соответствует данному значению. Далее программа переходит к выполнению оператора, расположенного в этой строке. Что произойдет в случае, когда такой подходящей строки не найдется? Если существует строка с "меткой"


Еще от автора Митчел Уэйт
Язык программирования C [Лекции и упражнения, 6-е изд.]

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Рекомендуем почитать
Изучаем Java EE 7

Java Enterprise Edition (Java EE) остается одной из ведущих технологий и платформ на основе Java. Данная книга представляет собой логичное пошаговое руководство, в котором подробно описаны многие спецификации и эталонные реализации Java EE 7. Работа с ними продемонстрирована на практических примерах. В этом фундаментальном издании также используется новейшая версия инструмента GlassFish, предназначенного для развертывания и администрирования примеров кода. Книга написана ведущим специалистом по обработке запросов на спецификацию Java EE, членом наблюдательного совета организации Java Community Process (JCP)


Геймдизайн. Рецепты успеха лучших компьютерных игр от Super Mario и Doom до Assassin’s Creed и дальше

Что такое ГЕЙМДИЗАЙН? Это не код, графика или звук. Это не создание персонажей или раскрашивание игрового поля. Геймдизайн – это симулятор мечты, набор правил, благодаря которым игра оживает. Как создать игру, которую полюбят, от которой не смогут оторваться? Знаменитый геймдизайнер Тайнан Сильвестр на примере кейсов из самых популярных игр рассказывает как объединить эмоции и впечатления, игровую механику и мотивацию игроков. Познакомитесь с принципами дизайна, которыми пользуются ведущие студии мира! Создайте игровую механику, вызывающую эмоции и обеспечивающую разнообразие.


Обработка событий в С++

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


MFC и OpenGL

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Симуляция частичной специализации

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Питон — модули, пакеты, классы, экземпляры

Python - объектно-ориентированный язык сверхвысокого уровня. Python, в отличии от Java, не требует исключительно объектной ориентированности, но классы в Python так просто изучить и так удобно использовать, что даже новые и неискушенные пользователи быстро переходят на ОО-подход.