Інструкція перемикач
Інструкція перемикач (англ. Switch statement), також знана як інструкція вибору та оператор перемикач (switch, case, select або inspect) — це спеціального виду інструкція мови програмування, що забезпечує багатонаправлене (множинне) розгалуження в програмі. Назва інструкції в різних мовах може різнитися, переважно — це інструкції switch
, case
, select
або inspect
. Цей механізм вибору існує в більшості імперативних мовах програмування таких як Pascal, Ada, C/C++, C#, Java тощо. Інструкція перемикач дозволяє робити вибір однієї з множини альтернатив[1].
Загальний принцип[ред. | ред. код]
Вона працює наступним чином[1]:
- Значення виразу послідовно порівнюється з константами із заданого списку.
- У разі виявлення збігу для однієї з умов порівняння виконується послідовність інструкцій, пов'язана з цією умовою.
Хоча багатонаправлене тестування можна реалізувати з допомогою послідовності вкладених інструкцій if
, для багатьох ситуацій інструкція switch
виявляється ефективнішим рішенням.
Приклади[ред. | ред. код]
Далі наведені прості приклади написані на деяких мовах програмування, що використовують перемикач, які друкують рядок тексту, зміст якого залежить від значення введеного користувачем.
C, C++, D, Java, PHP, ActionScript, JavaScript[ред. | ред. код]
switch (n) {
case 0:
printf("Ви ввели нуль.");
break;
case 1:
case 4:
case 9:
printf("n є повним квадратом.");
break;
case 2:
printf("n парне число.");
case 3:
case 5:
case 7:
printf("n є простим числом.");
break;
case 6:
case 8:
printf("n парне число.");
break;
default:
printf("Only single-digit numbers are allowed.");
break;
}
C#[ред. | ред. код]
switch (n)
{
case 0:
Console.WriteLine("Ви ввели нуль.");
break;
case 1:
case 4:
case 9:
Console.WriteLine("n є повним квадратом.");
break;
case 2:
Console.WriteLine("n парне число.");
goto case 3;
case 3:
case 5:
case 7:
Console.WriteLine("n є простим числом.");
break;
case 6:
case 8:
Console.WriteLine("n парне число.");
break;
default:
Console.WriteLine("Only single-digit numbers are allowed.");
break;
}
Fortran[ред. | ред. код]
select case (n)
case (:-1)
write(*,*) "ви ввели від'ємне число"
case (0)
write(*,*) "ви ввели нуль."
case (1,4,9)
write(*,*) "n є повним квадратом."
case (2)
write(*,*) "n парне число і дорівнює 2"
case (3,5,7)
write(*,*) "n є простим числом."
case (6,8)
write(*,*) "n парне число."
case (10:)
write(*,*) "тільки числа з [0:9]!"
case default
write(*,*) "яким чином ви сюди потрапили?"
end select
Pascal[ред. | ред. код]
case age of
0,1: writeln('baby');
2,3,4: writeln('toddler');
5..12: writeln('kid');
13..19: writeln('teenager');
20..25: writeln('young');
else writeln('old ;)');
end;
Perl[ред. | ред. код]
use feature 'switch';
given ($foo) {
when (undef) {
say '$foo is undefined';
}
when ("foo") {
say '$foo is the string "foo"';
}
when ([1,3,5,7,9]) {
say '$foo is an odd digit';
continue; # Fall through
}
when ($_ < 100) {
say '$foo is numerically less than 100';
}
when (\&complicated_check) {
say 'a complicated check for $foo is true';
}
default {
die "I don't know what to do with $foo";
}
}
Джерела[ред. | ред. код]
- ↑ а б Тема 5. Оператори розгалуження та цикли у C#. Архів оригіналу за 9 червня 2011. Процитовано 5 липня 2011.