C언어

[C언어] for문과 while문에 대해

by [Dark].Angel posted Jan 14, 2009
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄

이번에는 순환문인 for문과 while문에 대해 설명하겠습니다.

for문은 알고리즘을 할 때 꼭 써야 할 것인데요. 다른 곳에도 아주 많이 사용됩니다.

 

일단 for문에 대해 설명하겠습니다.

 

for문은 하나 이상의 볼록을 지정된 횟수만큼 실행하는 c의 제어문입니다.

for문은 프로그램의 특정 부분을 한 번 이상 반복 실행하므로 가끔 for 순환문이라고도 합니다.

 

for문은 다음과 같은 구조를 가집니다.

for(초기식; 조건식; 증감식)

{

         반복 실행할 문장;

}

 

'초기식', '조건식', '증감식'은 모두 c의 수식이고, '반복 실행할 문장'은 c의 단일문이나 복합문입니다.

프로그램이 샐행되는 동안 for 문을 만나게 되면 다음과 같은 동작을 수행합니다.

 

 1. 초기식이 평가됩니다. 초기식은 대개 특정 값을 변수에 저장하는 할당문입니다. (예: i=0)
 2. 조건식이 평가됩니다. 조건식은 일반적으로 관계 수식입니다. (예: i>10)

 3. 조건식이 0의 값에 해당하는 거짓으로 평가되면 for 문이 종료되고

    프로그램의 제어는 반복 실행할 문장의 바로 다음에 있는 문장으로 넘어갑니다.

 4. 조건식이 참으로 평가되면 반복 실행할 문장에 포함되어 있는 c의 문장이 실행됩니다.
 5. 증감식이 사용되고 나면 제어는 다시 두 번째 단계로 돌아갑니다. (예: i=1+1 )

 

for문의 동작 과정을 보여 드리겠습니다. 조건식이 처음에 거짓으로 평가되면 반복 실행할 문장은

한번도 실행되지 않는 다는 것을 기억하시길 바랍니다.

           

 

 시작

         

                             

 초기식 평가

                                           

                            ↙ 조건식 평가 ->증감식 평가            

 조건식 평가

                              ↘ (조건식 평가가 참일 경우) 문장 실행
 
          ↓ (거짓일 경우 종료)   

종료

 
이렇게 나타냅니다.
 
for문을 시작해 초기식 평가를 수행하고 조건식 평가를 합니다.
조건식 평가가 계속 되고 증감식 평가가 실행 되면서 참일경우 또 다시 조건식 평가, 증감식 평가를 거쳐갑니다.
만약 조건식 평가가 거짓일 경우for문은 종료가 됩니다.
 

 

 For 문 - 되짚어 보기

 

 for (초기식; 조건식; 증감식)

{

             반복 실행할 문장(들);

}

 

'초기식'은 c에서 사용 할 수 있는 수식으로 매개변수에 특정 값을 저장하는 할당문입니다.

 

'조건식'도 마찬가지로 c의 수식이구요. 일반적으로 관계 수식을 사용합니다. 주어진 조건이 거짓으로

평가될 때 for 문이 종료되고, 제어는 '반복 실행 할 문장(들)' 바로 다음에 있는 문장으로 전달됩니다.

그렇지 않다면 반복 실행할 문장(들)이 실행됩니다.

 

증감식은 c의 수식으로 대개 초기식 부분에서 초기화된 변수를 증감하는 수식입니다.

 

'반복 실행할 문장(들)'은 주어진 조건이 참으로 평가되는 한 계속해서 실행되는 c의 문장(들)입니다.

 

정리하자면 for 문은 순환문입니다. for문은 초기화(초기식), 비교문(조건식), 증감(증감식)부분으로 구성됩니다.

for문은 우선 초기화 수식을 사용하구요. 그러고 나서 비교문을 수행하여 주어진 조건이 참이라면 for문에

포함된 문장을 실행합니다. 문장이 실행되고 나면 증감을 수행하는 수식이 사용되며 다시 조건을 확인하여

결과가 거짓으로 평가될 때까지 계속해서 반복하게 됩니다.

 

예제를 한 개 써보겠습니다.

 

