if문 switch문

Clean·2025년 3월 13일

if문

if문도 ==를 사용해서 switch문과 같이 사용할 수도 있겠지만,
비교 연산자(>, <, != 등)를 사용해서 범위 조건으로 찾거나,
논리 연산자(&&, || )를 사용해서 변수의 값을 알아낼 수 있다.

예로 들어 플레이어의 체력 퍼센트에 따라 체력바의 색을 바꾼다고 가정해보자.

float playerHpPer = 0f; // 플레이어의 체력 퍼센트는 0~100%
// 체력바 색깔의 조건을 정해보자
// 1. 70% 이상이면 초록색
// 2. 70% 미만 35% 이상이면 노란색
// 3. 35% 미만이면 빨간색

playerHpPer = 35.1f; // 임시로 체력 퍼센트 지정

if (playerHpPer >= 70)
{
    // 체력바를 초록색으로 변경
    Console.ForegroundColor = ConsoleColor.Green;
    Console.WriteLine($"플레이어의 체력은 {playerHpPer}% 입니다!");
    Console.ForegroundColor = ConsoleColor.White;
}
else if (playerHpPer < 70 && playerHpPer >= 35)
{
    // 체력바를 노란색으로 변경
    Console.ForegroundColor = ConsoleColor.Yellow;
    Console.WriteLine($"플레이어의 체력은 {playerHpPer}% 입니다!");
    Console.ForegroundColor = ConsoleColor.White;
}
else
{
    // 체력바를 빨간색으로 변경
    Console.ForegroundColor = ConsoleColor.Red;
    Console.WriteLine($"플레이어의 체력은 {playerHpPer}% 입니다!");
    Console.ForegroundColor = ConsoleColor.White;
}

playerHpPer의 값에 따라 콘솔창에서 출력하는 글자의 색이 바뀐다.

만약 switch문으로 위와 같은 출력값을 내는 코드를 작성한다면 case가 아주 많아질 것이다.


switch문

그럼 switch문이 안좋은 것이 아닌가? 라는 생각이 들었지만 switch만의 역할이 있다고 생각한다.
switch문은 정해져 있는 값중 특정한 값을 찾을 때 사용한다.
예를 들어 플레이어의 직업이 무엇인지 알아내보자.

// 0 = 초보자
// 1 = 궁수
// 2 = 마법사
// 3 = 도적
// 4 = 전사
int classNumber = 0; // 플레이어의 직업을 번호로 나타낸 변수

switch (classNumber)
{
    case 1:
        Console.WriteLine("내 직업은 궁수입니다.");
        break;

    case 2:
        Console.WriteLine("내 직업은 마법사입니다.");
        break;

    case 3:
    	Console.WriteLine("내 직업은 도적입니다.");
        break;

    case 4:
        Console.WriteLine("내 직업은 전사입니다.");
        break;

    default:
        Console.WriteLine("저는 아직 초보자입니다. ㅠㅠ");
        break;
}

우선 직업의 값을 string이 아닌 int로 가정해 보았다.
직업은 초보자, 궁수, 마법사, 도적, 전사로 총 5개이다.
물론 if문으로도 위와 같은 값을 출력하는 코드를 만들 수 있지만,
switch문은 점프 테이블을 사용해서 최적화할 수 있다고 한다.
점프 테이블을 완벽하게 이해하지 못했지만,

-- MSW
local tb = {
	["1"] = 초보자
    ["2"] = 궁수,
    ["3"] = 마법사,
    ["4"] = 도적,
    ["5"] = 전사,
}
local classNumber = 3
local myClass = tb[classNumber]
log(myClass)
-- 마법사

이런식으로 테이블에 변수를 넣어 빠르게 값을 찾는다고 이해했다.
지금은 keyintvaluestring이지만,
value에 함수를 넣어서 사용할 수도 있다.


결론적으로 내가 이해한 것은
if문은 추상적인 값을 찾을 때 사용하고,
switch문은 정해져 있는 값을 찾을 때 사용한다로 이해했다.

0개의 댓글