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