내일배움캠프/IL

[내배캠][Unity_6기][IL] C# 제어문

binary는 호남선 2024. 8. 30. 20:45

조건문

if else

- 기본 형태

if (조건)
{
    // 괄호 안의 조건을 만족하면 아래 내용 실행
    실행 내용
}
// 처음 if 문을 만족하면 아래 내용 실행 x
// 처음 if 문을 만족하지 않으면 else if 검사
else if (추가 조건1)
{
  // 추가 조건1을 만족하면 아래 내용 실행
  실행 내용
}
// 추가 조건1을 만족하면 아래 내용 실행 x
// 추가 조건1을 만족하지 않으면 else if 검사
else if (추가 조건2)
{
  // 추가 조건2를 만족하면 아래 내용 실행
  실행 내용
}
// 추가 조건2를 만족하면 아래 내용 실행 x
// 추가 조건2를 만족하지 않으면 else 내용 실행
else
{
   실행 내용
}

- 위 조건들 중 조건을 만족하는 하나만 실행

int score = 50;

if (score > 90)
    Console.WriteLine("A");
else if (score > 80)
    Console.WriteLine("B");
else if (score > 70) 
    Console.WriteLine("C");
else if (score > 60)
    Console.WriteLine("D");
else
    Console.WriteLine("F");	// F 출력됨

 

- 여러 조건을 모두 체크해야하는 경우는 if를 여러번 사용

int num = 100;

if (num > 10)
    Console.WriteLine("num은 10보다 크다.");

else if (num > 20)
    Console.WriteLine("num은 20보다 크다."); // 실행 X

if (num > 20)
    Console.WriteLine("num은 20보다 크다."); // 실행 O

switch case

- 하나의 변수를 기준으로 조건 체크

- 기본 형태

switch (조건 변수)
{
    case 상수조건1:
        실행내용
        break;

    case 상수조건2:
        실행내용
        break;

    case 상수조건3:
        실행내용
        break;
}

- 상수 조건은 고정된 상수여야 함, 변수 불가능, 중복 불가

int num = 3;

switch (num)
{
	case 1:
        Console.WriteLine("도");
		break;
    case 2:
        Console.WriteLine("개");
        break;
    case 3:
        Console.WriteLine("걸"); // 여기만 실행
        break;
    case 4:
        Console.WriteLine("윷");
        break;
    case 5:
        Console.WriteLine("모");
        break;
    default:
        Console.WriteLine("다시 던지기");
        break;
}

switch case 와 if else

[ switch case를 쓰면 좋은 경우 ]

- 하나의 변수에 대해 많은 조건을 비교해야 할 때

[ if else를 쓰면 좋은 경우 ]

- 복잡한 조건을 사용할 때

- 특정 값이 범위에 있는지 확인할 때

- 참거짓을 판별할 때

 

자주하는 실수

=(등호) 대입 연산자와 == 같음 연산자는 서로 기능이 다름

조건문에 대입 연산자로 논리식을 작성하지 않도록 주의

int num = 10;

if (num = 10)   // ERROR!
    Console.WriteLine("num은 10입니다");

if (num == 10)
    Console.WriteLine("num은 10입니다");

반복문

- 어떤 일을 여러번 반복해서 수행하게 만드는 문법

for

- 기본 형태

for (초기화식 ; 조건식변화식)
{
   실행 내용
}

[ 실행 과정 ]

- 초기화식은 한번만 실행

- 조건식 검사 후 만족하면 내용 실행

- 변화식 실행

- 조건을 만족하지 않아 종료할 때 까지 반복

 

- 일반적인 반복문으로 많이 활용

- 반복할 범위가 정해져 있는 경우에 사용

for (int i = 1; i < 10; i++)
{
    Console.Write(i);
}
// 출력 : 123456789

while

- 기본 형태

초기화식
while (조건식)
{
    변화식
    실행 내용
}

- 초기화식은 while 외부에서 실행

- 조건식을 만족하면 내부 내용을 실행

- 변화식은 while 내부에서 실행

 

- 초기화식과 변화식 없어도 실행 가능(대신에 종료 조건을 반드시 만족하는 로직 필수)

- 반복해야할 범위나 횟수가 정해져 있지 않을 때 사용

- 종료 조건이 외부 요인에 의해 결정될 때 사용

int i = 1;
while (i < 10)
{
    Console.Write(i);
    i++;
}
// 출력 : 123456789

do while

- while와 유사

- 조건을 체크하지 않고 while 내부 내용을 최소 한번은 실행

- 기본 형태

do
{
   실행 내용
}
while (조건);
int i = 1;
do
{
    Console.Write(i);
    i++;
} while (i < 10);
// 출력 : 123456789

// 조건을 만족하지 않아도 반드시 1번은 수행되는 것에 주의
int j= 10;
do
{
    Console.Write(j);
    i++;
} while (j < 10);
// 출력 : 10

무한 루프

- 반복문에서 종료 조건이 없거나 조건을 만족하지 못해 계속 반복되는 현상

- 프로그램이 중단되므로 무한 루프가 발생하지 않도록 주의

- 반복문을 사용할 때 종료 조건 만족할 수 있는지 꼭 확인하기

- 예시)

for (int i = 0; i < 10; i--)
{
    Console.WriteLine(i);
    // 0부터 1씩 작아지는 수를 출력하다 종료
}

bool isSuccess = false;
while(!isSuccess)
{
    Console.WriteLine("실패");
    // 계속 실패를 출력하다 종료
}

한줄 쓰기

- 중괄호 사용하는 문법들은 기능이 한줄로 끝나는 경우 중괄호 생략 가능

조건 제어

break

- 실행하고 있는 구문을 종료

switch case

- 각 case 구문 종료에 break 사용

int num = 3;

switch (num)
{
	case 1:
        Console.WriteLine("도");
		break;
    case 2:
        Console.WriteLine("개");
        break;
    case 3:
        Console.WriteLine("걸"); // 여기만 실행
        break;
    case 4:
        Console.WriteLine("윷");
        break;
    case 5:
        Console.WriteLine("모");
        break;
    default:
        Console.WriteLine("다시 던지기");
        break;
}

for

- break가 실행되면 반복문을 종료

- 중첩 for의 경우에 가장 가까운 for의 반복만 종료

for (int i = 1; i < 5; i++)
{
    if (i == 3)
        break;
    Console.WriteLine(i);
    // 1~2까지만 반복
}

for (int i = 1; i < 5; i++)
{
    for (int j = 1; j < 5; j++)
    {
        if (j == 3)
            break;
        Console.WriteLine($"i : {i}, j : {j}");
    }
    // i는 1~4까지 정상적으로 반복
    // j는 break로 인해 1~2까지만 반복
}
1
2
i : 1, j : 1
i : 1, j : 2
i : 2, j : 1
i : 2, j : 2
i : 3, j : 1
i : 3, j : 2
i : 4, j : 1
i : 4, j : 2

continue

- 반복문에서 해당 반복을 실행하지 않고 넘기기

// 0 ~ 9사이의 짝수만 출력
for (int i = 1; i < 10; i++)
{
    if (i % 2 != 0)
        continue;
    Console.Write(i);
    // 출력 : 2468
}