C#/문법 정리

C# - 무한루프와 break문

Khadra 2024. 8. 6. 08:21

보통 경우에 따라 몇번 반복할지 모를 때가 있다.
이런 경우에는 반복문을 무한이 계속하면서 반복문 안에서 끝나는 조건을 체크하여 조건이 맞으면 빠져나오게 한다.


무한루프

  • 반복되는 반복문을 의미.
  • 보통 while문과 for문으로 만든다.

while문

  • 만드는 무한루프는 반복조건이 항상 true로 만들어 while(true) { } 의 형태가 된다.

for문

  • for( ; ; )의 형태로 무한루프를 만들 수 있다.

break문

  • 루프를 빠져나올 때 사용.

예제 코드

첫 날 1000원을 저금하고 매일 전 날의 두 배씩을 저금한다고 하면 몇일 만에 100만원을 저금 할 수 있는지 계산하는 프로그램 만들기

using static System.Console;//Console단어를 생략(코드길이줄어둠)
namespace ConsoleApp1
{
  class Program
  {
    static void Main(string[] args)
    {
      //총 저금액 sum을 정의하고 0으로 초기화한다.
      int sum = 0;

      //days는 며칠째인지를 표시하는 변수로 
      //1로 초기화하고 반복될 때마다 1씩 증가한다.
      int days = 1;

      //money는 저금액을 의미하는 변수로 
      //첫날 1000원에서 반복될 때마다 두 배씩 증가한다.
      int money = 1000;

      //while(true)는 조건식이 
      //항상 true이므로 무한이 반복되는 루프이다.
      while(true)
      {
        //sum에 money를 더해준다.
        sum += money;

        //며칠째인지(days)와 그날의 저금액(money)과 
        //총 저금액(sum)을 출력한다.
        WriteLine("{0,2}일차 : {1,8:C}, 
                  sum = {2,11:C}", days, money, sum);

        //총 저금액이 1000000보다 큰지 비교하여 더크면 
        if (sum >= 1000000)
        {
          //break문을 사용하여 while문을 빠져나간다.
          break; 
        }

        //반복될때 마다 days를 하나 증가시키고 
        days++;

        //money는 2배로 만든다.
        money *= 2;
      }

      //break에 의해 while문이 끝나면 며칠만에
      //총 저금액이 얼마인지 출력한다.
      WriteLine("{0}일차에 {1:###,###}원이 됩니다.", days, sum);

      //while문과 같은 동작을 하는 for문으로 만든 반복문이다.
      //sum,days,money를 초기화하고 반복할 때마다
      //days++,money *= 2로 바꾼다.            
      for(sum = 0, days = 1, money = 1000; ; days++, money *= 2)
      {
        sum += money;
        WriteLine("{0,2}일차 : {1,8:C}, 
                  sum = { 2, 11:C}", days, money, sum);

        //while문과 같이 sum이 1백만보다 크면 
        if (sum >= 1000000)
        {
          //break로 for문을 빠져나온다.
          break;
        }
      }

      //며칠 만에 총 저금액이 1백만원이 넘는지,
      //그리고 그게 얼마인지 출력한다.
      WriteLine("{0}일차에 {1:###,###}원이 됩니다.", days, sum);
    }
  }
}

결과

 1일차 :     ₩1,000,   sum =      ₩1,000
 2일차 :     ₩2,000,   sum =      ₩3,000
 3일차 :     ₩4,000,   sum =      ₩7,000
 4일차 :     ₩8,000,   sum =     ₩15,000
 5일차 :    ₩16,000,   sum =     ₩31,000
 6일차 :    ₩32,000,   sum =     ₩63,000
 7일차 :    ₩64,000,   sum =    ₩127,000
 8일차 :   ₩128,000,   sum =    ₩255,000
 9일차 :   ₩256,000,   sum =    ₩511,000
10일차 :   ₩512,000,   sum =  ₩1,023,000
10일차에 1,023,000원이 됩니다.