{TIL} 조건문과 반복문

Kwaksang·2024년 4월 25일

TIL

목록 보기
8/37
post-thumbnail

조건문과 반복문 특강

Chpater .1 조건문

Content .1 조건문의 종류

  1. if
  2. switch

Content .2 if

  • if문의 형태
if (조건식) // ==, !=, <, <=, >, >=
{ 
    
}
// 예시 (2가지 상황)

int num = 5;

if ((num & 1) == 1)
{
    Console.WriteLine("Odd");
}
else
{
    Console.WriteLine("Even");
}
// 예시 (3가지 이상의 상황)

int num = 5;
// 나머지가 2, 1, 0
if (num % 3 == 0)
{
    Console.WriteLine("나머지가 0");
}
else if (num % 3 == 1)
{
    Console.WriteLine("나머지가 1");
}
else
{
    Console.WriteLine("나머지가 2");
}
  • 조건이 많을 때 if문이 switch문보다 유용함

Content .3 switch

  • switch문의 형태
switch ( )
{
    case 0;
        break;
}
// 예시 (기본 사용 형태)

int num = 5;

switch (num % 4)
{
    case 0;
        Console.WriteLine("나머지가 0");
        break;
    case 1;
        Console.WriteLine("나머지가 1");
        break;
    case 2;
        Console.WriteLine("나머지가 2");
        break;
    default;  // if문의 else역할
        Console.WriteLine("그 외 나머지");
        break;
}
// 예시 (변화 사용 형태)

int num = 5;

switch (num % 4)
{
    case 0;
        Console.WriteLine("나머지가 0");
        break;
    case 1;  // (num % 4 == 1 || num % 4 ==2)
    case 2;
        Console.WriteLine("나머지가 2");
        break;
    default;  // if문의 else역할
        Console.WriteLine("그 외 나머지");
        break;
}
  • 구분이 명확한 case가 많을 땐 switch문이 더 유용함

Content .4 중첩 허용성

  • 허용은 되지만 가독성이 떨어짐
  • 2D를 제작할 땐 최대 3중첩까지만 사용하는 것을 지향
  • 조건문은 최대한 중첩하지 않는 것을 지양

Chpater .2 반복문

Content .1 반복문의 요소

  1. 조건
  2. 명령

Content .2 while문의 형태

// 예시 (명령값이 없는 경우)

int count = 0;

while(count < 10)
{
    Debug.Log("Wow Hello");
}
// 카운트 10보다 작으면 반복
// 조건의 변함이 없기 때문에 무한히 반복하게 됨
// 예시 (정상적으로 사용한 경우)

int count = 0; // 초기값

while(count < 10) // 조건
{
    Debug.Log("Wow Hello");
    count++; // 명령
}
// 카운트가 0부터 1씩 상승하여 10보다 작은 9까지 총 10번 반복

Content .3 do while문의 형태

// 예시 (1)

int count = 11;

do
{
    Debug.Log("Wow Hello");
    count++;
}while(count < 10);

// 카운트 11은 do로 인해 무조건 1회는 실행됨
// 그 후 조건에 따라 반복문이 실행되지만 위 예시는 false로 변경되어 종료
// 예시 (위 do while문을 while문으로 변경)

int count = 11;
Debug.Log("Wow Hello");
while(count < 10)
{
    Debug.Log("Wow Hello");
    count++;
}

Content .4 for문의 형태

  • for (초기값 / 조건 / 증감)
// 예시

for (count = 0; count < 10; count++)
{
    Debug.Log("Wow Hello");
}

Content .5 foreach문의 형태

// 예시 (for문으로 리스트 구하기)

List<int> numbers = new List<int> {0, 1, 1, 2, 3, 5, 8, 13};

for(int i = 0; i < numbers.Count; i++)
{
    Console.WriteLine(numbers[i]);
}

// numbers[0] -> numbers[1] 순으로 [ ] 안의 값이 증가하며 반복
// numbers[0] : 0
// numbers[1] : 1
// ... numbers[7] : 13 순으로 위 리스트 값이 할당되어 계산됨
// 예시 (foreach문으로 리스트 구하기)

List<int> numbers = new List<int> {0, 1, 1, 2, 3, 5, 8, 13};

foreach (var x in numbers)
{
    Console.WriteLine(x);
}

// 산출되는 값은 for문과 동일

Chpater .3 질의응답

count .1 질의응답1

Q. if 문에서 return을 사용하게 될 경우 불필요한 else는 스킵해도 될까요?

A. if 문에서 모든 조건에서 return이 되어야 하기 때문에 else도 사용해야 하며, else에도 return 값이 들어가야 함

count .2 질의응답2

Q. for문에서 생략 가능한 부분이 있나요?

A. 생략은 가능하지만 복잡하기 때문에 양식을 지켜주는 것을 적극 권장

count .3 질의응답3

Q. 가끔 var이 사용되지 않던데 어떨 때 사용 가능한가요?

A. 참조 형식이 아닌 값 형식일 때만 사용 가능
var -> 값
object -> 참조
T -> boxing, unboxing 없애라

count .4 질의응답4

Q. 그럼 foreach는 작동하는 중간에 특정 인덱스를 뽑아서 쓸수는 없나요? (예시 : 보유중인 아이템만 추리는 기능)

A. 중간에 뽑아 쓰려면 for문으로 사용해야 하지만, 무조건 한번 조회를 해야 하는 상태라면 foreach를 사용하는 것이 맞음
착용중인 모든 장비 확인 -> foreach문
특정부위 장착 장비 확인 -> for문

count .5 질의응답5

Q. foreach 쓰고 조건이 맞으면 break 로 탈출하면 안되나요?

A. 가능

foreach (var x in numbers)
{
    if (x == 3)
    {
        Console.WriteLine(x);
        break;
    }
}

count .6 질의응답6

Q. 혹시 for문으로 배열에 있는 특정 수의 것들만 빼올 수 있나요??

A. 가능

int[] arr = {1, 2, 5, 7}
for(int i = 0; i < numbers.Count; i++) // for문 생략해도 가능
{
    foreach(int j in arr)
    {
        if(j == i)
        {
            Console.WriteLine(numbers[i]);
            break;
        }
    }
}

Chpater .4 과제

count .1 과제(1)

  • 3부터 28까지의 합 구하시오
int j = 0;

for(int i = 3; i <= 28; i++)
{
  j = j + i;
}
Console.WriteLine(j);

count .2 과제(2)

  • 배열 Arr의 값을 모두 더하시오
  • int[] arr = {3, 5, 6, -2, 7, 10};
// foreach를 사용한 방법

int[] arr = { 3, 5, 6, -2, 7, 10};
int j = 0;

foreach (int i in arr)
{
    j = j + i;    
}
Console.WriteLine(j);
// for를 사용한 방법

int[] arr = { 3, 5, 6, -2, 7, 10};
int j = 0;
for(int i = 0; i < arr.Count; i++)
{
  j = j + arr[i];
}
Console.WriteLine(j);

count .3 과제(3)

  • Quiz. 10부터 카운트 다운을 하시오
for (int i = 10; i >= 0; i--)
{
    Console.WriteLine(i);
}
profile
게임은 재미와 기능!

0개의 댓글