이 포스팅은 C#의 조건문 튜토리얼이다. 프로그램은 조건에 따라 분기하여 여러가지 결과로 분기된다. 영어로 contitional statement 라 하고 branch 라고도 한다. if 와 if- else ,switch case 문이 있다.
조건문을 사용하기 위해서는 비교연산자를 알아야 한다.
비교연산자 | 설명 |
== | 같다 |
!= | 같지 않다 |
> | 보다 크다 |
>= | 와 같거나 보다 크다 |
< | 보다 작다 |
<= | 와 같거나 보다 작다 |
비교 연산자는 두개의 항을 비교하여 참이면 true 를 거짓이면 false를 리턴한다. (bool형)수학의 = 같다 기호와 컴퓨터 언어의 == 같다 기호는 = 의 숫자에 차이가 있다. 프로그래밍에서는 = 는 대입 또는 할당 연산자라고 했다.
예를 들어 아래 예제 처럼 두개의 값을 비교 후 비교연산 값이 참이면 True를 거짓이면 False 를 리턴한다.
a = 5;
b = 5;
Console.Write(a == b)
결과값 : True
a = 7;
b = 5;
Console.Write( a < b) // a는 b 보다 크므로 거짓이다
결과값 : False
a = 9;
b = 4;
Console.Write( a != b) // a와 b 숫자는 다르다. 그러므로 참이다
결과값 : true
이제 이 비교연산자들을 사용해서 if 조건문을 만들어본다. if문은
if (조건식 , 비교연산)
{
코드블록
}
조건이 참이면 코드블록을 실행한다.
static void Main(string[] args)
{
int a = 5;
int b = 7;
if( a + b > 10)
{
Console.WriteLine("a와 b의 합은 10보다 크다");
Console.WriteLine($" a : {a} b: {b} a + b : {a + b}");
}
}
a 와 b 의 합이 12이므로 10보다 크다. 조건식이 참이므로 이 if문은 한번 실행된다. a의 숫자를 1이나 2로 바꿔서 실행해보면 아무것도 출력되지 않는다. if 문이 조건식을 확인하여 거짓으로 실행하지 않기 때문이다.
if 조건문의 확장판이다. else는 if 조건식이 false 인경우 실행시킨다. 조건식이 참이냐 거짓이냐에 따라 분기가 된다.
static void Main(string[] args)
{
int x = 9; // x를 바꿔서 실행해본다
if (x > 10)
{
Console.WriteLine("x는 10보다 크다");
}
else
{
Console.WriteLine("x는 10보다 크지 않다");
}
}
x가 10을 기점으로 두개로 분기한다. 그럼 x == 10 인 경우는 어떻게 되는가? x는 10보다 크지 않다가 출력된다. 크지 않다는 것은 같을 수도 있다는 말이기 때문이다. 숫자의 대소비교는 항상 (보다 크다, 보다 작다, 와 같다) 이 세가지 범위에 값이 들어간다.
그림으로 보면 이런 식이다. 처음 가운데에서 출발하여 중앙의 조건식을 확인하고 양쪽으로 분기한다.
두개의 분기만 사용하면 좀 부족하니까 여러개를 사용할 수 있다.
static void Main(string[] args)
{
int score1 = 80;
char grade;
if (score1 > 90)
grade = 'A';
else if (score1 > 80)
grade = 'B';
else if (score1 > 70)
grade = 'C';
else if (score1 > 60)
grade = 'D';
else
grade = 'F';
Console.WriteLine($"당신의 점수는 {score1} 이고 등급은 {grade} 입니다");
}
점수를 다르게 해서 입력해보면 원리를 잘 알 수있다. if-else 체인을 위에서 부터 차례로 검사하다가 조건식에 해당하면 그 코드블록을 실행시키고 종료한다. 아무 조건에도 해당하지 않으면 마지막에 else 문이 실행된다.
스위치 케이스 문은 조금 특이하게 생겼다. if문과는 다르게 case 는 하나의 값으로 비교한다.
static void Main(string[] args)
{
int number = 11;
switch (number)
{
case 1:
case 4:
case 6:
case 8:
case 10:
Console.WriteLine("The number is not prime!"); break;
case 2:
case 3:
case 5:
case 7:
Console.WriteLine("The number is prime!"); break;
default:
Console.WriteLine("Unknown number!"); break;
}
}
case 1,4,6,8,10 의 경우 case 10의 문장을 실행하고 종료한다. break가 switch case를 종료하는 지점이다.
case 2,3,5,7 의 경우 case 7을 실행한다. 값이 저 범위에 없으면 default를 실행하고 종료한다.
switch case 문은 조금 예전 문법처럼 느껴져서 잘 사용하지 않는다. 무엇보다 case 값이 많아지면 소스코드가 복잡해진다는 단점이 있다.
Fundamentals of Computer Programming with CSharp 의 Chapter 6 Loops 의 소스코드와 그래픽을 사용하여 작성하였다. (Free License)
https://introprogramming.info/