예제 - /* 0부터 9까지 증가시켜 i의 값을 출력 하는 예제 /

 

int i;

 

for (i = 0; i < 10; i++)

{

           printf("n x의 값이 %d 입니다.", i );

}

 

일부분만 예제를 써봤는데요. 이렇게 쓸 경우

x의 값이 1 입니다.

x의 값이 2 입니다.

x의 값이 3 입니다.

 

계속해서 나올 것입니다. 9까지 말이죠. 9까지에서 끝나는 이유는 조건식 평가가 끝났기 때문입니다.

이유는 조건식 평가에서 거짓으로 평가되었기 때문에 종료가 된것입니다.

 

 
 이거는 꼭 합시다.  이거는 하지 맙시다.

 for 문에서 널 문장을 사용할 필요가 있다면 세미콜론을 입력합시다. 세미콜론을 다음 줄에 독립적으로 입력하거나 또는 for 문의 마지막에 공백과 함께 입력합시다. 세미콜론을 독립된 줄에 입력하는 것이 더 좋습니다.

 

for (count = 0; count < 10;

arra[ count] = 50) ; //빈칸에 주의합시다.

for문 내에서 너무 많은 동작을 처리하지 않도록 합시다.

너무 많은 동작을 처리할 경우 프로그램이 복잡하게 되 이해를 못할 수도 있습니다. 쉼표 연산자를 사용하여 for 문 내에서 원하는 동작을 수행 할 수 있지만 원칙적으로 순환문 내에서는 필요한 것만을 수행하는 것이 더 좋습니다.

  

while 문

while 순환문이라고도 하는 while 문은 지정된 조건이 참이라면 계속해서 주어진 문장을 실행하는데요.

while 문은 다음과 같은 형식으로 사용됩니다.

 

 

while( 조건식)

{

 

실행할 문장;

 

}

 

'조건식'은 c의 수식이고 '실행할 문장'은 c의 단순문이나 복합문입니다. 프로그램에서 while 문이 사용될 때에는

다음과 같은 동작이 수행됩니다.

 

 1. 조건식이 평가됩니다.
 2. 조건식이 거짓(0)으로 평가되면 while 문은 종료되고 제어는 실행할 문장 바로 다음의 문장으로 넘어갑니다.
 3. 조건식이 참으로 평가되면 실행할 문장에 포함되는 c문장이 실행됩니다.
 4. 제어는 다시 첫 번째 단계로 돌아갑니다.

 

while문의 동작 과정입니다.

 

시작       ←←←←←←←←←←

 ↓                                ↑

조건식 평가 →(참일 경우) 문장 실행

 

 ↓(거짓일 경우)

 

완료

 

순으로 동작이 됩니다.

 

for문은 for( ; 조건식; )

다음과 같이 사용될 수 있습니다.

 

while 문은 while( 조건식 )

이런 비슷한 점이 있으니 for문을 사용 할 수 있는 곳에서 while문을 대신 사용할수 있는 것입니다.

while문을 사용할 때에는 초기화 부분에 해당하는 내용을 먼저 독립된 문장으로 포함시켜야 하고 값을

증감시키는 부분을 while문 내에 포함시켜야 합니다.

 

 

while 문

 

 while (조건식)

{

 

실행할 문장(들)

 

}

 

 

'조건식'은 c의 수식입니다. 제가 계속 말씀 드린것입니다. 일반적으로 관계 수식이 사용되구요

조건식이 거짓으로 평가될 때에는 while문이 종료되고 제어는 실행한 문장(들) 바로 다음에 있는 문장으로 전달됩니다.

그렇지 않다면 실행할 문장(들)에 해당되는 c문장이 실행됩니다.

 

'실행할 문장(들)'은 조건식이 참으로 평가되는 경우에 계속해서 실행되는 c문장입니다.

 

while문은 c의 순환문!!이므로 주어진 조건이 참으로 평가된다면 계속해서 문장이나 블록을 실행을 합니다.

while문이 처음 실행될 때 주어진 조건이 거짓으로 평가되면 포함된 문장은 절대로 실행이 되지 않습니다.

 

예제를 보여드리겠습니다.

 

int i = 0;

while ( i < 10 )

{

       printf(" i의 값은 %d 입니다.", i );

       i++

}

 

아주 쉬운 while문의 예제 입니다.

 

 

while문도 이해하시고 넘어가길 바랍니다.

 

 

 

지금까지 for문과 while문에 강좌였습니다