XR 플밍 - 1. 프로그램 언어 기초 (3-1) - 반복문, for문과 while문(3/13)

이형원·2025년 3월 13일
0

XR플밍

목록 보기
6/215

반복문
컴퓨터에게 반복되는 행동을 지시하기 위해 사용하는 구문

1. For 문

초기값(초기화), 조건식, 증감 연산으로 구성된 반복문

1) 기본 형태

for(초기식; 조건식; 증감식)
{
	(실행내용);
}
  • 초기식 : 반복을 어디부터 시작할지?
  • 조건식 : 반복을 어디까지 할지?
  • 증감식 : 초기식을 조건식 조건까지 증가 혹은 감소

ex) 기본 사용 예시

for (int i = 0; i < 10; i++) // 10회 반복
{
	Console.Writeline("똑같은 작업");
}

위 예시의 출력은 아래와 같다

똑같은 작업
똑같은 작업
똑같은 작업
똑같은 작업
똑같은 작업
똑같은 작업
똑같은 작업
똑같은 작업
똑같은 작업
똑같은 작업

또한 증감식을 감소하는 방식으로 사용하면 아래와 같은 예시도 가능하다.

ex) 카운트다운

for (int i = 5; i > 0; i--)
{
    Console.WriteLine("카운트 다운 {0}", i);
}

이 경우 결과는 '카운트 다운 5', '카운트 다운 4', '카운트 다운 3', '카운트 다운 2', '카운트 다운 1' 이 순차적으로 출력된다.

2) 반복문 안의 조건문

반복문 안에 조건문을 삽입하여 조건문을 반복하는 것이 가능하다.

ex) 삼육구 삼육구

Console.WriteLine("삼육구 삼육구, 삼육구 삼육구");

for (int i = 1; i <10; i++)
{
    if(i % 3 == 0)
    {
        Console.WriteLine("짝");
    }
    else
    {
        Console.WriteLine(i);
    }
}

이 경우 두 자리 수 이상으로 갔을 때 조정이 필요한 경우이지만 간단하게나마 표현해 보았다.
해당 코드를 실행하면 아래와 같이 결과가 출력된다.

3) 반복문 속의 반복문

반복문 안에 반복문을 삽입하여 기능 구현이 가능하다.

ex) 구구단

Console.WriteLine("구구단\n");

for(int i = 2; i < 10; i++) // 1단은 진행할 필요가 없으므로 2단부터 진행
{
    Console.WriteLine($"{i}단");
    for(int j = 1; j < 10; j++)
    {
        Console.WriteLine($"{i} x {j} = {i*j}");
    }
    Console.WriteLine(); // 가독성을 위한 줄바꿈
}

출력은 2단에서 9단까지 나온다. 그 일부가 아래와 같이 출력된다.

2. While 문

조건식의 true, false에 따라 블록을 반복하는 반복문

1) 기본 형태

while(조건)		// 조건이 false가 되기 전까지 무한 반복
{
	(실행내용);
}

ex) 동전 교환기

int coin = 500;

while(coin > 0)
{
    Console.WriteLine("100원 동전을 꺼냅니다.");
    coin -= 100;
}

단순한 상황을 가정하고 작성한 코드이다.
투입한 돈(500원) 만큼 100원 동전을 꺼내는 기능을 구현하였다.

2) For 문과 While 문의 차이

  • For 문은 초기식, 조건식, 증감식 등 정해줘야 하는 조건이 많으므로,
    반복 범위가 정해져 있을 경우 유용하게 사용할 수 있다.
  • While 문은 조건이 false 가 될 때까지 반복하는 방식이므로,
    반복 범위가 정해져 있지 않을 경우 유용하게 사용할 수 있다.

다만 사용 방식이 정해져 있는 것은 아니며, 상황에 따라 적재적소로 활용하는 것이 좋다.
해당 내용은 참고만 하도록 한다.

*while을 게임 제작에 적용할 수 있는 방법?

-플레이어의 hp가 0 이상일 때 게임을 계속 진행할 수 있도록?
-제한시간이 0 이상일 때는 게임을 계속 진행할 수 있도록?
-자동사냥 기능이 켜져 있을 때 사냥을 계속 반복하도록?

3) do while 반복문

블록을 한 번 실행 후 조건식의 true, false에 따라 블록을 반복하는 반복문
(자주 사용하지는 않는 방식이지만, 알아두면 좋다)

  • 기본 형태
do
{
	(실행내용);
} while(조건식);

