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

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