자료실/C언어

C언어 - 반복문 for(), while()

자료수집중 2020. 6. 16.
반응형

반복문은 정해진 과정을 원하는 결과가 나올 때까지 여러 번 반복하게 아는 것입니다.

 

예를 들어 조건문을 이용해서 성적과 등급을 구하는 코드를 작성했다고 했을 때 

성적을 구해야 하는 학생이 40명이 있다고 한다면 40번을 내가 직접 반복해야 합니다.

하지만 반복문을 작성해서 컴퓨터가 40번을 대신 해준다면 더 효율이 높은 작업을 할 수 있습니다.

 

먼저 for문 부터 알아보겠습니다.

for(초기식;조건식;증감식)
{
    코드
}

초기식은 for문이 반복문을 실행하기 전에 한 번만 실행이 됩니다. 주로 변수의 초기화를 하는 용도로 사용됩니다.

조건식은 for문의 반복을 계속할지 안 할지를 결정해주는 부분입니다. 그래서 참(True)인지 거짓(False)인지를 출력해주는 관계, 조건 연산자를 사용합니다.

증감식은 for문이 한 번의 루프가 끝나면 작동합니다. 변수의 값을 증가 또는 감소를 시킨 후 조건식이 실행됩니다.

 

안녕하세요를 10번 출력하려면

for (int i = 0; i < 10; i++)
    printf("%d 안녕하세요 \n",i);

*for문은 코드를 한 줄만 작성하면 {}를 생략해도 됩니다.

초기식에서 int i=0으로 i를 선언 및 초기화해줍니다.

 printf("% d 안녕하세요 \n",i);에서 0번째 "안녕하세요"를 출력 후

증감식의 i++이 i값을 1 증가시켜 줍니다.

1이 증가된 변수 i는 조건식에서 참(True)인지 거짓(False)인지를 판결합니다.

참으로 나오면

다시 printf("%d 안녕하세요 \n",i);를 출력 후 증감식에서 i++을 실행합니다.

이렇게 반복해서 9번째 "안녕하세요"까지 출력하게 됩니다.

 

이번에는 for문 안에 for문을 작성해서 구구단을 출력해 보겠습니다.

for (int i = 2; i < 10; i++) {
    for (int j = 1; j < 10; j++) {
	    printf("%d X %d = %d \n", i, j, i*j);
    }
    printf("\n");
}

초기식조건식은 필요에 맞게 변경해서 사용합니다.

구구단에는 0과 1이 필요 없기 때문에 2부터 시작합니다.

for문 안에 for문이 들어가게 되면 어떤 차례로 실행되는지 결과를 보면 알 수 있습니다.

 

주의할 점은 for문 초기식에서 선언된 변수는 for문 밖에서는 사용할 수 없습니다.

그래서 for문 밖에서 변수를 선언해서 초기식도 가능합니다.

int k = 9l;
for (k = 0; k < 10; k++) 
    printf("%d \n", k);

for문은 보통 몇 번 반복할지 횟수가 정해졌을 때 유용합니다.

 

 

다음으로 while문입니다.

while(조건식)
{
    코드
}

while은 조건식이 거짓이 나올 때까지 내부의 코드를 계속 반복해서 실행합니다.

while문이 실행될 때 차례를 보면 조건식을 먼저 검사하고 반복문을 실행합니다.

int num = 10;
while (num<10)
{
    printf("10보다 작다");
    num++;
}
printf("%d", num);

위에 작성된 코드는 실행하면 아무것도 출력되지 않습니다.

이미 num의 수가 while의 조건식에서 거짓이 출력되기 때문에 while의 루프를 한 번도

실행시키지 않습니다. 그래서printf("%d", num);에서보면 num의 값도 10 그대로입니다.

while(1)
{
}

조건식에 1을 입력하면 무한 반복이 됩니다. 반대로 0을 넣으면 실행이 되지 않습니다.

컴퓨터는 1을 True 0을 False로 인식하기 때문에 계속 참인 상태와 계속 거짓인 상태가 됩니다.

 

입력된 숫자의 합이 100이 넘기면 반복문이 종료되는 while문을 작성해보겠습니다.

int num;
int sum = 0;
while (sum<100)
{
    printf("숫자를 입력해주세요 : ");
    scanf("%d", &num);
    printf("입력된 수 : %d \n", num);
    sum += num;
    printf("총합 : %d \n", sum);
    printf("\n");
}

얼마의 숫자가 입력될지 모르기 때문에 한 번에 끝날 수도 있고 백번 이상을 반복할 수도 있습니다.

그래서 반복 횟수가 조건에 따라서 변할 때 많이 사용합니다.

 

while문은 조건이 먼저 실행된다고 했습니다.

그래서 do-while문이 있습니다.

do
{
    코드
}while(조건식);

아까 앞에서 본 실행되지 않는 while문을 do-while으로 고치면

int num = 10;
do {
    printf("10보다 작다 \n");
    num++;
} while (num < 10);
printf("%d", num);

while의 조건에서는 거짓이 나오지만 한번 루프가 실행되는 모습을 볼 수 있습니다.

do-while은 루프를 한번 실행한 다음 조건식에서 검사를 하기 때문입니다.

그러므로 while과, do-while을 적절하게 사용해야 합니다.

 

'자료실 > C언어' 카테고리의 다른 글

C언어 - 함수(function)  (0) 2020.06.18
C언어 - break, continue, return  (0) 2020.06.17
C언어 - 조건문 if(), swith()  (0) 2020.06.15
C언어 - 연산자  (0) 2020.06.12
C언어 - scanf()  (0) 2020.06.11

댓글