Foreversoft.ru

IT Справочник
1 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Тернарный оператор си шарп

C. Урок 11. Тернарный оператор

Кроме условных операторов if, else и else if также существует ещё и тернарный оператор.

Данный оператор порой бывает удобен в случаях, если при выполнении какого-то условия или его невыполнении нам нужно присвоить строго определённое значение какой-либо переменной. Хотя такая ситуация и не столь частая, но в случае её возникновения тернарный оператор намного удобнее и читабельнее нежели конструкция IF.

Тернарный оператор (от латинского слова ternarius — тройной)- это оператор, состоящий из двух символов ? и :, который формирует условную тернарную операцию, возвращающую свой второй или третий операнд в зависимости от выполнения или невыполнения определённого условия, или другими словами от результата логического выражения.

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

if (x > y)

z = x;

else

z = y;

Вроде бы незатейливая у нас конструкция. В случае если x>y, то z будет равен x, а если не так, то z будет равен y.

Тем самым мы определяем максимальное значение из двух возможных чисел и присваиваем его переменной z.

Теперь посмотрим вот такой вариант записи исходного кода, имеющий тот же результат

z = (x > y) ? x : y;

Не правда ли, запись намного упростилась.

После всего этого попробуем всё это красиво нарисовать

Теперь, глядя на диаграмму, попытаюсь ещё раз объяснить поподробнее. В случае использования условной тернарной операции, когда заданное условие выполнятся, то переменной присваивается значение выражения 1, а если не выполняется, то значение выражения 2.

Теперь, надеюсь, всё стало понятно. Если нет, то отработаем понимание в практической части.

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

Например, напишем вот такой код

avg = (x > y) ? (x > z) ? (z > y) ? z : y : x : (y > z) ? (z > x) ? z : x : y;

Данный код вычисляет среднее значение (не средне-арифметическое, а именно среднее по значению из возможных) из трёх чисел — x, y и z.

Согласитесь, что такой код даже не хочется читать, мало того, он испугает читателя. Хотя код верный и всё правильно работает.

Так или иначе, такая конструкция имеет право на существование и подчёркивает возможность вложенности тернарных операций.

Только если мы напишем её вот так

if (x > y)

if (x > z)

if (z > y)

avg = z;

else

avg = y;

else

avg = x;

else

if (y > z)

if (z > x)

avg = z;

else

avg = x;

else

avg = y;

То она станет гораздо читабельнее, хотя и будет громоздкой.

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

Давайте к ней и приступим.

Проект сделаем из проекта MYPROG10 прошлого занятия и имя ему было присвоено MYPROG11.

Откроем файл main.c и в функции main(), как обычно, удалим весь код тела кроме возврата нуля, останется от него вот это

int main()

return 0 ; //Return an integer from a function

Добавим в тело функции main() следующий код

Условные операторы

Условные операторы – это конструкции, которые используют условные выражения для управления ходом выполнения программы.

Условный оператор if

Условный оператор if – используется в случаях, когда выполнение инструкции, или набора инструкций, зависит от некоторого логического выражения.

В языке C#, есть две формы условного оператора if: с неполным и полным ветвлением.

if с неполным ветвлением

Оператор с неполным ветвлением имеет следующий синтаксис:

Пример на языке C#:

Читать еще:  Операции си шарп

Для выполнения нескольких инструкция, необходимо взять их в операторные скобки:

if с полным ветвлением

В операторе if с полным ветвлением, дополнительно используется ключевое слово else:

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

Пример использования оператора if

Рассмотрим задачу определения какой четверти координатной плоскости принадлежит точка с координатами (x, y). Будем считать, что точка не может лежать на осях.

Код программ для определения в какой четверти лежит заданная точка:

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

Тернарный оператор – единственный оператор языка С#, который работает сразу с тремя операндами, в зависимости от результата условия, которое задано в первом операнде, возвращает значение второго(если первый — true), или третьего(если первый — false) операнда. При этом второй и третий должны быть одинакового типа данных.

Тернарный оператор в качестве операндов может принимать другие тернарные операторы.

Если переписать код программы из предыдущего примера, с использованием тернарного оператора, то получим:

Как можно видеть, вся логика работы программы уместилась в одну строку кода.

Условный оператор switch

Конструкция switch позволяет сравнивать значение выражения сразу с несколькими вариантами.

Рассмотрим код, который конвертирует оценку пятибалльной шкалы из числа в текстовое представление:

С использованием switch код будет выглядеть так:

Выражение соответствия в скобках после switch, сравнивается с вариантами(метками), которые находяться за ключевым словом case. Если они эквивалентны, то выполняются инструкции до оператора break, который указывает на то, что нужно выйти из блока switch. В случае когда сравниваемое значение не соответствует ни одному из вариантов, выполняется блок default.

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

