Notice
Recent Posts
Recent Comments
Link
250x250
«   2025/03   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
Archives
Today
Total
관리 메뉴

공부해보잠

반복문 본문

자격증/정보처리

반복문

heejk 2025. 2. 13. 00:51
반복문의 개요

반복문은 프로그램에서 특정 코드 블록을 여러 번 실행하는 제어문입니다.
일정한 횟수 동안 반복 실행하거나, 특정 조건이 만족될 때까지 반복하는 방식으로 동작합니다.

C 언어에서는 다음과 같은 반복문을 제공합니다:

반복문 설명 특징
for 초기값, 조건식, 증감식을 한 줄에 포함하는 반복문 반복 횟수가 정해져 있을 때 사용
while 조건을 만족하는 동안 계속 실행하는 반복문 반복 횟수가 정해지지 않았을 때 사용
do-while 실행 후 조건을 검사하여 반복하는 문 최소 한 번은 실행됨

for문
  • for 문은 특정 횟수만큼 반복 실행하는 제어문
  • 초기값, 최종값(조건식), 증가값을 설정하여 반복을 제어
  • for(;;)와 같이 조건에 참여하는 수식을 모두 생략하면 for문은 무한 반복한다.
  • for문은 처음부터  최종값에 대한 조건식을 만족하지 못하면 한 번도 수행하지 않는다.
  • 문자도 for문을 수행할 수 있다

기본 구

for (초기값; 조건식; 증가값) {
    // 실행할 문장
}

 

초기값: 반복을 시작할 변수 값을 설정 (int i = 0;)
조건식: 반복이 진행될 조건 (i < 10; → i가 10보다 작을 때 반복)
증가값: 반복할 때마다 변수의 값을 변경 (i++ → i를 1씩 증가)

for문의 동작 과정

 

예제 :1부터 5까지 출력

#include <stdio.h>

int main() {
    for (int i = 1; i <= 5; i++) {  // i는 1부터 5까지 증가
        printf("반복 %d\n", i);//i++후위증가로 5의 값이 될때까지 반복 수행
    }
    return 0;
}
반복 1
반복 2
반복 3
반복 4
반복 5

 

  • i = 1  i <= 5 만족 → 실행 → i++
  • i = 2  i <= 5 만족 → 실행 → i++
  • i = 5  i <= 5 만족 → 실행 → i++
  • i = 6  i <= 5 조건 불만족 → 종료

예제 : 중첩된 for 문 (구구단 2단 출력)

#include <stdio.h>

int main() {
    for (int i = 2; i <= 9; i++) {  // 2단부터 9단까지 반복
        for (int j = 1; j <= 9; j++) {  // 곱하는 수 (1~9)
            printf("%d x %d = %d\n", i, j, i * j);
        }
        printf("\n");  // 단 사이에 줄바꿈
    }
    return 0;
}

 

2 x 1 = 2
2 x 2 = 4
...
2 x 9 = 18

 

  •  for 문: i가 2부터 9까지 증가하며 각 단 실행
  • 안쪽 for 문: j가 1부터 9까지 증가하며 곱셈 연산 수행

예제 문자 및 문자열 출력 시

#include <stdio.h>

int main() {
    for (char ch = 'A'; ch <= 'Z'; ch++) {  // 'A'부터 'Z'까지 반복
        printf("%c ", ch);
    }
    return 0;
}
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

 

  • ch = 'A'부터 시작
  • ch++로 한 문자씩 증가
  • 'Z'까지 반복 후 종료
#include <stdio.h>

int main() {
    char str[] = "HELLO";  // 문자열 선언, 
    for (int i = 0; str[i] != '\0'; i++) {  // NULL 문자('\0') 전까지 반복
        printf("%c ", str[i]);
    }
    return 0;
}

 

H E L L O

 

문자열 str[]의 각 문자를 for 문을 이용해 한 글자씩 출력

C 언어에서 문자열(char 배열)을 다룰 때, "HELLO"처럼 문자열을 정의하면 자동으로 문자열 끝에 '\0'(NULL 문자)가 추가됨

문자열의 끝을 표시하기위해 \0이 추가됨

 

for문의 무한 루프 발생 조건 및 해결책

무한 루프 발생 원인 해결 방법
조건이 항상 참 (for (i = 1; i > 0; i++)) 반복 조건을 명확히 설정 (i <= 10)
증감식이 없음 (for (i = 0; i < 5;)) 증감식 추가 (i++)
증감 방향 오류 (for (i = 10; i > 0; i++)) 감소 방향으로 수정 (i--)
의도적인 무한 루프 (for (;;)) break; 문을 사용하여 탈출

 


 

