Чтение онлайн

на главную - закладки

Жанры

Язык Си - руководство для начинающих

Д. МАРТИН

Шрифт:

Вот это да! У вас 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. Программа, печатающая названия животных.

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

Поделиться:
Популярные книги

Лолита

Набоков Владимир Владимирович
Проза:
классическая проза
современная проза
8.05
рейтинг книги
Лолита

Я подарю тебе ребёнка

Малиновская Маша
Любовные романы:
современные любовные романы
6.25
рейтинг книги
Я подарю тебе ребёнка

Убивать чтобы жить 3

Бор Жорж
3. УЧЖ
Фантастика:
героическая фантастика
боевая фантастика
рпг
5.00
рейтинг книги
Убивать чтобы жить 3

Небо для Беса

Рам Янка
3. Самбисты
Любовные романы:
современные любовные романы
5.25
рейтинг книги
Небо для Беса

Сердце Дракона. Том 11

Клеванский Кирилл Сергеевич
11. Сердце дракона
Фантастика:
фэнтези
героическая фантастика
боевая фантастика
6.50
рейтинг книги
Сердце Дракона. Том 11

Печать мастера

Лисина Александра
6. Гибрид
Фантастика:
попаданцы
технофэнтези
аниме
фэнтези
6.00
рейтинг книги
Печать мастера

Идеальный мир для Лекаря 19

Сапфир Олег
19. Лекарь
Фантастика:
юмористическое фэнтези
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 19

Калибр Личности 1

Голд Джон
1. Калибр Личности
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Калибр Личности 1

Идеальный мир для Лекаря 2

Сапфир Олег
2. Лекарь
Фантастика:
юмористическая фантастика
попаданцы
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 2

Волчья воля, или Выбор наследника короны

Шёпот Светлана
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Волчья воля, или Выбор наследника короны

Вечный. Книга I

Рокотов Алексей
1. Вечный
Фантастика:
боевая фантастика
попаданцы
рпг
5.00
рейтинг книги
Вечный. Книга I

Спасение 6-го

Уолш Хлоя
3. Парни из школы Томмен
Любовные романы:
современные любовные романы
эро литература
5.00
рейтинг книги
Спасение 6-го

Ротмистр Гордеев

Дашко Дмитрий Николаевич
1. Ротмистр Гордеев
Фантастика:
фэнтези
попаданцы
альтернативная история
5.00
рейтинг книги
Ротмистр Гордеев

Нечто чудесное

Макнот Джудит
2. Романтическая серия
Любовные романы:
исторические любовные романы
9.43
рейтинг книги
Нечто чудесное