본문 바로가기
프로그래밍/C언어

C언어 공부하기 - 순환문(1) while, for

by 헬맷쓰다 2020. 7. 23.
반응형

순환문(Loop)은 반복계산을 위해 사용되는데 대표적으로 while문과 for 문이 있습니다. 먼저 while문은 아래와 같은 형식으로 사용합니다.

while (expression)
    statement

expression을 계산하여 참이면 (= 0 이 아니면) statement를 수행하고 다시 expression을 계산을 반복을 합니다. 

반면 for문은 다음과 같은 형식을 갖습니다.

for (expr1; expr2; expr3)
    statement

위 구조의 for 문을 while문으로 동일하게 바꿔 보면 아래와 같습니다.

expr1
while (expr2) {
    statement
    expr3
}

for문의 세가지  expr1, expr2, expr3은 모두 수식이어야 하는데 한개 이상 생략을 할 수 있습니다. 보통 expr1은 초깃값, expr2는 관계(비교)수식, expr3는 대입수식입니다. 아래와 같이 모든 수식이 없으면 소위 무한루프(Infinite loop)를 돌게 됩니다.

for (;;) {
    ....
}

앞서 언급 했듯이 for문은 while문과 동일하게 바꿀수 있고 그 반대의 경우도 가능합니다. for문을 쓸것인지 while문을 쓸것인지는 프로그래머의 취향의 문제입니다. 다만, for문은 초깃값 설정이 필요한 경우 사용하기 편리합니다.

예제를 한번 만들어 보겠습니다.

순환문을 이용하여 1부터 10까지 더하는 프로그램을 만들어 보세요.

우선 순환문 중 for문을 사용해서 만들어볼까요?

문제에서 1부터 10까지 더하라고 했으니 초깃값을 1로하고 그 값이 10이 될때까지 1씩 증가하도록 순환문을 만들면 되겠네요.

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

먼저 정수형 변수 i를 선언하고 for문에 첫번째 수식에 i = 1로  초깃값을 넣었습니다. 그리고 두번째 수식에서 i가 10이하인 경우 for문을 계속수행한다는 관계(비교)수식이 들어 있구요. 세번째 수식으로 for문 안의 문장이 수행되면 i를 1 증가시키라고 지정을 했습니다. 참고로 for 문 밑에 줄에 세미콜론(;)이 하나 있는데, 그냥 아무것도 안하고 for문만 돌리게 할때 사용합니다.

1부터 10까지의 숫자는 for문으로 구해 놨으니 이제 더하는 문장만 만들면 되겠네요.

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

값을 더해서 저장할 sum이라는 정수형 변수를 선언하고 0으로 초기화 했습니다. 그리고 for문안에서 sum에 i를 누적해서 더했습니다.

실행가능한 코드를 만들어 보면 다음과 같습니다.

#include <stdio.h>

void main()
{
    int i;
    int sum = 0;
    for (i = 1; i <= 10; i++)
        sum += i;
    
    printf ("sum 1~10 : %d\n", sum);
}

실행결과는 아래와 같습니다.

PS C:\CS> .\for.exe
sum 1~10 : 55

이제 이 for문을 while문으로 바꿔 보겠습니다. while문에서 조건을 검사하는 수식이 들어가므로 while(for의 두번째 수식)이런식으로 작성을 하고 초깃값을 while문에 전에 설정을 해주고 while문 내부에서 for문의 3번째 수식을 사용을 하여 숫자를 증가시키면 됩니다.

int i = 1;
int sum = 0;
while (i <= 10) {
    sum += i;
    i++;
}

앞서 말한대로 for문과 while문은 선호도에 따라 골라쓰기도 하지만 어떤 순환문을 사용하는게 프로그램짜기 편한지 나중에 유지보수에 좋을지를 고민하여 선택을 하는게 좋습니다.

while문과 for문에 대해 알아보았는데, 다음 시간에는 예제를 조금 더 다뤄보고 순환문으로 쪼금만 더 들어가 볼께요. 그럼 안녕~

반응형

댓글