조건문 : 어떠한 조건에 따라 실행 할 문장이 달라지는 것, 그 조건이 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를 출력한 모습을 볼 수 있다.

'C#' 카테고리의 다른 글
[C#_7] 반복문 제어 (Break, Continue, goto) (0) | 2021.09.29 |
---|---|
[C#_6] 반복문(for,foreach,while,do while) (0) | 2021.09.24 |
[C#_4] 출력문, 입력문, 연산자, 문자열 보간 (0) | 2021.09.21 |
[C#_3] 변수, 자료형 (0) | 2021.09.12 |
[C#_2] 콘솔 출력 (0) | 2021.09.07 |