반복문이란 똑같은 명령을 일정 횟수만큼 반복하여 수행하도록 제어하는 명령문이다.
프로그램이 처리하는 대부분의 코드는 반복적인 형태가 많으므로, 가장 많이 사용되는 명령문 중 하나이다.
while 문
while 문은 특정 조건을 만족할 때까지 계속해서 주어진 명령문을 반복 실행한다.
while 문은 우선 조건식이 참(true)인지를 판단하여, 참이면 내부의 명령문을 실행한다.
내부의 명령문을 전부 실행하고 나면, 다시 조건식으로 돌아와 또 한 번 참인지를 판단한다.
이러한 표현식의 검사를 통해 반복해서 실행되는 반복문을 루프(loop)라고 한다.
int main()
{
int i = 1;
while (i < 6)
{
cout << "While 문이 현재 " << i << "번째 반복 실행중입니다!" << endl;
i++; // 이 부분을 삭제하면 루프가 변하지 않아서 무한 루프에 빠지게 된다.
}
cout << "While 문이 종료된 후 변수 i의 값은 " << i << "입니다!" << endl;
return 0;
}
/*실행 결과
while 문이 현재 1 번째 반복 실행중입니다!
while 문이 현재 2 번째 반복 실행중입니다!
while 문이 현재 3 번째 반복 실행중입니다!
while 문이 현재 4 번째 반복 실행중입니다!
while 문이 현재 5 번째 반복 실행중입니다!
while 문이 종료된 후 변수 i의 값은 6입니다!
*/
while 문 내부에 조건식의 결과를 변경하는 명령문이 존재하지 않을 때는 while이 무한으로 반복하게 된다.
이것을 '무한 루프'에 빠졌다고 하며, 무한 루프에 빠진 프로그램은 종료되지 않는다.
게임 엔진은 이러한 특성을 통해 종료 버튼을 누르기 전까지 계속 실행되도록 하는 방법도 사용한다.
※ 실행될 명령문이 한 줄 뿐이라면 중괄호({})를 생략할 수 있다.
do / while 문
while 문은 루프에 진입하기 전에 먼저 조건식부터 검사한다.
하지만 do / while 문은 먼저 루프를 한 번 실행한 후에 조건식을 검사한다.
즉, do / while 문은 조건식에 결과와 상관없이 무조건 한 번은 루프를 실행한다.
int main()
{
int i = 1;
do
{
cout << "do / While 문이 현재 " << i << "번째 반복 실행중입니다!" << endl;
i++;
} while (i > 2);
cout << "do / While 문이 종료된 후 변수 i의 값은 " << i << "입니다!" << endl;
return 0;
}
/*실행 결과
do / while 문이 현재 1 번째 반복 수행중입니다!
do / while 문이 종료된 후 변수 i의 값은 2입니다!
*/
위의 예제가 while 문이었다면, 단 한 번도 출력도 되지 않았을 것이다.
하지만 do / while 문은 조건식의 결과와 상관없이 무조건 한 번은 루프를 실행해 준다.
※ 실행될 명령문이 한 줄 뿐이라면 중괄호({})를 생략할 수 있다.
for 문
for 문은 while 문과는 방식이 다르다. 자체적으로 초기식, 조건식, 증감식을 모두 포함하고 있는 반복문이다.
이때 for 문을 구성하는 초기식, 조건식, 증감식은 각 각 생략될 수 있다.
int main()
{
int i = 0;
for (i = 0; i < 5; i++)
{
cout << "for 문이 현재 " << i + 1 << "번째 반복 수행중입니다!" << endl;
}
cout << "for 문이 종료된 후 변수 i의 값은 " << i << "입니다!" << endl;
return 0;
}
/*실행 결과
for 문이 현재 1 번째 반복 수행중입니다!
for 문이 현재 2 번째 반복 수행중입니다!
for 문이 현재 3 번째 반복 수행중입니다!
for 문이 현재 4 번째 반복 수행중입니다!
for 문이 현재 5 번째 반복 수행중입니다!
for 문이 종료된 후 변수 i의 값은 5입니다!
*/
C++에서는 for 문 안에서만 사용하는 변수를 초기식에서 직접 선언할 수도 있다. (같은 타입의 여러 개 선언 가능)
이렇게 for 문에서 직접 선언된 변수는 for 문이 종료되면 같이 소멸된다.
※ 실행될 명령문이 한 줄 뿐이라면 중괄호({})를 생략할 수 있다.
범위 기반의 for 문
C++11부터는 범위 기반의 for 문이라는 새로운 형태의 반복문이 추가되었다.
범위 기반의 for 문은 표현식 안에 포함되어 있는 모든 값에 대해 한 번씩 루프를 실행해 준다.
이러한 범위 기반의 for 문은 배열을 자동으로 인식하며, 컨테이너 클래스에서 많이 사용된다.
int main()
{
int arr[5] = { 1, 3, 5, 7, 9 };
for (int element : arr)
{
cout << element << ", ";
}
return 0;
}
/*실행 결과
1, 3, 5, 7, 9,
*/
루프 제어
일반적으로 조건식을 통해 루프로 진입하면, 다음 조건식 전까지 루프 안에 있는 모든 명령문을 실행한다.
하지만 continue 문과 break 문은 이러한 루프의 흐름을 직접 제어할 수 있게 해 준다.
continue 문
continue 문은 루프 내에서 사용하여 해당 루프의 나머지 부분을 건너뛰고, 바로 다음 조건식의 판단으로 넘어가게 해 준다.
보통 반복문 내에서 특정 조건을 예외 처리 하고자 할 때 자주 사용된다.
int main()
{
int num = 0;
for (int i = 1; i <= 100; i++)
{
if (i % 2 == 0)
continue;
num += i;
}
cout << num << endl;
return 0;
}
/*실행 결과
2500
*/
위의 예제는 1부터 100까지의 정수 중에서 짝수를 제외하고 홀수만을 더하여 출력하는 예제이다.
break 문
break 문은 루프 내에서 사용하여 해당 반복문을 완전히 종료시킨다.
즉 루프 내에서 조건식의 참과 거짓에 상관없이 반복문을 완전히 빠져나가고 싶을 때 사용한다.
int main()
{
int num = 1;
int sum = 0;
int input;
cin >> input;
while (true) // 무한 루프
{
sum += num;
if (num == input)
break;
num++;
}
cout << "1부터 " << input << "까지 더한 값은 " << sum << "입니다!" << endl;
return 0;
}
/*실행 결과
100
1부터 100까지 더한 값은 5050입니다!
*/
위의 예제는 1부터 사용자가 입력한 정수까지의 합을 구하는 예제이다.
'📕Programming > 📝C/C++' 카테고리의 다른 글
| [C / C++] 포인터 / 레퍼런스 (0) | 2023.09.12 |
|---|---|
| [C / C++] 배열 (array) (0) | 2023.09.11 |
| [C / C++] 조건문 (0) | 2023.09.10 |
| [C / C++] 문자 입출력 (0) | 2023.09.09 |
| [C / C++] 연산자 (Operator) (0) | 2023.09.05 |