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

Матеріал з Вікіпедії — вільної енциклопедії.
(Перенаправлено з Перемикач (інструкція))
Перейти до навігації Перейти до пошуку

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