C, C++ 언어

C언어 기초 9. 반복문, for 문

게임플밍마스터 2025. 10. 14. 15:01

배운걸 기준으로 "안녕하세요!" 라는 인사를 100번 출력해야 한다고 상상해 보세요. printf("안녕하세요!\n"); 코드를 100번 복사해서 붙여넣을까요? 100번은 그렇다 쳐도, 만약 10,000번을 반복해야 한다면요? 생각만 해도 끔찍합니다.

다행히 프로그래밍에는 이런 단순 반복 작업을 대신 처리해주는 아주 강력한 도구, 반복문(Loop) 이 있습니다. 반복문을 사용하면 단 몇 줄의 코드로 수천, 수만 번의 작업을 순식간에 처리할 수 있습니다.

이번 장에서는 여러 반복문 중 가장 대표적이고 구조적인 for에 대해 배워보겠습니다. for 문은 정해진 횟수만큼 무언가를 반복하고 싶을 때 가장 이상적인 해결책입니다.

1. for 문의 기본 구조와 3가지 핵심 요소

for 문은 반복을 제어하는 세 가지 핵심 요소를 괄호 () 안에 모두 가지고 있어, 반복의 시작과 끝이 명확하게 보이는 것이 특징입니다.

 

기본 구조:

for (초기식; 조건식; 증감식) 
{
    // 반복해서 실행할 코드
}

 

  1. 초기식 (Initialization): 반복문을 위한 변수(주로 i를 사용)를 선언하고 초기화합니다. 이 코드는 for문이 시작될 때 단 한 번만 실행됩니다. (예: int i = 0;)
  2. 조건식 (Condition): 반복을 계속할지 말지를 결정하는 조건입니다. 매 반복이 시작되기 전에 이 조건을 검사하여, 결과가 '참(True)'이면 {} 안의 코드를 실행하고, '거짓(False)'이면 for 문을 완전히 종료합니다. (예: i < 10;)
  3. 증감식 (Increment/Decrement): {} 안의 코드를 한 번 실행한 후에 수행할 작업입니다. 주로 초기식에서 만든 변수의 값을 1씩 증가(i++)시키거나 감소(i--)시켜, 반복이 언젠가 끝날 수 있도록 조건을 변화시킵니다.

2. for 문의 실행 순서

for (int i = 0; i < 3; i++){} 이라는 코드가 어떻게 동작하는지 순서대로 따라가 봅시다.

  1. (초기식) int i = 0; 실행 → i0이 됩니다. (최초 한 번만 실행)
  2. (조건식) i < 3 검사 (0 < 3은 참) → 반복 실행 결정!
  3. (반복할 코드 실행) {} 안의 코드를 실행합니다.
  4. (증감식) i++ 실행 → i1이 됩니다.

  1. (조건식) i < 3 검사 (1 < 3은 참) → 반복 실행 결정!
  2. (반복할 코드 실행) {} 안의 코드를 실행합니다.
  3. (증감식) i++ 실행 → i2가 됩니다.

  1. (조건식) i < 3 검사 (2 < 3은 참) → 반복 실행 결정!
  2. (반복할 코드 실행) {} 안의 코드를 실행합니다.
  3. (증감식) i++ 실행 → i3이 됩니다.

  1. (조건식) i < 3 검사 (3 < 3은 거짓) → 반복 종료!
  2. for 문 다음 코드로 넘어갑니다.

결과적으로 {} 안의 코드는 i0, 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 문에 대해 배워보겠습니다.