1 / 20

3. 자료형 [ 정수형 , 실수형 , 문자형 ] 변수 활용 프로그램

3. 자료형 [ 정수형 , 실수형 , 문자형 ] 변수 활용 프로그램. 문제내용 자료형 변수를 정의하고 프로그램내에서 자료형 변수를 사용하여 결과를 출력 학습내용 자료형 변수에 저장할 있는 값의 범위를 이해하고 학습 자료형의 크기 정수형 ( int ) 변수. 3. 자료형 [ 정수형 , 실수형 , 문자형 ] 변수 활용 프로그램. 정수 자료형의 크기별 표현할 수 있는 범위 하나의 비트는 0 과 1 의 2 가지 수 를 표현

spike
Download Presentation

3. 자료형 [ 정수형 , 실수형 , 문자형 ] 변수 활용 프로그램

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. 3. 자료형[정수형,실수형, 문자형] 변수활용 프로그램 • 문제내용 • 자료형 변수를 정의하고 프로그램내에서자료형 변수를 사용하여 결과를 출력 • 학습내용 • 자료형 변수에 저장할 있는 값의 범위를 이해하고 학습 • 자료형의 크기 • 정수형(int) 변수

  2. 3. 자료형[정수형,실수형, 문자형] 변수활용 프로그램 • 정수 자료형의크기별 표현할 수 있는 범위 • 하나의 비트는 0과 1의 2가지 수를 표현 • 따라서 n비트의 메모리공간은 2n개의 수를 표현할 수 있음 • 1바이트(8비트)인 char은 28인 256가지의 숫자를 표현할 수 있으며, • 4바이트(4*8=32비트)인 int는232개의 숫자를 표현할 수 있다. 두 개의 비트 세 개의 비트 한 개의 비트 0 1 0 0 1 0 0 0 0 0 1 0 0 1 1 0 1 0 0 1 1 1 1 0 0 0 2 2*2*2 =23= 8 2*2 = 22 =4 0 1 1 1 1 1 1 1

  3. 3. 자료형[정수형,실수형, 문자형] 변수활용 프로그램 #include <stdio.h> main() { char ch = 200; unsigned char j = 200; char k = 'a'; inti = 2000000000; unsigned ui = 4000000000; intik = 'b'; float d = 3.141592; double d1 = 1234567890; double d2 = 'c'; printf( "문자형 변수 ch의 값은 %d \n", ch ); printf( "문자형 변수 j의 값은 %u \n", j ); printf( "문자형 변수 k의 값은 %d \n\n", k ); printf( "정수형 변수 i의 값은 %d \n", i ); printf( "정수형 변수 ui의 값은 %u \n", ui ); printf( "정수형 변수 ik의 값은 %d \n\n", ik ); printf( "실수형 변수 d의 값은 %E \n", d ); printf( "실수형 변수 d1의 값은 %E \n", d1 ); printf( "실수형 변수 d2의 값은 %E \n\n", d2 ); } • 실수형(float) 변수 • 문자형(char)변수 • 참조 프로그램(11, 12, 13) 200 -56 /* 사용하는 내 컴퓨터의 각자료형의 크기[ sizeof(자료형) ]를 알아본다 */ #include <stdio.h> main( ) { printf("Type int size : %d bytes.\n", sizeof(int)); printf("Type char size : %d bytes.\n", sizeof(char)); printf("Type long size : %d bytes.\n", sizeof(long)); printf("Type double size : %d bytes.\n", sizeof(double)); } 129 -128 -127

  4. 4. 자료형[정수형,실수형, 문자형] 상수활용 프로그램 #include <stdio.h> #define HUNDRED_THOUSAND 100000 constint j = 200000; #define PI 3.141592 const double k = 1.23456789; #define HUNDRED 100 const char m = 10; main() { // main( ) 안에서 //HUNDRED_THOUSAND = 100000; 라고 선언하면 에러발생 //j = 200000; 라고 선언하면 에러 발생 printf("정수형 상수 HUNDRED_THOUSAND의 값은 "); printf("%d \n", HUNDRED_THOUSAND); printf("정수형 상수 j의 값은 %d \n\n", j); //main()안에서 PI = 3.141592; 라고 선언하면에러 발생 //k = 1.23456789; 라고 선언하면 에러 발생 printf("실수형 상수 PI의 값은 %f \n", PI); printf("실수형 상수 k의 값은 %f \n\n", k); //main()안에서 HUNDRED = 200; 라고 선언하면 에러 발생 // m = 200; 이라고 선언하면 에러 발생 printf("문자형 상수 HUNDRED의 값은 %d \n", HUNDRED); printf("문자형 상수 m의 값은 %d \n\n", m); } • 문제내용 • 자료형 상수들을 정의하고 프로그램 내에서 자료형 상수를 사용하여 출력 • 학습내용 • 자료형 상수의 의미와 이를 어떻게 사용하는지를 이해 • 참조 프로그램(17, 18, 16)

  5. 참고1. ASCII코드 • ASCII 코드 • American Standard Code for Information Interchange • 미국표준협회(ANSI)에서 제정한 정보교환용 미국표준부호 • 문자, 숫자, 특수문자에 수치 값(numeric Value)을 부여한 부호체계 • C언어에서 문자 및 특수문자 표현에 사용됨

  6. 참고1. ASCII코드 • ASCII 코드 • C언어에서는 문자 표현 시, 내부적으로 메모리에 수치 값으로 저장 • 프로그램 내에서 주어진 10진수, 16진수, 8진수 수치 값으로 문자에 접근 및 사용 가능 • 마찬가지로, 프로그램 내에서 문자를 숫자처럼 사용 가능하며, 이 때 문자 간 연산(ex> 사칙연산) 또한 가능 10진수 16진수 8진수 문자

  7. 참고1. ASCII코드 • ASCII 코드 • char 형의 표현 범위 • ASCII 코드는 0~126까지 총 127 문자로 이루어짐

  8. 참고2. 자료형 별 표현 범위와 오버플로&언더플로 • 자료형 별 표현 범위 • 오버플로(overflow): 자료형별 기억공간에 할당할 수 있는 최대값(_MAX)보다 큰값이 입력되는 상황. • 언더플로(underflow):자료형별 기억공간에 할당할 수 있는 최소값(_MIN)보다 작은값이 입력되는 상황

  9. 참고2. 자료형 별 표현 범위와 오버플로&언더플로 • 자료형 별 표현 범위 #include <stdio.h> #include <limits.h> #include <float.h> main(){ printf("char 범위 : %d ~ %d \n", CHAR_MIN, CHAR_MAX); printf("unsigned char 범위 : %d ~ %d \n\n", 0, UCHAR_MAX); printf("int범위 : %d ~ %d \n", INT_MIN, INT_MAX); printf("unsigned short 범위 : %d ~ %d \n\n", 0, USHRT_MAX); printf("float 범위 : %.10e ~ %.10e \n", FLT_MIN, FLT_MAX); printf("double 범위 : %.10e ~ %.10e \n\n", DBL_MIN, DBL_MAX); }

  10. 참고2. 자료형 별 표현 범위와 오버플로&언더플로 • 문자 자료형 별 표현 범위 #include <stdio.h> int main() { char cNumber; cNumber = 128; printf("%d\n\n", cNumber); cNumber = cNumber + 1; printf("%d\n\n", cNumber); cNumber = cNumber - 2; printf("%d\n\n", cNumber); return 0; } 128 64 32 16 8 4 2 1 200 -128 -56 -127 127 129 -127 -128

  11. 참고2. char 자료형 표현 범위와 오버플로&언더플로 • 오버플로& 언더플로 • 데이터가 자료형의 표현 범위를 벗어날 경우 발생하는 오류를 뜻함 • 배열의 인덱스를 벗어나는 등의 오류 상황도 포함 #include <stdio.h> #include <limits.h> main(){ char s = CHAR_MAX; // s = 127; inti, fact=CHAR_MAX; // fact = 127; printf("Char 최소값: %d\n", CHAR_MIN); printf("Char 최대값: %d\n\n", CHAR_MAX); printf("Char의최대값이들어있는변수의값이1씩증가할때\n"); for(i=0;i<5;i++) printf("저장된값= %-15d실제값= %d\n", s++, fact++); s = CHAR_MAX*2-1; // s = -3; fact = CHAR_MAX*2-1; // fact = 253; printf("\n지속적으로증가하던값이0을통과하면\n"); for(i=0;i<5;i++) printf("저장된값= %-15d실제값= %d\n", s++, fact++); } 200 200 -56 -56 Short형실제 값 127은 char 형의 최대 표현 범위를 127을 초과하게 되어 오버 플로가 발생함(저장된 값은 음수) 129 129 -127 -127 Short형 실제 값이 계속 증가되어 증가 값이 Char형의 최소값 0을 통과하면 언더프로 발생함(저장된 값은 양수로 됨)

  12. 참고2. short int자료형 표현 범위와 오버플로&언더플로 • 오버플로& 언더플로 • 데이터가 자료형의 표현 범위를 벗어날 경우 발생하는 오류를 뜻함 • 배열의 인덱스를 벗어나는 등의 오류 상황도 포함 #include <stdio.h> #include <limits.h> main(){ short s = SHRT_MAX; // s = 32767; fact=32767; inti, fact = SHRT_MAX; // short 값의오버플로나언더플로 범위를 저장 printf("short 최소값 : %d\n", SHRT_MIN); printf("short 최대값 : %d\n\n", SHRT_MAX); printf("short int자료형의 최대값이 들어있는 변수의 값이 1씩 증가할 때\n"); for(i=0; i<5; i++) printf("저장된 값 = %-15d 실제값= %d\n", s++, fact++); s = SHRT_MAX*2; fact = SHRT_MAX*2; // s= -2; fact = 65534; printf("\n지속적으로 1씩 증가하던 값이 0을 통과하면\n"); for(i=0;i<5;i++) printf("저장된 값 = %-15d 실제 값 = %d\n",s++,fact++); } • Short 정수범위 (-32,768(-) ~ 0 ~ 32,767(-1) ) • 0 -1- 2 ---------32767 32768-----------65534-65535 • 0 1 2 -32768 -2 -1 • * 청색(양수), 적색(음수) 정수형실제 값 32768은 short형의 최대 표현범위를 32767을 초과하게 되어 오버플로가 발생함(저장된값 음수) 정수형 실제 값이 계속 증가되어 증가 값이 short형의 최소표현범위 0을 통과하면 언더플로 발생(저장된 값은 양수)

  13. 참고3. 10진수(13)를 2진수(1101)로 표현 • 정수 13을 2진수로 표현하기 • 2로 나눈 나머지를 배열에 차례대로 저장 • 더 이상 나누어지지 않을 때 까지 반복 • 마지막 1을 배열에 저장 • 배열에 저장된 내용을 역순으로 뒤집기 십진 정수13을 2진수로 초간단 계산하기(1101 ?) ??8 + 4 + 1 = 13

  14. 참고3. 10진수를 2진수로 표현 • 정수 13을 2진수로 표현하기[참고용 프로그램]

  15. 참고3. 2진수를 10진수로 표현 • 2진수 1101을 10진수13으로 계산 및 표현하기 이진수 1101을 십진정수 13 간단 계산하기 1에대응된 8 + 4 + 1 = 13 15

  16. 팁(TiP) • 2, 8, 10, 16진수 변환 1 0 0 3 4 2 1 4 2 1 4 2 1 4 2 1 8 4 2 1 8 4 2 1 8 4 21 0 3 4

  17. 실습 • 3-1. ASCII 코드와 반복문(for, while)을 활용, 다음 결과와 같이 출력해보세요. • ASCII 코드에서 문자를 수치 값으로 사용할 수 있음을 기억하세요 • 메모리에 저장되는 방식이 동일하다면 초기화 시에도 사용할 수 있지 않을까? • 반복문 선택은 자유롭게 하되, 필히 사용하세요 반복문의 종류 3가지 1. for문 for(초기식; 조건식; 증감식) {반복할 내용} 2.while 문 초기식; while(조건식) {반복할 내용 증감식;} 3.do –while문 초기식; do{ 반복할 내용 증감식; }while(조건식) HINT !!! ASCII 코드에서 문자는 수치 값으로 사용할 수 있다. (ex. A =65) 반복문은3가지 중 한가지를 자유롭게 사용 해야 함

  18. 실습 • 3-2. char 과 short int자료형의언더플로(1씩 감소할때) 를 확인할 수 있는 프로그램을 작성하세요. • 10, 11 페이지 오버플로 관련 프로그램을 참고하세요 • 결과 화면은 위와 같이 나오도록 작성하세요

  19. 실습 • 프로그래밍 실습 – 석차 연명부 • 기존 프로그램에 추가하여 코딩 • 입력을 총 2번 할 수 있도록 처리 • 무한루프를 이용하여 메뉴를 계속 선택할 수 있도록 함 • 메뉴 선택에 따라 입력과 출력을 하되 입력은 총 2번 할 수 있도록 함 Chapter1 프로그램 Chapter2 프로그램 Chapter3 프로그램 변수 선언 변수 선언 입력 메뉴선택 변수 선언 및 초기화 입력 처리 (average 부분) 출력 출력 출력

  20. 실습 • 프로그래밍 실습 - 석차 연명부 • 다음의 결과와 같도록 프로그램 작성 • 각 변수형을 2차원 배열로 작성 • 입력할 개수를 지정하는 변수 선언 • 메뉴는 switch나 if문을 이용하여 작성 HINT !!! 기존 char Name[255]; char Major[255]; 변화 char Name[1][255]; Char Major[1][255]; HINT !!! intisInput = 0; … scanf("%s",Name[isInput]); for(inti=0; i<isInput; i++) printf(“…%s …”,…,Name[i]);

More Related