1 / 46

제 2 장 데이터형과 표준 입출력문

제 2 장 데이터형과 표준 입출력문. 2.1 상수의 표현 2.2 변수의 표현 2.3 수식과 대입문 2.4 데이터형 2.5 데이터의 형 변환 2.6 표준 입출력 함수 2.7 키보드 입력함수. C 언어에서 데이터는 상수 (constant) 와 변수 (variable) 로 나눈다 . 상수와 변수는 크게 문자형 , 정수형과 실수형의 데이터형을 가진다 . 일반적으로 상수는 프로그램이 실행되기 전에 데이터형과 값을 미리 선언한 후에 실행 중에 그 값이 바뀌어지지 않는다 .

kalare
Download Presentation

제 2 장 데이터형과 표준 입출력문

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 제2장 데이터형과 표준 입출력문 2.1 상수의 표현 2.2 변수의 표현 2.3 수식과 대입문 2.4 데이터형 2.5 데이터의 형 변환 2.6 표준 입출력 함수 2.7 키보드 입력함수

  2. C 언어에서 데이터는 상수(constant)와 변수(variable)로 나눈다. • 상수와 변수는 크게 문자형, 정수형과 실수형의 데이터형을 가진다. • 일반적으로 상수는 프로그램이 실행되기 전에 데이터형과 값을 미리 선언한 후에 실행 중에 그 값이 바뀌어지지 않는다. • 반면 변수는 프로그램이 수행되기 전에 데이터형을 미리 선언을 한 후에 프로그램 실행 중에 변수에 값을 대입하여 프로그램이 수행할 수 있도록 허용하는 것을 말한다.

  3. 2.1 상수의 표현 • 상수는 프로그램 중에 그 값이 명시되어 변하지 않는 것으로서 문자(character) 상수, 정수형 상수, 실수형 상수, 문자열(character string) 상수가 있다. • 실수형 상수에는 십진형 표기와 지수형 표기가 있다. • 문자 상수는 ‘A’와 같이 ‘’(작은따옴표)로 묶어서 문자를 표현한다. • 문자열 상수는 “ ”(큰따옴표)로 나타내는데, “1234”는 숫자가 아니라 문자열로 다룬다. • 변수와 상수는 프로그램 시작부분의 선언부에 선언한다.

  4. 2.1.1 문자 상수 • 문자상수는 아스키(ASCII)코드의 한 문자를 표현을 위해 작은 따옴표로 묶어 나타낸다. • 문자 상수는 한 바이트로 표현된다. • ① 작은 따옴표로 묶인 문자이다. • (예) ‘a’ • ② 코드 값을 직접 작은 따옴표로 묶어서 표현한다 • (예) ‘\246’, ‘\x9B’ • 여기서, ‘\x’, ‘\X’ 16진 표현이다.

  5. ③ 아스키코드에서 특수문자, 제어문자 영역(0x00~0x19)은 문자상수 표현이 어려우므로 기능코드를 사용하여 문자 상수로 프로그램 중에 표현할 수 있다. • 기능 코드들을 escape 문자라 하며 표 2.1과 같다.

  6. 표 2.1 escape 문자

  7. 2.1.2 정수 상수 ① 소수점이 없는 수치, 기본형은 signed int이다. ② 부호가 없는 정수 상수인 경우 수치 뒤에 ‘u’, ‘U’의 태그(tag)를 붙인다. ③ 수치의 크기가 int의 한계를 넘으면 자연히 long int로 인식한다. ④ 절대값이 작은 수치에 태그를 붙여 long int로 명시 가능하다. ⑤ unsigned long int형 상수에는 끝에 ‘ul’혹은 ‘UL’을 붙인다. ⑥ 정수표현에서 ‘0’은 8진 표현이고 ‘0x’이나 ‘0X’는 16진 표현이다.

  8. 표 2.2 정수 상수의 표현

  9. 2.1.3 실수 상수 ① 기본형은 double형이다. ② float형 상수는 ‘f’혹은 ‘F’의 태그를 사용한다. ③ long double형은 ‘l’나 ‘L’의 태그를 붙인다. ④ 십진형 표기와 지수형 표기가 있다.

  10. 표 2.3 실수 상수의 표현

  11. 2.1.4 문자열 상수 문자열상수(character string constant)는 일련의 문자들의 모임을 말하며, 다음과 같이 표현된다. ① 문자열은 “”(큰따옴표)로 표현한다. ② 문자열은 아스키 문자들의 끝에 널(Null) 문자가 첨가된다. 예를 들어 “abc"는 3개의 문자와 문자열의 알리는 널 문자를 포함하므로 실제 크기는 4바이트이다. ③ “"는 문자열의 길이가 0인 널 스트링(null string)이다. 실제 문자열의 크기는 1바이트이다.

  12. 표 2.4 여러 가지 상수의 예

  13. 2.2 변수의 표현 2.2.1 변수의 선언 • 프로그램 상의 명령문이 실행됨에 따라 값이 바뀔 수 있는 것을 변수(variable)라 한다. • 변수는 항상 프로그램의 본문이 실행되기 전에 정의를 한 후 사용해야 한다. • 변수 선언은 변수를 위한 기억공간을 할당하고 변수명과 변수가 가질 데이터형을 지정하는 것을 말한다.

  14. 변수를 정의하는 방법 • 문법 • 데이터형 변수명[=초기값], [ 변수명[=초기값] ...] ; • 변수 정의는 변수가 가질 데이터형과 변수명을 위한 식별자를 지정한다. • 변수에 초기값을 지정하려면 ‘=’다음에 초기값이나 수식을 쓴다. • 데이터형이 같은 변수들을 연속적으로 한꺼번에 정의할 수 있다.

  15. 변수명이나 상수명, 함수명 등으로 사용하는 식별자를 지정하는 규칙 ① 첫 문자는 영문자로 시작해야 된다. ② 변수명의 길이는 31자까지 유효하다. ③ 언더바(_)는 변수명의 일부로 사용할 수 있으며 첫 글자에도 올 수 있다. ④ 키워드(if, int, for, do....)는 변수명으로 사용할 수 없다. ⑤ 대문자와 소문자는 다른 문자로 구분한다.

  16. 표 2.5 변수명의 바른 예와 틀린 예

  17. 변수명을 붙일 때 신경쓰자 ① 좋지 않은 예 int i, j; char a, b, c; char *n, *q, *r; float x, y z; ② 좋은 예 char *CurrentDirectory; int TotalFileNumber; ③ 함수 예 int Factorial(int n) { if( n==0) return 1; else return (Factorial(n-1)*n); }

  18. 변수명을 붙일 때 신경쓰자(계속) ④ 접두사 접두사와 접미사를 사용하는 것은 의미를 명확하게 하고 또한 프로그램의 일관성을 부여할 수 있다. PutImage, SetColor, GetCurrenFileName, .... ⑤ 기타 ■ 의미가 어렵거나 분명하지 않은 단어는 사용을 되도록 피하도록 한다. HandleCalculation, ProcessData, ... ■ 루틴이 하는 일을 모두 설명할 수 있어야 한다. 루틴 이름과 관련이 없는 연산들은 그 루틴에 포함되어서는 안된다.

  19. 변수명을 붙일 때 신경쓰자(계속) ■ 루틴명의 길이는 최적의 평균 길이는 9~15자이다. 그러나 평균적으로 현실적인 이름은 15~20자가 적당하다. ■ 이름짓기를 위한 규칙을 정한다. 특히 여러 사람이 프로그래밍 프로젝트에 참가할 경우 이름짓기에 관한 규칙을 제정해야 한다. => 프로그램의 표준화 및 일관성

  20. 2.2.2 변수의 초기화 • 선언한 변수는 프로그램 실행도중에 수식에 따라 값이 변할 수 있다. • 처음에 변수를 미리 초기화하여 사용할 수도 있다.

  21. 예제 2.6 다음 프로그램은 문자 변수를 선언하고, 계산하는 프로그램이다. 실행 결과를 분석하시오. #include <stdio.h> #include <conio.h> void main(void) { char c ='y'; int i, a=97; printf(" %c \n",c); printf(" %d \n",c); printf(" %d \n",'A'+'C'); printf(" %c %c \n",c,c+1); printf("%c\n",a); for(i=a;i<=122;i++) printf("%c",i); }

  22. 2.3 수식과 대입문 • 변수명에 값을 기억시키는 방법 • 변수 선언시 초기값을 지정하는 방법 • 대입문에 의한 방법 • 입력함수에 의한 방법 • 대입문에 의한 방법은 상수, 변수, 함수로 구성된 연산의 수식을 미리 지정한 변수에 대입하는 것을 말한다. • 예) • y=x+1; • 변수 x가 갖고 있는 값에 1을 더해서 그 결과를 y에 대입하라는 의미이다. • ‘=’은 대입연산자이다.

  23. 예제 2.8 다음은 대입문을 변형하여 프로그램 한 예이다. 프로그램을 분석하시오. #include <stdio.h> #include <conio.h> void main(void) { int i, j, k; i=j=k=10; printf("i = %d, j = %d, k = %d\n",i, j, k); k = (i=20) + (j=40); /* 대입문 변형 */ printf("i = %d, j = %d, k = %d\n",i, j, k); }

  24. 2.4 데이터 형(data type) • C언어에서 제공하는 기본데이터형 • 정수형 • 실수형(부동소수점형, 浮動小數点形) • 문자형 • 각 데이터형은 그 표현 범위가 제한되어 있으며 컴파일러에 따라서 제한 범위가 다를 수도 있다.

  25. 2.4.1 정수 데이터형 • 정수는 2byte로 표현되는 signed int형을 기본으로 한다. • int 보다 큰 범위의 정수를 다루기 위한 signed long int형도 있다. • long으로 간단히 표현할 수 있다. • 음수가 사용되지 않는 카운터와 같은 데이터에서는 unsigned int형을 사용한다.

  26. 표 2.6 정수(int)형의 표현 범위(Visual C++ 기준)

  27. 2.4.2 문자 데이터형

  28. 2.4.3 실수 데이터형 • 실수는 float, double, long double형이 있으며 기본형은 double형이다. • float형은 전체 32bit로 구성되어 있으며, 부호 1비트 지수 8비트, 가수 23비트의 3부분으로 구분된다. • float형의 정확도는 10진수의 7.2자리로 표현하며 수치의 크기는 10+38까지 나타낸다. • float형에서 지수부와 가수부를 확장한 double형과 long double형이 있다.

  29. IEEE 754에 정의된 float형의 내부표현 표 2.8 부동소수점(float)형의 표현 범위

  30. 예제 2.9 컴파일러가 제공하는 변수의 크기를 알아보는 프로그램이다. #include <stdio.h> void main() { int n; char c; long p; float f; double d; printf("%d \n", sizeof(char)); printf("%d \n", sizeof(int)); printf("%d \n", sizeof(long)); printf("%d \n", sizeof(float)); printf("%d \n", sizeof(double)); }

  31. 2.5 데이터 형 변환 • 데이터의 형 변환 • 자동 형 변환 • 강제 형 변환 • 자동 형 변환 • 대입 연산시 우측의 수식 결과값을 좌측의 데이터형으로 변환하여 배정할 때 발생 • 산술 연산시 두 오퍼랜드의 데이터의 형이 다른 경우에 발생 • 데이터형이 큰 쪽으로 변환 • 강제 형 변환 • cast 변환 : • (형) 수식; • (형) 변수;

  32. 예제 2.11 자동 형 변환과 강제 형 변환 #include <stdio.h> void main(void) { char a='A'; int b=20, c, d=50, e=30; float f; c=a+b; /* 자동 형변환 */ f=(float)d+(float)e; /* 강제 형변환 */ printf("c=%d \n", c); printf("f=%f \n", f); }

  33. 2.6 표준 입출력 함수 • 입력 : 데이터를 컴퓨터 내부에 기억시키는 것 • 출력 : 내부에 기억된 내용을 컴퓨터 외부에 나타내는 것 • C언어에서 표준 입출력 함수 : printf, scanf • 표준 입출력 함수기 있는 헤더 파일 • #include <stdio.h> • 헤더 파일 : 함수의 프로토 타입을 정의해 두고, 인수의 개수와 형(type)을 검사하여 프로그램의 안정성을 보장한다.

  34. 2.6.1 printf • printf 함수는 화면에 문자열이나 변수 값을 일정한 형식으로 출력하는 함수이다. • 형식 • printf("형식지정 문자열", 변수1, 변수2, 변수3,...); • 예) • printf("%5d", a);

  35. 표 2.9 printf 형식지정 문자열

  36. 표 2.10 printf 정리기호

  37. 예제 2.12 printf예 #include <stdio.h> void main() { int i=100, j; j = &i; printf("%d\n",123); printf("%5d\n",345); printf("%05d\n",345); printf("%13u\n",4239109949); printf("%0d\n",567); printf("%05x\n",507); printf("%5x\n",507); printf("%#5x\n",507); printf("%6o\n",507); printf("%#6o\n",507); printf("%0x\n",507); printf("%-5d\n",678); printf("%6.1f\n",789.38); printf("%10.1e\n",789.38); printf("%7.1f\n",789.45); printf("%p\n",&i); printf("%20s\n","abcdefg789.45"); }

  38. 2.6.2 scanf • scanf 함수는 키보드로부터 데이터를 직접 입력하는 기능을 가진 함수 • 형식 • scanf("형식지정 문자열", 변수1, 변수2, 변수3,........); • 예) • scanf("%d", &a);

  39. 표 2.11 scanf 형식지정 문자열

  40. 예제 2.13 scanf예 #include <stdio.h> void main( void ) { int i, result; float fp; char c, s[81]; printf( "정수 실수 문자 문자열을 입력하시오\n"); result = scanf( "%d %f %c %s",&i,&fp,&c,s ); printf( "\n입력된 데이터의 개수 = %d\n",result); printf( "입력결과 : %d %f %c %s\n",i,fp,c,s); }

  41. 예제 2.14 scanf예 #include <stdio.h> void main(void) { int a; float b; /* 정수, 실수, 문자형 선언 */ char c; printf(" input(integer)==>"); scanf("%d",&a); /* 정수입력 */ printf("\n input(float)==>"); scanf("%f",&b); /* 실수입력 */ printf(" a = %d, b = %f\n", a, b); /* 출력 */ }

  42. 2.7 키보드 입력 함수 • 키보드로부터 한 문자 또는 문자열을 입력받고 이를 출력하는 함수들이다. • getchar()함수 : 한 문자를 입력 • putchar()함수 : 한 문자를 출력 • gets()와 puts()는 문자열을 입력 또는 출력

  43. int getchar( ); • 키보드로 하나의 문자를 입력하는 함수 • 리턴값은 키보드의 읽은 문자 • 화일 종료시 EOF 반환 • int putchar( ); • 화면에 하나의 문자를 출력하는 함수 • 오류시 EOF 반환 • int *gets(char *str ); • 키보드로 1행을 읽어서 str에 저장 • 리턴값 : str내용 반환 • 파일 종료나 오류시에 NULL 반환 • int puts(char *str ); • 화면에 한 행을 출력하고, 출력 행을 바꾼다. • 정상 처리시 : 0이 아닌 값 반환 • 오류시 : EOF 반환

  44. 예제 2.20 getchar, putchar를 이용한 한 문자 입출력. #include <stdio.h> void main(void) { char c; c = getchar(); /* 키보드에서 한 문자 입력 */ putchar(); /* 화면에 한 문자 출력 */ }

  45. 예제 2.21 gets, puts를 이용한 문자열 입출력. #include <stdio.h> void main(void) { char c[100]; gets(c); /* 키보드에서 문자열 입력 */ puts(c); /* 화면에 문자열 출력 */ }

  46. 예제 2.23 소문자로 입력된 문자를 대문자로 출력하는 프로그램 #include <stdio.h> void main(void) { char c; printf("소문자 한 개를 입력하시오\n“); c=getchar(); c= c - 32; /* 소문자를 대문자로 변환 */ putchar(c); putchar('\n'); }

More Related