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

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

Інструкція перемикач (англ. 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("You typed zero.");
    break;
  case 1:
  case 4:
  case 9:
    printf("n is a perfect square.");
    break;  
  case 2:
    printf("n is an even number.");
  case 3:
  case 5:
  case 7:
    printf("n is a prime number.");
    break;
  case 6:
  case 8:
    printf("n is an even number.");
    break;
  default:
    printf("Only single-digit numbers are allowed.");
    break;
}

[ред.] C#

switch (n)
{
  case 0:
    Console.WriteLine("You typed zero.");
    break;
  case 1:
  case 4:
  case 9:
    Console.WriteLine("n is a perfect square.");
    break;
  case 2:
    Console.WriteLine("n is an even number.");
    goto case 3;
  case 3:
  case 5:
  case 7:
    Console.WriteLine("n is a prime number.");
    break;
  case 6:
  case 8:
    Console.WriteLine("n is an even number.");
    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";
    }
}

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

Особисті інструменти
Простори назв

Варіанти
Дії
Навігація
Участь
Панель інструментів
Друк/експорт
Іншими мовами