while문
  • while 문은 조건이 참(true)인 동안 계속 반복하는 제어문
  • 반복 횟수가 정해지지 않았을 때 주로 사용
  • 조건이 처음부터 거짓이면 한 번도 실행되지 않음

while 문의 기본 구조

while (조건식) {
    // 실행할 코드
}

 

조건식이 참(true)이면 {} 내부 코드 실행
조건식이 거짓(false)이면 즉시 종료

while문의 동작과정

 

예제 1: 1부터 5까지 출력

#include <stdio.h>

int main() {
    int i = 1;  // 초기값 설정
    while (i <= 5) {  // 조건이 참이면 반복
        printf("반복 %d\n", i);
        i++;  // i 값을 증가시켜 조건을 변경
    }
    return 0;
}
반복 1
반복 2
반복 3
반복 4
반복 5
  • i = 1  i <= 5 참 → 실행 후 i++
  • i = 5  i <= 5 참 → 실행 후 i++
  • i = 6  i <= 5 거짓 → 종료

예제 2: 사용자가 0을 입력할 때까지 반복

#include <stdio.h>

int main() {
    int num;
    
    printf("숫자를 입력하세요 (0 입력 시 종료): ");
    scanf("%d", &num);

    while (num != 0) {  // num이 0이 아닐 때 계속 반복
        printf("입력한 숫자: %d\n", num);
        printf("숫자를 입력하세요 (0 입력 시 종료): ");
        scanf("%d", &num);
    }

    printf("프로그램 종료\n");
    return 0;
}
숫자를 입력하세요 (0 입력 시 종료): 5
입력한 숫자: 5
숫자를 입력하세요 (0 입력 시 종료): 3
입력한 숫자: 3
숫자를 입력하세요 (0 입력 시 종료): 0
프로그램 종료

 

  • num != 0이면 계속 반복
  • num == 0이면 while 문 종료

예제 3: 처음부터 조건이 거짓이면 실행되지 않음

#include <stdio.h>

int main() {
    int i = 10;

    while (i < 5) {  // 조건이 처음부터 거짓 (10 < 5는 false)
        printf("이 문장은 실행되지 않습니다.\n");
    }

    printf("프로그램 종료\n");
    return 0;
}

 

프로그램 종료

 

  • i = 10, i < 5는 처음부터 거짓 → 실행 안 됨
  • 바로 "프로그램 종료" 출력

while 문에서 무한 루프 발생 예제

#include <stdio.h>

int main() {
    int i = 1;

    while (i > 0) {  // 항상 참이므로 무한 반복
        printf("무한 루프 실행 중... i = %d\n", i);
    }

    return 0;
}

해결방법(i++ 또는 i--를 추가하여 탈출 조건 설정)

while (i > 0) {
    printf("i = %d\n", i);
    i--;  // 조건이 변하도록 수정
}

 

요약

  • while 문은 조건이 참인 동안 반복 실행
  • 조건이 처음부터 거짓이면 한 번도 실행되지 않음
  • 반복 횟수가 정해지지 않은 경우 while 문이 적합
  • 조건을 변경하지 않으면 무한 루프 발생 가능 → 탈출 조건 필수

do~while문
  • do-while 문은 while 문과 유사하지만, 무조건 한 번은 실행된다는 차이가 있음.
  • 즉, 실행할 문장을 먼저 실행한 후, 조건을 검사하여 반복 여부를 결정함.

do-while 문의 기본 구조

do {
    // 실행할 코드
} while (조건식);

 

반복할 코드를 먼저 실행한 후(do {} 부분), 조건(while (조건식))을 검사함.
조건이 참이면 계속 반복, 거짓이면 종료됨.
최소 한 번은 실행됨! (while 문과의 가장 큰 차이점)

do~while문의 동작 과정

예제 1: 1부터 5까지 출력

#include <stdio.h>

int main() {
    int i = 1;

    do {
        printf("반복 %d\n", i);
        i++;  // i 값을 증가
    } while (i <= 5);  // i가 5 이하이면 반복

    return 0;
}
반복 1
반복 2
반복 3
반복 4
반복 5

 

  • i = 1 → 먼저 "반복 1" 출력 후 i++
  • i = 5까지 같은 방식으로 실행
  • i = 6이 되면 while (i <= 5) 조건이 거짓이므로 종료

예제 2: 사용자가 0을 입력할 때까지 반복

#include <stdio.h>

