Інструкція перемикач
Інструкція перемикач (англ. 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; }
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"; } }