반복
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까지 반복
'AI > 컴퓨터C프로그래밍' 카테고리의 다른 글
컴퓨터C프로그래밍 04 연산자와 조건 (0) | 2025.10.06 |
---|---|
컴퓨터C프로그래밍 03 C 프로그래밍 기초 (0) | 2025.10.06 |
컴퓨터C프로그래밍 02 C 프로그래밍 첫걸음 (0) | 2025.10.06 |
컴퓨터C프로그래밍 01 C 언어 개요와 개발환경 설치 (0) | 2025.10.05 |
컴퓨터C프로그래밍 00 C 언어 개발환경 설치 (0) | 2025.10.05 |