[C++] 반복문 총집합
개념
반복문은 매우 기초적이면서 중요한 부분입니다.
반복문을 사용하지 않는다면 리스트나 벡터, 배열등의 값을 일일히 전부 타이핑해서 출력하거나 사용해야 하기 때문이지요.
int n{1};
std::cout << n++ << std::endl;
std::cout << n++ << std::endl;
std::cout << n++ << std::endl;
(설마… 위처럼 반복문을 안쓰고 위처럼 일일히 타이핑 하시는 분은 없겠죠?)
예제
for문
우선 for문은 아래와 같은 형태로 사용합니다.
for (초기화 식; 조건식; 증감식)
{
반복할 처리
}
필요에 따라서는 증감식, 초기화식, 조건식의 생략이 가능합니다만 세미콜론은 반드시 필요합니다.
for (int i{}; i < 10;) // 증감식 생략
for (; sum != 20;) // 초기화 식, 증감식 생략
for (;;) // 모두 생략: 조건식이 생략되면 무한 반복이 됩니다.
for - each문 (for문 응용)
for - each문 또는 범위 기반 for문으로 불리며, 간단히 말해 for문을 살짝 응용한 사용법 입니다.
for (auto n : array)
여기에서 auto를 그대로 사용해도 되지만, 배열이나 vector, list로 바꾸어도 됩니다. 이렇게 하면 자동으로 array부분에서 값을 하나씩 읽으면서 변수 n에 넘겨줍니다.
#include <iostream>
int main()
{
int input[10]{};
int sum{};
// 참조를 하므로 input의 값이 변경됩니다.
for (auto &n : input)
{
std::cin >> n;
}
// 복사를 하므로 읽기 전용
for (auto n : input)
{
sum += n;
}
std::cout << "합계: " << sum;
return 0;
}
while문
for문이특정 범위의 값을 반복하기 위해 사용된다면 while문은 for문에서 초기화 식과 증감식이 빠진 형태 입니다.
for ( ; var > 0 && var < 25; )
while (var > 0 && var < 25)
아래와 같이 for문을 while문으로 나타낼 수도 있습니다.
(그 아래의 while문은 for문을 while문으로 나타낸 것입니다.)
for (int i{}; i < 10; i++)
{
std::cout << i;
}
int i{};
while (i < 10)
{
std::cout << i;
i++
}
#include <iostream>
int main()
{
int sum{}, i{1};
while (i <= 100)
{
sum += i;
i++;
}
std::cout << sum; // 5050이 출력
return 0;
}
do while문
루프의 한 가지 흥미로운 점은 루프 조건이 초기에 거짓인 경우에는 루프가 실행되지 않는다는점 입니다.
메뉴를 표시할 때와 같이 루프가 적어도 한번 실행되기를 원하는 경우를 위해 C++는 do while문을 제공합니다.
특징이 있다면 do while의 루프 문은 적어도 한번은 실행된다 라는 점 입니다.
실행된 후 do while의 루프는 조건을 검사하여 조건이 true 라면 do while 의 루프 맨위로 돌아가 다시 실행 합니다.
do
{
// 한번은 무조건 실행되는 코드
} while (조건식);
#include <iostream>
int main()
{
constexpr int right_num{ 5 };
int input{};
std::cout << "6미만의 숫자를 입력하세요!\n" << std::endl;
do
{
std::cout << "숫자 입력: ";
std::cin >> input;
} while (input < 6);
std::cout << "'6미만' 이라고....";
return 0;
}