조건문 : 어떠한 조건에 따라 실행 할 문장이 달라지는 것, 그 조건이 True인지 False 인지를 구분하여 실행한다.


1. if , else 문

if문의 기본 형태

if(조건)
{
	조건이 True일시 실행되는 부분
}

if문의 기본 형태를 적어드렸는데요. 여기서 조건이라는 부분을 주목 해보셔야 합니다.

"조건이 True 일 때" 라는 부분에서 우리는 이 조건이 Boolean 값을 도출 해야 한다는 것을 알 수 있습니다.

[C#_4]에서 보았던 논리연산자 와 관계연산자가 이 if(조건 )부분에 많이 사용됩니다.

예시를 들어보겠습니다.

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            int a = 10, b = 5;

            if(a>b)
            {
                Console.WriteLine("a는 b보다 크다.");
            }

            if(a<b)
            {
                Console.WriteLine("b는 a보다 크다.");
            }
        }
    }
}

예시코드를 보면 아래쪽 if문은 전혀 필요가 없는 부분인 걸 알 수 있습니다.

조건이 False라서 실행되지 않을 뿐더러 굳이 쓰지 않아도 될 조건을 하나 더 적었다는 부분에서 입니다.

a와 b는 3가지 경우가 있습니다. a가 b보다 크거나, 작거나, 같다. 인데요.

무작위 숫자 a,b가 서로 같지 않을 때 조건은 두가지로 줄어듭니다. 크거나 또는 그 반대이거나.

이 부분을 우리는 굳이 조건을 적어주지 않고 else로 대체할 것 입니다. 

if (조건)
{
    조건이 True일 경우 실행할 문장
}
else
{
    if절의 조건이 False일 경우 실행할 문장
}

(if - else의 기본형태)

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            int a = 10, b = 50;

            if(a>b)
            {
                Console.WriteLine("a는 b보다 크다.");
            }
            else
            {
                Console.WriteLine("b는 a보다 크거나 같다.");
            }
        }
    }
}

else란?  내가 적어준 조건이 False일 때 실행되는 문장을 나타냅니다.

위 코드에서는 b를 50으로 바꾸어 보았습니다.

if문에서의 조건문이 False가 되면서 else문으로 넘어가게 됩니다.

이후 else출력이 진행됩니다.

 

하지만 우리가 항상 이렇게 두 가지 상황으로만 조건을 나누어 볼 수는 없죠.

더 많은 상황이나 조건을 고려해야 한다면 어떻게 해야 할까요?

그래서 우리는 else if문을 사용해야 합니다.

if(조건)
{
	if조건이 True일 때 실행되는 문장
}
else if(조건)
{
	if조건이 False이고 else if조건이 True일 때 실행되는 문장 
}
else
{
	위 모든 조건들이 False일 때 실행되는 문장
}

(else if의 기본형태)

위 형태를 따라 예를 코드로 작성해보면

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            int a = 10, b = 5;

            if(a>b)
            {
                Console.WriteLine("a는 b보다 크다.");
            }
            else if(a<b)
            {
                Console.WriteLine("b는 a보다 크다.");
            }
            else
            {
                Console.WriteLine("a와 b는 같다!");
            }
        }
    }
}

의 형태가 될 수 있을 것 입니다.

그렇다면 else if문은 하나만 적을 수 있는 걸까요? 코드로 보겠습니다.

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            int a = 10;
            int b = 10;

            if (a > b)
            {
                Console.WriteLine("a가 b보다 큽니다");
            }
            else if (a < b)
            {
                Console.WriteLine("a가 b보다 작습니다");
            }
            else if (a == b)
            {
                Console.WriteLine("a와 b는 같습니다");
            }
            else if (a + b == 20)
            {
                Console.WriteLine("a + b는 20입니다");
            }
            else
            {
                Console.WriteLine("?????");
            }
        }

    }
}

위 코드를 잘 보고 실행시켜보면 뭔가 이상한 부분이 있을 겁니다.

바로 4번째 else if문 a + b == 20 의 조건이 True임에도 불구하고 실행되지 않은 것 인데요.

이걸로 우리는 else if문은 위에서 부터 조건을 검사하여

가장 먼저 True인 코드를 실행하고 나머지 코드를 건너뛴다는 것을 알 수 있게 되었습니다.

 

※물론 if문장 안에 if, else if, else문을 넣는 것도 else문 안에 if, else if, else를 넣는 것도 가능합니다.

※이를 다중 if문이라고 합니다.

더보기
namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            int a = 10;
            int b = 10;

            if (a > b)
            {
                Console.WriteLine("a가 b보다 큽니다");
            }
            else
            {
                if(a<b)
                {
                    Console.WriteLine("a는 b보다 작습니다.");
                }
                else
                {
                    Console.WriteLine("a는 b와 같습니다.");
                }
            }
            
        }

    }
}

2. switch

switch문 또한 조건을 보고 True, False를 검사할 때 사용됩니다.

switch (조건)
{
    case 상수:
        실행코드;
        break;

    case 상수:
        실행코드;
        break;

    default:
        실행코드;
        break;
}

switch의 기본형태

 

if문이 조건을 그대로 써주었다면 switch문은 조건에 식을 넣고 그 값을 case 상수 부분에 넣어

True일 경우 코드를 실행합니다. 그 후 break; 를 통해서 switch문을 빠져나오게 됩니다.

만일 case 상수 부분이 모두 False가 된다면 default로 넘어가게 됩니다.

즉 default 부분이 if문의 else 부분인 것 입니다.

 

switch문의 예제를 보겠습니다.

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

            switch(a%2)
            {
                case 0:
                    Console.WriteLine("a는 짝수");
                    break;
                default:
                    Console.WriteLine("a는 홀수");
                    break;

            }
        }

    }
}

 3 % 2의 값은 1로 첫번째 case 문에 해당하지 않습니다.

모든 case문에 해당하지 않기 때문에 default로 넘어가게 되어 a는 홀수 가 출력됩니다.

 

※ switch()에 들어가는 모든 조건이 꼭 숫자일 필요는 없습니다.

※ stirng, char, bool값 역시 가능합니다.

더보기
namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            char day = 'D';

            switch(day)
            {
                case 'm':
                    Console.WriteLine("Monday");
                    break;
                case 't':
                    Console.WriteLine("Tuesday");
                    break;
                case 'w':
                    Console.WriteLine("Wednesday");
                    break;
                case 'T':
                    Console.WriteLine("Thursday");
                    break;
                case 'f':
                    Console.WriteLine("Friday");
                    break;
                case 'W':
                    Console.WriteLine("Weekend");
                    break;
                default:
                    Console.WriteLine("???");
                    break;
                
            }
        }

    }
}

코드에서 보는 char 변수 day는 D를 가지고 있다.

모든 case문에 속하지 않는 D를 조건으로 가진 Switch가 각 case들을 돌아본 뒤 모두 아닌 것이라 판단하고

default를 출력한 모습을 볼 수 있다.

 

+ Recent posts