농담곰담곰이의곰담농

C 프로그래밍 : 현대적 접근 06 | 루프

by 브이담곰

1 while문

while문은 C언어 반복문중에서 가장 간단하고 중요한 구문이다!

while (  expression  )  statement

 

while문이 실행되면, 우선 제어식이 평가된다. 제어식의 값이 0이 아니라면(참) 루프 본문이 실행된 다음 제어식을 다시 평가한다.

i = 1;
while (i < n)
    i = i * 2;

 

중괄호가 굳이 필요하지 않은 상황이더라도 몇몇 프로그래머들은 중괄호를 추가해준다.

while (i < n) {    /* 중괄호 사용 가능하나 필수는 아님 */
    i = i * 2;
}

 

무한루프

만약 제어식이 언제나 0이 아닌 값을 갖는다면, while문은 종료되지 않는다.

 

[관용구]

while (1) …

위와 같은 while문은 루프 본문에 루프 밖으로 벗어나게 해주는 구문(break, goto, return) 이 없거나 프로그램이 종료되게 하는 함수를 호출하지 않는다면 평생 실행된다.

 

2 do문

do문은 제어식을 루프 본문 실행 이후에 판별한다.

do   statement   while   (  expression  )   ;

do 문이 시행되면 우선 루프 본문이 먼저 실행이 되고 나서 제어식이 평가된다.

i = 10;
do {
    printf("T 빼기 %d, 세는 중\n", i);
    --i;
} while (i > 0);

 

 

3 for
for   (   expr1   ;   expr2   ;   expr3   )    statement

 

for문 관용적 표현

for문은 일정 횟수 또는 구간에서 변수를 증감시키는 동안 반복을 할 때 매우 유용한 반복문이다. 주로 n번 숫자를 세야할 때 for문이 사용된다.

 

[관용구]

for (i = 0; i < n; ++i)   …

● 0에서 n-1까지

 

[관용구]

for (i = 1; i <= n; ++i)   …

● 1에서 n까지

 

for문에서 표현식 생략하기

 

첫번째 표현식이 생략된다면 루프가 실행되기 이전에 아무런 초기화도 일어나지 않는다.

i = 10;
for (; i > 0; --i) {
    printf("T 빼기 %d, 세는 중\n", i);
}

 

세번째 표현식이 없는 경우 우리는 루프 본문을 통해 두번째 표현식이 언젠가는 거짓이 되게 만들어주어야한다.

for (i = 10; i > 0;) {
    printf("T 빼기 %d, 세는 중\n", --i);
}

 

C99에서의 for문

C99에서는 for문의 첫번째 표현식은 선언문으로 대체할 수 있다.

for (int i = 0; i < n; ++i) {
    …
}

 

 

쉼표 연산자
for (sum = 0, i = 1; i <= N; ++i) {
    sum += i;
}

 

 

4 루프에서 벗어나기
break 

break문은 가장 안쪽 while문, for문, do문, switch문에서 제어를 밖으로 옮긴다. 

while    (…)    {
    switch    (…)    {
        …
        break;
        …
    }
}

 

continue문
n = 0;
sum = 0;
while (n < 10) {
    scanf("%d", &i);

    if (i == 0) {
        continue;
    }

    sum += i;
    ++n;
    /* continue jumps to here */
}

 

 

goto

해당 구문에 표식label이 있는 한 함수 내의 그 어느 구문으로든 도약할 수 있다

for (d = 2; d < n; ++d) {
    if (n % d == 0) {
        goto done;
    }
}

done:
    if (d < n) {
        printf("%d is divisible by %d\n", n, d);
    } else {
        printf("%d is a prime\n", n);
    }

블로그의 정보

농담곰담곰이의곰담농

브이담곰

활동하기