C# 프로그래밍 5번째 시간 - 조건문

유니티의 다섯걸음, C# 공부시작 25일차

오늘은 조건문 (if~else문, switch문)에 대해서 배우겠습니다!

조건문은 말 그대로 조건을 만들어줍니다.
프로그램에서도 어떠한 조건을 형성을 해줘야되므로 조건문을 이용합니다.
if문부터 배우도록 하겠습니다.

1. if~else문 (만약에, 그렇지 않으면)

기본 구성은 이러합니다.

if (조건식) {
     // 조건이 참일 경우 실행될 문장 
}

이 조건식은 true 또는 false를 반환하는 논리 연산자나 관계 연산자가 자주 등장합니다.
여기 조건식에 올 수 있는건 true 또는 false의 값을 가지는 bool 형식이어야 됩니다.

예를 들어,

if (a > b) {
     Console.WriteLine("a가 b보다 큽니다."); 
}

이 형식에서 a가 b보다 클 때 이 문장을 실행시키는 겁니다. 즉, 위의 조건식이 참이 되어야 발동합니다.
만약 b가 a보다 크면 거짓(false)으로 인식하여 조건문을 무시합니다.

if 조건문을 이용하며 예제를 만들어보겠습니다.

[if 조건문만 활용한 예제]

using System;

namespace Study
{
	class Program 
	{
		static void Main(string[] args) 
		{ 
			int a = 50;
			int b = 51;
			
			if (a < b) // 참고: 실행될 문장이 한줄이라면 괄호가 없어도 됨. 
			   Console.WriteLine("b가 a보다 큽니다."); 
			if (a > b) 
			   Console.WriteLine("a가 b보다 큽니다.");
		} 
	}
}

이에 따른 결과는 ‘b가 a보다 큽니다.’ 로 나옵니다.

코드를 함께 보도록 하겠습니다.

  1. 처음에는 정수형 변수 a와 b를 선언함과 동시에 50과 51의 값으로 각각 초기화하였습니다.
  2. if문을 이용하여 a와 b의 크기를 비교하는 연산자가 조건식에서 쓰입니다.
  3. b(51)이 a(50)보다 크므로 결과에서 “b가 a보다 큽니다.”라고 출력됩니다.

이렇게 코드를 이어나가도 되지만 if(a<b) 조건문을 썼을때, 그다음 if(a>b) 조건문을 이용하였는데, 사실상 이는 필요가 없습니다.
여기서 if(a<b) 역할은 누가누가 큰지 판별을 해주는 역할을 합니다.
그러니 다시 if(a>b) 조건문을 넣어서 판별을 추가적으로 할 필요가 없습니다.

여기서 else문을 활용합니다.
else문은 ‘그렇지 않으면~’의 구간으로 시작합니다.
a<b가 거짓이면 else문의 문장을 실행시킵니다. else문의 형태는 이러합니다.

if (조건식) {
    // 참일 경우에 실행될 문장 
} else {
    // 위의 조건식에 아무것도 해당하지 않을때 실행될 문장
}

그럼 else문을 배웠으니, 앞에 이용했던 if 조건문에서 else문을 조금 바꾸도록 하겠습니다.

[if문과 else문의 예제]

using System; 

namespace Study
{ 
	class Program 
	{ 
		static void Main(string[] args) 
		{ 
			int a = 50; 
			int b = 51;
			
			if (a < b)
			   Console.WriteLine("b가 a보다 큽니다."); 
			else 
			   Console.WriteLine("a가 b보다 큽니다."); 
		}
	}
}

여기서 또 문제가 발생합니다.
if(a<b)에서 b가 a보다 크지 않으면 else문으로 넘어가는데, a와 b가 같을 경우도 있습니다.
이 때문에 if문과 else문 사이인 else if문을 활용합니다.

else if문의 기본적인 사용 형식은 이러합니다.

if (조건식) {
    // 참일 경우에 실행될 문장 
} else if (조건식) {
    // 참일 경우에 실행될 문장 
} else { 
    // 위의 조건식에 아무것도 해당하지 않을때 실행될 문장
}

이를 활용하여 다시 예제를 작성해보겠습니다.

[최종 if~else 예제]

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 

namespace Study
{
	class Program
	{ 
		static void Main(string[] args) 
		{ 
			int a = 50;
			int b = 50;
			if (a < b) // a가 b보다 작을 경우! 
			   Console.WriteLine("b가 a보다 큽니다."); 
			else if (a == b) // a와 b가 같을 경우! 
			   Console.WriteLine("a와 b는 서로 같습니다."); 
			else // 그 외의 경우! 
			   Console.WriteLine("a가 b보다 큽니다.");
		}
	}
}

