[로봇활용_8주차] C# 분기문

최윤호·2025년 9월 19일
post-thumbnail

분기문(Branch Statement)

코드를 쓰다 보면 '상황에 따라 다르게 처리'해야 하는 순간이 꼭 옵니다.
분기문을 사용해서 특정 조건에 따라 다른 코드를 실행하여
프로그램이 다양한 상황에서 유연하게 대응할 수 있게 합니다.

1)if: 가장 기본적인 분기문

조건이 '참'이면 중괄호 { }안의 코드를 실행하고 '거짓'이면 건너뜁니다.
코드가 한 줄인 경우 { }중괄호를 생략할 수 있습니다.
경우에 따라서는 if문을 삼항 연산자로 대체할 수 있어요.
삼항 연산자 예시: string result = (score >= 60) ? "합격" : "불합격";

[구조]

if (조건식)
{
    // 참인 경우에 실행하는 코드
}

[코드]

int score = 85;

if (score >= 80) // 중괄호 사용
{
    Console.WriteLine("합격입니다!");
}
if (score == 100) // 중괄호 생략
    Console.WriteLine("만점 축하합니다!");

[실행 결과]

합격입니다!

if 문은 '코드를 실행할지 말지'를 결정할 때 주로 쓰이고,
삼항 연산자(조건 ? 값1 : 값2)는 '어떤 값을 선택할지'를 표현할 때 사용합니다.

2)else: 조건이 거짓일 때 실행

if'참'이면 if블록을 실행합니다.
if'거짓'이면 else블록을 실행합니다.
else가 한 줄인 경우 { }중괄호를 생략할 수 있습니다.

[구조]

if (조건식)
{
    // 참인 경우에 실행하는 코드
}
else 
{
    // 거짓인 경우에 실행하는 코드
}

[코드]

int score = 50;

if (score >= 60)
{
    Console.WriteLine("합격입니다!");
}
else
{
    Console.WriteLine("불합격입니다!");
}

[실행 결과]

불합격입니다!

3)else if: 조건을 순차적으로 검사

순차적으로 조건을 검사하여 처음에 '참'이 되는 블록 하나만 실행합니다.

[코드]

int score = 75;
char grade;

if (score >= 90) // 첫 번째 조건
{
    grade = 'A';
}
else if (score >= 80) // 두 번째 조건
{
    grade = 'B';
}
else if (score >= 70) // 세 번째 조건
{
    grade = 'C';
}
else // 주어진 조건이 모두 거짓일 경우
{
    grade = 'D';
}
Console.WriteLine($"{grade}등급 입니다.");

[실행 결과]

C등급 입니다.

4)switch: 여러 개의 선택지를 깔끔하게

여러개의 if문이 있으면, 코드가 길어지고 가독성이 떨어집니다.
이럴 때는switch문을 사용해서 코드를 간결하게 하고 가독성은 높여집니다.
switch문은 여러 개의 선택지 중 하나를 고를 때 유용합니다.

1. Switch 문(Switch Statement)

C#에서 switch문을 사용 할 때는 각 case마다 break;가 필요합니다.
어떤 case에도 해당하지 않을 때는 default:블록을 실행합니다.

[코드]

string season = "겨울";

switch (season) // 전통적인 switch 문
{
    case "봄":
        Console.WriteLine("꽃놀이하러 갑시다!");
        break;
    case "여름":
        Console.WriteLine("시원한 바다로 떠나요!");
        break;
    case "가을":
        Console.WriteLine("단풍 구경하기 좋아요!");
        break;
    case "겨울":
        Console.WriteLine("따뜻한 코코아 한 잔 어떠세요?");
        break;
    default: // 위에서 제시된 어떤 'case'에도 해당하지 않을 때
        Console.WriteLine("어떤 계절인지 잘 모르겠어요!");
        break;
}

[실행 결과]

따뜻한 코코아 한 잔 어떠세요?

2. Switch 문 - 주의사항

C#에서는 C언어나 C++, Java처럼 break;를 생략해서
바로 다음 case로 이동하는 것이 허용되지 않습니다.
이는 잠재적 오류 가능성을 줄이고 코드의 신뢰성을 높이기 위한 조치입니다.
여러 값을 같은 처리로 묶고 싶다면, case라벨을 연달아 쓰는 방식으로 표현합니다.

[C#에서 허용되지 않음]

int x = 1;

switch (x)
{
    case 1:
        Console.WriteLine("1");
    //  여기서 바로 다음 case로 이동하려고 하면 → 컴파일 오류
    case 2:
        Console.WriteLine("2");
        break;
}

[C#에서 허용되는 것]

int x = 1;

switch (x)
{
    case 1: // case 블록이 비어 있음
    case 2:
        Console.WriteLine("1 또는 2입니다.");
        break;
}

3. Switch 식(Switch Expression)

C# 8.0부터는 코드가 훨씬 간결하고 명확하게 사용할 수 있습니다.
기존 switch문과 동일하게 작동하면서도 훨씬 간결하고 가독성이 좋습니다.
단, '값을 만들어내는 식'이기 때문에 각 분기에서 반드시 하나의 값을 반환해야 합니다.

[코드]

string season = "봄";

string message = season switch // 더 간결해진 switch 식
{
    "봄" => "꽃놀이하러 갑시다!",
    "여름" => "시원한 바다로 떠나요!",
    "가을" => "단풍 구경하기 좋아요!",
    "겨울" => "따뜻한 코코아 한 잔 어떠세요?",
    _ => "어떤 계절인지 잘 모르겠어요!" // default: 대신 _ 사용
};

Console.WriteLine(message);

[실행 결과]

꽃놀이하러 갑시다!
profile
🚀 미래의 엔지니어를 꿈꾸는 훈련생의 기록 📝

0개의 댓글