조건문과 반복문 특강
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");
}
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;
}
// 예시 (명령값이 없는 경우)
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번 반복
// 예시 (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++;
}
// 예시
for (count = 0; count < 10; count++)
{
Debug.Log("Wow Hello");
}
// 예시 (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문과 동일
Q. if 문에서 return을 사용하게 될 경우 불필요한 else는 스킵해도 될까요?
A. if 문에서 모든 조건에서 return이 되어야 하기 때문에 else도 사용해야 하며, else에도 return 값이 들어가야 함
Q. for문에서 생략 가능한 부분이 있나요?
A. 생략은 가능하지만 복잡하기 때문에 양식을 지켜주는 것을 적극 권장
Q. 가끔 var이 사용되지 않던데 어떨 때 사용 가능한가요?
A. 참조 형식이 아닌 값 형식일 때만 사용 가능
var -> 값
object -> 참조
T -> boxing, unboxing 없애라
Q. 그럼 foreach는 작동하는 중간에 특정 인덱스를 뽑아서 쓸수는 없나요? (예시 : 보유중인 아이템만 추리는 기능)
A. 중간에 뽑아 쓰려면 for문으로 사용해야 하지만, 무조건 한번 조회를 해야 하는 상태라면 foreach를 사용하는 것이 맞음
착용중인 모든 장비 확인 -> foreach문
특정부위 장착 장비 확인 -> for문
Q. foreach 쓰고 조건이 맞으면 break 로 탈출하면 안되나요?
A. 가능
foreach (var x in numbers) { if (x == 3) { Console.WriteLine(x); break; } }
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; } } }
int j = 0;
for(int i = 3; i <= 28; i++)
{
j = j + i;
}
Console.WriteLine(j);
// 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);
for (int i = 10; i >= 0; i--)
{
Console.WriteLine(i);
}