이번 포스트에서는 C++에서 반복문 중 하나인 for
문과 이를 응용한 중첩 for
문에 대해 예제 코드를 통해 상세히 분석하겠습니다. for
문은 특정 조건이 만족될 때까지 반복적으로 코드를 실행하는 구조를 가지고 있으며, 이를 올바르게 이해하고 사용하면 효율적인 코드 작성이 가능합니다.
// for문 : 반복문의 한 종류이다.
// 형태 : for(초기값; 조건식; 증감값){}의 형태로 구성이 된다.
// 조건식이 true이면 코드블럭의 코드가 동작된다.
// 무한루프를 돌릴때는 for(;;){} 을 해주면 무한대로 돌아간다.
// for문에서 초기값은 처음 for문에 진입할 때 딱 한번 동작된다.
// 그 후에 조건식을 체크하고 조건식이 true면 동작되고
// 증감 -> 조건 -> 증감 -> 조건의 순서로 처리되다가
// 조건이 false이거나 break를 만나면 for문을 빠져나가게 된다.
for(초기값; 조건식; 증감값) {}
입니다.true
이면 블록 내의 코드가 실행되고, false
이면 반복이 종료됩니다.for(;;){}
처럼 조건식과 증감값을 생략하면 됩니다.false
가 되거나 break
가 호출되면 반복문이 종료됩니다.// 초기값 : i = 0 조건식 : i < 10 증감값 : ++i
// 먼저 for문에 진입하면서 초기값이 실행되므로 i를 0으로 초기화 한다.
// 그 후에 i < 10을 체크해서 0일때는 true가 나오게 되어 i값을 출력한다.
// 그 후에 증감을 처리하는데 ++를 하면 0에서 1이 되고 조건을 체크하게 된다.
// 1은 10보다 작으므로 true가 나오고 1출력 하고 ++해서 2가 되고 조건 true여서 2를 출력한다.
// 2,3,4,5,6,7,8,9까지 반복하고 각각 조건이 i < 10 이하이기 때문에 조건이 true여서
// 9를 출력하고 ++ 10이 된다.
// 10 < 10 연산을 하면 조건이 false가 되어 반복문을 빠져나오게 된다.
for(int i = 0; i< 10; i++)
{
cout << i << endl;
}
int i = 0;
- i
는 0
으로 초기화됩니다. 이 초기화는 for
문이 처음 실행될 때만 한 번 수행됩니다.i < 10
- 이 조건식이 true
이면 반복문 내부의 코드가 실행됩니다. i
가 10
보다 작은 동안 반복이 계속됩니다.++i
- 반복이 끝날 때마다 i
가 1
씩 증가합니다.i
가 0
으로 초기화됩니다.i < 10
조건을 평가하여 true
인 경우 cout << i << endl;
를 실행하여 i
값을 출력합니다.i
가 1
증가하고 다시 조건식을 평가합니다.i
가 10
이 되기 전까지 반복됩니다. i
가 10
이 되는 순간 조건이 false
가 되어 반복문을 종료합니다.// 구구단 2단을 출력
for (int i = 1; i < 10; ++i)
{
printf("%d * %d = %d\n", 2, i, 2 * i);
cout << "2 * " << i << " = " << 2 * i << endl;
}
int i = 1;
- i
를 1
로 초기화하여 구구단의 첫 번째 항을 설정합니다.i < 10
- i
가 10
보다 작을 때까지 반복합니다.++i
- i
를 1씩 증가시키며 구구단의 다음 항으로 이동합니다.printf
와 cout
을 사용하여 2 * i
의 결과를 출력합니다.printf
는 C 스타일 출력 함수, cout
은 C++ 스타일 출력 스트림입니다.2 * 1 = 2
2 * 2 = 4
2 * 3 = 6
...
2 * 9 = 18
// 1 ~ 100 사이의 숫자중 짝수만 출력하는 for문을 작성해보자(if문 사용 x).
// i+=2 -> i = i+2 2일때 4가 되고 4일때 6 6 일때 8을 출력한다. (짝수만 출력)
for(int i = 2; i <= 100; i+=2)
{
printf("%d ", i);
}
printf("\n");
int i = 2;
- i
를 2
로 초기화하여 첫 번째 짝수인 2
부터 반복을 시작합니다.i <= 100
- i
가 100
이하일 때까지 반복합니다.i += 2
- i
를 2
씩 증가시켜 짝수만 출력하도록 합니다.2
부터 시작하여 i
를 2
씩 증가시키면서 짝수를 출력합니다.printf("%d ", i);
를 사용해 짝수를 출력하며, 이후 i
가 100
을 넘으면 반복이 종료됩니다.2 4 6 8 10 ... 100
// 1 ~ 100 사이의 숫자중 3과 7의 공배수만 출력하는 if문을 만들어보자
for(int i =1; i <= 100; ++i)
{
if((i % 3) == 0 && (i%7)==0)
{
printf("%d ", i);
}
}
int i = 1;
- i
를 1
로 초기화하여 첫 번째 숫자부터 시작합니다.i <= 100
- i
가 100
이하일 때까지 반복합니다.++i
- i
를 1씩 증가시켜 다음 숫자로 이동합니다.if
문을 사용하여 i
가 3
과 7
의 공배수인지 확인합니다. 공배수는 i % 3 == 0 && i % 7 == 0
로 표현됩니다.printf
로 출력합니다.21 42 63 84
/*
* 중첩 for문 : for문 안에 또 다른 for문이 존재하는 형태이다.
*/
for (int i= 0; i < 10; ++i)
{
for (int j = 0; j < 10; ++j)
{
cout << " i = " << i << "," << "
j = " << j << endl;
}
}
for
문 안에 또 다른 for
문이 들어가 있는 구조입니다.int i = 0;
- i
는 0
으로 초기화됩니다.i < 10
- i
가 10
보다 작을 때까지 외부 루프가 반복됩니다.++i
- i
는 반복이 끝날 때마다 1씩 증가합니다.int j = 0;
- j
는 0
으로 초기화됩니다.j < 10
- j
가 10
보다 작을 때까지 내부 루프가 반복됩니다.++j
- j
는 반복이 끝날 때마다 1씩 증가합니다.j
가 0
부터 9
까지 반복됩니다.i
가 1 증가하고 다시 내부 루프가 실행됩니다.cout << "i = " << i << "," << " j = " << j << endl;
를 통해 i
와 j
의 값을 출력합니다.i = 0, j = 0
i = 0, j = 1
...
i = 0, j = 9
i = 1, j = 0
...
i = 9, j = 9
i
와 j
의 모든 조합이 출력됩니다.구구단을 2단부터 9단까지 출력하는 중첩 for
문을 작성해 보세요. 각 단을 출력할 때, 각 단의 곱셈 결과가 올바르게 출력되도록 중첩 for
문을 활용하면 됩니다. 이 문제는 이중 반복문의 기본적인 활용을 연습하기에 좋은 예제입니다.
아래와 같은 형태로 별(*
)을 출력하는 프로그램을 작성해 보세요. 첫 번째 줄에 별이 하나, 두 번째 줄에 별이 두 개, 이런 식으로 줄이 증가할수록 별의 개수가 하나씩 증가합니다.
*
**
***
****
*****
중첩 for
문을 사용하여, 바깥쪽 반복문이 행을, 안쪽 반복문이 각 행에 출력될 별의 개수를 제어하도록 구현합니다.
이번에는 별을 아래와 같은 형태로 출력해 보세요. 첫 번째 줄에는 별이 다섯 개, 두 번째 줄에는 네 개, 이런 식으로 줄이 증가할수록 별의 개수가 하나씩 줄어듭니다.
*****
****
***
**
*
이 문제에서는 중첩 for
문을 활용하여, 바깥쪽 반복문이 행을, 안쪽 반복문이 각 행에 출력될 별의 개수를 감소시키는 방식으로 코드를 작성해 보세요.
이번 과제는 약간 난이도가 높습니다. 별을 아래와 같이 출력하는 프로그램을 작성해 보세요. 별이 중앙에 정렬되도록 하기 위해 공백(
)을 적절히 사용해야 합니다.
*
***
*****
*******
위의 과제들은 중첩 for
문을 활용한 반복 작업의 다양한 응용을 연습할 수 있는 좋은 예제들입니다. 각 문제를 풀면서 반복문의 흐름과 중첩 구조에 대한 이해를 높일 수 있습니다. 이 과제들을 스스로 해결해 보고, 코드가 잘 작동하는지 확인하는 과정을 통해 프로그래밍 실력을 한 단계 업그레이드해 보세요!
이번 포스트에서는 C++의 for
문과 중첩 for
문에 대해 자세히 알아보았습니다. 반복문은 프로그래밍에서 매우 중요한 구조로, 올바르게 사용하면 코드의 간결성과 효율성을 크게 높일 수 있습니다. 특히, 중첩 for
문은 이중 반복이 필요한 상황에서 매우 유용하게 사용됩니다. 각 예제를 통해 for
문의 기본적인 사용법과 응용 방법을 잘 이해하시기 바랍니다.