Как работает оператор множественного выбора
easy

Как работает оператор множественного выбора

Выбираем сразу из нескольких вариантов

В прошлый раз мы поговорили про условный оператор, который работает так:

мы проверяем условие, и если оно выполняется, то делаем что-то одно, а если нет — то просто идём дальше (или выполняем что-то другое и тоже идём дальше).

Но это хорошо работает, когда у нас бинарное условие: или выполняется, или нет. А если нам нужно проверить какое-то значение, и если оно равно единице, то сделать что-то одно, двойке — что-то другое и так далее? Тут на помощь приходит оператор множественного выбора, про него и поговорим.

Почему такой выбор сложно сделать с помощью обычного условия

Представим, что нам нужно написать простую программу: мы спрашиваем у пользователя число от 1 до 3 и выводим текстом название этого числа. 

Если у нас под рукой только условный оператор, то схема получится такая:

Теперь запишем это на языке JavaScript:

a = 1;

if (a == 1) {
  console.log('Один')
} else { 
  if (a == 2) {
    console.log('Два')
  } else {
    if (a == 3) {
      console.log('Три')
    }
  }
}

Выглядит громоздко. А теперь представим, что нам нужно выбрать не из трёх вариантов, а из десяти или ста — и для каждого выбора нужно выполнить своё действие. У нас получится настолько сложная для понимания и работы конструкция из условных операторов, что быстро сориентироваться в ней не получится.

Чтобы не городить такой огород, как раз используют оператор множественного выбора.

Как устроен оператор множественного выбора

Оператор множественного выбора работает по такой логике:

  • У него есть значение, на которое он смотрит, — оно может храниться в переменной или быть результатом работы функции. Что именно используется — неважно, главное, что есть исходные данные, с которыми можно работать.
  • У него есть несколько готовых разных значений, к каждому из которых привязан свой вариант действий.
  • Если значение совпадает с одним из предложенных — он делает те команды, которые мы прописали для этого значения.

При этом оператор множественного выбора проверяет на совпадения с этими значениями сверху вниз: сначала первый, потом второй — и так до тех пор, пока не найдёт совпадение. Как только нашёл — выполняет нужные команды, прекращает поиск, и программа движется дальше. 

Если нарисовать это в виде блок-схемы, получится так:

Кажется, что получилось ещё сложнее, чем в самом начале. Но если мы запишем это в коде, всё будет проще:

a = 1;

switch (a) {
  case 1: console.log('Один'); break;
  case 2: console.log('Два'); break;
  case 3: console.log('Три'); break;
}

Механика в этом примере такая:

  1. У нас есть переменная «a», в которой лежит какое-то значение.
  2. Мы говорим компьютеру, что сейчас будем смотреть на значение переменной «a» и подбирать к ней какое-то значение (switch (a)).
  3. Дальше мы пишем несколько вариантов значений для этой переменной, а после двоеточия — что нужно сделать, если этот вариант подходит.
  4. Компьютер начинает сверху вниз проверять значения и как только доходит до первого совпадения — выполняет соответствующий набор команд.

Вариантов выбора может быть сколько угодно: хоть один, хоть сто — компьютер справится с любым количеством. Команд внутри действий тоже может быть сколько угодно. Для наглядности добавим в вариант с единицей несколько команд:

a = 1;
b = 0;

switch (a) {
  case 1: 
    console.log('Итак, какой же будет результат?'); 
    console.log('Добавим немного математических команд'); 
    b = a + 3 + (234-3234*255)
    console.log('Наконец даём ответ'); 
    console.log('Один'); 
    break;
  case 2: console.log('Два'); break;
  case 3: console.log('Три'); break;
}

Что делать, если ни один из вариантов не подошёл

Обычно, если ни один из вариантов не подошёл, компьютер просто продолжает работу и переходит к следующей команде, которая идёт за оператором множественного выбора. Но можно сделать так, чтобы компьютер выполнил ещё какие-то команды, если ни один из вариантов не совпадает. Для этого добавляют действия по умолчанию, если ничего не сработало:

В коде на JavaScript это выглядит так:

a = 1;

switch (a) {
  case 1: console.log('Один'); break;
  case 2: console.log('Два'); break;
  case 3: console.log('Три'); break;
  default: console.log('Мы не знаем, что вы выбрали'); break;
}

Если компьютер увидит, что ни один из вариантов не подходит, он выполнит те команды, которые у нас прописаны в блоке действий по умолчанию. Иногда это бывает полезно.

Можно ли написать два одинаковых значения для выбора?

Можно, только сработает первый из них — так устроена логика этого оператора. Компьютер не проверяет, что именно вы предлагаете как варианты, — он просто смотрит их по очереди и выполняет первый, который подошёл, а остальные пропускает.

Примеры оператора множественного выбора в разных языках программирования

Посмотрите на примеры кода на разных языках и попробуйте найти в них общие элементы. Знать синтаксис языка при этом не обязательно — достаточно увидеть схему в целом и понять, что почти во всех языках этот оператор работает плюс-минус одинаково.

switch (membershipStatus) {
  case 'vip':
    // выполнится, если в переменной membershipStatus хранится строка 'vip'
    console.log('Приветствуем вас, ваше великолепие!')
    console.log('Рады вас видеть!')
    break
  case 'diamond':
    console.log('Здравствуйте, бриллиантовый клиент!')
    break
  case 'gold':
    console.log('Привет, золотой мой!')
    break
  default:
    // выполнится, если ни один другой случай не сработал
    console.log('Прив')
    break
}
int temperature = 40;
switch(temperature)
{
   case 36:
      System.out.println("Низкая");
      break;
   case 37:
      System.out.println("Нормальная");
      break;
   case 38:
      System.out.println("Высокая");
      break;
   default:
      System.out.println("Нужна скорая");
}
switch (count) // начало оператора switch
  {
     case 1: // если count = 1
     {
     cout << a << " + " << b << " = " << a + b << endl; // выполнить сложение
     break;
     }
     case 2: // если count = 2
     {
     cout << a << " - " << b << " = " << a - b << endl; // выполнить вычитание
     break;
     }
     case 3: // если count = 3
     {
     cout << a << " * " << b << " = " << a * b << endl; // выполнить умножение
     break;
     }
     case 4: // если count = 4
     {
     cout << a << " / " << b << " = " << a / b << endl; // выполнить деление
     break;
     }
     default: // если count равно любому другому значению
     cout << "Nepravilni vvod" << endl;
     }

Что дальше

В следующий раз поговорим про сложные условия — когда нам нужно проверить не что-то одно, а сразу несколько условий, причём, возможно, в разных комбинациях. Подпишитесь, чтобы не пропустить.  

Обложка:

Алексей Сухов

Корректор:

Елена Грицун

Вёрстка:

Мария Климентьева

Соцсети:

Юлия Зубарева

Получите ИТ-профессию
В «Яндекс Практикуме» можно стать разработчиком, тестировщиком, аналитиком и менеджером цифровых продуктов. Первая часть обучения всегда бесплатная, чтобы попробовать и найти то, что вам по душе. Дальше — программы трудоустройства.
Вам может быть интересно
easy
[anycomment]
Exit mobile version