이에 따른 결과는 ‘a와 b는 서로 같습니다.’로 나옵니다.

이게 최종적인 if~else문의 예제입니다. 여기서 추가적으로 if문의 중첩을 배우겠습니다.

if문의 중첩 -> 맨 처음 if문만을 사용했을 때의 예제가 아닌, if문 안에 새로운 if문이 들어가 있는 겁니다.

if문 중첩을 이용한 예제를 만들어보겠습니다.

[if문 중첩을 활용한 예제]

using System; 

namespace Study
{ 
	class Program 
	{ 
		static void Main(string[] args) 
		{ 
			int a = 50; 
			if (a > 0) { 
				Console.WriteLine("a는 양수입니다."); 
				if (a > 30) Console.WriteLine("a는 30보다 큽니다."); 
				} else 
				     Console.WriteLine("a는 양수가 아닙니다."); 
		}
	}
}

이에 따른 결과는 ‘a는 양수입니다. a는 30보다 큽니다.’로 나옵니다.

if문 안에 또 if문을 사용한 형태입니다. 이 중첩은 여러번 가능합니다.
첫 if문에서는 양수인지 판별을 하는 것을 이용한 것이고, 두번째 if문은 a가 30보다 큰지 아닌지 판별하는 용도로 이용하였습니다.

2. switch문 (+break)

이번에는 switch문에 대해서 배우겠습니다. switch문은 if문과는 달리 조건식의 결과를 여러개 만들 수 있습니다.

기본적인 switch 형태는 이렇습니다.

switch (조건식) { 
   case 상수: // 만약 조건식의 결과가 이 상수와 같다면! 
      // 실행될 코드 
      break; // 탈출! 
   case 상수: 
      // 실행될 코드 
      break; 
   ...
}

이를 활용하여 예를 만들어보겠습니다.

switch (a % 2) { 
	case 0: 
	   Console.WriteLine("짝수입니다!"); 
	   break; 
	case 1: 
	   Console.WriteLine("홀수입니다!"); 
 	   break; 
}

조건식에 a%2가 온다고 하고 a의 값 13을 넣었을때, 홀수인지 짝수인지 구별해주는 문장입니다.

여기서 case는 a를 2로 나눴을때 나머지 값이 0,1에 따라서 만든 것입니다.
이 문장을 실행시킨 후, break문을 이용하여 탈출합니다.
1이면 case 1:로, 0이면 case 0:으로 이동합니다.
중요한 것은 switch문은 정수, 문자, 문자열 형식만 지원합니다.

break문 또한 중요합니다. C언어에서는 break문을 이용하지 않았을 때 아래 영역까지 모조리 실행을 시키는 일이 발생했지만, C#에서는 오류로 아예 실행할 수 없게 만듭니다.
break문을 통해서 우리가 작성한 코드를 실행한 뒤, 그 영역에서 빠져나오기 위해 작성해주는 문장입니다.
나중에 반복문에서도 또 만나볼 일이 있습니다.

이번에는 switch문을 활용하여 요일을 판별하는 예제를 만들겠습니다.

[문자열 switch문을 이용한 예제]

using System; 
namespace Study
{ 
	class Program 
	{ 
		static void Main(string[] args) 
		{ 
			String day = "수"; 
			
			switch (day) 
			{ 
				case "일": 
				   Console.WriteLine("일요일"); 
				   break; 
				case "월": 
				   Console.WriteLine("월요일"); 
				   break; 
				case "화": 
				   Console.WriteLine("화요일"); 
				   break;
				case "수": 
				   Console.WriteLine("수요일"); 
				   break; 
				case "목": 
           Console.WriteLine("목요일"); 
				   break; 
				case "금": 
           Console.WriteLine("금요일"); 
				   break; 
				case "토": 
           Console.WriteLine("토요일"); 
				   break; 
				default: 
				   Console.WriteLine("아무 요일에도 해당하지 않습니다.");
				   break; 
			}
		}
	}
}

이에 따른 결과는 ‘수요일’ 이라고 나옵니다.
문자열 변수 day에 있는 값에 따라서 switch문에서 설정한 case로 이동합니다.
default문본인이 설정한 case들 중 어느쪽에서 속하지 않을때 이 영역으로 이동하게 됩니다.
if문의 else와 비슷한 느낌입니다.

마무리하며

오늘은 조건문에 대해서 배웠습니다. 생각보다 간단한 것 같지만,
이는 나중에 코딩을 제대로 할 때 무조건적으로 사용할 것이기 때문에 확실히 이해하고 넘어가겠습니다!
다음 시간에는 반복문(while, do, for)을 배우겠습니다!

Categories:

Updated:

Comments