본문 바로가기
C# 기초문법

[C#] (5) 조건을 기준으로 반복시키기 - while

by novices 2022. 9. 10.
반응형

(4) 조건을 기준으로 반복시키기에 이어 while 문법에 대해 알아보겠습니다. 이전 포스팅에서 보았듯 for 구문은 순차적이고 끝이 예측되는 경우에 많이 사용되고 while문은 끝이 정해져 있지 않는 반복에 쓰입니다.  while문에 특징과 문법에 대해 예시를 통해 알아보겠습니다.

 

 

1. while 구문의 문법에 대하여

while문법은 처음 프로그래밍을 접하는 입장에서 for문법 보다 더 간결하고 이해가 쉽다고 생각합니다. while문의 동작 흐름은 이전에 배웠던 if문의 조건식과 같은 방법으로 조건이 거짓이 될 때까지 해당 while 코드 블록 {}을 반복 실행합니다.

 

while문법 설명 그림
while 문법

 

 

2. 예시로 알아보기

예시로 대출금을 모두 상환할 때까지 입금을 반복하는 흐름을 글로 표현하면 아래와 같습니다.

예시의 전제 내용
대출금은 10,000 이다.
대출금을 상환 할 때 까지 대출계좌에 입금을 받는다.

 

예시 동작 흐름

조건식 - 대출금이 아직 남아 있다면 명령 블록을 실행합니다.

명령 블록 - 대출계좌에 입금을 받습니다. 다시 조건식을 확인합니다.

 

 

2-1. 예시 코드

위의 내용을 코드로 변환하고 입력과 결괏값을 확인해 보았습니다.  작성된 예시 코드는 모든 대출금을 상환할 때까지 계속 입력을 받는 예시입니다. 대출금이 0보다 크면 코드 블록을 무한 반복하며 코드 블록에서 입력을 받은 수를 대출금에서 빼주고 상환 회차를 카운트하고 있습니다. loanAmount -= Convert.ToInt32(Console.ReadLine()) 이 부분이 아직 이해가 안 될 텐데 차후 작성할 함수 편에서 알아볼 예정입니다. 현제 간단히 설명하면 Console.ReadLine() 명령으로 콘솔 창에서 입력받은 문자열을 가져와 Convert.ToInt32()를 통해 문자열인 입력값을 정수로 변환하여 loanAmount에 빼는 내용입니다. 

using System;

namespace Program
{
    class Program
    {
        static void Main(string[] args)
        {
            int count = 1;
            int loanAmount = 10000;

            while(loanAmount > 0)
            {
                Console.WriteLine("=====================================");
                Console.WriteLine("상환 " + count +"회차 입금해주세요.!!" );
                loanAmount -= Convert.ToInt32(Console.ReadLine());

                count++;

                Console.WriteLine("남은 대출금: " + loanAmount);
                Console.WriteLine("=====================================");
            }

            Console.WriteLine(count + "회차에 모든 대출금을 상환하였습니다.!!");

            Console.ReadKey();
        }
    }
}

 

결과 및 입력값
=====================================
상환 1회차 입금해주세요.!!
3000 <--------- 입력한 숫자
남은 대출금: 7000
=====================================
=====================================
상환 2회차 입금해주세요.!!
2300 <--------- 입력한 숫자
남은 대출금: 4700
=====================================
=====================================
상환 3회차 입금해주세요.!!
1956 <--------- 입력한 숫자
남은 대출금: 2744
=====================================
=====================================
상환 4회차 입금해주세요.!!
1756 <--------- 입력한 숫자
남은 대출금: 988
=====================================
=====================================
상환 5회차 입금해주세요.!!
988 <--------- 입력한 숫자
남은 대출금: 0
=====================================
6회차에 모든 대출금을 상환하였습니다.!!

 

while 흐름 요약

  • while문은 조건식이 참이면 코드 블록을 반복 실행합니다.
  • while문은 제시한 조건식이 틀릴 때까지 코드 블록을 반복 실행합니다.
  • while문의 조건에 맞지 않는다면 단 한 번도 실행되지 않습니다.

 

 

3. 추가 문법 do~ while

do~ while의 문법은 while문과 거의 동일합니다. 차이점은 while문의 조건에 맞지 않아도 최소 1번은 실행되느냐 아니냐의 차이밖에 없습니다. 아래는 예시 코드의 while문을 do ~ while로 변환한 코드입니다.

do
{
    Console.WriteLine("=====================================");
    Console.WriteLine("상환 " + count +"회차 입금해주세요.!!" );
    loanAmount -= Convert.ToInt32(Console.ReadLine());

    count++;

    Console.WriteLine("남은 대출금: " + loanAmount);
    Console.WriteLine("=====================================");
}
while(loanAmount > 0);

 

do ~ while 흐름 요약

  • do 블록 내 명령을 조건에 관계없이 실행한 후 while 반복문을 실행합니다.
  • 조건에 맞지 않아도 한 번은 실행돼야 하는 경우 사용하는 문법입니다.

 

 

4. 결론

for문법에 이어 while, do~ while문법으로 반복 명령을 수행시키는 방법에 대해 알아보았습니다. 더 많은 예시를 통해 for문과 while의 차이를 이야기하고 싶었지만 다음 포스팅에 설명할 배열을 모르고는 설명할 수 없는 부분이 존재하기 때문에 배열을 학습하고 다시 반복문을 본다면 이해하기 더욱 쉽다고 생각합니다. 추가로 이번 포스팅에서 설명하지 못한 반복문인 foreach 또한 배열 설명에 같이 알아볼 예정입니다.

 

 

반응형

댓글