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

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до: навігація, пошук

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

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