Переключательная инструкция в C: Путеводитель для начинающих
Здравствуйте, будущие программисты! Сегодня мы погрузимся в одну из самых полезных управляющих структур в программировании на языке C: переключатель (switch statement). Не волнуйтесь, если вы новички; я проведу вас через это шаг за шагом, как я делал это для countless студентов на протяжении многих лет преподавания. Так что возьмите кружку вашего любимого напитка и отправляйтесь в это кодирование приключение вместе со мной!
Что такое оператор switch-case?
Представьте, что вы на冰淇淋ной станции и должны выбрать flavor. У вас есть ваниль, шоколад, клубника и мята. Каждый выбор приводит к разному шару в вашей вазочке. Именно так работает оператор switch в программировании!
Оператор switch - это управляющая структура, которая позволяет вам выполнять разные блоки кода в зависимости от значения переменной или выражения. Это как более изысканная и эффективная версия множества операторов if-else.
Синтаксис оператора switch-case
Давайте посмотрим на базовую структуру оператора switch:
switch (expression) {
case constant1:
// код для выполнения, если expression равен constant1
break;
case constant2:
// код для выполнения, если expression равен constant2
break;
...
default:
// код для выполнения, если expression не соответствует ни одному из constant
}
Не волнуйтесь, если это сначала выглядит немного пугающе. Мы разберем это по частям.
Основные компоненты:
-
switch
: Этот ключевой слова инициирует оператор switch. -
expression
: Это значение, которое оценивается. -
case
: Each case представляет собой возможное значение выражения. -
break
: Это ключевое слово заканчивает каждый блок case. -
default
: Это可选 блок, который выполняется, если ни один из случаев не совпадает.
Как работает оператор switch-case
Теперь давайте посмотрим, как это работает на практике. Представьте, что мы создаем простую программу, которая выдает сообщение на основе оценки студента:
#include <stdio.h>
int main() {
char grade = 'B';
switch(grade) {
case 'A':
printf("Отлично!");
break;
case 'B':
printf("Хорошо сделано!");
break;
case 'C':
printf("Хорошая работа!");
break;
case 'D':
printf("Вы сдали.");
break;
case 'F':
printf("Удачи в следующий раз.");
break;
default:
printf("Неправильная оценка");
}
return 0;
}
В этом примере:
- У нас есть переменная
grade
, которая установлена в 'B'. - Оператор switch оценивает
grade
. - Он проверяет каждый случай до тех пор, пока не найдет совпадение ('B' в этом случае).
- Когда он находит совпадение, он выполняет код в этом случае ("Хорошо сделано!").
- Ключевое слово
break
затем выходит из блока switch.
Если grade
не соответствовал бы ни одному из случаев, был бы выполнен блок default
.
Диаграмма оператора switch-case
Чтобы visualize, как работает оператор switch, давайте посмотрим на блок-схему:
+-------------+
| Start |
+-------------+
|
v
+-------------------+
| Evaluate expression|
+-------------------+
|
v
+----------------------+
| Compare with case 1 |
+----------------------+
|
v
+-------------+
| Match? |
+-------------+
Yes | | No
| |
v v
+-----------------+ +----------------------+
| Execute case 1 | | Compare with case 2 |
+-----------------+ +----------------------+
| |
v v
+-----------+ +-------------+
| Break | | Match? |
+-----------+ +-------------+
| Yes | | No
| | |
| v v
| +-----------------+ +------------+
| | Execute case 2 | | ... |
| +-----------------+ +------------+
| |
| v
| +-----------+
| | Break |
| +-----------+
| |
v v
+-----------+ +-----------+
| End | <------| Default |
+-----------+ +-----------+
Эта блок-схема показывает, как оператор switch оценивает каждый случай и выполняет соответствующий блок кода.
Правила использования оператора switch-case
Чтобы эффективно использовать операторы switch, держите в голове следующие правила:
Rule | Описание |
---|---|
Тип выражения | Выражение switch должно быть целого типа (int, char и т.д.) или перечислимого типа. |
Постоянные случаи | Метки case должны быть постоянными или литеральными значениями, а не переменными. |
Уникальные случаи | Каждый случайное значение должно быть уникальным в операторе switch. |
Оператор break | Используйте break , чтобы выйти из блока switch после выполнения случая. |
Случай по умолчанию | Случай default является optional и может出现在 anywhere в блоке switch. |
Больше примеров оператора switch-case
Давайте рассмотрим несколько примеров, чтобы巩固ить наши знания.
Пример 1: Дни недели
#include <stdio.h>
int main() {
int day = 4;
switch(day) {
case 1:
printf("Понедельник");
break;
case 2:
printf("Вторник");
break;
case 3:
printf("Среда");
break;
case 4:
printf("Четверг");
break;
case 5:
printf("Пятница");
break;
case 6:
printf("Суббота");
break;
case 7:
printf("Воскресенье");
break;
default:
printf("Неправильный номер дня");
}
return 0;
}
Эта программа выведет "Четверг", так как day
установлен в 4.
Пример 2: Калькулятор
#include <stdio.h>
int main() {
char operator;
double n1, n2;
printf("Введите оператор (+, -, *, /): ");
scanf("%c", &operator);
printf("Введите два операнда: ");
scanf("%lf %lf",&n1, &n2);
switch(operator)
{
case '+':
printf("%.1lf + %.1lf = %.1lf", n1, n2, n1+n2);
break;
case '-':
printf("%.1lf - %.1lf = %.1lf", n1, n2, n1-n2);
break;
case '*':
printf("%.1lf * %.1lf = %.1lf", n1, n2, n1*n2);
break;
case '/':
printf("%.1lf / %.1lf = %.1lf", n1, n2, n1/n2);
break;
default:
printf("Ошибка! Оператор неправильный");
}
return 0;
}
Эта программа создает простой калькулятор с помощью оператора switch.
Комбинация нескольких случаев в операторе switch
Иногда вы можете хотите, чтобы несколько случаев выполняли один и тот же код. Вы можете сделать это, перечислив случаи вместе:
#include <stdio.h>
int main() {
char grade = 'B';
switch(grade) {
case 'A':
case 'B':
case 'C':
printf("Вы сдали!");
break;
case 'D':
case 'F':
printf("Вам нужно улучшить.");
break;
default:
printf("Неправильная оценка");
}
return 0;
}
В этом примере, оценки A, B и C все приводят к "Вы сдали!", в то время как D и F приводят к "Вам нужно улучшить."
И вот и все! Вы только что узнали о операторе switch в C. Помните, что практика делает perfect. Попробуйте написать свои собственные операторы switch и поэкспериментируйте с разными сценариями. Before you know it, вы будете switch как профи!
Счастливого кодирования, и пусть ваши switch всегда находят свои правильные случаи!
Credits: Image by storyset