Інструкція перемикач

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

Джерела[ред. | ред. код]

  1. а б Тема 5. Оператори розгалуження та цикли у C#. Архів оригіналу за 9 червня 2011. Процитовано 5 липня 2011.