본문 바로가기

프로그램/유니티 C# 강좌

[유니티 C# 강좌] 9. 반복문(Repetitive Statement)

728x90
반응형

반복문이란 문이 일정한 규칙과 변화가 있을 때 반복적으로 수행하는 구문입니다.

만약 비슷한 작업이나 같은 작업을 반복적으로 하고 싶은 경우, 반복문을 사용하면 됩니다.

 

가장 쉬운 예는 같은 일은 반복하는 것입니다.

 

반복 수행 반복문
Debug.Log("0"); 
Debug.Log("1");  
Debug.Log("2");
for (int i = 0; i < 3; i++) 
 
    Debug.Log(i.ToString());  
}

 

 

for, foreach, while, do while 문이 있습니다.

 

 

1.  for 문

 

for 문은 일반적으로 카운터 변수를 이용하여 일정 범위 안에서 for 루프 블록을 실행합니다.

 

1.1 for 문 구조

 

사용 방법 : for문

for (초기화식조건식증감식)
{
    body
}

 

  • 초기화식 : 초기화식은 루프가 시작할 때 한번 실행됩니다. 로컬 루프 변수의 선언 및 초기화를 합니다.
  • 조건식 : 조건식은 부울 식입니다. 이 부울 식이 true이면 다음 루프 반복이 실행되고, false이면 루프가 종료됩니다.
  • 증감식 : 증감식은 루프의 본문을 반복할 때 수행되는 작업을 정의합니다.

 

예제 : 기본 for 문
for(int i = 0; i < 5; i++)
{
    Debug.Log(i.ToString()); // 출력 : 0 1 2 3 4 
}

 

 

for 문이 중첩으로 사용하게 되면 초기화식, 조건식, 증감식에 들어가는 변수 이름은 i, j, k, l .... 순으로 들어가는 것이 일반적입니다.

하지만, 중첩이 아니고 계속 for 문을 사용 할 경우 변수 이름 i를 계속 사용하시면 됩니다.

 

using UnityEngine; 

public class ForStatementExample : MonoBehaviour 
{ 
    void Start() 
    { 
        for (int i = 0; i < 5; i++) 
        { 
            for (int j = 0; j < 4; j++) 
            { 
                Debug.Log($"i =  {i} j = {j}"); 
            } 
        } 

        for (int i = 0; i < 5; i++) 
        { 
            Debug.Log(i.ToString()); 
        } 
    } 
}

 

 

1.2 Tab, Tab

 

비주얼 스튜디오에서 Tab, Tab은  코드 자동 완성 기능을 제공합니다.

코드 자동 완성 기능을 사용하기 가장 좋은 곳이 for 문입니다.

 

① for 를 쓰고 나서 Tab, Tab 키를 누르게 되면 자동으로 for 문이 완성됩니다.

 

 

 

② 자동 완성을 하게 되면, i 부분과 length 부분을 수정할 수 있습니다.

 

 

 

③ i와 length를 수정 한 뒤 사용하면 됩니다.

 

 

 

1.3 무한 for 문

 

무한 for 문은 for 문을 계속 돌릴 수 있는 방법입니다.

하지만, 무한 for 문의 사용을 권장하지는 않습니다.

잘 못 사용할 경우 무한 루프에 빠지게 되고, 그러면 CPU를 점령하게 되어 프로그램이 빠져나오지 못하는 경우가 발생합니다.

 

예제 : 무한 for 문

for( ; ; )
{
    // 무한 루프
}

 

 

2. foreach 문

 

fpreach 문은 배열이나 컬렉션과 같이 사용하여 각 인덱스를 하나씩 꺼내어 foreach 문 내의 블록을 순차적으로 실행합니다.

 

2.1 foreach 문 구조

 

사용 방법 : foreach

foreach (데이터-형식 변수-이름 in 배열-컬렉션)
{
    ... 변수-이름 ...
}

 

예제 : foreach

int[] numbers = new int[] { 1, 2, 34, 5 };

foreach (int number in numbers)
{
    Debug.Log($"{number} ");
}     

 

 

2.2 for vs. foreach

 

2.2.1 성능

 

반목문을 사용할 때 for문, 또는 foreach문을 사용할 수 있는데, C#에서는 foreach문이 내부적으로 최적화가 잘 되어서 성능이 좋다고 하고, 유니티에서는 for 문이 속도가 더 빠르다고 합니다.

 

하지만, for이나 foreach문에서 10개에서 20개 정도이면 아무것이나 사용해도 성능의 차이를 별로 느끼지 않습니다.

그냥 손에 익숙한 것을 사용하면 됩니다.

 

 

2.2.2 다차원 배열

 

다차원 배열(2차원 배열, 3차원 배열)을 사용할 경우, for 문은 차수만큼 루프를 돌리지만, foreach 문은 한 루프만 돌기 때문에 foreach 문을 사용하는 것이 좋습니다.

 

using UnityEngine; 

public class ForeachStatementExample : MonoBehaviour 
{ 
    void Start() 
    { 
        int[,] numbers = new int[,] { { 1, 2 }, { 34, 56 }, { 7, 89 } }; 

        for (int i = 0; i < numbers.GetLength(0); i++) 
        { 
            for (int j = 0; j < numbers.GetLength(1); j++) 
            { 
                Debug.Log($"{numbers[i, j]} "); 
            } 
        } 

        foreach (int number in numbers) 
        { 
            Debug.Log($"{number} "); 
        } 
    } 
}

 

 

3. while 문

 

while 문은 while 조건식이 true인 경우 블록을 실행되는 문입니다.

while 문은 조건식을 먼저 확인 후 while 블록으로 들어가기 때문에 while 블록이 0번 이상 실행됩니다.

 

사용 방법 : while 문

while (조건식)
{
    실행문;
}

 

using UnityEngine; 

public class WhileStatementExample : MonoBehaviour 
{ 
    void Start() 
    { 
        int n = 0; 
        while (n < 5) 
        { 
            Debug.Log(n); 
            n++; 
        } 
    } 
}

 

 

4. do while 문

 

do while 문은 먼저 do 문 다음의 블럭이 실행되고, while 문의 조건식을 검토하여 다음 루프를 실행할 것인지를 판단하여 true이면 실행하고, false이면 루프를 벗어납니다.

while 문과 다른 것은 적어도 1회의 실행을 하고 다음 루프문을 실행할지를 판단합니다.

 

사용 방법 : do while 문

do 
{
    실행문;
} while (조건식);

 

using UnityEngine; 

public class DoWhileStatementExample : MonoBehaviour 
{ 
    void Start() 
    { 
        int n = 0; 

        do 
        { 
            Debug.Log(n); 
            n++; 
        } while (n < 5); 
    } 
}

 

728x90
반응형