안녕하세요. 언제나휴일의 언휴예요.
C언어의 반복문
C언어는 세 종류의 반복문을 제공하고 있어요.
while(조건 표현) statement;
do statement while(조건 표현);
for(statement;statement;statement)statement;
while 문
C언어에서는 특정 조건이 참일 동안 반복하는 구문으로 while 문을 제공하고 있어요.
while(표현) statement;
while문 소괄호 표현은 참과 거짓을 판별할 수 있는 표현이어야 합니다.
다음은 0에서 10까지 정수의 합계를 계산하는 코드입니다.
i를 0으로 초기화하였고 i가 10보다 작거나 같다면 블록({}) 에 있는 구문을 반복합니다.
while문도 if 문처럼 여러 개의 구문을 반복하려면 블록으로 지정해야 합니다.
*개인적으로 하나의 코드만 수행할 때도 블록을 지정하는 습관을 권합니다.*
#include <stdio.h>
int main()
{
int sum = 0; //합계를 위한 변수 선언
int i = 0; //반복문을 수행 횟수를 기억할 루프 카운터
while(i<=10)//i가 10보다 작거나 같다면
{
sum += i; //sum에 i를 더한 값을 대입
i++;//i값을 1 증가
}
printf("0에서 10까지 합계: %d\n",sum);
return 0;
}
do while 문
do statement while(조건 표현);
do while 문은 statement를 수행한 후에 조건 표현을 확인하기 때문에 최소 한 번은 수행한다는 특징이 있습니다.
물론 개발자들은 즐겨 사용하는 표현을 계속 쓰는 것을 선호하여 do while 문으로 작성한 코드는 자주 볼 수 없을 거예요.
다음은 사용자가 입력한 값이 음수가 아닐 때까지 합계를 구하는 코드입니다.
먼저 블록({})내의 코드를 수행한 후에 while 조건 표현을 확인합니다.
따라서 정수를 입력 받는 작업을 먼저 수행합니다.
그리고 입력한 정수가 0보다 크거나 같으면 반복해서 작업을 수행합니다.
음수를 입력하면 반복문을 탈출해서 현재까지 입력한 정수의 합계를 출력하고 있습니다.
#include <stdio.h>
int main()
{
int sum = 0; //합계를 위한 변수 선언
int num = 0;
do
{
sum += num; //sum에 현재 sum과 lcnt 더한 값을 대입
printf("정수를 입력하세요. [음수 입력하면 종료]\n");
scanf_s("%d", &num);
}while(num>=0); //입력한 정수가 0보다 크거나 같다면
printf("입력한 수의 합은 %d 입니다.\n", sum);
return 0;
}
for문
for(statement;statement;statement)statement;
for문은 소괄호에 3개의 statement를 표현할 수 있어요.
첫 번째 statement는 for문을 수행하는 초기에 단 한 번 수행하는 구문입니다.
두 번째 statement는 조건 표현입니다. 따라서 두 번째 stetement가 참일 때 반복 수행 여부를 판단합니다.
세 번째 statement는 반복 작업을 수행한 후에 조건 변화를 주기 위한 구문입니다.
다음 코드는 for문의 수행 순서를 확인하기 위한 코드입니다.
초기 구문에 i=0, printf(“1 “)을 표현하였습니다.
조건 표현에 (i==0)&&printf(“2 “)를 표현하였습니다. 참고로 printf 함수의 반환 값은 출력한 문자 개수입니다.
세 번째 조건 변화 구문은 printf(“3 “),i++를 주었습니다.
반복 수행할 구문은 printf(“4 “)입니다.
printf 문은 수행 순서를 확인하고자 하는 의도일 뿐 다른 의미는 없습니다.
#include <stdio.h>
int main()
{
int i;
for (i = 0,printf("1 "); (i==0) && printf("2 "); printf("3 "),i++)printf("4 ");
return 0;
}
실행 결과
1 2 4 3
실행하면 결과는 1 2 4 3 이 나옵니다.
첫 번째 초기 statement를 수행한 후에 조건 표현 stetement를 수행한 후에 조건이 참이면 반복 구문을 수행합니다. 그리고 마지막으로 조건 변화 statement를 수행합니다.
그리고 다시 조건 표현을 확인합니다.
for문은 반복문을 작성할 때 초기에 해야 할 일과 반복문에서 조건을 변화를 어떻게 줄 것인지 생각할 수 있게 도와줍니다.
while 문에서는 개발자 스스로 초기화 구문과 조건 변화를 고민해야 하지만 for문은 표현할 위치가 있어서 한 번 더 생각할 수 있다는 거죠.
다음은 0부터 10까지 합계를 계산하여 출력하는 코드입니다.
위에 작성한 while 문과 비교해 보세요.
#include <stdio.h>
int main()
{
int sum = 0; //합계를 위한 변수 선언
int i = 0; //반복문을 수행 횟수를 기억할 루프 카운터
for(i=0; i<=10; i++)//i는 0에서 10보다 작거나 같다면 순차적으로
{
sum += i; //sum에 i를 더한 값을 대입
}
printf("0에서 10까지 합계: %d\n",sum);
return 0;
}
이처럼 문법으로 반복문을 보면 이해하는 것이 아주 어려운 것은 아니예요.
그런데 우리가 해야 할 것은 문법을 이해하는 것이 아니라 주어진 문제를 코드로 표현하는 작업이예요.
많은 연습과 실전을 통해 문제 해결 능력을 키우세요.