본문 바로가기
카테고리 없음

반복문은 C 프로그램의 흐름을 제어하는 또 하나의 문법이다

by 컴싸과 신생아 허봉명 2022. 6. 14.

반복문에서 for문, while문, do~while문 세 가지를 살펴보자

반복문(Iteration Statement)은 조건이 만족될 때까지 같은 실행문을 Repetitive 수행하는 제어문으로 for문, while문, do ~ while문으로 구분할 수 있다. C언어 프로그램의 흐름을 제어할 수 있는 제어문으로 또 하나의 제어문인 조건문과는 사용방법이 다르다. 위의 세 가지 반복문에 대해 정리해 보도록 하자.

반복문의 개념

어떤 코드를 되풀이해서 실행하고자 할 때 같은 코드를 여러 번 작성하는 것은 비효율적이다. 사람에게 단순 작업은 지루하고 피곤한 일이지만 컴퓨터는 기계이기 때문에 조건만 잘 지정해 주면 지루함을 느끼지 않고 주어진 명령을 정확하고 빠르게 처리한다. 이러한 컴퓨터를 최대한 활용하려면 반복문을 잘 사용해야 한다.

 

예를 들어 전교생이 200명인 학생들의 총점과 평균을 구하는 작업과, 2018년 주위를 놀라게 했던 사회복무요원의 작업 사례를 살펴보자면 학생들의 점수를 200번 더하는 것과 노동청에서 발송된 모든 등기의 발송 내역을 조회한 다음 출력해서 보관하는 것인데, 이럴 땐 똑같은 처리를 필요한 순서만큼 나열하는 것이 아니라 반복문을 이용해 한 번만 작성하고 실행하는 것이 훨씬 효율적이다.

 

반복문에는 Loop 작업을 하기 위해 필요한 세 가지 요소가 포함되어 있다. 시작하기 위한 '초기식', 계속 수행할 것인지를 결정하는 '조건식', 그리고 조건을 바꾸기 위한 '증감식'이 있어야 반복 작업을 제대로 수행할 수 있다. 만약 이 세 가지 요소 중에 한 가지라도 없거나 잘못 사용한다면 Loop을 하지 못하거나 무한히 반복한다.

 

for문은 반복 횟수가 명확히 정해진 경우에 사용되며, while문과 do~while문은 반복 횟수를 확실히 예상할 수 없는 경우에 사용된다.

for문

for문은 Iteration의 3요소(초기식, 조건식, 증감식)를 제일 단순하고 정확하게 표현한 반복문이다. 초깃값을 처음 설정한 다음 조건을 물어보고 실행문을 실행한 다음 증감식을 실행하고 다시 조건을 확인한다. 명확한 구성 때문에 반복문 중에서 가장 많이 사용되는 문법이라 할 수 있고, 특히 Loop 횟수가 이미 정해져 시작과 끝이 명확한 작업에 많이 사용된다. 문장 안에 초기식, 조건식, 증감식이 포함되어 있어 문장의 앞부분만 봐도 진행이 어떻게 될지 쉽게 알 수 있고 변경이 가능하다.

 

for문의 작성법으로 초기식, 조건식, 증감식은 Loop 횟수를 알기 쉽게 작성해야 하며, Loop 횟수를 세는 변수를 반복문 안에선 바꾸지 않는 것이 좋다. 만약 Loop 횟수를 세는 변수를 반복문 블록 안에서 바꾼다면 Loop 횟수를 쉽게 알 수가 없다.

while문(while statement)

while문은 조건을 만족하는 동안 특정한 구문을 계속해서 실행하는 명령문이다. for문과는 다르게 명령문을 Loop할 조건식만 있고 초기식이나 증감식이 없어 Loop될 구문 내부에 조건을 추가해서 사용한다. 즉, 사용자의 입력 등과 같이 조건 입력이 어떻게 발생할지 모르는 상황을 Loop할 때 많이 사용된다.

for문과 while statement의 관계

for문은 while문으로 변경할 수 있고, while문은 for문으로 변경이 가능하다. 컴퓨터는 0과 1로만 판단해서 처리를 하는데 C언어 소스 코드가 컴파일이 이루어지면서 어셈블리어(기계어)로 변하게 되었을 때는 동일한 명령어로 동작하기 때문에 사실 for문과 while문은 내부적으로 동일하게 동작한다고 볼 수 있다.

do ~ while문(do ~ while statement)

while문과 마찬가지로 while문 자체에 명령문들을 반복할 조건만 있고 초기식이나 증감식 같은 제어 변수가 없어 반복 횟수가 정해지지 않은 가변적인 상황에 사용되지만 조건식을 검사하는 시기는 다르다. for문이나 while문은 조건식을 먼저 검사한 후 그 결과에 따라 명령문을 실행하지만, do ~ while문은 일단 명령을 실행한 후, 조건을 검사하여 계속 반복 실행할지를 결정하게 된다.

 

이러한 이유로 while문은 조건식에 따라 한 번도 실행되지 않을 수도 있지만 do~while문은 적어도 한 번은 반드시 실행된다는 차이점이 있다. 또한 do ~ while문의 조건식 뒤에는 세미콜론(;)이 들어간다는 것을 기억해야 한다. while문은 실행 전 검사, do ~ while문은 실행 후 검사이다.