250x250
Notice
Recent Posts
Recent Comments
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

minjea.dev의 코딩블로그

[c#] 조건문 본문

코딩강좌/c#

[c#] 조건문

minjea.dev 2022. 4. 7. 12:00
728x90

이제 우리는 c#에서 변수를 만들고, 변수를 활용하여 연산을 할수 있을 정도까지 왔습니다. 그렇다면 이제 우리는 새로운 기능을 하나 배워보도록 합시다. 바로 조건문입니다. 조건문을 배운다면, 여러분은 이제 여러가지 조건을 비교하고 그에 따라 코드를 실행할수 있을 겁니다.

if, else문

c#에서는 조건문을 다음과 같이 사용할수 있습니다.

if (조건) {
    실행구문;
}

조건에는 bool형을 반환하는 함수나, 연산자를 넣으시면 되고, 실행구문에는 조건이 참일 경우 실행할 문법을 넣어주시면 됩니다. c#은 조건이 참일 경우 실행구문을 실행하고, 아니라면 실행하지 않고 다음으로 넘어갑니다.

만약 조건이 여러개라면 어떻게 해야 할까요? 여러분은 아마도 if문을 여러개 사용하는걸 생각하셨을 겁니다. 다음과 같이 말이죠

if (조건1) {
    실행구문1;
}

if (조건2) {
    실행구문2;
}

괜찮다고 생각하시는 분들도 있을것 같습니다. 그러면 예시를 하나 더 들어보겠습니다. 만약, 조건1이 만족하면 만족! 이라는 메시지를 띄우고, 아니라면 만족하지 않음! 이라는 메시지를 띄워 보는 코드를 작성해 봅시다. 지금 블로그를 읽는걸 잠시 멈추고 한번 자신만의 코드를 짜 보세요.

아마 여러분은 다음과 같이 코드를 작성하셨을것 같습니다

if (조건1) {
    Console.WriteLine("만족!");
}

if (!조건1) {
    Console.WriteLine("만족하지 않음!");
}

조금 복잡해진것 같습니다. 이것을 조금 더 짧게 만들수는 없을까요? c#에서는 이런 경우를 위하여 else 예약어가 지원됩니다. else를 이용하면 조건이 참이 아닐때 실행할 코드를 넣을수 있습니다. 따라서, 위 코드는 아래 코드로 바꿔 쓸수 있습니다.

if (조건1) {
    Console.WriteLine("만족!");
} else {
    Console.WriteLine("만족하지 않음?");
}

우리는 지금 조건이 단순히 참인 경우와 그렇지 않은 경우에 코드를 간단히 해서 처리할수 있게 되었습니다. 그럼 만약 단순히 조건이 참인 경우와, 거짓인 경우가 아닌, 조건을 여러개 처리해야 할때는 어떻게 해야 할까요?

그러면 일단 상황을 제시해 드리겠습니다. 우리는 int형 변수 a를 생성하고, 그 안에 3을 대입한 후, 1일 경우와 2일 경우 3일 경우, 각각 1입니다!, 2입니다!, 3입니다! 를 조건문을 사용해서 출력하는 코드를 작성해 보세요.

int a = 3;
if (a == 1) {
    Console.WriteLine("1입니다!");
}

if (a == 2) {
    Console.WriteLine("2입니다!");
}

if (a == 3) {
    Console.WriteLine("3입니다!");
}

대부분 위와 같이 작성하셨으리라 생각합니다. 근데 조건이 여러개인 경우엔, else if(조건) 을 통해 여러가지 조건을 한번에 처리하는것이 가능합니다. 다음과 같이 말이죠

int a = 3;
if (a == 1) {
    Console.WriteLine("1입니다!");
} else if (a == 2) {
    Console.WriteLine("2입니다!");
} else if (a == 3) {
    Console.WriteLine("3입니다!");
}

아니면 아래와 같이 써도 됩니다. 근데 제 추천은 위 예제를 추천합니다. 안전을 위해서요.

int a = 3;
if (a == 1) {
    Console.WriteLine("1입니다!");
} else if (a == 2) {
    Console.WriteLine("2입니다!");
} else {
    Console.WriteLine("3입니다!");
}


switch문

switch문은 if문과 비슷한(?) 조건문입니다. switch문은 대부분 한개의 변수를 여러개의 조건 판단을 통해 코드를 실행할때 사용합니다. 그 이유는 switch문을 사용하면 if, else if를 사용할때보다 조금 더 간단히 사용할수 있기 때문입니다. 하지만 원하시면 그냥 if, else if문을 이용해 코드를 작성하셔도 좋습니다.

switch문은 값이 case 중 어느 하나라도 해당이 된다면, 해당 case 문 아래에 오는 코드를 실행합니다

다음은 switch문을 사용한 예제입니다.

int a = 10;

switch(a) {
    case 1:
        Console.WriteLine("1입니다.");
        break;
    case 2:
        Console.WriteLine("2입니다.");
        break;
    case 3:
        Console.WriteLine("3입니다.");
        break;
    case 4:
        Console.WriteLine("4입니다.");
        break;
    case 5:
        Console.WriteLine("5입니다.");
        break;
    default:
        Console.WriteLine("해당하는 값이 없습니다.");
        break;
}

위와 같이 조건이 많이 없을땐, if, else if문과 다를게 없다고 생각하실수는 있으시겠지만, 예를 들어, 조건이 1000개, 10000개 정도가 되면, 그때는 switch문을 사용하는것이 더 효율적일겁니다.

그리고, case 문 아래에 오는 break; 문은 강제사항이기 때문에 지우면 컴파일 오류가 발생하게 됩니다. 다만, case 문 다음에 오는 코드가 아예 없는 경우에는 코드와 break; 문을 삭제하여도 됩니다. (원활한 테스트를 위해 변수의 값을 1로 변경해 주세요)

int a = 1;

switch(a) {
    case 1:
    case 2:
        Console.WriteLine("2입니다.");
        break;
    case 3:
        Console.WriteLine("3입니다.");
        break;
    case 4:
        Console.WriteLine("4입니다.");
        break;
    case 5:
        Console.WriteLine("5입니다.");
        break;
    default:
        Console.WriteLine("해당하는 값이 없습니다.");
        break;
}

결과는 2입니다 라고 뜨게 됩니다. case문 아래에 break;가 없기 때문에, 자동으로 다음 case문과 합쳐지게 되기 때문입니다.

그럼 도데체 default 키워드는 무슨 일을 할까요? 어떠한 case문에도 만족되지 않으면 default 문에 있는 코드가 실행됩니다. 아까 작성한 윗윗코드는 a에 해당되는 case 문이 미존재하여, 해당하는 값이 없습니다. 가 뜨게 됩니다.


오늘은 이렇게 c#의 반복문에 대하여 알아보았습니다. 그럼 다음 시간에는 c#의 반복문과 goto문에 대하여 알아보도록 하겠습니다.

728x90

'코딩강좌 > c#' 카테고리의 다른 글

[c#] 클래스  (0) 2022.04.09
[c#] 반복문(break, continue, 그리고 goto문)  (1) 2022.04.08
[c#] 여러가지 연산자  (0) 2022.04.06
[c#] 변수와 상수, 그리고 스택과 힙  (0) 2022.04.05
[c#] 기본 자료형  (3) 2022.04.04