#상당히 늦었습니다. 죄송합니다. 오랫만에 와서 올리는 건데 짧은 내용에 대해 미리 사과의 말씀 드리고 진행 하도록 하겠습니다.




이번에는 do~while문에 의한 문장의 반복에 대해 알아보도록 하겠습니다.





1. do~while문 이란?


do~while문이란 '반복영역을 최소한 한번은 실행하는 구조'인 반복문 입니다.


do~while문은 while문과 거의 차이가 없습니다.


그러면 왜 do~while문이 필요하지? 라는 궁금증이 생기실 수 있습니다.


이와 관련하여 다음의 예제를 보도록 하겠습니다.



위의 예제에서 확인할 수 있듯이 do~while문과 while문은 차이가 거의 없습니다.


예제를 봐도 똑같지 않나? 라는 생각을 하실 수 있습니다.


이러한 궁금증에 대해서 위의 예제를 통해 다시 한 번 자세히 살펴보면 다음과 같은 사실을 알 수 있습니다.


1) 위의 예제의 경우에는 반복횟수가 이미 정해져 있습니다.

2) while문은 조건을 확인 하는 문장이 위쪽에 있는데 do~while문은 뒤쪽에 있습니다.

* 영어사전에서 do 는 '~하다' 라는 의미입니다.


여기까지 오셨으면 어느정도 눈치 채신 분들도 계실거고, 이러한 생각도 하실 수 있습니다.


단순하게 사용자의 입력이 완료될 때까지를 기다리는 계산기처럼 반복 횟수가 정해지지 않았을 경우 어떻게 하지?


C언어의 절차지향적 언어의 특성으로 위에서 부터 아래쪽의 순으로 순차적으로 실행 할 경우 do~while문의 반복영역은 무조건 한 번이 실행되나?


라는 궁금증이 생기실 수 있습니다.


우선 do~while문은 무조건 do~while문 의 중괄호 { } 사이의 영역은 무조건 처음에는 한 번 실행을 한 후, 조건을 검사합니다.


또 한가지 예를들면 사용자의 입력이 언제 끝날지 모르고, 무조건 한 번은 입력이 되어야 할 경우 do~while문을 사용합니다.


이러한 경우에는 while문 보다 do~while문이 훨씬 자연스럽기 때문입니다.


다음은 do~while문이 while문 보다 자연 스러운 상황을 나타내는 예제입니다.



위의 예제에서처럼 무조건 한 번은 실행이 되어야 할 경우에 do~while문을 사용하게 됩니다.


아직 이해가 되시지 않으신 분들은 다음 예제를 보도록 하겠습니다. (제 설명이 부족해서..)



위의 예제에서 보시는 것처럼 프로그램이 입력을 받기도 전에 종료가 되어 버렸습니다.


조건식을 만족하지 않아 while문의 반복영역을 실행조차 하지 않고 종료가 되는 것을 확인 하실 수 있습니다.


여기서 '그럼 조건식을 바꾸거나 조건에 사용된 변수를 다른 값으로 초기화 하면 되지 않나?' 라는 분들이 계실수도 있습니다.


당연히 가능합니다.


하지만 그렇게 하는 경우도 계실 수 있지만 '무조건 한 번은 실행 시키는 프로그램을 만들어야 되는데 while문 밖에 쓸 수 없다' 라는 문제에 직면 했을 경우 다음과 같이 do~while문이 while문 보다 자연 스럽다는 것을 아실 수 있습니다.



위의 예제에서처럼 무조건 한 번을 입력해야 되는데 '저는 do~while 문은 모릅니다. ㅠㅠ' 라는 상황이 생겼다고 가정하겠습니다.


그리하여 while문을 이용해서 작성을 해 본 결과 굉장히 부자연 스럽다는 것을 확인 할 수 있습니다.



이렇듯 do~while문은 입력을 받아 누적이 되어야 하는 프로그램의 경우 do~while문이 훨씬 자연스러운 것을 알 수 있었습니다.


또한 '최소한 1회는 반복영역을 실행하게 된다'는 점이 while문과의 가장 큰 차이점이라 할 수 있습니다.






이것으로 C언어 반복문 중 하나인 do~while문에 대하여 알아 보았습니다.



다음에는 for문에 의한 문장의 반복에 대하여 공부하고 글을 올리도록 하겠습니다.












'프로그래밍 언어 > C' 카테고리의 다른 글

C언어 반복문 - for문 (2)  (0) 2017.01.15
C언어 반복문 - for문 (1)  (0) 2017.01.12
C언어 반복문 - while문(2)  (0) 2017.01.02
C언어 반복문 - while문(1)  (0) 2017.01.02
C언어 printf 함수 와 scanf 함수  (0) 2017.01.01

+ Recent posts