Язык Си - [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-е изд.]

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


Рекомендуем почитать
Pro Git

Разработчику часто требуется много сторонних инструментов, чтобы создавать и поддерживать проект. Система Git — один из таких инструментов и используется для контроля промежуточных версий вашего приложения, позволяя вам исправлять ошибки, откатывать к старой версии, разрабатывать проект в команде и сливать его потом. В книге вы узнаете об основах работы с Git: установка, ключевые команды, gitHub и многое другое.В книге рассматриваются следующие темы:основы Git;ветвление в Git;Git на сервере;распределённый Git;GitHub;инструменты Git;настройка Git;Git и другие системы контроля версий.


Java 7

Рассмотрено все необходимое для разработки, компиляции, отладки и запуска приложений Java. Изложены практические приемы использования как традиционных, так и новейших конструкций объектно-ориентированного языка Java, графической библиотеки классов Swing, расширенной библиотеки Java 2D, работа со звуком, печать, способы русификации программ. Приведено полное описание нововведений Java SE 7: двоичная запись чисел, строковые варианты разветвлений, "ромбовидный оператор", NIO2, новые средства многопоточности и др.


MFC и OpenGL

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


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

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


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

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


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

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