Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курс_ред1 С#.doc
Скачиваний:
2
Добавлен:
01.03.2025
Размер:
1.8 Mб
Скачать

Тернарный условный оператор

В языке С# существует упрощенный вариант условного оператора, называемый оператором проверки или тернарным оператором.

В общем виде этот оператор выглядит так:

(<Выражение>) ? <Оператор 1> : <Оператор 2>

Если значение выражения <Выражение> истинно, вычисляется оператор <Оператор 1>, а если ложно — оператор <Оператор 2>.

Вот простой пример использования оператора проверки:

int i = (х > 100): 8 ? 9;

Здесь если значение переменной х больше 100, переменной i присваивается значение 8, а если меньше, то 9.

На блок-схеме и в псевдокоде тернарный оператор выглядит как обычное условие. Для вышеприведенного примера это выглядит так:

Если x > 100 То

i = 8

Иначе

i = 9

Все-Если

Множественный выбор

Очень часто перед программистом встает задача последовательной проверки нескольких условий, причем при выполнении каждого условия нужно предпринимать какие-то действия. Кроме того, отдельно нужно обрабатывать ситуацию, когда ни одно из проверяемых условий не выполнено. На псевдокоде такая проверка выглядит следующим образом:

Если <Условие 1> То

Блок Операторов 1

Иначе Если <Условие 2> То

Блок Операторов 2

Иначе Если <Условие 3> То

Блок Операторов 3

. . .

Иначе

Блок Операторов N

Все-Если

Для решения этой задачи можно использовать вложенные условные операторы if следующего вида:

if(<Выражение 1>)

<Оператор 1>

else if(<Выражение 2>)

<Оператор 2>

else if(<Выражение З>)

<Оператор 3>

...

else

<Оператор N>

Здесь вначале вычисляется <Выражение 1>. Если оно истинно (т. е. равно true), то выполняется <Оператор 1>. В противном случае вычисляется <Выражение 2>. Если оно истинно, выполняется <Оператор 2>, и т. д. В том случае, когда все проверяемые выражения ложны, выполняется <Оператор N>.

Использование вложенных операторов if для множественного выбора демонстрируется в программе, исходный текст которой приведен ниже:

using System;

namespace SelectNumbers

{

class SelectNumbersApp

{

static void Main(string[] args)

{

System.Console.Write("Введите произвольное число: ");

string inputString;

inputString = System.Console.ReadLine();

int inputNumber;

inputNumber = System.Convert.ToInt32(inputString);

System.Console.WriteLine("Вы ввели число {0}", inputNumber);

if(inputNumber > 0 && inputNumber <= 100)

System.Console.Write("Число больше 0, но <= 100");

else if (inputNumber > 100)

System.Console.Write("Это число больше 100");

else if (inputNumber == 0)

System.Console.Write("Это число равно нулю");

else

System.Console.Write("Это число меньше нуля");

System.Console.ReadLine();

}

}

}

В приведенной программе для преобразования введенной строки в 32-разрядное целое число со знаком используется метод ToInt32:

int inputNumber;

inputNumber = System.Convert.Tolnt32(inputString);

В начале работы вложенного оператора if вычисляется выражение:

inputNumber > 0 && inputNumber <= 100

Как видите, в этом выражении есть два оператора отношения: > и <=, а также один логический оператор И, обозначенный символами &&. Выражение проверяет, лежит ли введенное значение в интервале [0, 100].

При обработке оператора && в соответствии с приоритетами операторов вначале вычисляется значение выражения inputNumber > 0. Если оно ложно, то все выражение будет ложно. В этом случае выражение inputNumber <= 100 не вычисляется, так как в этом нет никакого смысла.

Если же выражение, расположенное слева от оператора &&, истинно, то вычисляется выражение inputNumber <= 100. В том случае, когда оба эти выражения истинны, наша программа выводит на консоль сообщение о том, что введенное число больше 0, но меньше или равно 100.

В том случае, когда введенное число не принадлежит интервалу ]0, 100], срабатывает первый блок else. Внутри ее находится еще один, вложенный оператор if, проверяющий условие inputNumber > 100. Далее аналогичным образом с помощью оператора = = мы сравниваем введенное число с нулем.

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