Учебники

9) Положение переключателя

Что такое заявление о смене?

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

Каждый случай в блоке коммутатора имеет свое имя / номер, который называется идентификатором. Значение, предоставленное пользователем, сравнивается со всеми случаями внутри блока переключателей, пока не будет найдено совпадение.

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

В этом уроке вы узнаете

Синтаксис

Общий синтаксис того, как switch-case реализован в программе ‘C’, выглядит следующим образом:

switch( expression )
{
	case value-1:
			Block-1;
			Break;
	case value-2:
			Block-2;
			Break;
	case value-n:
			Block-n;
			Break;
	default:
			Block-1;
			Break;
}
Statement-x; 
  • Выражение может быть целочисленным выражением или символьным выражением.
  • Значения-1, 2, n — это метки, которые используются для индивидуальной идентификации каждого случая. Помните, что метки регистра не должны быть одинаковыми, так как это может создать проблему при выполнении программы. Предположим, у нас есть два случая с такой же меткой, как «1». Затем при выполнении программы первый случай будет выполнен, даже если вы хотите, чтобы программа выполнила второй случай. Это создает проблемы в программе и не обеспечивает желаемого результата.
  • Метки дел всегда заканчиваются двоеточием (:). Каждый из этих случаев связан с блоком.
  • Блок — это не что иное, как несколько операторов, сгруппированных для конкретного случая.
  • Всякий раз, когда выполняется переключатель, значение test-expression сравнивается со всеми случаями, которые мы определили внутри переключателя. Предположим, что тестовое выражение содержит значение 4. Это значение сравнивается со всеми случаями до случая, чья метка четыре найдена в программе. Как только случай обнаружен, выполняется блок операторов, связанный с этим конкретным случаем, и управление выходит из коммутатора.
  • Ключевое слово break в каждом случае указывает на конец конкретного случая. Если мы не ставим разрыв в каждом случае, тогда, даже если конкретный случай выполняется, коммутатор продолжит выполнять все случаи, пока не будет достигнут конец. Этого не должно быть; следовательно, мы всегда должны ставить ключевое слово break в каждом случае. Прерывание прервет случай, как только он будет выполнен, и управление выпадет из переключателя.
  • Случай по умолчанию является необязательным. Всякий раз, когда значение test-expression не соответствует ни одному из случаев внутри коммутатора, будет выполнено значение по умолчанию. В противном случае нет необходимости писать значение по умолчанию в коммутаторе.
  • Как только переключатель будет выполнен, управление перейдет к оператору-x, и выполнение программы продолжится.

Блок-схема корпуса коммутатора

Следующая диаграмма иллюстрирует, как выбирается регистр в случае коммутатора:

Как работает Switch

пример

Следующая программа иллюстрирует использование переключателя:

#include <stdio.h>
    int main() {
        int num = 8;
        switch (num) {
            case 7:
                printf("Value is 7");
                break;
            case 8:
                printf("Value is 8");
                break;
            case 9:
                printf("Value is 9");
                break;
            default:
                printf("Out of range");
                break;
        }
        return 0;
    }

Вывод:

Value is 8

  1. В данной программе мы инициализировали переменную num значением 8.
  2. Конструкция switch используется для сравнения значения, хранящегося в переменной num, и выполнения блока операторов, связанных с соответствующим регистром.
  3. В этой программе, поскольку значение, хранящееся в переменной num, равно восьми, коммутатор выполнит случай, для которого метка регистра равна 8. После выполнения случая управление выпадет из переключателя, и программа будет завершена с успешным результатом: печать значения на экране вывода.

Попробуйте изменить значение переменной num и обратите внимание на изменение в выводе.

Например, мы рассмотрим следующую программу, которая по умолчанию:

#include <stdio.h>
int main() {
int language = 10;
  switch (language) {
  case 1:
    printf("C#\n");
    break;
  case 2:
    printf("C\n");
    break;
  case 3:
    printf("C++\n");
    break;
  default:
    printf("Other programming language\n");}}

Вывод:

Other programming language

При работе с регистром переключения в C вы группируете несколько вариантов с уникальными метками. Вы должны вводить оператор break в каждом случае для перехода в конце оператора switch.

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

Мы рассмотрим следующий оператор switch:

#include <stdio.h>
int main() {
int number=5;
switch (number) {
  case 1:
  case 2:
  case 3:
    printf("One, Two, or Three.\n");
    break;
  case 4:
  case 5:
  case 6:
    printf("Four, Five, or Six.\n");
    break;
  default:
    printf("Greater than Six.\n");}}

Вывод:

Four, Five, or Six.

Вложенный переключатель

В C мы можем встроить внутренний переключатель во внешний переключатель. Кроме того, константы регистра внутреннего и внешнего коммутатора могут иметь общие значения и без каких-либо конфликтов.

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

#include <stdio.h>
int main() {
        int ID = 500;
        int password = 000;
        printf("Plese Enter Your ID:\n ");
        scanf("%d", & ID);
        switch (ID) {
            case 500:
                printf("Enter your password:\n ");
                scanf("%d", & password);
                switch (password) {
                    case 000:
                        printf("Welcome Dear Programmer\n");
                        break;
                    default:
                        printf("incorrect password");
                        break;
                }
                break;
            default:
                printf("incorrect ID");
                break;
        }
}

ВЫВОД:

Plese Enter Your ID:
 500
Enter your password:
 000
Welcome Dear Programmer

  1. В данной программе мы инициализировали две переменные: идентификатор и пароль
  2. Внешняя конструкция переключателя используется для сравнения значения, введенного в идентификатор переменной. Выполняется блок операторов, связанный с соответствующим регистром (когда ID == 500).
  3. Если оператор блока выполняется с соответствующим регистром, внутренний переключатель используется для сравнения значений, введенных в переменную password, и выполнения операторов, связанных с соответствующим регистром (когда пароль == 000).
  4. В противном случае регистр переключателя активирует регистр по умолчанию и напечатает соответствующий текст, касающийся схемы программы.

Зачем нам нужен чехол Switch?

Существует одна потенциальная проблема с оператором if-else, которая заключается в том, что сложность программы увеличивается всякий раз, когда увеличивается число альтернативных путей. Если в программе используется несколько конструкций if-else, программа может стать трудной для чтения и понимания. Иногда это может даже смутить разработчика, который сам написал программу.

Решением этой проблемы является оператор switch.

Правила для заявления переключателя:

  • Выражение всегда должно выполняться в результате.
  • Метки дел должны быть постоянными и уникальными.
  • Метки дел должны заканчиваться двоеточием (:).
  • Ключевое слово break должно присутствовать в каждом случае.
  • Может быть только одна метка по умолчанию.
  • Мы можем вкладывать несколько операторов switch.

Резюме

  • Переключатель является конструктом принятия решения в «C».
  • Переключатель используется в программе, где участвуют несколько решений.
  • Переключатель должен содержать исполняемое тестовое выражение.
  • Каждый случай должен включать ключевое слово break.
  • Метка регистра должна быть постоянной и уникальной.
  • По умолчанию это необязательно.
  • Несколько операторов switch могут быть вложены друг в друга.