프로그래밍[Univ]/C언어

[C언어] [For function (for 함수)] 온도변환기

Cloud Travel 2008. 3. 23. 17:44

이 글은 전에 썻던 While Function을 읽은 사람이 읽는다고 생각하고,
While Function에 설명했던 변수지정, Include, printf, ... 를 설명 하지 않겠습니다.
자세한 내용을 알고싶으면
여기를 클릭해주세요.
---------------------------------------------------------------------------------=> 이것은 저번에 다루웠던 while을 이용하여 만들었던 온도변환기 소스입니다.
#include <stdio.h>
main ( )
{
    int fahr, celsius;
    int lower, upper, step;

    lower = 0;  
    upper = 300;
    step = 30;

    fahr = lower;
    while (fahr <= upper){
        celsius = 5 * ( fahr - 32 ) / 9;
        printf("%3d %6d\n", fahr, celsius);
        fahr = fahr + step;
    }
}
---------------------------------------------------------------------------------
이곳 부터가 For 로 만든 온도변환기 소스입니다.
#include <stdio.h>
main ( )
{
        int fahr;
        for(fahr = 0; fahr <= 300; fahr = fahr +30)
        printf("%3d %6.1f\n", fahr, ( 5.0 / 9.0 ) * ( fahr - 32 ) );
}
---------------------------------------------------------------------------------
가장 먼저 느껴지는 것이 멀까요??
일단, 소스의 길이가 엄청나게 줄어 들었습니다.
While로 만든 온도 변환기와 For을 이용하여 만든 온도 변환기의
소스의 길이는 많이 차이가 있습니다. 이 두 가지 소스의 차이점을 토대로
설명을 시작하겠습니다.

1. 변수의 지정
    int fahr, celsius;
    int lower, upper, step;
  ----------------------
    int fahr;
 while 문에서의 변수(위)는 모든 것을 변수로 지정하여 식을 문자로 세웠다.
 for 문에서의 변수(아래)는  fahr만을 변수로 지정하여 식을 숫자로 세웠다.
 어떤 것이 좋은 것일까? 여러가지 고려를 해봤을 때 전자인
while문에서의 변수지정방식을 선호하여 사용하길 바란다.
 왜냐하면, 다른 사람이 이 소스를 보고 변수를 바꾸고 싶을때, while 문에서는
    lower = 0;  
    upper = 300;
    step = 30;
부분을 바꿈으로써 간편하게 다른 변수로 실행 시킬수 있다.
하지만, for 문에서는 식에서 일일이 찾아서 숫자를 바꿔줘야 하므로
복잡한 프로그램일수록 변수를 찾아 일일이 고쳐주는게 힘들기 때문이다.

2. for function, for 문, for 함수
 이번 페이지의 가장 중요한 for 문에 대하여 알아보자
 for 문은 세미콜론(;)을 기준으로 3부분으로 구분이 된다.
 1. 첫 부분은 순환(루프)의 내용이 실행되기전의 초기 값을 설정하는 부분이다.
    (실행되기전 단 한번만 실행된다.)
 2. 두 번째 부분은 조건을 나타내 주는 부분이다. 이 부분의 조건이 맞는다면
    다음 단계를 실행하게 된다.
 3. 세 번째 부분은 2번에서 조건이 맞아 실행 하였다면 변수를 바꿔주는 단계이다.
    이 곳에서 변수가 바뀐뒤 2번의 조건에 맞는다면 다음 단계를 실행한다.


3. 결과 비교
while 에서 보지 못햇던 printf에서의 출력 방식을 비교 해보자.
 printf("%3d %6d\n", fahr, celsius);
 printf("%3d %6.1f\n", fahr, ( 5.0 / 9.0 ) * ( fahr - 32 ) );
어디가 다른지는 표시해주겠다. 자세한 내용을 보고싶으면
<<printf>>클릭하여 printf 부분을 찾아 설명을 읽어보아라.

사용자 삽입 이미지
                                       아래의 명령어를 사용하여 나온 결과
사용자 삽입 이미지

                                         위의 명령어를 사용하여 나온 결과