프로그래밍에서 루프(loop)는 특정 코드 블록을 여러 번 반복해서 실행해야 할 때 사용됩니다. 이번 글에서는 대표적인 두 가지 반복문인 For 루프와 While 루프의 차이점을 자세히 살펴보겠습니다.
For 루프란?
For 루프는 반복 횟수 제어 방식의 반복문으로, 사용자가 지정한 횟수만큼 주어진 코드 블록을 반복 실행할 수 있도록 해줍니다.
For 루프 문법
for(초기화; 조건; 갱신){
…반복할 코드
}
While 루프란?
While 루프는 진입 조건 검사 방식의 반복문으로, 주어진 조건이 참(true)인 동안 명령문을 계속해서 반복 실행합니다.
While 루프 문법
while(조건){
…반복할 코드
}
For 루프와 While 루프의 차이점
For 루프는 반복 횟수 기반의 반복문이고, While 루프는 조건 기반의 반복문입니다.
For 루프는 초기화 부분에 갱신(update) 문을 함께 작성할 수 있지만, While 루프의 조건에는 제어식(control expression)만 작성할 수 있습니다.
For 루프의 검사 조건은 주로 정수 비교를 사용하는 반면, While 루프의 검사 조건은 불리언(boolean) 값으로 평가되는 어떤 표현식이든 사용할 수 있습니다.
두 루프가 서로 다른 결과를 내는 경우
두 루프가 다르게 동작하는 대표적인 사례는 루프 본문에 continue 문이 포함된 경우입니다. While 루프에서는 continue 문이 갱신(i++) 문보다 앞에 위치하면 무한 루프에 빠질 수 있지만, For 루프에서는 갱신 문이 루프 선언부에 포함되어 있어 이런 문제가 발생하지 않습니다.
예제 1: For 루프와 continue 문
다음 프로그램은 For 루프에서 continue 문이 어떻게 동작하는지 보여줍니다.
#include<iostream>
using namespace std;
int main(){
cout<<"Displaying for loop working with continue statement\n";
for(int i = 0; i < 5; i++){
if(i == 3)
continue;
cout<<"loop count "<<i<<endl;
}
return 0;
}
출력 결과
Displaying for loop working with continue statement loop count 0 loop count 1 loop count 2 loop count 4
For 루프에서는 i == 3일 때 continue가 실행되어 해당 반복만 건너뛰지만, 갱신식 i++는 여전히 실행되므로 나머지 반복이 정상적으로 진행됩니다.
예제 2: While 루프와 continue 문
같은 로직을 While 루프로 작성하면 결과가 완전히 달라집니다.
#include<iostream>
using namespace std;
int main(){
cout<<"Displaying for loop working with continue statement";
int i = 0;
while(i < 5){
if(i == 3)
continue;
cout<<"loop count "<<i<<endl;
i++;
}
return 0;
}
출력 결과
Displaying for loop working with continue statementloop count 0 loop count 1 loop count 2
While 루프에서는 i == 3일 때 continue가 실행되면 그 아래의 i++가 건너뛰어집니다. 따라서 변수 i의 값이 3에서 더 이상 증가하지 않아 무한 루프에 빠지게 됩니다. 이처럼 continue 문의 위치와 루프 구조에 따라 같은 의도의 코드라도 전혀 다른 결과를 낼 수 있으므로, 반복문을 선택할 때 이러한 차이를 반드시 고려해야 합니다.