저번에는 조건문에 대해서 살펴봤는데, 이번에는 반복문에 대해서 살펴보겠습니다.

반복문은 주어진 조건이 만족될 때까지 반복해서 실행하는 방식입니다. 이 반복문은 while문, do-while문, for문이 존재하며, 조건이 맞지 않으면 반복이 멈추게 됩니다.

while 문

while문은 바로 위에서 설명했듯이 주어진 조건식이 참인 경우에만 일정 부분을 반복 수행하는 방식입니다.

그렇기 때문에, 이 while문은 조건식이 참이 아니면 실행할 문장들을 한 번도 실행하지 않고 while문 밖으로 옮겨질 수 있습니다.

예를 들어, while문을 통해 아래와 같이 표현할 수 있습니다.

i = 1;
sum = 0;

// 1부터 10까지의 합
while(i <= 10) {
	sum += i;
    i++;
}

System.out.println(sum);

// 결과
55

위의 프로그램은 1부터 10까지의 합을 나타냅니다.

조건식인 i <= 10이 참인 동안 { } 안에 문장들을 반복 실행하면서 i 값을 증가하면서 변수 sum에 계속 누적해서 더하게 됩니다.

여기서 while문의 실행 순서를 생각하면, 처음에는 조건식을 실행합니다. 만약, 이 조건식이 참이면 문장들을 실행합니다. 여기서 주의할 점은 다음 반복을 위해 조건식의 변수 값을 변경시키는 문장이 포함되어 있어야 합니다. 마지막으로 조건식의 결과가 참이 아니면 반복 실행이 종료됩니다.

do-while 문

do-while 문은 while 문과 유사하지만 하나 다른 점이 존재합니다.

조건식을 먼저 확인하는 단계를 거치는 while 문과 다르게 do-while 문은 실행 문장을 먼저 실행한 후에 조건식을 확인하여 참이면 반복 실행하는 방식입니다.

do-while 문은 아래와 같은 형태입니다.

int i = 1;
int sum = 0;

do { // 실행 부분이 먼저 실행
	sum += i;
    i++;
} while(i <= 10); // 실행 부분이 먼저 실행되고 확인

System.out.println(sum);

// 결과
55

while 문의 예시와 똑같은 결과가 나오지만 형태는 다릅니다.

지정어 do 다음의 문장 부분이 먼저 실행되고 그 후에 조건식인 i <= 10이 실행됩니다.

for 문

for 문의 구성은 일단 3개의 식하나의 문장으로 구성됩니다.

for(1;2;3) {
	실행할 문장
}

while 문과 do-while 문에서 예시로 들었던 1부터 10까지의 합을 나타내는 프로그램을 for 문을 이용하여 바로 살펴보겠습니다.

int sum = 0;

for(int i=1; i<=10; i++){
	sum += i;
}

System.out.println(sum);

// 결과
55

여기서 for 문의 첫 번째 식은 초기화 식으로 반복 실행을 제어하는 변수를 초기화하는 데 사용되며, 두 번째 식은 조건식으로 반복 실행 여부 결정하는 역할을 합니다. 세 번째 식은 변수의 값을 수정하는 식으로 반복을 위해 변수를 증가하거나 감소시킬 수 있습니다.
실행할 문장은 조건식이 참인 경우에만 실행됩니다.

중요한 것은 for 문의 실행 순서입니다.

먼저, 변수 초기화 부분인 식1이 실행된 후에 조건식인 식2가 실행됩니다. 만약 여기서 조건식이 참인 경우 문장 부분이 실행됩니다. 그 후에 반복을 위해 변수의 값을 변경시키는 식3이 실행되고 다시 식2를 실행하여 조건식을 확인합니다.

즉, ① 초기화 부분 ② 조건식 ③ 변수 수정 ④ 실행할 문장, for 문이 구성 되어있으면 ① -> ② -> ④ -> ③ -> ② -> ④ -> ③ ... 이런식으로 반복합니다.

for 문의 또 다른 형태

위와 같은 for 문의 형태도 있지만 또 다른 형태도 존재합니다.

배열과 같은 여러 요소로 이루어진 것에 대해서 특정 작업을 반복하기 위해서 사용하는 형태가 있습니다.

int[] arr = {1, 2, 3, 4, 5};

for(int value : arr){
	System.out.println(value);
}

// 결과
1
2
3
4
5

위와 같은 형태로 지정어 for 문이 나오고 각 원소에 접근하는 변수를 자료형과 함께 선언하며, 구분자 : 다음에 여러 요소가 저장된 배열과 같은 집합 변수를 기술합니다.
여기서 자료형이 서로 일치해야 하며, 그리고 실행할 문장을 구현합니다.

이런 for 문의 형태는 연속된 데이터가 저장된 배열 또는 리스트 등을 처리할 때 편리합니다.

만약, 위의 코드를 일반 for 문을 이용하여 작성하면 다음과 같습니다.

int[] arr = {1, 2, 3, 4, 5};

for(int i=0; i<arr.length; i++){
	System.out.println(arr[i]);
}

// 결과
1
2
3
4
5

여기서 추가적으로 반복문이 여러 번 포개진 중첩 반복문또한 존재합니다.

바로 다음과 같은 형태입니다.

// 구구단 출력 
for(int i=2; i<=9; i++){ // 1번
	for(int j=1; j<=9; j++){ // 2번
    	// iXj = i*j의 형태
    	System.out.print(i + "X" + j + "=" + i*j+" ");
    }
    System.out.println();
}

// 결과
2X1=2 2X2=4 2X3=6 2X4=8 2X5=10 2X6=12 2X7=14 2X8=16 2X9=18
3X1=3 3X2=6 ...
4X1=4 4X2=8 ...
...

위의 코드는 구구단을 2단부터 9단까지 출력하는 프로그램입니다.

이를 중첩 반복문을 통해 구현할 수 있습니다.

먼저 1번 for 문을 실행하고 그 다음 문장에 2번 for문을 실행하는데, 여기서 2번 for문을 먼저 조건식이 참인 동안 계속 반복하여 실행하며, 조건식이 참이 아니게 되면 2번 for 문은 밖으로 탈출하고, 다시 1번 for 문이 변수가 변경된 상태에서 2번 for 문이 반복 실행되는 형태입니다.

이러한 중첩 반복문의 주의할 점은 여러 개의 반복문 간의 변수 값 변화에 유의하며 구현해야 하며, 가장 중요한 점은 중첩될 수록 프로그램 수행 시간이 느려지게 된다는 점입니다.

이상 자바 반복문에 대해서 간단히 알아봤습니다.

profile
꾸준함으로 성장하는 개발자 지망생

0개의 댓글

관련 채용 정보