Оператор выбора switch
Содержание
- 1. Какое применение в программе имеет оператор выбора switch?
- 2. Какой общий вид имеет оператор выбора switch?
- 3. Какое назначение блока default в операторе switch?
- 4. Пример использования оператора switch без использования блока default
- 5. Пример использования оператора switch с использованием блока default
- 6. Пример программы, использующей вложенный оператор switch
- 7. Применение строк в операторе switch. Пример
- Связанные темы
Поиск на других ресурсах:
1. Какое применение в программе имеет оператор выбора switch?
Оператор выбора switch обеспечивает многонаправленное ветвление в программе. Этот оператор позволяет сделать выбор среди нескольких альтернативных вариантов дальнейшего выполнения программы.
В некоторых случаях оператор выбора switch может иметь более эффективное использование чем использование вложенных операторов if.
⇑
2. Какой общий вид имеет оператор выбора switch?
Общий вид оператора switch:
switch (выражение) { case константа1: операторы1; break; case константа2: операторы2; break; ... case константаN: операторыN; break; ... default: операторы; break; }
где
- выражение – заданное выражение целочисленного (char, byte, short, int) типа, перечисления или строчного (string) типа;
- константа1, константа2, … константаN – константы выбора, тип которых может быть совместим с типом выражения. Среди констант выбора не должно быть двух с одинаковыми значениями;
- оператор1, оператор2, …, операторN, оператор – последовательность операторов, которые выполняются в случае, если значение константы выбора совпадет со значением выражения.
Если ни одна из констант выбора не совпадает с заданным выражением, то выполняются операторы, которые следуют за словом default.
⇑
3. Какое назначение блока default в операторе switch?
Операторы, указанные после слова default, выполняются в том случае, если значение выражения не совпадает ни с одной из констант. Блок (ветвь) default не является обязательной.
В случае, если блок default отсутствует в операторе switch и ни одна из констант не совпадает со значением выражения, то никаких действий не выполняется.
⇑
4. Пример использования оператора switch без использования блока default.
Дано целое число n, указывающее номер дня недели от 1 до 7. По указанному номеру n вывести название соответствующего дня недели.
Фрагмент кода, который решает данную задачу с использованием оператора switch:
int n; n = 7; switch (n) { case 1: label1.Text = "Понедельник"; break; case 2: label1.Text = "Вторник"; break; case 3: label1.Text = "Среда"; break; case 4: label1.Text = "Четверг"; break; case 5: label1.Text = "Пятница"; break; case 6: label1.Text = "Суббота"; break; case 7: label1.Text = "Воскресенье"; break; }
⇑
5. Пример использования оператора switch с использованием блока default.
Написать фрагмент программного кода, который за заданным номером месяца n определяет количество дней в этом месяце. Количество дней заносится в переменную k.
... int n, k; ... switch (n) { case 2: k = 28; break; case 4: case 6: case 9: case 11: k = 30; break; default: k = 31; break; } ...
⇑
6. Пример программы, использующей вложенны оператор switch
Оператор switch может быть вложен в другой управляющий оператор, которым может быть:
- оператор условного перехода if;
- оператор выбора switch;
- оператор цикла for;
- оператор цикла while;
- оператор цикла do..while;
- оператор цикла foreach.
Количество уровней вложения неограничено. Значит, оператор switch может быть размещен на произвольном уровне вложения.
В примере, в операторе switch размещаются вложенный оператор if и вложенный оператор switch.
Программа вычисляет количество дней в месяце исходя из введенного значения номера месяца month и года year. Учитывается тот фактор, что год может быть высокосным.
Текст программы, созданной по шаблону Console Application, следующий
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication8 { class Program { static void Main(string[] args) { // Вложенный оператор switch int year; // номер года int month; // месяц в году int days; // количество дней в году // ввести номер года Console.Write("Year = "); year = Convert.ToInt32(Console.ReadLine()); Console.Write("Month = "); month = Convert.ToInt32(Console.ReadLine()); // оператор switch, содержащий другой вложенный оператор switch switch (month) { case 4: case 6: case 9: case 11: days = 30; break; case 2: bool f; // флажок, определяющий высокосный год // вложенный оператор if if (year % 400 == 0) f = true; else if (year % 100 == 0) f = false; else if (year % 4 == 0) f = true; else f = false; // вложенный оператор switch switch (f) { case true: days = 29; break; default: days = 28; break; } break; default: days = 31; break; } Console.WriteLine("Days = {0}", days); } } }
Результат выполнения программы
Year = 2100 Month = 2 Days = 28
⇑
7. Применение строк в операторе switch. Пример
Кроме целочисленных данных в операторе switch могут использоваться строки символов.
Пример. В примере по названию месяца выводится количество дней в этом месяце. Принимается, что в феврале 28 дней.
using System; namespace ConsoleApp12 { class Program { static void Main(string[] args) { // Использование строк в операторе выбора switch string month; // название месяца // 1. Ввести название месяца month = Console.ReadLine(); // 2. Вывести количество дней в месяце switch (month) { case "January": case "March": case "May": case "July": case "August": case "October": case "December": Console.WriteLine("Number of days = 31"); break; case "February": Console.WriteLine("Number of days = 28"); break; case "April": case "June": case "September": case "November": Console.WriteLine("Number of days = 30"); break; default: Console.WriteLine("Incorrect input"); break; } } } }
⇑
Связанные темы
⇑