들어가며
앞서 소개한 컨트롤 문장들은
조건에 따른 코드의
'선택적 실행'을 위한 것들이다.
그러나 지금부터 소개하는
컨트롤 문장들은
조건에 따른 코드의 '반복
적 실행'을 위한 것들이다.
반복문 - while
while문의 동작 방식을
이해하는 것은
if문을 이해하는 것만큼이나
쉽다.
따라서 간단한 예제와
그 실행 결과를 통해서
관찰할 수 있는 기회를
먼저 제공하겠다.
public class temp {
public static void main(String[] args){
int num = 0;
while (num < 5){
System.out.print(num + " ");
num++;
}
}
}
/*
실행 결과
0 1 2 3 4
*/
실행 결과를 관찰해보면
while문 안에 위치한
두 문장이 총 5회 실행되었음을
알 수 있다.
위 그림에서 보이듯이
while문의 소괄호에는
반복의 조건을 명시한다.
true 또는 false가 와야 하므로
이를 반환하는 연산이 오게 된다.
그리고 그 조건이 true를
반환하는 동안에는
횟수에 상관없이 while문의
중괄호가 반복 실행되는데,
다음의 패턴으로 반복이 된다.
- 선(先) - 조건 검사
- 후(後) - 조건의 결과가 true일 때, 중괄호 영역 실행
이렇듯 조건 검사가 먼저
진행되기 때문에
처음부터 false가 반환되면
while문의 중괄호는 한 번도
실행되지 않을 수도 있다.
반면에 조건 검사가 계속해서
true만 반환하도록 구성된다면,
예를 들어서 앞서 보인 예제에서
7행이 생략된 경우라면
while문을 벗어나지 못 하는
문제가 발생할 수 있으니,
이러한 부분에 주의해야 한다.
그리고 while문의 중괄호도
반복실행할 문장이 하나라면
생략이 가능하다.
이는 이어서 소개하는 do ~ while
문과 for문에서도 마찬가지다.
반복문 - do ~ while
while문은 다음의 패턴으로
반복을 진행함을 알았다.
- 선(先) - 조건 검사
- 후(後) - 조건의 결과가 true일 때, 중괄호 영역 실행
반면에 이번에 소개하는
do ~ while문은
다음의 패턴으로 반복을
진행한다.
- 선(先) - 중괄호 영역 실행
- 후(後) - 조건의 결과가 true일 때, 반복 결정
즉 이 둘의 유일한 차이점은
반복 조건을 검사하는 시점에
있다.
while문은 '선 검사' 방식이고,
do ~ while문은 '후 검사' 방식이다.
public class temp {
public static void main(String[] args){
int num = 0;
do {
System.out.print(num + " ");
num++;
}while (num < 5);
}
}
/*
실행 결과
0 1 2 3 4
*/
예제에서 보였듯이,
while문으로 작성된 문장은
do ~ while문으로도
작성이 가능하고
또 그 반대도 가능한 경우가
대부분이다.
따라서 가음의 경우에 한해
do ~ while문을 사용하고,
조건에 따른 반복이 필요하다.
그런데 반드시 한 번은 실행이 되어야 한다.
이외의 경우에는 while문 또는
이어서 소개하는 for문을
사용하는 것이 바람직하다.
그래야 선택하는 반복문에
더 많은 의미를 부여할 수 있다.
반복문 - for
while문을 이용해서
"나는 빡빡이다."를
총 3회 출력하기 위해서는
다음 형태로 문장을
작성해야 한다.
int num = 0;
while (num < 5){
System.out.println("나는 빡빡이다.");
num++;
}
그런데 이처럼 '반복의
횟수가 정해져 있는 상황'
에서는
for문을 이용해서 다음과
같이 작성하는 것이
더 간결하고 뜻도 더 잘
통한다.
for (int num = 0; num < 3; num++){
System.out.println("나는 빡빡이다.");
}
// 반복의 대상이 한 문장이므로 중괄호는 생략이 가능하다.
이렇듯 '정해진 횟수의 반복'을
위해 사용하는 것이 for문이다.
이 for문을 while문과 비교하면
다음과 같다.
이 비교를 통해서 for문을
쉽게 이해할 수 있다.
위 그림에서 while문과
for문의 ①, ②, ③이
갖는 의미는
둘 다 다음과 같다.
①
반복의 횟수를 세기 위한 변수
②
반복의 조건
③
반복의 조건을 무너뜨리기 위한 연산
위 그림을 보면 for문은
while문과 달리
반복에 필요한 모든 것을
한 줄에 나열할 수 있음을
알 수 있다.
그리고 이것이 for문의
장점이다.
그럼 예제를 통해서 for문의
실행을 확인해보자.
public class temp {
public static void main(String[] args){
for (int num = 0; num < 3; num++){
System.out.println("나는 빡빡이다.");
}
}
}
/*
실행 결과
0 1 2 3 4
*/
[그림 44]의 내용을 바탕으로
위의 예제를 관찰하면
for문의 실행 흐름을 어느 정도
파악할 수 있다.
더불어 실행 흐름의 파악을
돕기 위해
다음 그림을 추가로 제시한다.
위 그림에서 보인 for문에
처음 진입해서
첫 번째 실행이(첫 번째 루프가)
완료되기가지의 과정을 정리하면
다음과 같다.
- 변수의 선언 및 초기화
- 반복 조건이 true인지 확인
- 반복 영역을 실행 (반복 조건이 true이면)
- 변수의 값 변경
위의 순서에서 3과 4를
바꿔서 생각하지 않도록
주의해야 한다.
그리고 2번째 이후의 실행
과정은
'변수의 선언 및 초기화'만
생략하면 동일하다.
즉 이후로는 다음 과정을
반복할 뿐이다.
- (생략)
- 반복 조건이 true인지 확인
- 반복 영역을 실행 (반복 조건이 true이면)
- 변수의 값 변경
그러다 반복 조건이 false가
되면,
for문을 빠져나오면서 반복은
종료가 된다.
참고 및 출처
![]() |
|