1 / 61

2장 데이터형

2장 데이터형. 변수와 상수 출력 함수 데이터 형 형 변환. 학습목표. 변수와 상수의 개념을 이해할 수 있다 . 데이터 형의 의미와 필요성을 이해할 수 있다 . C 가 제공하는 데이터 형의 종류와 그 특성을 알 수 있다 . printf() 사용법을 익히고 활용할 수 있다. 변수( Variable). 변수는 프로그램을 작성하는 과정에서 처리 해야 될 많은 데이터와 정보, 처리후의 결과 등을 저장 할 수 있는 공간 을 의미

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장 데이터형 • 변수와 상수 • 출력 함수 • 데이터 형 • 형 변환 교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사

  2. 학습목표 • 변수와 상수의 개념을 이해할 수 있다. • 데이터 형의 의미와 필요성을 이해할 수 있다. • C가 제공하는 데이터 형의 종류와 그 특성을 알 수 있다. • printf() 사용법을 익히고 활용할 수 있다. 교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사

  3. 변수(Variable) • 변수는 프로그램을 작성하는 과정에서 처리 해야 될 많은 데이터와 정보, 처리후의 결과 등을 저장할 수 있는 공간을 의미 • 변수가 선언되면 컴퓨터 내부적으로 볼 때 일정 크기의 기억장소를 할당 받는다. • 할당 받는 메모리의 크기는 변수의 데이터형에 따라 다르다. • C 언어에서 변수를 선언할 때에는 저장될 데이터의 범위 및 상수의 종류에 따라 적절하게 데이터형을 결정해야 한다. 교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사

  4. 변수의 선언 • 데이터형을 갖는 변수의 선언형식 • 데이터형 변수명A, 변수명B, ...; 예) int i, j, k; • 데이터형 변수명A; 예) int i; • 데이터형 변수명B=0; 예) int j=0; • 데이터형이 동일한 2개 이상의 변수를 선언할 때에는 콤마(,)로 구분하여 동시에 선언이 가능하며, • 개별적 선언도 가능하다. • 변수의 선언과 초기화는 같은 문장에서 이루어 질 수 있다. • 변수는 외부 변수를 제외하고 함수 안에서 명령문을 사용하기 전에 선언 한다. 교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사

  5. 변수 선언의 예 char c, ch; /* 변수 c, ch를 문자형으로 선언 */ unsigned char munja; /* 변수 munja를 부호 없는 문자형으로 선언 */ int i, j; /* 변수 i, j를 부호 있는 정수형으로 선언 */ unsigned int k, l; /* 변수 k, l를 부호 없는 정수형으로 선언 */ float a, f; /* 변수 a, f를 4 byte 실수형으로 선언 */ double x, y, z; /* 변수 x, y, z를 8 byte 실수형으로 선언 */ 교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사

  6. 변수의 초기화 /* 선언과 동시에 초기화 하는 경우 */ int count = 10; /* 선언만 하고 초기화 하지 않은 경우 */ float average; /* 문자열 포인터 변수의 선언과 동시에 초기화 */ char *user_name = “Hello, World!” ; /* count는 선언과 동시에 값을 할당하고 item_no는 선언만 */ int count=10, item_no; /* 선언 후 별도로 값을 할당하는 경우 */ average = 78.37; 교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사

  7. 예) 변수의 선언, 연산, 대입 #include <stdio.h> main() { int num1, num2; int sum; float div; num1 = 2; num2 = 3; sum = num1+num2; div = sum / 2.0; } 교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사

  8. 변수명의 규칙 • 변수이름에 사용될 수 있는 문자는 알파벳문자, 숫자, 언더 스코어문자(_)이다. • 변수 이름은 반드시 영문자나 _로 시작해야 된다. • 대/소문자는 서로 다른 이름으로 취급되므로 구별해야 한다. • C 언어에서 사용되는 키워드(Keyword)는 변수 이름으로 사용할 수 없다. • 변수 이름을 정할 때는 위의 규칙에 따라 정하되, 변수가 사용되는 목적을 알 수 있는 단어로 선택하는 것이 바람직하다. • 변수선언의 예 • 잘못된 변수선언 : int 2number; float f&data; char case; • 올바른 변수선언 : int number; float f_data; char _ch; 교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사

  9. 키워드, 예약어 교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사

  10. 상수(constant) • 상수란 연산에 이용되는 데이터로서 그 값이 한번 정의되면 프로그램이 실행되는 도중에 그 값이 변화되지 않고 일정한 값을 유지하는 데이터를 의미 • 상수의 종류 교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사

  11. 정수형 상수 • 소수점을 포함하지 않는 수로서 부호 있는 수와 부호 없는 수로 구분 • C 언어에서 정수형 상수는 진법에 따른 수로 표현 가능하다. 교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사

  12. 정수형 상수의 표현 예 int a = 2002; /* 양의 정수형 상수 */ int b = -377; /* 음의 정수형 상수 */ int count2 = 012; /* 8진 상수*/ int c; c = 0xFF; /* 16진 상수 */ long int d; d = 1234L; /* long형 상수 */ 교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사

  13. 실수형 상수 • 실수형 상수는 소수점이나 지수부를 가지고 있는 데이터 • 기억장소에 저장 될 때에는 부호, 지수부, 가수부로 구분하여 저장된다. • 실수형 상수의 표현 예 float f1; f1 = 3.14; /* 소수점 형태 */ float f2; f2 = -0.005; double e1; e1 = 0.14E-3; /* 지수 형태 */ double e2; e2 = 1.5E+2; 교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사

  14. 문자 상수 • 문자 상수는 한 개의 문자를 상수로 취급, 단일 인용부호(' ')를 붙여 표현 • 한 개의 문자는 1 바이트로 처리 • 문자 상수의 표현 예 char ch1; ch1 = 'A'; /* 'A'는 내부적으로 ASCII 코드 값으로 변환 */ char c1; c1 = '3'; /* '3'는 내부적으로 ASCII 코드 값으로 변환 */ char ch2; ch2 = 0x41; /* ASCII 코드 0x41 = 'A' */ char c2; c2 = 51; /* ASCII 코드 51 = '3' */ 교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사

  15. 문자 상수와 ASCII 코드 • 컴퓨터는 문자를 숫자로 대신하여 인식하며 상호 연관을 위해 ASCII 코드를 사용 • 문자상수의 표현 예 • 문자 'A'의 ASCII 코드에 대응하는 0x41(16진수)의 수치로 변환되어 기억되며, • 3에 해당되는 ASCII 코드 값 0x33(16진수) 또는 51(10진수)이 기억. • 따라서, ASCII 코드 값을 직접 대입하여도 같은 결과를 얻을 수 있다. 교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사

  16. 문자열 상수 • 문자열 상수는 단일 문자가 하나 이상 연결되어 있는 문자열을 의미 • 인용부호(" ")를 붙여 표현, • 문자열 끝에는 널 문자(‘\0’)가 자동으로 추가되며 • 널 문자는 문자열이 끝나는 지점을 나타내는 역할을 한다. • 문자와 문자열 상수의 메모리크기 • 문자 상수 'A'인 경우 : 기억장소 1 byte가 필요 • 문자열 상수 "A"는 널(null) 문자를 포함해 2 byte가 필요 • 문자열 상수의 표현 예 • char ch[5]; ch = "abcd"; /* 문자열 상수, 널 문자 포함 */ • char ch[2]; ch = "A"; /* 문자열 상수, 널 문자 포함 */ • char ch; ch = 'A'; /* 문자 상수, 널 문자 없음 */ 교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사

  17. 매크로 상수 • #define MAX 100 /* 매크로 상수의 정의 */ • #define COUNT 10 /* 매크로 상수의 정의 */ • for (i=0; i < COUNT; i++) { … } • COUNT = COUNT + 1; /* 오류 */ 교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사

  18. printf() : 출력 함수 • 화면에 형식화된 문자열을 출력하는 표준 라이브러리 함수이다. • 함수의 형식 • printf("출력 형식 지정 문자열", 인수1, 인수2, ...); • 출력 형식 지정 문자열 : • 어떻게 항목들을 출력할 것인가 하는 방식을 나타내 주는 문자열이 지정된다. • 문자열을 나타내는 " "의 형식을 갖추어야 한다. • 변환문자, 수정자, 플래그, 출력문자(열), 제어문자 들을 포함하게 된다. • 인수1, 인수2, ... : • 출력될 항목 가리키는 것으로 상수, 값이 출력되기 전에 계산되어야 할 계산식 등 • 인수들은 출력 형식 지정 문자열에 각 인수들과 대칭 되는 변환 문자가 있어야 함 • 인수들과 변환 문자는 생략 가능하다. 교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사

  19. 제어 및 변환문자 없이 출력하기 • printf()는 기본적으로 인용부호(" ")안의 모든 문자열을 화면에 출력 • printf()문의 사용 예 : 단순출력 • printf("Welcome"); /* welcome을 화면에 출력 */ • printf("computer language"); /* computer language을 화면에 출력 */ 교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사

  20. /* 단순 출력 (1) */ #include <stdio.h> main() { printf("홍 길 동"); } 실행결과 홍 길 동 /* 단순 출력 (2) */ #include <stdio.h> main() { printf("Welcome to C programming"); printf("C is a computer language"); } 실행결과 Welcome to C programmingC is a computer language 예제 프로그램 교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사

  21. 제어문자(Escape Sequence) 포함하여 출력하기 • 제어문자는 문자로 표현할 수 없는 ASCII 코드 문자들을 표현한 것 • 표현 방식은 역 슬래쉬(\)와 함께 사용하여 구성 • 제어문자는 문자형 변수에 단독으로 또는 문자열 속에 사용할 수 있다. • 제어문자들은 데이터를 출력할 때 출력 형식을 지정하는데 많이 사용된다. • 출력 형식 지정 문자열에 포함된 제어문자는 화면에 나타나지 않으며 제어문자에 해당되는 기능만을 수행한다. 교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사

  22. 제어문자의 종류 및 기능 교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사

  23. printf()문의 사용 예 : 제어문자 이용 • printf("Welcome\n"); /* 문자열 출력 후, 줄 바꿈 */ • printf("\tcomputer language\n"); /* 다음 텝으로 이동하여 문자열 출력 후, 줄 바꿈 */ • printf(“\%%computer \tlanguage\n"); /* %computer 출력 후 다음 탭으로 이동, language 출력 후, 줄 바꿈 */ 교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사

  24. /* 제어문자 이용하여 출력하기 (1) */ #include <stdio.h> main() { printf("Welcome to C programming\n"); printf("C is a computer language\n"); } 실행결과 Welcome to C programming C is a computer language /* 제어문자 이용하여 출력하기 (2) */ #include <stdio.h> main() { printf("\tWelcome to \nC programming"); printf("\nC is a computer language"); } 실행결과 Welcome to C programming C is a computer language 예제 프로그램 교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사

  25. 변환문자 이용하여 출력하기 • 출력 형식 지정 문자열에서 사용되는 변환문자는 printf()문 내의 지정된 인수의 값을 받아들이는 데이터형을 나타낸다. • 인수들의 값은 변환문자 데이터 형태로 변환되어 출력 형식 문자열에 저장된 후 인용부호(" ") 안의 모든 내용이 출력된다. • 변환 문자들에 해당하는 인수(변수)는 반드시 같은 순서대로 지정해 주어야 함 교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사

  26. 변환 문자의 종류 및 기능 교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사

  27. printf()문의 사용 예 : 변환문자 이용 교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사

  28. #include <stdio.h> main() { printf("%c%d%f", 'A', 41, 3.14); printf("%c %d %f", 'A', 41, 3.14); printf("char=%c, int=%d, float=%f", 'A', 41, 3.14); printf("%f %e %g", 1.2345, 1.2345, 1.2345); } 실행결과 A413.140000 A 41 3.140000 char=A, int=41, float=3.140000 1.234500 1.23450e+00 1.2345 변환문자 이용하여 출력(1) 교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사

  29. #include <stdio.h> main() { char ch; int integer; float f; ch = 'K'; integer = 255; f = 12.345; printf("ch=%c, int=%d, f=%f", ch, integer, f); printf("int = %d, octal = %o, hexa = %x", integer, integer, integer); printf("%d - %d = %d", integer, 55, integer-55); } 실행결과 ch=K, int=255, f=12.345000 int = 255, octal = 377, hexa = ff 255 - 55 = 200 제어문자 이용하여 출력(2) 교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사

  30. 수정자(Modifier) 이용하여 출력 • 수정자는 기본 변환문자와 같이 사용하여 기본 서식의 출력형식을 다양하게 변형시킬 수 있다. • 주의할 점은 수정자는 기본 변환 문자와 결합되어 출력형식을 변형시키는 것으로 새로운 서식을 의미하지 않는다. 교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사

  31. 수정자의 종류 및 기능 교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사

  32. 수정자(Modifier)가 사용된 예 • printf("%10d", 123); /* 필드폭이 10인 정수형을 오른쪽 정렬 */ • printf("%+10d", 123); /* 필드폭이 10인 정수형을 + 부호와 함께 출력 */ • printf("%-10d", 123); /* 필드폭이 10인 정수형을 왼쪽 정렬 */ • printf("%010d", 123); /* 빈 공간을 0으로 채움, 오른쪽 정렬 */ • printf("%ld", 1234567); /* long형 값으로 변환 */ • printf("%5.2f", 123.456); /* 전체 필드폭이 5이고 정밀도가 소수점 이하 2자리인 소수점형 */ • printf("%10.4f", 123.456); /* 전체 필드폭이 10이고 정밀도가 소수점 이하 4자리인 소수점형 */ 교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사

  33. #include <stdio.h> main() { int a = 1234; float b = 12.3456789; printf("%d", a); printf("%3d", a); /* 원 데이터보다 작은 자리수이면 원래 길이대로 출력 */ printf("%6d", a); printf("%06d", a); printf("%u", a); printf("%f", b); printf("%7.3f", b); printf("%12.6f", b); } 실행결과 1234 1234 1234 001234 1234 12.345679 12.346 12.345679 수정자 이용하여 출력(1) 교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사

  34. #include <stdio.h> main() { printf("=========================="); printf("%c%c%c%c", 'A', 'B', 'C', 'D'); printf("%c %c %c %c", 'A', 'B', 'C', 'D'); printf("%6c %6c %6c %6c", 'A', 'B', 'C', 'D'); printf("%-6c %-6c %-6c %-6c", 'A', 'B', 'C', 'D'); printf("=========================="); } 실행결과 ========================== ABCD A B C D A B C D A B C D ========================== 수정자 이용하여 출력(2) 교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사

  35. 데이터 형 • 프로그램에서 데이터를 표현하는 방법 : 상수와 변수의 두 가지 형태 • 상수 : 변하지 않는 일정한 값, • 변수 : 데이터를 기억해두는 장소로서 기억된 값이 변할 수도 있다. • 변수는 메모리의 특정한 번지에 위치한 일련의 바이트로 구성 • 구성되는 형태는 선언되는 데이터형에 따라 다르다. • 데이터형 • 종류와 크기에 따라 해당 변수의 데이터 표현 범위가 결정 • 변수의 용도에 따라 적절하게 데이터형을 선언 교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사

  36. C 언어에서 제공하는 데이터형 교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사

  37. bit와 byte • 1 byte = 8 bit, 1 bit는 0 또는 1로 표현, off 또는 on의 개념 • 0과 1로만 표현된 수를 이진수 라고 함 • 1 byte = • 예) 0100 0100(2) = 64 + 4+ 1 = 69 교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사

  38. 2의 보수방법 부호절대치방법 1의 보수방법 각 비트를 1의보수로 바꾼다 부호비트만 바꾼다 | -9 | = +9 +9 -9 -9 1 1 1 1 0 1 1 0 + 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 1 1 1 1 1 0 1 0 1 0 0 1 0 1 1 0 1 0 -9 1 1 1 1 0 1 1 1 음수 표현 방법 교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사

  39. 문자 데이터형 (char) • 문자 데이터형의 선언 및 사용 예 char ch = 'B'; /* 'B' -> 66(10진수) */ char cnum1 = 66, cnum2 = 213; /* cnum2 -> overflow 발생 */ • 음수 부분이 불필요할 때 • unsigned 라는 키워드를 사용하여 문제를 해결 • 예) unsigned char x=213; /* 0 ~ 255 */ 교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사

  40. signed(부호 있는) 수unsigned(부호 없는) 수(1) • char 과 unsigned char의 데이터 표현 범위 교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사

  41. signed(부호 있는) 수unsigned(부호 없는) 수(2) • 일반적으로 최상위 비트(MSB)는 부호 비트(Sign Bit) • 양수인 경우 0, 음수인 경우에는 1로 표현 • 1 byte의 크기를 할당 받은 변수인 경우(부호 있는 수) • -128 ∼ 127 의 데이터 표현 범위 • 음수 부분이 불필요할 때 • unsigned 라는 키워드를 사용하여 문제를 해결 • 예) unsigned char x; /* 0 ~ 255 */ 교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사

  42. #include <stdio.h> main() { char ch1, ch2; unsigned char ch3; ch1 = 'A'; ch2 = 213; ch3 = 213; printf("ch1 = %d, ch2 = %d, ch3 = %d", ch1, ch2, ch3); } 실행결과 ch1 = 65, ch2 = -43, ch3 = 213 예) 문자 데이터형의 데이터 표현 교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사

  43. 정수 데이터형 (int) • 소수점이 없는 수를 저장할 수 있는 데이터형 • 정수 데이터형의 종류에 따라 각각 다른 크기의 메모리가 할당 • 따라서, 할당된 메모리 크기에 따라 데이터 범위가 결정. • 시스템에 따라 다를 수 있음 (int는 기종에 따라 표준 길이가 할당된다). 교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사

  44. 정수 데이터 형(int)의 데이터 범위 교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사

  45. 정수 데이터형 선언 및 사용 예 • int num1 = -30, num2 = 3456; • short value1 = 125, value2 = -12; • unsigned int a = 63000, b = 4294967296; /* 4294967295 */ • /* b -> overflow 발생(정수 4byte 시스템에서) */ • long int x = 679001, y = 456; • 시스템에 따라 short와 int 또는 int와 long의 크기가같을 수 있지만 일반적으로 적은 수일 경우 short 형이, 보통일 경우는 int형이, 큰 수일 경우는 long이 사용된다. • short int와 long int에서 int를 생략하여 사용할 수 있다 교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사

  46. #include <stdio.h> main() { int value1; long value2; unsigned long value3; value1 = value2 = value3 = 2147483648; /* 2,147,483,647 */; printf("value1 = %d", value1); printf("value2 = %ld", value2); printf("value3 = %ld", value3); } 실행결과 value1 = 9464 value2 = 2147483648 value3 = 2147483648 예) 정수 데이터형의 데이터 범위 교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사

  47. 실수 데이터형(float, double) • 실수 데이터형의 선언 예 float f = 3.14, k = -1.3456; double a = 1.23456789, b = 0.14E-3; /* 0.14E-3 = 0,14*10-3 */ 교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사

  48. 실수 데이터형의 구조 • 부호 비트, 지수부(정수부)과 가수부(소수부)로 각 비트들이 구분 • 소수점은 별도로 표현하지 않으며 지수부와 가수부의 사이에 있는 것으로 간주 • 지수부는 64+지수(바이어스 법)로 양의 지수와 음의 지수를 표현한다. 교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사

  49. #include <stdio.h> main() { int a; float b, c; double d, e; a = 3.14; b = 12.12345; c = 12.123456789; d = 12.123456789; e = 0.1212345e2; printf("a = %d", a); printf("b = %f", b); printf("c = %f", c); printf("d = %e", d); printf("e = %f", e); printf("e = %g", e); } 실행결과 a = 3 b = 12.123450 c = 12.123457 d = 1.21235e+01 e = 12.123450 e = 12.1235 예) 실수 데이터형의 데이터 범위 교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사

  50. 형 변환 • 자동 형 변환 : • 데이터형이 다른 것들을 혼합해서 연산을 할 경우에 규칙에 따라 자동으로 변하는 형 변환 • 강제 형 변환 • 캐스트(cast) 연산자를 이용하여 강제적으로 데이터형을 변환 교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사

More Related