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보다 큽니다.’
로 나옵니다.
코드를 함께 보도록 하겠습니다.
- 처음에는 정수형 변수 a와 b를 선언함과 동시에 50과 51의 값으로 각각 초기화하였습니다.
- if문을 이용하여 a와 b의 크기를 비교하는 연산자가 조건식에서 쓰입니다.
- 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)을 배우겠습니다!
Comments