Блок default не обязательный. Если он не указан, а соответствия нет, то происходит выход из switch.

Использование break после операторов return, throw и goto case не обязательное.

Начиная с C# версии 7.0, выражение соответствия может быть любым выражением отличным от null. В предыдущих версиях языка допускались только: целочисленные, символьные, строковые, логические типы данных и перечисления.

лабы по информатике, егэ

лабораторные работы и задачи по программированию и информатике, егэ по информатике

Урок 2. Условия и множественный выбор

Урок # 2. C# Теория

Простые типы данных си шарп и переводы

Переводы

1. Неявный тип перевода;
2. Явный тип перевода ;
3. Между несовместимыми типами.

int myInt = 2147483647; long myLong= myInt;

double myDouble = 1234.6; int myInt = (int)myDouble;

double myDouble = 1234.6; int myInt = Convert.ToInt32(myDouble);

C# условные операторы

Else

Else if

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

Задания и лабораторные си шарп

Выполнить: Запросить целое число. Проверить, является ли оно четным. Вывести результат.

[Название проекта: Lesson_2Lab1 , название файла L2Lab1.cs ]

Пример выполнения:

  • Запустите Visual Studio.
  • Создайте консольное приложение, назовите проект Lesson_2Lab1 .
  • В окне Solution Explorer (Обозреватель решений) найдите файл Program.cs и переименуйте его в L2Lab1.cs .
  • Установите курсор непосредственно после открытой скобки функции Main , щелкните enter, чтобы перейти на новую строку.
  • Попросите пользователя ввести число, используйте метод ReadLine() :

static void Main(string[] args)

