개념과 예제
for문은 C언어의 반복문 중에서 가장 빈번하게 사용되는 반복문입니다.while문 또는 do~while문과 달리 for문은 반복될 문장을 자신이 원하는 횟수만큼 반복할 경우에 사용합니다. 예컨대 , number값을 2배로 증가 시키는 문장을 3번 반복하는 코드를 for문으로 만들어 보면 다음과 같습니다.
1.for (i=0; i<3; i++)
2.{
3. number = number * 2 ;
4. }
1행의 i=0 이 초기식 , i<3 이 반복 조건식 , i++ 이 증감식 입니다. 2~4행이 반복될 부분입니다. for문은 위와 같은 초기식 , 조건식 , 증감식 의 3 요소로 반복 횟수를 제어하며 반복 영역을 반복합니다. 다음 예제를 봅시다.
1.#include <stdio.h>
2.
3. int main(void)
4. {
5. int a = 1; // 변수를 선언하고 1로 초기화
6. int i; // 반복 횟수를 세기 위한 변수
7.
8. for (i = 0; i < 3; i++)
9.
10. {
11. a = a * 2;
12. }
13. printf("a : %d\n", a); // for문을 빠져나오면 a값 출력
14.
15. return 0;
16. }
8행이 반복 횟수를 제어하는 초기식 , 조건식 , 증감식이 모여 있는 곳입니다. 초기식은 변수 i 를 초기화 하는 영역입니다. 단 1회 실행됩니다. 조건식은 i 가 3보다 작은가를 만족 하였는지를 검사합니다. 그래서,참이면 10~12 행의 a = a*2 를 실행합니다. 증감식은 i 값을 1 증가 시킵니다. 즉 i를 0 으로 초기화한 후에 i 가 3보다 작은 동안 반복을 하게 됩니다. 이런 방식으로 반복을 하다가 조건식을 만족하지 않으면 반복을 끝냅니다. 그리고, for문을 빠져 나옵니다. 즉 , 변수 i 값이 0, 1, 2 인 동안 조건식이 참이므로 a=a*2 를 3 번 실행합니다.
for문은 반복될 문장을 실행할 때마다 특정 변수의 값을 1 씩 증가 시켜서 정해진 횟수가 될 때까지 반복을 합니다. 그래서 , 반복 횟수 제어 변수가 필요한데 일반적으로 i , j , k 를 사용합니다.
for문 작성 주의 사항
for문 뿐 만 아니라 프로그래밍에서는 이해하기 쉽게 코드를 작성함이 중요한 요소입니다. 따라서 ,반복 횟수를 쉽게 알 수 있도록 for문의 초기식 , 조건식 , 증감식을 만들어야 합니다. 다음 예제를 봅시다.
for (i=0 ; i<3 ; i ++) // i의 값이 0, 1, 2 일 경우 3번 반복합니다.
for (i=0 ; i<=3; i++) // i의 값이 1, 2, 3 일 경우 3번 반복합니다.
for (i=2 ; i< =4; i ++) // i의 값이 2, 3, 4 일 경우 3번 반복합니다.
for (i= 0; i<7 ; i +=3) // i의 값이 0, 3,6 일 경우 3번 반복합니다.
for (i=3 ; i>0 ; i –) // i의 값이 3 ,2,1 일 경우 3번 반복합니다.
위의 for문들은 모두 3번 반복을 하는 문장입니다. 동일한 결과를 가져오지만 직관적이고 신속하게 알 수 있는 첫 번째 혹은 두 번째 for문이 가장 좋습니다. 왜냐하면 조건식 i<3 , i <= 3
에서 반복 횟수가 3 번이라는 것을 쉽게 알 수 있습니다.
반복 횟수를 알려주는 변수를 for문 안에서 바꾸는 것은 좋지 않습니다. 그 변수를 반복 영역에서 바꾸면 반복 횟수를 빨리 알기가 어렵습니다. 다음 예제를 봅시다.
for( i=0 ; i < 10 ; i++)
{
printf(" Hello World"\n);
i + 2 ;
}
for문의 초기식 , 조건식 , 증감식 만 보면 10 회 반복하는 것을 쉽게 알 수 있습니다.
그러나 , 반복 블록에서 i의 값을 또 2씩 증가 시키고 있습니다. i 값이 0~9 까지 10회 반복함을 쉽게 알 수 있었는데 변수 i 를 불필요하게 증가 시켜서 i 가 0 , 3, 6 ,9 일 경우 반복된다는 것을 알기 위해선 계산을 따로 더해야 합니다.
while문으로 변환
for문은 while문으로 바꿀 수 있습니다. for문의 초기식 , 조건식 , 증감식 의 위치를 변경하면 됩니다. 즉 , 초기식은 1번 실행되므로 while문의 위에 , 조건식은 while문의 조건식에 , 증감식은 while문의 반복 영역에 위치 시키면 while 문으로 바뀝니다.
for 문
for ( i=0 ; i < 10 ; i++){
printf("HellO" \n);
}
while문
i=0;
while(i < 10){
printf("Hello" \n);
i++ ;
}