스마트한 개발 공부/C#

[C#] 제어문(선택문 - 연산자, if, switch && 반복문 - for, while )

스마트한지노 2021. 8. 14. 18:24
728x90
반응형

C#에서는 제어문이 있다. 제어문은 선택문과 반복문으로 나눌 수 있다.

1. 선택문

선택문에는 "조건"이 따르게 되는데 이의 평가는 대부분 참/거짓으로 나오게 된다. 이를 C#에서는 연산자로 활용하여 표현한다. 

1.1 연산자

연산자는 결과가 참/거짓으로 나온다.

1.1.1 관계 연산자

관계 연산자는 피연산자들끼리의 관계를 나타내는 것이다. 흔히들 쓰는 크거나 작다, 같다, 같지 않다 등이 있다.
모든 기준은 좌측이 중심이다.

  • 종류 : > , < , >=, <=,!=

1.1.2 논리 연산자

조건을 여러 개 나열할 때 사용한다. 그리고, 또는, 아니다, 둘 중에 하나라도 아닐 때가 있다.

  • &&(AND: 둘 다 맞을 경우 true, 둘 중에 하나라도 아니면 false)
  • || (OR: 둘 중에 하나라도 맞으면 true, 둘 다 아니면 false) - 엔터 위에 \ 표시를 shift 버튼과 같이 나오면 나온다
  • ! (NOT: 아니라면 true, 맞으면 false)
  • ^ (XOR : 같으면 false, 다르면 false)

1.2 if문

우리가 일상에서 쓰는 것과 같이 만약에 "조건식"이 맞다면 괄호 안의 코드가 실행이 되고 아니라면 괄호 다음의 코드를 실행하지 않는 문법이다.  물론 아닐 경우에도 따로 코드를 지정할 수 있다.

int jumsu = int.Parse(Console.ReadLine());
string result;

if (jumsu >= 90)
	result = "A";
else if (jumsu >=80)
	result = "B";
else if (jumsu >= 70)
	result = "C";
else
{
    Console.WriteLine("당신은 낙제입니다")
    result = "F";
}
  • 조건문 안에 실행되는 코드가 한 줄이라면 ; 만 붙이면 되지만 아니라면 { }로 코드를 block 처리해야 한다.
  • else if로 여러 가지 조건을 줄 수 있다.
  • 모든 조건을 지나고도 조건에 맞지 않는 경우에는 마지막에 else로 그에 따른 결과를 줄 수 있다.
  • else if, else는 사용자의 선택에 따른 것이다. if 만 사용할 수도 있다.

if 문을 간단하게 사용하는 방법이 있다.

result = (jumsu >= 90) ? "A" : (jumsu >= 80 ? "B" : "F");

(조건식) ? 표현식1 : 표현식2 와 같이 사용할 수 있다. 하지만, 잘 사용하지 않는다.

1.3 switch문

if 문의 특수한 형태인데, switch문은 조건을 판단하는 기준이 상수일 때 쓰면 편리하다.

int jumsu = int.Parse(Console.ReadLine());
switch(jumsu / 10)
            {
                case 10:
                case 9:
                    result = "A"; break;
                case 8:
                    result = "B"; break;
                case 7:
                    result = "C"; break;
                case 6:
                    result = "D"; break;
                default:
                    result = "F"; break;
            }

위의 if문과 동일한 결과가 출력된다. int 형이기 때문에 정수만 반환된다. case 다음에는 무조건 상수가 와야 한다. case 아래에 결괏값을 넣고 break문을 넣어준다.  또 다른 예로는 가위바위보 같은 프로그램을 만들 때 가위에 1, 바위에 2, 보에 3과 같이 상수를 할당하고 사용할 수 있다. 

2. 반복문

2.1 증감 연산자, 대입 연산자

2.1.1 증감 연산자

  • ++ : 피연산자의 값을 1 증가시킨다
  • -- : 피연산자의 값을 1 감소시킨다

증감 연산자에는 전위/후위 표기법이 있다.
후위 표기법은 값이 평가된 후에 증가/감소시키는 것이고, 전위 표기법은 값을 먼저 증가/감소시킨 후에 값을 평가한다.

int n = 1;
int m = 1;

int k = ++n;
Console.WriteLine(k,n);  //k=2 n=2 전위증감연산자

int p = m++;
Console.WriteLine(p,m);  //p=1 n=2 후위증감연산자

2.1.2 대입 연산자

  • += : 우측의 값을 좌측의 값에 더해 그 결과를 좌측의 값에 대입한다.
  • -= : 우측의 값을 좌측의 값에 빼고 그 결과를 좌측의 값에 대입한다.
  • x= : 우측의 값을 좌측의 값에 곱하고 그 결과를 좌측의 값에 대입한다.
  • /= : 우측의 값으로 좌측의 값을 나누고 그 결과를 좌측의 값에 대입한다.
  • %= : 우측의 값으로 좌측의 값을 나눈 나머지를 좌측의 값에 대입한다.

2.2 for문

for(초기화; 조건식; 반복문) 구문;으로 사용한다.

//2개의 코드는 같은 결과 값이 나온다.
for (int i = 1; i <= 100; i++)
{
	if (i % 5 == 0)
	{
		tot += i;
	}
}


for (int i =5; i <=100; i+=5) // for문의 조건에 연산자 사용 가능!
{
	tot += i;
}

1부터 100까지의 숫자 중에서 5의 배수인 숫자의 합을 구하는 코드이다. for의 반복 조건에 증감 연사자를 사용할 수 있다. 

for문과 문법은 다르지만 비슷한 방식으로 더 간단하게 사용할 수 있는 foreach문이 있다.
foreach (변수명 in 표현식)으로 사용할 수 있다. 

//arr 배열의 모든 요소의 합 구하기
int[] arr = new int[5] { 1, 2, 3, 4, 5 }

for (int i = 0; i < arr.Length(); i++) // .Length()는 arr 배열의 수를 반환한다. 
{
	tot += arr[i];
}

foreach (int num in arr) //foreach는 index관리를 내부적으로 한다.
{
	tot += num;
}

foreach 같은 경우에는 표현식에 있는 데이터를 차례로 가져오기 때문에 for문보다는 간단하다.

2.3 while문

while문은 특정 조건을 만족할 때까지 조건식을 반복하는 함수이다.

// 조건을 직접 지정하기
int k = 1;
int tot = 0;
while (k < 6)
{
    tot += k;
    k++;
}
Console.WriteLine(tot);

// block 안에서 특정 조건에 맞을 때 break를 통해 while문 나가기
k = 1;
tot = 0;

while (true)
{
    tot += k;
    k++;
    if (k > 5)
        break;              
}
Console.WriteLine(tot);

//조건에 bool 타입의 변수를 true로 주고 특정 조건에 맞을 때 변수에 false를 줘서 while문 나가기
k = 1;
tot = 0;
bool result = true;
while (result)
{
    tot += k;
    k++;
    if (k > 5)
        result = false;
}
Console.WriteLine(tot);

while문도 여러 가지 방법으로 사용할 수 있다. break는 반복문을 바로 중지시키고 반복문에서 빠져나오는 메서드이다. 조건에 bool 타입의 변수를 주는 방법은 보통 이중 반복문을 빠져나올 때 사용한다. break는 가장 가까운 반복문을 나가는 함수이기 때문에 이중 반복문을 사용한다면 break로 2개를 동시에 빠져나올 수 없다. 

728x90
반응형