본문 바로가기
C# 기초문법

[c#] (3) 조건에따라 분기시키기 - if, switch

by novices 2022. 9. 8.
반응형

어떤 프로그램을 만들던지 조건에 따라 다르게 처리해야 하는 경우가 많습니다. 유저가 게임 내 상점에서 물건을 구매한다고 생각해보면 화폐가 충분할 때는 물건을 얻고 부족하면 물건을 구매할 수 없어야 합니다. 여기서 화폐의 양은 조건이 될 것이고 조건에 맞게 다르게 처리하여 프로그램을 작성합니다. 이번 시간에는 이러한 조건을 판단하고 분기시켜 처리하는 내용에 대해 알아보겠습니다.

 

 

1. if 문법

대표적인 분기 처리 문법인 if문 여러 형태로 사용 가능합니다. 가장 기본은 조건에 해당될 때 명령을 실행하는 것이고 추가로 처음 제시한 조건에 해당되지 않을 때 실행되게 하거나 조건을 여러 번 판별하는 방법도 있습니다.  아래는 기본이 되는 문법입니다.

bool 조건식 = true;

if( 조건식 )
{
	//조건에 맞을때 처리될 내용
}

 

문법 요점

  • 문법을 크게 보면 if, (조건), { 조건에 해당될 때 처리할 내용 }으로 나뉩니다.
  • 조건의 결과는 결국 true, false입니다.
  • 동작 흐름은 조건이 참일 경우 { }의 내용이 실행됩니다.

 

 

2. 조건 연산자

조건 연산자는 1항에서 이야기한 조건( ) 괄호 안에서 조건 판별을 위한 부등호입니다. 아래는 조건 연산자 표입니다.

a < b a가 b 보다 작다.
a > b a가 b 보다 크다.
a <= b a가 b보다 작거나 같다.
a >= b a가 b보다 크거나 같다.
a == b a와 b가 같다.
a != b a와 b가 같지 않다.

 

요점

  • 조건 연산자와 수학의 부등호의 표기 방법은 일부 다릅니다. 
  • 조건 괄호()에는 여러 조건 연산자(부등호)를 사용해 조건식을 입력합니다.

 

 

3. if, if-else, if-else if 특징과 추가 문법

1,2항에서 나열한 이야기를 기준으로 if문을 여러 형태로 사용하는 예시를 작성해보겠습니다.

추가되는 문법이 있지만 1항에서 배운 구조를 알고 있다면 쉽게 이해할 수 있습니다.

 

3-1. if문 사용 예시

가장 기본적인 형태로 if조건에 맞으면 { } 블록 안에 코드가 실행됩니다.

int a = 6;
int b = 3;

// 6이 3보다 크면 { }안에 내용을 실행해줘. 
if( a > b )
{
    Console.WriteLine("6이 3보다 큽니다.!!");
}

 

3-2. if-else문 사용 예시

if-else문은 if조건에 맞으면 if { } 블록이 실행되고 조건에 맞지 않으면 else { } 블록이 실행됩니다. 

int a = 6;
int b = 3;

// 6이 3보다 크면 if{ } 블럭이 실행
// 그게 아니면 else{ } 블럭이 실행
if( a > b )
{
    Console.WriteLine("6이 3보다 큽니다.!!");
}
else
{
    Console.WriteLine("6이 3보다 크지 않습니다.!!");
}

 

3-3. if-else if문 사용 예시

if-else if문의 조건을 여러 차례 확인하는 구조로 되어있으며 if조건을 확인하고 맞다면 if { } 블록이 실행되지만 조건에 맞지 않다면 else if()인 다음 조건을 확인하고 참이면 해당되는 else if { } 블록이 실행됩니다. 또한 else if구문은 여러 번 중첩이 가능합니다. if-else if문에서도 최종 else { } 블록을 추가하여 모든 조건에 충족 안될 때 else { } 블록을 실행할 수 있습니다.

 

if( a <= b )
{
    Console.WriteLine("6이 3보다 작거나 같습니다.!!");
}
else if( a == b )
{
    Console.WriteLine("6이 3과 같습니다.!!");
}
else if( a > b )
{
    Console.WriteLine("6이 3보다 큽니다.!!");
}
else
{
    Console.WriteLine("어떤 조건에도 해당되지 않습니다.!!");
}

 

3-4. 블록 생략

실행 구문이 한 줄 이면 블록은 생략이 가능합니다. 3-3 항목의 예시를 블록 생략한 코드입니다.

if( a <= b )
    Console.WriteLine("6이 3보다 작거나 같습니다.!!");
else if( a == b )
    Console.WriteLine("6이 3과 같습니다.!!");
else if( a > b )
    Console.WriteLine("6이 3보다 큽니다.!!");
else
    Console.WriteLine("어떤 조건에도 해당되지 않습니다.!!");

 

if, if-else, if-else if 특징 요점

  • if문은 묶음 중 하나의 { } 블록만 실행된다.
  • if문에 else { } 블록을 추가하여 조건에 해당되지 않는 코드를 실행할 수 있다.
  • else if문을 통해 조건을 여러 차례 판별할 수 있다.
  • else if문 또한 else { } 블록을 추가할 수 있다. 없어도 상관없다.
  • 블록의 실행 명령이 한 줄 일 경우 블록은 생략이 가능하다.

 

 

4. switch case 문법

switch문 또한 대표적인 분기문으로 if문과 다른 점은 조건이 아닌 값에 대한 기준으로 분기되는 것입니다. 다시 말하면 기준값을 넣고 그 값에 해당되는 case가 실행됩니다. case 옆에 붙는 값은 리터럴이며 프로그래밍에서 직접 값을 표시하는 단위를 뜻합니다. 값 끝에는 콜론을 추가합니다. 특이한 점은 case별로 실행코드 뒤에 break; 문을 넣어 조건값에 해당되는 명령문 실행 후 switch문을 종료시킵니다. 마지막에 있는 default는 if-else문의 else { } 블록에 대응되는 코드이며 조건값에 맞는 없이 없으면 default 하단의 명령줄이 실행됩니다. 아래는 기본 문법입니다.

int a = 6;

switch(a)
{
    case 1:
        Console.WriteLine("a는 1입니다.");
    break;
    case 2:
        Console.WriteLine("a는 2입니다.");
    break;
    case 3:
        Console.WriteLine("a는 3입니다.");
    break;
    default:
        Console.WriteLine("a는 1, 2, ,3이 아닙니다.");
    break;
}

 

문법 요점

  • switch문은 조건값에 대한 기준으로 분기하여 처리한다.
  • switch문의 조건값과 동일한 case 값에 코드가 실행된다.
  • case 문의 값은 리터럴로 값의 끝에 콜론을 표기한다.
  • case 문의 실행코드 뒤에 break문을 넣어 수동으로 switch문을 종료해야 한다.
  • switch문의 조건값이 어떤 case문의 값에도 해당되지 않는다면 default 구문의 명령이 실행됩니다.

 

 

5. 예시 코드 및 결론

예제에 사용되었던 코드입니다. 이번 포스팅에서는 조건에 따라 명령 구문을 분기시키는 방법에 대해 알아보았습니다. 1항부터 4항까지 있는 내용들을 예시 코드를 참고하여 코딩하고 실행해보시길 바랍니다.  다음 포스팅에는 반복적인 명령을 실행하는 방법에 대해 알아보겠습니다.

using System;

namespace Program
{
    class Program
    {
        static void Main(string[] args)
        {
            int a = 6;
            int b = 3;
            int c;

            if( a <= b )
            {
                Console.WriteLine("6이 3보다 작거나 같습니다.!!");
                c = 1;
            }
            else if( a == b )
            {
                Console.WriteLine("6이 3과 같습니다.!!");
                c = 2;
            }
            else if( a > b )
            {
                Console.WriteLine("6이 3보다 큽니다.!!");
                c = 3;
            }
            else
            {
                Console.WriteLine("어떤 조건에도 해당되지 않습니다.!!");
                c = 4;
            }

            switch(c)
            {
                case 1:
                    Console.WriteLine("a는 1입니다.");
                break;
                case 2:
                    Console.WriteLine("a는 2입니다.");
                break;
                case 3:
                    Console.WriteLine("a는 3입니다.");
                break;
                default:
                    Console.WriteLine("a는 1, 2, ,3이 아닙니다.");
                break;
            }

            Console.ReadLine();
        }
    }
}

 

 

반응형

댓글