absval = val < 0 ? -val : val;// absval =абсолютное значение val.
Эквивалентно:
if (val < 0)
absval = -val;
Else
absval = val;
Console.Write ("Максимальное значение = " + a > b ? a : b );
ü Логическая операция не является оператором, она может использоваться в выражении.
ü Вставить оператор if в выражение невозможно.
ü Логическая операция возвращает значение.
ü Не нужно промежуточное значение для хранения результата.
Оператор switch
Вторым оператором выбора является switch. Он позволяет делать выбор одной из множества альтернатив.
Выход по break:
switch (выражение)
{
case константа1:
последовательность_операторов
break;
case константа2:
последовательность_операторов
break;
case константа3:
последовательность_операторов
break;
…
default:
последовательность_операторов
break;
}
Элемент выражение оператора switch должен иметь целочисленный тип (byte, char, short, int, long)или тип string.
case-последовательности чаще всего оканчиваются инструкцией break, но возможны также операторы goto и return. Пример: goto case 2;
Пример 1.
uint i;
string str;
. . .
str = Console.ReadLine();// ввести с клавиатуры
i = uint.Parse(str);// преобразовать изstringвint
Switch (i)
{
case 0:
Console.WriteLine ("i равно нулю.");
break;
case 1:
Console.WriteLine ("i равно единице.");
break;
case 2:
Console.WriteLine ("i равно двум.");
break;
default:
Console.WriteLine ("i равно или больше трех.");
break;
}
Пример 2.
char ch;
. . .
Switch(ch)
{
case 'A':
Console.WriteLine("ch содержит A");
break;
case 'B':
Console.WriteLine("ch содержит В");
break;
}
Если необходимо выполнить один блок операторов для нескольких условий, то case с этими условиями записываются подряд. Так как у этих case-блоков нет тела, то и оператор break так же не требуется.
//Выдать по введенному дню недели или имени
//дня сообщение о характере дня
static void Main(string[] args)
{
string day, msg="";
day = Console.ReadLine();
Switch (day)
{
case "6":
case "7":
case "Суббота":
case "Воскресенье": msg = "Выходной"; break;
default: msg = "Рабочий"; break;
}
Console.WriteLine(msg);
}
Вложенные операторы switch
Задача 1. Разработать приложение, определяющее фальшивую монету. Пользователь вводит веса трех монет. Известно, что среди монет может быть одна фальшивая. Фальшивая монета всегда легче настоящей. Определить есть ли фальшивая монеты, и какая монета (номер) является фальшивой.
using System;
class Program
{
static void Main(string[] args)
{
int a, b, c; // Веса монет
// Вводим веса трех монет
Console.Write("Введите вес первой монеты : ");
a = int.Parse(Console.ReadLine());
Console.Write("Введите вес второй монеты : ");
b = int.Parse(Console.ReadLine());
Console.Write("Введите вес третьей монеты : ");
c = int.Parse(Console.ReadLine());
// Ищем первую фальшивую монету
if (a < b)
Console.WriteLine("Первая монета фальшивая");
else if (b < a)
Console.WriteLine("Вторая монета фальшивая");
else if (c < a)
Console.WriteLine("Третья монета фальшивая");
else
Console.WriteLine("Фальшивых монет нет");
Console.ReadLine(); // Задержим окно
}
}
Задача 2. Разработать приложение, определяющее фальшивую монету. Пользователь вводит веса трех монет. Известно, что среди монет может быть 0, 1 или 2 фальшивые. Фальшивая монета всегда легче настоящей. Известно также, что хотя бы одна монета является настоящей. Определить есть ли фальшивые монеты, и какие монеты являются фальшивыми.