AI/컴퓨터C프로그래밍

컴퓨터C프로그래밍 05 반복

Ayel 2025. 10. 7. 10:15

 

 

반복

 

 

1. 반복: 순환 또는 루프(loop)

 

- 반복 몸체(repetition body)

- 반복 조건을 만족하면 일정하게 반복되는 블록

- 중괄호 { } 사용

 

 

2. while / do while / for

 

while (<반복조건>) {
// 반복몸체(loop body);
<해야할 일>;

}
do {
// 반복몸체(loop body);
<해야할 일>;
} while (<반복조건>);
for (<초기화>; <반복조건>; <증감>) {
// 반복몸체(loop body);
<해야할 일>;
}

 

 

3. 함수 printf() 3번 반복 호출 예제

 

1) 섭씨 온도는 12.46도에서 10씩 2번 증가

- 각각의 화씨 온도 출력

섭씨(C) 화씨(F)
12.46 54.43
22.46 72.43
32.46 90.43

 

2) 화씨->섭씨 변환연산식

F(화씨온도) = 9/5C(섭씨온도)+32

 

3) 변환연산식을 코드로 작성

double celsius = 12.46;

printf("%8.2lf %8.2lf\n", celsius, 9.0/5*celsius+32);
celsius += 10;
printf("%8.2lf %8.2lf\n", celsius, 9.0/5*celsius+32);
celsius += 10;
printf("%8.2lf %8.2lf\n", celsius, 9.0/5*celsius+32);

- 분수 계산 시 double 표현에서는 실수로 표시해주어야 한다

 

4) 반복문 작성

#include <stdio.h>

int main(void) {
    double celsius = 12.46;

    printf("섭씨(C) 화씨(F)\n");

    for (int i = 0; i < 3; i++) {
        printf("%8.2f %8.2f\n", celsius, 9.0 / 5 * celsius + 32);
        celsius += 10;
    }

    return 0;
}

 

 

while / do while

 

 

1. while VS do while

 

1) while

- 반복 전에 반복 조건 평가

 

2) do while

- 반복몸체 수행 후에 반복 조건을 검사

- 반복 조건을 나중에 검사해야 하는 반복에 적합

 

do
	stmt;
while (cond);
next;

- 반복몸체가 여러 문장이거나 필요하면 블록으로 구성

- do while 문의 종료를 나타내는 세미콜론; 필요

 

- 센티널 값(sentinel value)

- 반복의 종료를 알리는 특정한 자료값

- 입력 후에 반복 검사를 진행하는 처리 과정

- do while 문으로 구현이 적합하다

 

 

 

반복 for

 

 

1. 반복문 for

 

1) 반복문 for의 구조

for (init; cond; inc)
	stmt;
next;

- 괄호 내부 2개의 세미콜론 필요

- 초기화 문장(init)은 단 한번만 실행된다

- cond > stmt > inc 순서로 반복

 

2) 반복문 for의 괄호 내 항목

- init: 주로 초기화(initialization)

- 변수 선언에 의한 초기화도 가능

- 여기서 선언된 변수는 반복for문 내에서만 사용 가능

 

- cond: 반복 조건 검사(condition)

- 반복조건 cond를 아예 제거하면 무한히 반복

 

- inc: 주로 반복을 결정하는 제어 변수의 증감(increment)을 수행

 

 

2. 반복문 for 예제

 

1) 특정 숫자까지 반복

- 조건식 i<=MAX는 전처리 수행 후 MAX가 5로 대체되어 i<=5가 되므로, i가 5보다 큰 6이 되는 경우 조건식이 거짓이 되어 반복 종료

- 증감의 i++은 반복몸체 문장이 실행된 후 실행

 

2) 숫자의 합을 구하기

for문을 이용해 1부터 10까지 합을 구하는 모듈

- 제어변수 i를 이용: 1부터 10까지 순회

- 순회하는 제어 변수 i값을 계속 합해 변수 sum에 누적

int i, sum;

for (i=1; sum=0; i<=10; i++)
	sum += i;

 

 

3. for / while의 비교

 

1) for

- 주로 반복 횟수를 제어하는 제어 변수를 사용

- 초기화와 증감 부분이 있는 반복문에 적합

 

2) while

- 구조가 간단해 다양한 구문에 이용

- 반복 횟수가 정해지지 않고 특정한 조건에 따라 반복을 결정하는 구문에 적합

- for문과 while문은 서로 변환이 가능

 

 

break / continue

 

 

1. break VS continue

 

1) break를 만나면 구문이 종료된다

 

2) continue는 자신이 속한 가장 근접한 반복에서 다음 반복을 실행

for (var=0; var<10; var++) {
-----------------
continue;
-----xxxxx----
}
do {
-----------------
continue;
-----xxxxx----
} while (var<10);
while (var<10) {
-----------------
continue;
-----xxxxx----
}
continue 아래의 구문들은 건너뛰고
continue에서 바로 var++로 감
continue 아래의 구문들은 건너뛰고
continue에서 바로 var<10으로 넘어감
continue 아래의 구문들은 건너뛰고
continue에서 바로 var<10으로 넘어감

- continue이후의 반복몸체를 실행하지 않고 조건문으로 이동

 

 

2. 예제

 

 

 

 

3. 무한반복(무한루프)

 

for ( ; ; ) {
	...
}

- 조건문에 아무것도 쓰지 않으면 무한반복

for ( ; 1; ) {
	...
}
while (1) {
	...
}
do {
	...
} while (1)

- 조건문에 1(참)을 넣으면 무한반복이 일어남

 

** while과 do while에서 조건문이 비어 있으면 오류 발생

while ( ) {
	...
}
do {
	...
} while ( )

 

 

중첩된 반복

 

 

- for문 내부에 for문 존재

- 제어 변수: m, n

- 외부 for문의 제어 변수는 m, 내부 for문의 제어 변수는 n

ex. 외부 반복에서 m은 1에서 4까지 반복, 각각의 m에 대해 내부 반복에서 n이 1에서 3까지 반복

 

 

외부 반복 제어 변수 i -> 1에서 5까지 반복

내부 반복 제어 변수 j -> 1에서 외부 반복 제어 변수 i까지 반복