*while과의 차이
while은 조건을 확인 한 후 실행을 하지만, do while은 조건을 확인하기 전 1번을 실행하고, 조건에 따라 반복한다.

대표적인 사용 예시 : 로그인 화면에서 로그인 실패했을 시 성공할 때까지 로그인 실패 화면 띄우기
-> 이 경우에는 바로 로그인 실패 창이 띄워져서는 안 되며,
한 번 입력을 받고 로그인 실패 창이 띄워져야 하므로 do while 문을 사용한다.

ex) 1에서 9까지의 수 중 하나를 입력하면 종료 - 다만 사용자가 계속 틀린다는 상황을 가정

int choice;

do
{
    Console.Write("1에서 9 사이의 수를 입력하세요 : ");
    string input = Console.ReadLine();
    int.TryParse(input, out choice);
} while ((1 <= choice && choice <= 9)==false);

처음 실행할 때 "1에서 9 사이의 수를 입력하세요 : "를 출력하고서 입력값을 받아야 하므로,
do while 문을 활용하였다.

3. Break 와 Continue

1) Break

루프가 즉시 종료되는 키워드로, 가장 가까운 반복문을 종료시킨다.

ex) 인벤토리의 특정 칸에 있는 포션을 찾고, 사용하는 과정

int potionPos = 220;	// 포션이 220번째 인벤토리 칸에 있음

for (int i = 1; i < 1000; i++)	// 인벤토리 칸이 999칸까지 있음
{
    Console.WriteLine("{0}번째 칸에 포션이 있는지 확인합니다.", i);
    if(i == potionPos)
    {
        Console.WriteLine("포선을 찾았습니다.");
        Console.WriteLine("포션을 사용합니다.");
        break;	// 실행 시 중단
    }
}

이 때, 포션을 찾은 220번째 칸에서 포션을 찾았고, 사용하게 될 것이다. 하지만 여기에서 반복문을 중단시키지 않으면 다시 인벤토리를 999칸까지 찾을 것이므로, break; 로 반복문을 종료한다.

ex) 턴제 게임에서 적과 조우했을 경우 행동 선택

while(true)
{
    Console.WriteLine("행동을 선택하세요 : ");
    Console.WriteLine("1. 공격한다.     2. 방어한다.    3. 도망친다");
    string input = Console.ReadLine();

    if (input == "1")	// 공격했을 시
    {
        Console.WriteLine("플레이어가 공격합니다.");
    }
    else if (input == "2")	// 방어했을 시
    {
        Console.WriteLine("플레이어가 방어합니다.");
    }
    else if (input == "3")	// 도망쳤을 시
    {
        Console.WriteLine("플레이어가 도망칩니다.");
        break;
    }
    else	// 입력 자체가 잘못 되었을 시
    {
        Console.WriteLine("잘못 입력했습니다");
    }
    Console.WriteLine();
}

플레이어가 적에게서 도망쳤을 시에 행동 선택이 계속해서 출력되면 안 되므로 break;를 걸었다.

2) Continue

다음 반복을 시작하는 키워드로, 가장 가까운 반복문의 새 반복을 시작한다.
(반복할 때 특정 구간을 실행하지 않음(생략함))

ex) 아군(짝수)를 제외한 적(홀수)만 공격

for (int i = 1; i <= 8; i++)
{
    if (i % 2 == 1)
        continue;

    Console.WriteLine("{0}번 클레이어를 공격합니다.", i);
}

if 문에 부합하는 조건을 가진 번호는 Console.WriteLine(); 이 실행되지 않고 반복문을 넘어가게 된다.

실행 결과

ex) 4번 플레이어가 무적, 6번 플레이어가 내 캐릭터이다

for (int i = 1; i <= 8; i++)
{
    if (i == 4)	// 4번 플레이어 무적
    {
        Console.WriteLine("4번 플레이어는 무적이라 공격할 수 없습니다.");
        continue;
    }
    if (i == 6)	// 6번 플레이어 본인
    {
        Console.WriteLine("플레이어 본인을 공격할 수 없습니다.");
        continue;
    }

    Console.WriteLine("{0}번 클레이어를 공격합니다.", i);
}

실행 결과

  • 반복문의 응용 방법
    1. 무한 입력의 상황
      : 잘못 입력했을 시 제대로 입력할 때까지 무한으로 입력할 수 있게 만드는 코드문 작성
    2. 마을/사냥터/상점 이동
      마을갔다가 사냥터 갔다가 마을 갔다가 상점 갔다가 돌아가고 이런 식으로 할 때 무한 입력 사용 가능
profile
게임 만들러 코딩 공부중

0개의 댓글