어떠한 일을 반복적으로 수행할 때 이용되는 구문의 구조가 반복 구조이다. 자바와 C 언어에서 제공하는 반복 문장은 for, while, do, while 세 가지 문장이다. 이 세 문장의 특징을 살펴보면 다음과 같다.
for 문은 초기 설정을 하는 제어 요소인 initialization과 반복 시 계속 검사하는 test 제어 요소, 반복 문장을 모두 실행한 이후 제일 마지막에 실행하는 increment 제어 요소 세 가지를 다음과 같이 괄호로 묶어 표기한다. 괄호 안에 기술하는 제어 요소는 세미콜론(;)으로 구분한다. 그리고 반복하고자 하는 문장이 여러 개 필요하면 블록으로 표기한다.
for (initialization; test; increment) {
statement1;
statement2;
...
}
반복문 for의 실행 순서를 살펴보자. Initialization 부분은 반드시 for 문이 시작하는 초기에 한 번 실행한다. 그리고 test 부분은 반복 문장이 실행되기 전에 반드시 검사하여 true면 반복 문장을 실행하고, false면 반복 문장을 실행하지 않고 그대로 for 문을 종료한다. test 부분이 true인 경우, for 문의 몸체인 반복 문장을 실행한 후 먼저 increment 부분을 실행한 후 다시 다음 반복 문장 실행을 검사하기 위한 test 부분을 실행한다.
① 초기화 문장(initialization)을 실행한다.
② 조건 검사(test) 문장이 true이면 반복문의 몸체에 해당하는 문장을 실행한다. 그러나 조건검사 문장이 false이면 for 문을 종료한다.
③ 몸체를 실행하면 increment(주로 증감연산자) 문장을 실행한다. 다시 2번으로 돌아가 조건 검사를 실행하며, ②, ③번을 반복한다.
다음은 위 for 구문의 실행 순서를 순서도로 표현한 그림이다.
[ 그림 7.36 ]
while 문은 for 문의 test 부분만 남은 간단한 반복 문장이다. 즉 다음과 같은 구문에서 test 부분만 true이면 몸체의 반복 문장 statement1과 statement2를 실행하는 문장이다.
while ( test ) {
statement1;
statement2;
...
}
while 문과 유사한 반복문으로 do ... while 문이 있다. 이 문장은 한 문장이나 여러 문장의 블록인 반복 몸체를 먼저 실행한 후 test 부분을 검사하여 true면 다시 반복 문장을 실행하고, false면 do while 문장을 종료하는 구문이다.
[ 그림 7.38 ]
[ 그림 7.38 ]의 while 구문과 do ... while 구문에 대한 순서도는 다음과 같다. do ... while 구문은 for 문이나 while 문과는 다르게 검사 부분인 test가 반복 문장의 마지막 부분에 있다. 그러므로 특별한 경우가 아니라면 반복 문장은 적어도 한 번 실행된다.
[ 그림 7.39 ]