이 장에서는
C에서 사용하는 기본적인 데이터형 및 정수형과 실수형의
차이점에 대해 알아보 고, 이들 형으로 된 상수나 변수를
선언하는 방법에 대한 연습을 해 보겠다. 이제부터는 printf() 와
scanf() 함수를 사용해서 서로 다른 형으로 된 값을 읽고
쓰는 연습을 시작한다.
프로그램은
데이터로 모든 것을 처리한다. 컴퓨터에 숫자, 문자, 단어를
입력하고 이 데이터를 근거로 어떤 것을 해 주길 기대한다.
예를 들면 컴퓨터가 지불할 이자를 계산해 주거나 상품
목 록을 정렬해 보여 주게 할 수 있다. 이 장에서는
단순히 데이터를 읽어들이는 것뿐만 아니라 데 이터를
제어하는 더 재미있는 방법도 배우게 될 것이다.
이 장에서는
데이터형의 두 개의 큰 계보, 즉 정수형(interger type)과
실수형(floating point type)에 대해 깊이 있게 공부한다.
C는 여러 가지 데이터형(data type)을 제공하고 있다. 독자 들은
데이터형이 무엇인지, 어떻게 선언하는지, 그리고 언제
사용해야 하는지를 배우게 될 것이 다. 또한 상수와
변수의 차이점에 대해서 알아보고, 이 강의에서 제공하는
최초의 대화식 프로그 램을 만나게 될 것이다.
또
다른 예제 프로그램
이제는
또 다른 예제 프로그램으로 시작하기로 하자. 앞서와 마찬가지로
몇가지 낯선 것들을 만나게 되겠지만 곧 친숙해질 것이다.
프로그램의 일반적인 의도는 아주 명확하기 때문에 프로 그램이
어떤 기능을 수행하는지 알기 쉽게 예제 3-03-01의 소스
코드를 컴파일해서 실행시켜 보기 바란다. 시간을 절약하기
위해 설명문은 제외하고 입력할 수도 있다.
예제
3-03-01) exam03_03_01.c
|
/*
exam03_03_01.c -- 체중을 금값으로
환산 */ #include
int
main(void) { float
weight; /*
사용자 몸무게 */ float
value; /*
사용자의 금값 환산가치 */
printf("당신의
몸무게를 금값으로 환산하면 얼마일까요?\n");
printf("지금부터
알아보겠습니다.\n"); printf("당신의
몸무게를 kg 단위로 입력한 후 Enter 키를
누르세요 = ");
/*
사용자의 입력을 받음 */ scanf("%f",
&weight);
/*
금값은 현재 1돈당 50000원으로 가정 */
/*
금 1돈은 3.75g이므로 1kg은 1000/3.75돈 */
value
= 50000.0 * weight * 1000 / 3.75; printf("당신의
몸무게는 금값으로 환산하여 %.2f 원입니다.\n",
value); printf("당신은
분명히 그만한 가치가 있습니다. 금값이 떨어질
때에는,\n"); printf("당신의
가치를 유지하기 위해서는 더 많은 음식을
드십시오. ^^;\n");
return
0; }
|
노트(Note)
- 오류와 경고
|
이
프로그램을 잘못 입력하는 경우, 예를 들어,
세미콜론을 빠뜨렸다면 컴파일러가 구문 오류(syntax
error) 메시지를 낼 것이다. 심지어 정확히
입력했더라도 아마 "Warning - conversion
from 'double' to 'float', possible loss
of data."와 유사한 경고(warning)를
낼 것이다. 오류(error) 메시지는 사용자가
무언가를 잘못했으며 따라서, 컴파일이 중단된다는
것을 의미한다. 그러나 경고(warning) 메시지는
유효한 코딩을 했지만, 사용자가 의도한 대로
되지 않았을 가능성이 있다는 것을 의미한다.
경고는 컴파일 작업을 중지시키지는 않는다.
이러한 특별한 경고는 C가 50000.0과 같은
값을 처리하는 방법에 연관된 것일 것이다.
이 예제에서 다룰 내용은 아니므로 경고에
대한 설명은 이 장의 뒷부분에서 상세히 다루기로
하자.
|
프로그램을 입력할
때 50000.0을 현재의 금 1돈의 시세로 바꾸기 바란다. [Enter]키를 누르라 는 것은 체중을 입력하고 입력이 끝났음을
컴퓨터에게 알리기 위한 것이다. 자신의 체중을 입력 하고
[Enter] 키를 누르면 다음과 같은 결과가 나타난다. 여기서는
자신의 체중을 64kg이라고 입력한 것으로 가정하자.
다음은 실행결과이다.(앞으로 사용자가 키보드로부터 입력해야하는
부 분은 파란색으로
나타내도록 하겠다.)
당신의
몸무게를 금값으로 환산하면 얼마일가요? 지금부터
알아보겠습니다. 당신의
몸무게를 kg 단위로 입력한 후 Enter 키를 누르세요 = 64
당신의
몸무게는 금값으로 환산하여 853333333.33 원입니다.
당신은
분명히 그만한 가치가 있습니다. 금값이 떨어질 때에는,
당신의
가치를 유지하기 위해서 더 많은 음식을 드십시오. ^^;
■
새롭게 등장한 것
이
프로그렘에는 C의 새로운 요소가 몇 가지 사용되었다.
1.
새로운 종류의 변수를 선언했다는 것에 주목하기 바란다.
전에는 단지 정수형(int) 변수 만
사용했는데, 지금은 실수형(float) 변수를 추가했기 때문에
더 넓은 범위의 다양한 데이터를
처리할 수 있다. float형 변수는 소수점을 저장할 수 있다.
2.
새로운 방식으로 상수를 사용하는 방법을 보여 주고 있다.
이제는 소수점 숫자를 사용 할
수 있다.
3.
추가된 새로운 종류의 변수를 출력하기 위해, printf()
함수에 %f 변환 형식(specifier) 을
사용하여 실수형 변수를 처리하였다. %.2f에서 .2라는 변경자(modifier)는
소수점 둘째
자리까지 출력하라는 것을 나타낸다.
4.
키보드에서 입력받기 위해서 scanf() 함수를 사용했다.
%f는 scanf() 함수에게 키보
드로부터
실수형 숫자를 읽으라고 지시하고, &weight는 입력받은
값을 weight라는 변수에
대입하라고 지시한다. scanf() 함수는 weight라는 변수가
저장된 위치를 나타 내기 위해
& 기호를 사용한다. 다음 장에서 &에 대해 더 자세히
공부하겠지만 우선 이 것이
꼭
필요하다는 것을 기억하기 바란다.
5.
아마도 가장 새로운 기능이라면 프로그램이 대화식이라는
점일 것이다. 컴퓨터가 정보 를
달라고 요청하고 수를 입력하면 그것을 읽어 사용한다.
대화식 프로그램은 비대화 식보다
사용할 때 훨씬 재미있다. 더욱 중요한 것은 대화식이 프로그램을
더 융통성있 게
만들어 준다는 것이다. 예를 들어 앞의 예제 프로그램은
64kg 뿐만 아니라 합리적인 범위의
체중에 대해 모두 사용할 수 있다. 즉, 다른 사람의 체중을
처리하기 위해 프로 그램을
새로 작성할 필요가 없는 것이다. scanf( )와 printf( )
함수가 이러한 기능을 가 능하게
해 준다. scanf( ) 함수는 프로그램으로부터 데이터를 읽어
화면에 나타낸다. 이
두 함수를 함께 사용하면 컴퓨터와 사용자 간에 양방향
의사 소통이 가능해지고, 컴 퓨터
사용이 더 즐거워진다.
이 장에서는
위에 열거한 새로운 기능 중 앞의 두가지, 즉 변수와 상수의
여러 가지 데이터형에 대해 설명하고, 나머지 3개는 '4장
- 문자열과 입, 출력 형식'에서 설명하겠다. 하지만 이
장에서도 printf()와 scanf() 함수를 제한적으로 사용할
것이다.
데이터
: 변수와 상수
컴퓨터는
프로그램을 이용해서 많은 것을 할 수 있다. 컴퓨터로 덧셈을
하고, 이름을 분류하고, 스피커나 모니터 화면을 다루고,
인공위성의 궤도를 계산하고, 주소록을 만들고, 전화를
걸고, 막대 그래프를 그리고, 결론을 내리는 등 상상할
수 있는 모든 작업을 할 수 있다. 이러한 일을 하기
위해서 프로그램은 데이터, 즉 사용할 정보를 나타내는
숫자와 문자를 다룰 수 있어야 한 다.
프로그램이
실행되기 전에 이미 정해져 있으며, 프로그램이 멈출 때까지
변경되지 않는 데이터 를 상수(constant)라
한다. 이에 반해 프로그램이 실행될 때 값이 변하거나 새로운
값을 대입하 는 데이터를 변수(variable)라
한다. 앞의 예제 프로그램에서 weight는
변수이고,
1000/3.75는
상수다. 그렇다면
50000.0은 무엇일까? 실상 금값은 시세가 일정하지 않아
변수 같지만 그것은 어디까지나 인간사 문제이고, 프로그램은
이것을 상수로 취급한다. 양자의 차이는 프로그램이
실행 중일 때 그 값이 새로 대입할 수 있거나 변할 수 있으면
변수이고,
그렇지 않으면
상수이 다.
다음장에 계속...
|