. int numb = Int32.Parse(Console.ReadLine()); .

  • Необходимо проверить остаток при делении числа на 2.
  • Оператор ( % ) используется для проверки остатка при целочисленном делении числа.
  • Если остаток равен , это означает, что число четное.

    Добавьте блок else чтобы вывести результат при нечетном значении переменной numb . В таком случае выведите фразу «Введенное число нечетное»:

    Выполнить: Попросите пользователя ввести число. Проверьте, является ли введенное число положительным или оно является отрицательным. Выведите результат.

    Читать еще:  Паскаль обучение задачи

    Указание: Можно использовать следующие способы перевода введенного значения в числовое:

    [Название проекта: Lesson_2Task1 , название файла L2Task1.cs ]

    Пример выполнения:

    Выполнить: Дано двухзначное число. Вывести отдельно его десятичный разряд и разряд единиц (операторы % , / ).
    состоит из цифр 5 и 6 , но не -5 и -6 . Чтобы вывести модуль числа:

    Указание: Не забудьте выполнить перевод введенного значения в тип integer ( Int32.Parse(. ) ).

    [Название проекта: Lesson_2Task2 , название файла L2Task2.cs ]

    Пример выполнения:

    Выполнить: Дано трехзначное число. Измените его десятичный разряд в 0 .

    Указание 1: Сначала необходимо получить отдельно все три разряда числа. Затем присвоить разряду десяток . После чего получить число из разрядов. Пример получения числа:

    Указание 2: Не забудьте выполнить перевод введенного значения в числовой тип ( Int32.Parse(. ) ).

    [Название проекта: Lesson_2Task3 , название файла L2Task3.cs ]

    Пример выполнения:

    Выполнить: Даны три целых числа. Выведите true если, по крайней мере, два из них не равны, и выведите false в обратном случае.

    Указание: Логический оператор не равно — это != , логическое И — это оператор && :

    [Название проекта: Lesson_2task4 , название файла L2Task4.cs ]
    Пример выполнения:

    Выполнить: Вводится число — размер порции кофе (1=small 2=medium 3=large). В ответ вывести цену (1 — 25 руб, 2 — 50 руб, 3 — 75 руб). Использовать оператор switch .

    [Название проекта: Lesson_2Lab2 , название файла L2Lab2.cs ]

    Пример выполнения:

    • Open Visual Studio.
    • Создайте консольное приложение с именем Lesson_2Lab2 : File (Файл) ->New (Новый) ->Project/Solution (Проект) ->Консольное приложение.
    • В окне Solution Explorer (Обозреватель решений)найдите файл Program.cs и переименуйте его в L2Lab2.cs .
    • Установите курсор сразу после открытой скобки функции Main и щелкните enter, чтобы перейти на новую строку.
    • Используйте метод WriteLine , чтобы запросить размер порции кофе у пользователя:

    . Console.WriteLine(«Coffee sizes: 1=small 2=medium 3=large»); Console.Write(«Please enter your selection: «); .

    . string str = Console.ReadLine(); .

    Выполнить: Попросите пользователя ввести номер дня недели (1, 2, 3, …, 7). Проверьте введенный номер и выведите в ответ название дня недели (Понедельник — 1, Вторник — 2, и т.д.).

    [Название проекта: Lesson_2Task5 , название файла L2Task5.cs ]

    Урок C# №7: «Принимаем решения. Часть 2 – оператор switch и тернарный оператор»

    Конструкция if.. else в основном всегда удовлетворяет потребности программиста. Однако иногда встречаются моменты, когда нужно выбрать одно условие из нескольких и тогда данная конструкция в C# окажется громоздкой.

    Например, представьте себе, что вы пишите программку, в которой пользователю нужно выбрать из нескольких вариантов нужный размер окна и т.д. Допустим, нам нужно выбрать цвет, причем нам представлена стандартная трехцветная гамма RGB (красный, зеленый, синий – те цвета, которые воспринимает человеческий глаз и из которого уже строит отдельную картинку). Чтобы программа была наглядной, мы будем менять задний фон консоли свойством BackgroundColor ,который принимает в качестве значения вариант из перечисления ConsoleColor. Что такое перечисления, я расскажу подробно в следующей лекции, а сейчас вам важно знать, что это константный набор значений, доступ к элементам которого осуществляется через точку. Конечно, в данном примере наглядней было бы использовать WindowsForms, однако для обучения лучше все же использовать консоль.

    Итак, зная операторы if else, мы могли написать так:

    Давайте поясню немного по коду. Я объявил переменную vibor строкой и считал в нее значение из консоли. Не забывайте, что все мы люди и кто-то может написать отсебячину с большой буквы или же добавить лишние пробелы. Я уменьшил эти риски, используя метод ToLower () для преобразования строки в нижний регистр (например, кто-то напишет зеЛеный, а строка в результате применения ToLower () получит значение «зеленый»), а для удаления всех лишних пробелов использовал метод Trim ().

    Читать еще:  Asus запуск в безопасном режиме

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

    Далее, все уже как и должно быть – мы сравниваем строку с вариантами цвета в операторе if и красим задний фон в этот цвет. Если пользователь намудрил и ввел не тот цвет или сделал ошибку (например, написал «зиленый»), то в операторе else мы сообщим ему об этом.

    Вроде бы, ничего страшного не произошло. Но что, если мы решим использовать цвета радуги, а? Будем писать семь if else if? Получится весьма громоздко и несколько медленно. К счастью, C# позволяет нам решить данную задачу более изящным путем – используя оператор switch.

    Давайте рассмотрим, как работает данный оператор. Его синтаксис прост:

    switch (селектор)

    case вариант_селектора1: выражение;

    break;

    case вариант_селектора2: выражение;

    break;

    //вариант по умолчанию, аналог else

    default:

    Выражение, которое должно выполниться по умолчанию;

    break;

    Занятный, синтаксис, не так ли? Однако на практике он выглядит гораздо удобнее, нежели в этом псевдокоде. Нашу задачу с выбором цвета теперь можно решить так:

    Видите, насколько удобно? Хотя этот синтаксис кажется громоздким, вы к нему очень быстро привыкните и будете часто его использовать в последствии. Кстати, кто не понял, как работает оператор switch, могу посоветовать запустить VC# в режиме отладки (клавиша F11), которую нужно нажимать на каждой операции. Пока отладку оставим в покое для специальной статьи. Вам главное сейчас для себя уяснить, как работает switch.

    Переменная vibor является как раз в нашем случае селектором. В зависимости от значения этой переменной, которое мы определяем в ветках case, компилятор решает, как ему поступить в дальнейшем. После case может быть как одно, так и несколько выражений. Обратите внимание на оператор break он прерываем выполнение этой ветки. Без него C# будет сильно материться. Хотя в других языках его можно и опустить – так сравнение побежит по всем веткам, пока не найдется break.

    Оператор default по принципу похож с else. Так же как и там, если условие не выполнится, ход выполнения программы перейдет в ветку default. Так же как и else, default в switch может и не быть. Имейте это в виду.

    Внимание! В C# после выражения в default нужно обязательно ставить break, иначе это будет ошибкой. Так что программисты, изучавшие С имейте это в виду.

    Хейлсберг внес в C# еще одно новшество, которое лишь относительно недавно было реализовано в java, а в C++ его до сих пор нет. Дело в том, что еще со времен C селектором могли выступать числовые, символьные типы данных, но не строки. Однако часто требовалось сравнивать именно строки. Поэтому в C# была внедрена эта особенность.

    Тернарный оператор

    C# в наследство от C досталась сокращенная форма if else, именуемая тернарным оператором. Синтаксис у него весьма экстравагантен:

    Условие ? Действие, если условие истина : Действие, если условие ложь (аналог else);

    Сравните это выражение с обычным if else и поймете всю разницу.

    На этом ознакомление с операторами выбора в C# закончено. Приготовьтесь к следующему уроку.

  • Ссылка на основную публикацию
    Adblock
    detector