int main() {
    int num;

    do {
        printf("숫자를 입력하세요 (0 입력 시 종료): ");
        scanf("%d", &num);
    } while (num != 0);  // 0이 아닐 때 계속 반복

    printf("프로그램 종료\n");
    return 0;
}
숫자를 입력하세요 (0 입력 시 종료): 5
숫자를 입력하세요 (0 입력 시 종료): 3
숫자를 입력하세요 (0 입력 시 종료): 0
프로그램 종료
  • num = 5 → 실행 후 조건 검사 (5 != 0 → 반복)
  • num = 3 → 실행 후 조건 검사 (3 != 0 → 반복)
  • num = 0 → 실행 후 조건 검사 (0 != 0 거짓 → 종료)

do-while 문에서 무한 루프 발생 예제

#include <stdio.h>

int main() {
    int i = 1;

    do {
        printf("무한 루프 실행 중... i = %d\n", i);
    } while (1);  // 조건이 항상 참이므로 종료되지 않음!

    return 0;
}

해결방안 (break;를 추가하여 탈출)

do {
    printf("반복 실행 중...\n");

    if (조건)  // 특정 조건을 만족하면 탈출
        break;
} while (1);

 

do-while 문과 while 문의 차이

 

조건이 처음부터 거짓이면 while 문은 실행되지 않지만, do-while 문은 최소 한 번 실행됨

#include <stdio.h>

int main() {
    int i = 10;

    while (i < 5) {  // 처음부터 거짓이므로 실행되지 않음
        printf("while 실행 중... i = %d\n", i);
    }

    printf("while 종료\n");

    do {  // 조건과 상관없이 한 번 실행
        printf("do-while 실행 중... i = %d\n", i);
    } while (i < 5);  // 조건이 거짓이므로 두 번째 실행은 안 됨

    printf("do-while 종료\n");

    return 0;
}
while 종료
do-while 실행 중... i = 10
do-while 종료

즉, while 문은 처음부터 조건이 거짓이면 실행되지 않지만, do-while 문은 최소 한 번은 실행됨

 

요약

  • do-while 문은 최소 한 번 실행 후 조건을 검사
  • while 문과 달리 처음부터 조건이 거짓이어도 한 번은 실행됨
  • 사용자 입력을 반복적으로 받을 때 자주 사용됨
  • 무한 루프 방지를 위해 탈출 조건을 반드시 고려해야 함

break, continue
  • break와 continue는 switch 문이나 반복문(for, while, do-while)의 실행 흐름을 제어하는 예약어
  • break는 반복문을 즉시 종료하고 빠져나감.
  • continue는 현재 반복을 건너뛰고 다음 반복으로 넘어감.(반복문에서만 사용)

예제

#include <stdio.h>

int main() {
    for (int i = 1; i <= 10; i++) {  // i는 1부터 10까지 증가하며 반복
        if (i == 5)
            continue;  // i가 5이면 출력문을 건너뛰고 다음 반복으로 이동

        if (i == 8)
            break;  // i가 8이면 반복문 즉시 종료

        printf("%d ", i);  // i 값을 출력
    }

    return 0;
}

 

 

 

i 값 if (i == 5) (continue) if (i == 8) (break) 출력
1 ❌ 실행 안 됨 ❌ 실행 안 됨 1
2 ❌ 실행 안 됨 ❌ 실행 안 됨 2
3 ❌ 실행 안 됨 ❌ 실행 안 됨 3
4 ❌ 실행 안 됨 ❌ 실행 안 됨 4
5  continue 실행 → 출력문 건너뛰고 다음 반복 ❌ 실행 안 됨 (출력 안 됨)
6 ❌ 실행 안 됨 ❌ 실행 안 됨 6
7 ❌ 실행 안 됨 ❌ 실행 안 됨 7
8 ❌ 실행 안 됨  break 실행 → for 문 종료 (출력 안 됨)

for (int i = 1; i <= 10; i++)

  • i를 1부터 10까지 증가하면서 반복 실행

if (i == 5) continue;

  • i가 5이면 continue; 실행 → printf("%d ", i);를 건너뛰고 다음 반복 진행

if (i == 8) break;

  • i가 8이면 break; 실행 → for 문 즉시 종료

printf("%d ", i);

  • i == 5와 i == 8이 아닌 경우에만 i를 출력
1 2 3 4 6 7

즉, i == 5일 때는 출력이 건너뛰어지고, i == 8일 때는 반복문이 종료됨


출처 및 참고

정보처리 산업기사 기본서(시나공)

728x90

'자격증 > 정보처리' 카테고리의 다른 글

포인터  (0) 2025.02.16
배열과 문자열  (0) 2025.02.13
제어문  (0) 2025.02.12
데이터 입·출력  (0) 2025.02.10
연산자  (0) 2025.02.09