배운걸 기준으로 "안녕하세요!" 라는 인사를 100번 출력해야 한다고 상상해 보세요. printf("안녕하세요!\n"); 코드를 100번 복사해서 붙여넣을까요? 100번은 그렇다 쳐도, 만약 10,000번을 반복해야 한다면요? 생각만 해도 끔찍합니다.
다행히 프로그래밍에는 이런 단순 반복 작업을 대신 처리해주는 아주 강력한 도구, 반복문(Loop) 이 있습니다. 반복문을 사용하면 단 몇 줄의 코드로 수천, 수만 번의 작업을 순식간에 처리할 수 있습니다.
이번 장에서는 여러 반복문 중 가장 대표적이고 구조적인 for 문에 대해 배워보겠습니다. for 문은 정해진 횟수만큼 무언가를 반복하고 싶을 때 가장 이상적인 해결책입니다.
1. for 문의 기본 구조와 3가지 핵심 요소
for 문은 반복을 제어하는 세 가지 핵심 요소를 괄호 () 안에 모두 가지고 있어, 반복의 시작과 끝이 명확하게 보이는 것이 특징입니다.
기본 구조:
for (초기식; 조건식; 증감식)
{
// 반복해서 실행할 코드
}
- 초기식 (Initialization): 반복문을 위한 변수(주로
i를 사용)를 선언하고 초기화합니다. 이 코드는for문이 시작될 때 단 한 번만 실행됩니다. (예:int i = 0;) - 조건식 (Condition): 반복을 계속할지 말지를 결정하는 조건입니다. 매 반복이 시작되기 전에 이 조건을 검사하여, 결과가 '참(True)'이면
{}안의 코드를 실행하고, '거짓(False)'이면for문을 완전히 종료합니다. (예:i < 10;) - 증감식 (Increment/Decrement):
{}안의 코드를 한 번 실행한 후에 수행할 작업입니다. 주로 초기식에서 만든 변수의 값을 1씩 증가(i++)시키거나 감소(i--)시켜, 반복이 언젠가 끝날 수 있도록 조건을 변화시킵니다.
2. for 문의 실행 순서
for (int i = 0; i < 3; i++){} 이라는 코드가 어떻게 동작하는지 순서대로 따라가 봅시다.
- (초기식)
int i = 0;실행 →i는0이 됩니다. (최초 한 번만 실행) - (조건식)
i < 3검사 (0 < 3은 참) → 반복 실행 결정! - (반복할 코드 실행)
{}안의 코드를 실행합니다. - (증감식)
i++실행 →i는1이 됩니다.
- (조건식)
i < 3검사 (1 < 3은 참) → 반복 실행 결정! - (반복할 코드 실행)
{}안의 코드를 실행합니다. - (증감식)
i++실행 →i는2가 됩니다.
- (조건식)
i < 3검사 (2 < 3은 참) → 반복 실행 결정! - (반복할 코드 실행)
{}안의 코드를 실행합니다. - (증감식)
i++실행 →i는3이 됩니다.
- (조건식)
i < 3검사 (3 < 3은 거짓) → 반복 종료! for문 다음 코드로 넘어갑니다.
결과적으로 {} 안의 코드는 i가 0, 1, 2일 때 총 3번 실행됩니다.
어렵게 느껴졌다면 아래의 예제를 기준으로 다시 한번 이해해 보세요 .
3. [직접 해봐요!] for 문으로 만드는 다양한 반복
예제 1: "안녕하세요" 5번 출력하기
#include <stdio.h>
int main(void)
{
for (int i = 0; i < 5; i++)
{
printf("안녕하세요! (%d번째)\n", i + 1);
}
return 0;
}
예제 2: 1부터 10까지의 합 구하기
결과를 누적할 변수 sum을 만들고, 반복문 안에서 sum에 i 값을 계속 더해나가는 '누산' 패턴은 매우 중요합니다.
#include <stdio.h>
int main(void)
{
int sum = 0; // 결과를 저장할 변수는 0으로 초기화
for (int i = 1; i <= 10; i++)
{
sum += i; // sum = sum + i; 와 동일
}
printf("1부터 10까지의 합은 %d입니다.\n", sum);
return 0;
}
예제 3: 구구단 출력하기
사용자에게 단을 입력받아, 해당하는 구구단을 출력하는 프로그램을 만들어 봅시다.
#include <stdio.h>
int main(void)
{
int dan;
printf("몇 단을 출력할까요? ");
scanf("%d", &dan);
for (int i = 1; i <= 9; i++)
{
printf("%d x %d = %d\n", dan, i, dan * i);
}
return 0;
}
4. [도전! 프로그래밍] 별 찍기 (중첩 반복문)
for 문 안에 또 다른 for 문을 넣어서 반복을 중첩시킬 수 있습니다. 이를 활용하여 프로그래밍의 고전적인 연습 문제, '별 찍기'에 도전해 봅시다.
문제: 사용자에게 숫자 하나를 입력받아, 그 숫자 높이만큼의 직각삼각형 모양으로 별(*)을 출력하세요.
입력이 5일 때, 원하는 출력:
*
**
***
****
*****
힌트:
- 바깥쪽
for문은 줄(Line)을 제어합니다. (1번째 줄, 2번째 줄, ...) - 안쪽
for문은 각 줄에 몇 개의 별을 찍을지를 제어합니다. - 1번째 줄에는 1개, 2번째 줄에는 2개, ...
i번째 줄에는i개의 별을 찍어야 합니다.
/* 힌트 코드 구조
#include <stdio.h>
int main(void)
{
int height;
printf("삼각형의 높이를 입력하세요: ");
scanf("%d", &height);
for (int i = 1; i <= height; i++) { // i는 현재 줄 번호를 의미
for (int j = 1; j <= i; j++) { // j는 현재 줄에서 몇 번째 별인지를 의미
// 별을 출력하는 코드를 여기에!
}
// 한 줄의 별 출력이 끝나면 줄바꿈을 해야 함!
}
return 0;
}
*/
이 문제를 해결하면 for 문에 대한 이해도가 한 단계 높아질 것입니다!
이번 장 정리
- 반복문은 지루하고 반복적인 작업을 컴퓨터에게 시키는 강력한 도구입니다.
for문은 정해진 횟수만큼 반복할 때 특히 유용합니다.for문의 3요소: 초기식(최초 1회), 조건식(매번 검사), 증감식(매번 실행 후)for문 안에for문을 넣는 중첩 반복문을 사용하면 더 복잡하고 입체적인 반복 작업을 수행할 수 있습니다.
for 문은 반복 횟수를 예측할 수 있을 때 매우 편리합니다. 하지만 "사용자가 'q'를 입력할 때까지 계속" 과 같이, 언제 끝날지 모르는 반복이 필요할 때도 있습니다. 다음 장에서는 이런 상황에 더 적합한 또 다른 반복문, while 문에 대해 배워보겠습니다.
'C, C++ 언어' 카테고리의 다른 글
| C언어 기초 11. break 와 continue (0) | 2025.10.16 |
|---|---|
| C언어 기초 10. 반복문 while 문과 do-while 문 (0) | 2025.10.15 |
| C언어 기초 8장 : 여러 선택지 중 하나, switch 문 (0) | 2025.10.13 |
| C언어 기초 7. 조건문, if 문 (0) | 2025.09.24 |
| [C언어기초] 6. 프로그램의 핵심 도구, 연산자(Operator) 완벽 정복하기 (3) | 2025.07.13 |