C에서 Switch 문: 초보자 가이드

안녕하세요, 미래의 프로그래머 여러분! 오늘 우리는 C 프로그래밍에서 매우 유용한 제어 구조 중 하나인 switch 문을 배울 것입니다. 초보자라고 걱정하지 마세요; 단계별로 안내해드릴 테니까요. 수 년 동안 많은 학생들을 가르쳐온 경험을 바탕으로 말이죠. 좋아하는 음료를 한 잔 마시고, 이 코딩 모험을 함께 떠나요!

C - switch statement

switch-case 문이란?

아이스크림 가게에 가셨을 때, 맛을 고를 수 있다고 상상해보세요. 바닐라, 초콜릿, 딸기, 민트 중에서 고를 수 있습니다. 각 선택은 콘에 다른 Scoop를 가져옵니다. 프로그래밍에서 switch 문이 바로 이렇게 작동합니다!

switch 문은 변수나 표현式的 값에 따라 다른 코드 블록을 실행할 수 있게 해주는 제어 흐름 문입니다. 여러 개의 if-else 문을 더 세련되고 효율적으로 사용하는 방법입니다.

switch-case 문의 문법

switch 문의 기본 구조를 살펴보겠습니다:

switch (expression) {
case constant1:
// expression이 constant1과 같다면 실행할 코드
break;
case constant2:
// expression이 constant2와 같다면 실행할 코드
break;
...
default:
// expression이 어떤 상수와도 일치하지 않는다면 실행할 코드
}

처음에는 조금 두려울 수 있지만, 조금씩 설명드리겠습니다.

주요 구성 요소:

  1. switch: switch 문을 시작하는 키워드.
  2. expression: 평가될 값.
  3. case: 표현식의 가능한 값을 나타냅니다.
  4. break: 각 케이스 블록을 종료하는 키워드.
  5. default: 선택 사항으로, 어떤 케이스도 일치하지 않을 때 실행할 블록입니다.

switch-case 문의 작동 방식

이제 실제로 어떻게 작동하는지 보겠습니다. 학생의 성적에 따라 메시지를 출력하는 간단한 프로그램을 만들어보겠습니다:

#include <stdio.h>

int main() {
char grade = 'B';

switch(grade) {
case 'A':
printf("Excellent!");
break;
case 'B':
printf("Well done!");
break;
case 'C':
printf("Good job!");
break;
case 'D':
printf("You passed.");
break;
case 'F':
printf("Better luck next time.");
break;
default:
printf("Invalid grade");
}

return 0;
}

이 예제에서:

  1. grade라는 변수가 'B'로 설정되어 있습니다.
  2. switch 문은 grade를 평가합니다.
  3. 일치하는 케이스를 찾아 ('B'인 경우) 해당 케이스의 코드("Well done!")를 실행합니다.
  4. break 문은 switch 블록을 종료합니다.

grade가 어떤 케이스에도 일치하지 않으면 default 블록이 실행됩니다.

switch-case 문의 흐름도

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 문을 효과적으로 사용하려면 다음 규칙을 기억하세요:

규칙 설명
표현식 유형 switch 표현식은 정수형(int, char 등)이나 열거형 유형이어야 합니다.
케이스 상수 케이스 레이블은 상수나 리터럴 값이어야 하며 변수는 아닙니다.
고유한 케이스 각 케이스 값은 switch 문 내에서 고유해야 합니다.
break 문 케이스가 실행된 후 break 문을 사용하여 switch 블록을 종료합니다.
기본 케이스 default 케이스는 선택 사항으로, switch 블록 내 어디에나 올 수 있습니다.

더 많은 switch-case 문 예제

이제 몇 가지 더 예제를 보아서 이해를 더욱 확고히 하겠습니다.

예제 1: 주간 일

#include <stdio.h>

int main() {
int day = 4;

switch(day) {
case 1:
printf("Monday");
break;
case 2:
printf("Tuesday");
break;
case 3:
printf("Wednesday");
break;
case 4:
printf("Thursday");
break;
case 5:
printf("Friday");
break;
case 6:
printf("Saturday");
break;
case 7:
printf("Sunday");
break;
default:
printf("Invalid day number");
}

return 0;
}

이 프로그램은 day가 4로 설정되어 있으므로 "Thursday"를 출력합니다.

예제 2: 계산기

#include <stdio.h>

int main() {
char operator;
double n1, n2;

printf("Enter an operator (+, -, *, /): ");
scanf("%c", &operator);
printf("Enter two operands: ");
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("Error! operator is not correct");
}

return 0;
}

이 프로그램은 간단한 계산기를 만들어 switch 문을 사용합니다.

여러 케이스를 결합한 switch 문

때로는 여러 케이스가 같은 코드를 실행해야 할 수 있습니다. 이를 위해 케이스를 함께 나열할 수 있습니다:

#include <stdio.h>

int main() {
char grade = 'B';

switch(grade) {
case 'A':
case 'B':
case 'C':
printf("You passed!");
break;
case 'D':
case 'F':
printf("You need to improve.");
break;
default:
printf("Invalid grade");
}

return 0;
}

이 예제에서 A, B, C 등급은 모두 "You passed!"를 출력하고, D와 F 등급은 "You need to improve."를 출력합니다.

이제 C에서 switch 문에 대해 배웠습니다. 연습이 완벽을 이루는 열쇠입니다. 자신만의 switch 문을 작성하고 다양한 시나리오를 실험해보세요. 얼마 지나지 않아 switch 문을 마스터하실 거예요!

행복한 코딩 되세요, 그리고 항상 올바른 케이스를 찾으세요!

Credits: Image by storyset