#9. 반복문 - for문

2009. 8. 27. 11:05STUDY !/배워보자 C언어

  for문은 일정한 틀을 가지고 있는 반복문이다.

[  구  조  ]
for ( /*1. 초기조건 */ ; /*2. 반복조건 */ ; /*3. 조건제어*/ )
{
      /* 4. statement... */
}

_

   구조에서 보이는 바와 같이 초기조건, 반복조건, 조건제어설정이 모두 초기에 이루어지기 때문에, while문에 비해서 무한루프에 대한 걱정이 적은 편이다. 각 조건들을 세미콜론(;)으로 구분하고 있음에 주의해야 한다. 이 구문의 동작순서는 1 - 2 - 4 - 3  - 2 - 4 - 3 ...이다. 뒤의 2 - 4 - 3 이 계속 반복되다가, 반복조건이 거짓(FALSE)이 되면, 반복을 끝나고 for문에서 탈출한다.

그냥 보면 어렵게 느껴지니 예를 살펴보자

Ex_1)
 {
1   int i;  // 반복문을 접하다보면 i가 많이 보이는데, index의 약자이다.
2   for ( i = 0 ; i < 10 ; i++ ) // i++ 는 i의 값을 1증가시킨다는 뜻이다.
3   {
4        printf(" 2 × %d = %d\n ", i , 2*i);
5   }
 }

  무슨 프로그램인지 알겠는가? 구구단 2단을 출력하는 프로그램이다. 한줄에 하나씩.
  이 프로그램이 어떻게 생겨먹었는지 구경을 해보자.
  일단 조건에 쓰일 i라는 변수를 선언을 한다. 그리고 나서 for문을 실행하는데, 초기 조건으로 i에 0을 대입한다.
/* 초기조건은 for문이 실행되는 순간에만 작동한다. 루프가 돌아서 두번째가 되었을때에는 무시하고 반복조건부터 확인한다. */
이제 반복 조건을 살핀다. i 가 10보다 작으면 반복을 하란다. i는 0이므로 10보다 작아서 조건은 참이 되고, 반복문을 수행한다. 출력되는 내용은? ' 2 × 0 = 0 ' 이 출력된다. 그리고 나서 조건제어문을 살핀다. i++라고 되어 있으므로 i를 1만큼 증가시킨 후에, 반복 조건을 살핀다. 1도 10보다 작으므로 반복문을 수행한다. 출력 되는 내용은 ' 2 × 1 = 2 ' 가 출력된다. 이렇게 계속 반복하다가, i가 9일때 반복문을 수행하고 나서 i의 값이 10이 되면 반복조건을 충족시키지 못하게 되므로 for문에서 빠져 나온다.

  for문에 대한 이해를 돕기 위해서 몇가지 예를 더 살펴보자. 위의 예제 1은 다음과 같이 쓸 수 있다.

Ex_2)
 {
1   int i;
2   for ( i = 0 ; i < 10 ; )
3   {
4        printf(" 2 × %d = %d\n ", i , 2*i);
5        i++;
6   }
 }

또, 다음과 같이 쓸 수도 있다.

Ex_3)
 {
1   int i;
2   i = 0;
3   for (  ; i < 10 ; i++ )
4   {
5        printf(" 2 × %d = %d\n ", i , 2*i);
6   }
 }

때문에, 다음과 같이 쓸 수도 있다.

Ex_4)
 {
1   int i;
2   i = 0;
3   for (  ; i < 10 ;  )
4   {
5        printf(" 2 × %d = %d\n ", i , 2*i);
6        i++;
7   }
 }

이제는 다른방식으로 이렇게 쓸 수도 있다.

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

  모두 똑같은 결과를 가져오기는 하지만, 1번 예를 제외하고는 표준에도 맞지 않고 이해하기도 어렵기 때문에, 사용하지 않는 것이 좋다.

  이번에는 for문을 사용해서 구구단을 출력하는 프로그램을 만들어보아라.
  성공했다면, 한번에 구구단 세단 씩을 동시에 출력할 수 있게 만들어보아라.

  언어는 실습하지 않으면 기억할 수 없다는 것을 유념하며.
반응형

'STUDY ! > 배워보자 C언어' 카테고리의 다른 글

숫자 야구게임  (0) 2010.02.25
#10. 분기분(1) - if문  (0) 2009.08.29
#8. 반복문 - do-while문  (2) 2009.08.26
#7. 반복문 - while문  (0) 2009.08.25
#6. 화면 입력함수  (0) 2009.08.24