# 000130. Альтернативные условия

Альтернативные условия||wmysterio|wmysterio|<wmysterio@yandex.ru>|||Вернёмся к условиям. Существует ещё один интересный вариант написания условий. Его называют альтернативным. Главным отличием от обычного условия в том, что альтернативные всегда возвращают значения. Работают они как функции ![smile](http://s49.ucoz.net/sm/15/smile.gif) Синтаксис альтернативных условий таков:

| <p>ВозвращающийПраметр = ( Условие ) ? КодВыполняемыйКогдаУсловиеИстинно : КодВыполняемыйКогдаУсловиеЛожно ;<br></p> |
| -------------------------------------------------------------------------------------------------------------------- |

Возьмём функцию с предыдущего урока и назовём её **ValueOperation**. Добавим в параметры ещё символьный тип - char. Теперь функция принимает два числа и символ. Для чего нужен символ спросите вы? Что бы в зависимости от указанного символа эти числа выполняли разные арифметические операции. Сама функция теперь будет выглядеть так:

| <p>public static void ValueOperation(float x, float y, char c) {<br>     float d;<br><br>     Console.WriteLine("Результат: Дробное {0}", d );<br>}<br></p> |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------- |

Мы заведём переменную, которая будет принимать результат альтернативного условия. Теперь напишем код условия:

| <p>d = ( c == '+' ) ? x + y : d = ( c == '-' ) ? x - y :d = ( c == '<em>' ) ? x \* y : d = ( c == '/' ) ? x / y : -1;</em><br></p> |
| ---------------------------------------------------------------------------------------------------------------------------------- |

Согласно условию, если в параметр c равный +, то результатом условия будет сумма двух чисел. Если символ равен -, то будет вычитание и.т.п. если символ не соответствует ни одному условию, то результатом будет -1. Я перенёс строки условия, что бы его было легче прочитать и теперь наша программа имеет следующий вид:

| <p>using System;<br><br>namespace Consol {<br>    class Program {<br>        static void Main() {<br>            ValueOperation( 10, 15, '+' );<br>            ValueOperation( 30, 15.5F, '-' );<br>            ValueOperation( -100.0F, 50.0F, '' );<br>            ValueOperation( 20.0F, 2.0F, '/' );<br>            Console.ReadKey();<br>        }<br><br>        public static void ValueOperation(float x, float y, char c) {<br>            float d;<br>            d = ( c == '+' ) ? x + y :<br>            d = ( c == '-' ) ? x - y :<br>            d = ( c == '\*' ) ? x \* y :<br>            d = ( c == '/' ) ? x / y : -1;<br>            Console.WriteLine("Результат: {0}\t {1}", c, d);<br>        }<br>    }<br>}<br></p> |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

Результат выполнения программы:\
![](https://github.com/wmysterio/scm-scripting-lessons/blob/main/_pu/1/42607467.png)\
В прочем альтернативные условия я вижу в крайне редко, так как существуют такие вещи как switch, перегрузка операторов и прочие интересные вещи. Но об этом способе вы должны знать. Когда-нибудь пригодится ![smile](http://s49.ucoz.net/sm/15/smile.gif)|665|1|0|42607467`png`196\`84||alternativnye\_uslovija|1392798701
