반복문(Loop statement)
(1) for 루프
: for 문은 카운터 변수를 선언한 다음, 이를 증가시키거나 감소시키면서 반복하고, 특정 조건에 벗어나면 반복을 중지하는 반복문이다.
[구조]
for (초기화; 조건식; 반복자)
{
//실행 코드
}
초기화 : 카운터로 사용할 변수 선언 _ 한번만 실행됨
조건식 : 반복을 유지할 수 있는 조건 작성 _ for 본문 실행 전에 실행됨, true일 경우 본문 실행하고 false일 경우 for문 종료
반복자 : for 본문 끝날 때마다 실행되는 코드
[예시 코드]
using UnityEngine;
public class ForExample : MonoBehaviour
{
void Start()
{
for (int i = 1; i < 6 ; i ++)
{
Debug.Log(i);
}
}
}
과정: for 문 진입 - 초기화 섹션 실행 - 조건식 검사 - 본문 실행 - 반복자 실행 - 조건식 거짓 될 때까지 실행
int i =1 초기화 섹션이 먼저 실행 -> 조건식 섹션 검사, i =1 이 5보다 작으므로 참이므로 -> 본문 진입, 실행: Debug.Log(i) -> 본문 종료 -> 반복자 섹션에서 i +1 증가 -> 조건식 섹션 검사, i =2 이 5보다 작으므로 참 -> 본문 진입 실행 및 종료 -> i=6이 될때까지 i 증가하면서 과정 반복, i=6이 될 경우 조건식 섹션에서 false, 종료됨
* 이 때 조건식에서 종결되지 않는 조건을 입력한다면 무한 루프가 발생할 수 있으므로 주의
(2) foreach 루프
배열이 담긴 요소들을 모두 출력하는 코드에서,
int[] numbers = {1,2,3,4,5};
for (int i = 0; i<numbers.Length ; i++)
{
Debug.Log(numbers[i]);
}
문제 : 배열의 모든 요소에 접근하기 위해 카운터 변수를 선언해야 하고, 조건식에 배열의 길이를 명시해야 하는 번거로움
[구조]
foreach (변수의_타입 변수의_이름 in 배열_또는_컬렉션의_식별자)
{
//실행 코드
}
해결 : foreach 문으로 간결해질 수 있음.
foreach : 여러 요소를 담고 있는 데이터 구조에 접근해 모든 요소에 차례대로 접근하는 반복문이다.
배열 말고도 컬렉션에서도 foreach 문을 자주 활용한다.
[예제]
using UnityEngine;
public class ForEachExample : MonoBehaviour
{
void Start()
{
int[] numbers = {1,2,3,4,5};
foreach (int item in numbers)
{
Debug.Log(item);
}
}
}
//실행결과
//1
//2
//3
//4
//5
foreach 문에 진입하면 numbers 배열에 담긴 값에 하나씩 접근해 이를 item이라는 변수에 할당한다.
그리고 item에 담긴 값을 출력하는 본문이 끝나면 item에 그다음 요소를 담아 다시 본문을 실행한다.
카운터 변수 선언할 필요가 없고, 배열 길이 고려할 필요가 없다. 그렇지만 for문에 비해 구현 자유도가 떨어진다(초기화,조건식 등 구현x)
(3) while 문
[구조]
while (조건식)
{
//실행 코드
}
while문에 진입하면 조건식이 참인지 검사한다.
조건이 참이라면 본문 실행, 거짓이라면 while루프를 빠져나간다. 본문이 끝나면 조건식으로 돌아가 반복한다.
[예제]
using UnityEngine;
public class WhileExampel : MonoBehaviour
{
void Start()
{
int i = 1;
while (i < 6)
{
Debug.Log(i)
}
}
}
while 문 진입 전 출력할 int 변수 값을 1로 초기화, while문 조건문 검사 참이므로 i 출력후 i +1 증가시켜 i<6일때까지 반복 후 i가 6이 될 때 본문 실행하지 않고 while문 빠져나감.
*for문 _ 초기화, 반복자 섹션 생략된것과 while문이 완전히 같음.
for ( ; 조건식; )
{
//실행 코드
}
while (조건식)
{
//실행 코드
}
(4) break 와 continue
break는 switch문이나 반복문에서 break를 만나면 빠져나갈 수 있다.
for, while, foreach 문의 반복문에서 사용가능
[예제]
using UnityEngine;
public class WhileExample : MonoBehaviour
{
void Start()
{
---
int counter = 1;
while (true)
{
if (counter > 5)
{
break;
}
Debug.Log(counter);
counter++;
}
}
}
//실행결과
//1
//2
//3
//4
//5
continue는 반복문에서만 사용가능
본문 끝 사이에 있는 코드를 건너뛰어 다음 반복으로 넘어가게 해준다.
[예제]
using UnityEngine;
public class WhileExample : MonoBehaviour
{
void Start()
{
---
int k = 1;
while (k <= 10)
{
if (k % 2 == 0)
{
k++;
continue;
}
Debug.Log(k);
k++;
}
}
}
//실행결과
//1
//3
//5
//7
//9
'Tech Review : Unity & C#' 카테고리의 다른 글
4. Argon Assault : Section Intro ~ Using GetAxis() For Movement (7) (0) | 2023.11.19 |
---|---|
C# 문법 : switch문, 컬렉션(배열, 리스트, 딕셔너리) (1) | 2023.11.11 |
4. Argon Assault : Unity's New Input System ~ Set Up Firing Input (0) | 2023.11.10 |
3. Project Boost : Add cheat / Debug Keys ~ Wrap Up (6) (0) | 2023.11.03 |
3. Project Boost : Switch Statements ~ Refactor With Extract Method (1) | 2023.11.02 |