쉽게 풀어쓴 C언어 Express 제4장 변수와 자료형 C Express.

Slides:



Advertisements
Similar presentations
3. 자료형. 담당교수 : 이 성 우 C++ 프로그래밍 상수와 변수 (3) 1. 변수 (variable)  프로그램 수행 도중에 자료  변수를 위해 은 변하지 않음  선언 시에 반드시 그. ※ 저장 정보의 구성 ① 정보의 종류 ② 저장 값 ③ 저장 위치 int Num.
Advertisements

기본 자료형 순천향대학교 정보기술공학부 이 상 정. 자료형의 선언 컴퓨터프로그래밍 1 순천향대학교 정보기술공학부 이 상 정 3 자료형 선언 기본 자료형문자형 char 정수형 int 실수형 float double 형없음 void.
YES C 제 1 장 C 언어의 개요 1/34 제 1 장 C 언어의 개요 문봉근. YES C 제 1 장 C 언어의 개요 2/34 제 1 장 C 언어의 개요 1.1 프로그램과 C 언어의 특징 1.2 C 언어의 프로그램 구성 1.3 비주얼 C++ 통합 환경 들어가기.
제6장 조건문.
프로그래밍1 및 실습 (C언어) - 3장 기본자료형 (3.6부터 끝까지) -
제 3 장 변수와 자료형.
쉽게 풀어쓴 C언어 Express 제5장 수식과 연산자 C Express Slide 1 (of 34)
C++ Espresso 제1장 기초 사항.
쉽게 풀어쓴 C언어 Express 제11장 포인터 C Express.
제 1장 C 언어의 소개.
강좌명 : C++프로그래밍 (C++ Programming)
#include <stdio.h> int main(void) { float radius; // 원의 반지름
C 프로그래밍.
쉽게 풀어쓴 C언어 Express 제18장 입출력과 라이브러리 함수 C Express.
4장: 자료형과 수식.
쉽게 풀어쓴 C언어 Express 제17장 동적 메모리와 연결 리스트 C Express.
제5장 제어명령
컴퓨터의 기초 제 4강 - 표준 입출력, 함수의 기초 2006년 4월 10일.
쉽게 풀어쓴 C언어 Express 제3장 C프로그램 구성요소 C Express.
6장. printf와 scanf 함수에 대한 고찰
누구나 즐기는 C언어 콘서트 제4장 수식과 연산자.
연산자 대입 연산자 산술 연산자 관계 연산자 논리 연산자 비트 연산자 콤마 연산자 축약 연산자 sizeof 연산자
변수와 자료형.
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 02. 프로그램의 기본구성.
기초C언어 제3주 C프로그램 구성요소, 변수와 자료형 컴퓨터시뮬레이션학과 2016년 봄학기 담당교수 : 이형원
컴퓨터 프로그래밍 기초 - 2nd : scanf(), printf() 와 연산자 -
쉽게 풀어쓴 C언어 Express 제3장 C프로그램 구성요소 C Express.
7장 배열 배열의 정의 배열의 초기화 1차원 배열 2차원 및 다차원 배열 문자 배열 배열과 구조.
변수와 자료형.
내용 프로그래밍 언어(programming language) C 언어란?? C 언어 역사 C 언어 특징 C 프로그램의 구조
제 2 장 변수와 상수.
제 3 장 상수와 변수
쉽게 풀어쓴 C언어 Express 제7장 반복문 C Express.
C언어 콘서트 제3장 변수와 자료형.
쉽게 풀어쓴 C언어 Express 제4장 변수와 자료형 C Express.
4장 제어문 선택문: if 문, if – else 문, switch 문
4주차: Data Types and Functions
5장. 상수와 기본 자료형. 5장. 상수와 기본 자료형 5-1 C 언어가 제공하는 기본 자료형 자료형(data type) 기본 자료형 사용자 정의 자료형 int val; "선언할 변수의 특징을 나타내기 위한 키워드" 기본 자료형 기본적으로 제공이 되는 자료형 사용자.
쉽게 풀어쓴 C언어 Express 제4장 변수와 자료형 C Express.
adopted from KNK C Programming : A Modern Approach
개정판 누구나 즐기는 C언어 콘서트 제6장 반복문 출처: pixabay.
Chapter 2 Lexical Elements, Operators, and the C System
제2장 데이터형과 표준 입출력문 문봉근.
3장 상수 변수 기본 자료형 키워드와 식별자 상수와 변수 기본 자료형 형변환 자료형의 재정의.
컴퓨터의 기초 제 2강 - 변수와 자료형 , 연산자 2006년 3월 27일.
컴퓨터 프로그래밍 기초 - 4th : 수식과 연산자 -
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 05. 상수와 기본 자료형.
함수와 변수 컴퓨터시뮬레이션학과 2016년 봄학기 담당교수 : 이형원 E304호,
제어문 & 반복문 C스터디 2주차.
Chapter 04 자료 유형.
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
컴퓨터 프로그램 제2,3장 간단한 C 프로그램 김 문 기.
Chapter 05. 입출력 함수.
6장 반복제어문 for 문 while 문 do while 문 기타 제어문.
누구나 즐기는 C언어 콘서트 제2장 기초 사항 IT응용시스템공학과 김형진 교수.
-Part1- 제6장 자료형이란 무엇인가.
-Part1- 제8장 조건문이란 무엇인가 (교재 199페이지 ~ 224페이지)
쉽게 풀어쓴 C언어 Express 제3장 C프로그램 구성요소 C Express Slide 1 (of 25)
쉽게 풀어쓴 C언어 Express 제6장 조건문 C Express Slide 1 (of 28)
쉽게 풀어쓴 C언어 Express 제6장 조건문 C Express.
C언어 프로그래밍의 이해 Ch03. 기본 자료형, 변수와 상수.
반복문의 기능 반복문 반복문 특정 영역을 특정 조건이 만족하는 동안에 반복 실행하기 위한 문장 while문
3주차: Control Flow and Others
박성진 컴퓨터 프로그래밍 기초 [03] 변수와 자료형 박성진
어서와 C언어는 처음이지 제16장.
C 4장. 연산자 #include <stdio.h> int main(void) { int num;
printf("Global Korea\n");
개정판 누구나 즐기는 C언어 콘서트 제3장 변수와 자료형 출처: pixabay.
Presentation transcript:

쉽게 풀어쓴 C언어 Express 제4장 변수와 자료형 C Express

이번 장에서 학습할 내용 * 변수와 상수의 개념 이해 * 자료형 * 정수형 * 실수형 * 문자형 * 기호 상수 사용 * 오버플로우와 언더플로우 이해

변수 12 평균 Q) 변수(variable)이란 무엇인가? A) 프로그램에서 일시적으로 데이터를 저장하는 공간 성적들의 평균을 구하려면 먼저 성적들이 어딘가에 저장되어 있어야 함 78 12 90 평균 56

변수 = 상자 변수는 물건을 저장하는 상자와 같다. 7 int i 데이터 변수의 타입 변수의 이름

변수가 만들어지는 곳 변수는 메인 메모리에 만들어진다. 1 2 3 4 2 2

메모리를 주소로 사용한다면 (Q) 만약 메모리를 변수처럼 이름을 가지고 사용하자 않고 주소로 사용하다면? “100번지에 0을 대입하라” (A) 충분히 가능하지만 불편하다. 인간은 숫자보다는 기호를 더 잘 기억한다. 100번지에 0을 .. 근데 102번지는 어떤 용도로 쓰고 있지?

변수와 상수 12 12 변수(variable): 저장된 값의 변경이 가능한 공간 상수(constant): 저장된 값의 변경이 불가능한 공간 (예) 3.14, 100, ‘A’, “Hello World!” 12 모든 애니메이션은 한번의 클릭으로 상자에 들어간 후 이동 모션까지 완료됨 클릭1 : 변수 애니메이션 클릭2 : 상수 애니메이션 클릭3 : Q&A * 변수(원) 애니메이션 : 슬라이드가 끝날 때까지 12 변수 상수

상수의 이름 (Q) 상수도 이름을 가질 수 있는가? (A) 보통 상수는 이름이 없다. 이러한 상수를 리터럴(literal)이라고 한다. 하지만 필요하다면 상수에도 이름을 붙일 수 있다. 이것을 기호 상수라고 한다. MAX_SIZE

예제: 변수와 상수 변수 상수 /* 원의 면적을 계산하는 프로그램 */ #include <stdio.h> int main(void) { float radius; // 원의 반지름 float area; // 원의 면적 printf("원의 반지름을 입력하시오:"); scanf("%f", &radius); area = 3.141592 * radius * radius; printf("원의 면적: %f \n", area); return 0; } 변수 상수 원의 반지름을 입력하시오:10 원의 면적: 314.159210

자료형 자료형(data type): 데이터의 타입(종류) (예) short, int, long: 정수형 데이터(100) (예) double, float: 실수형 데이터(3.141592) (예) char: 문자형 데이터(‘A’, ‘a’, ‘한’)

디양한 자료형이 필요한 이유 (Q) 다양한 자료형이 필요한 이유는? (A) 상자에 물건을 저장하는 것과 같다. 물건이 상자보다 크면 들어가지 않을 것이다. 물건이 상자보다 너무 작으면 공간이 낭비될 것이다.

자료형

자료형의 크기 char short int float double long double

예제: 자료형의 크기 #include <stdio.h> int main(void) { int x; printf("변수 x의 크기: %d\n", sizeof(x)); printf("char형의 크기: %d\n", sizeof(char)); printf("int형의 크기: %d\n", sizeof(int)); printf("short형의 크기: %d\n", sizeof(short)); printf("long형의 크기: %d\n", sizeof(long)); printf("float형의 크기: %d\n", sizeof(float)); printf("double형의 크기: %d\n", sizeof(double)); return 0; } 변수 x의 크기: 4 char형의 크기: 1 int형의 크기: 4 short형의 크기: 2 long형의 크기: 4 float형의 크기: 4 double형의 크기: 8

자료형의 종류 자료형 설명 바이트수 범위 short short형 정수 2 -32768~32767 int 정수 4 정수형 부호있음 short  short형 정수 2 -32768~32767 int 정수 4 -2147483648~2147483647 long  long형 정수 부호없음 unsigned short 부호없는 short형 정수 0~65535 unsigned int 부호없는 정수 0~4294967295 unsigned long 부호없는 long형 정수 문자형 char 문자 및 정수 1 -128~127 unsigned char 문자 및 부호없는 정수 0~255 부동소수점형 float 단일정밀도 부동소수점 1.2E-38~3.4E38 double 두배정밀도 부동소수점 8 2.2E-308~1.8E308 long double

변수의 이름짓기 7 100 x sum 식별자(identifier): 식별할 수 있게 해주는 이름 변수 이름 함수 이름 김영희 김철수 7 100 x sum

식별자를 만드는 규칙 알파벳 문자와 숫자, 밑줄 문자 _로 구성 첫 번째 문자는 반드시 알파벳 또는 밑줄 문자 _ 대문자와 소문자를 구별 C 언어의 키워드와 똑같은 이름은 허용되지 않는다. (Q) 다음은 유효한 식별자인가? sum _count king3 n_pictures 2nd_try Dollor# double O X // 숫자로 시작 X // #기호 X // 키워드

좋은 변수 이름 변수의 역할을 가장 잘 설명하는 이름 밑줄 방식: bank_account a, b, c, ,d,… number, average, sum,…

키워드 키워드(keyword): C언어에서 고유한 의미를 가지고 있는 특별한 단어 예약어(reserved words) 라고도 한다. auto           double          int              struct break          else              long            switch case           enum            register       typedef char           extern          return          union const          float              short           unsigned continue     for                signed          void default        goto             sizeof          volatile do             if                  static          while

변수 선언 변수 선언: 컴파일러에게 어떤 변수를 사용하겠다고 미리 알리는 것 자료형 변수이름; 변수 선언의 예 char c; 자료형 변수이름; 변수 선언의 예 char c; int i; double interest_rate; int height, width; char c int i double interest_rate int int height width

변수에 값을 저장하는 방법 4.9 7 ‘a’ char c; // 문자형 변수 c 선언 int i; // 정수형 변수 i 선언 double interest_rate;    // 실수형 변수 interest_rate 선언 c = 'a';                     // 문자형 변수 c에 문자 'a'를 대입 i = 7;                      // 정수형 변수 i에 7을 대입 interest_rate = 4.9;  // 실수형 변수 interest_rate에 4.9를 대입 4.9 7 double interest_rate ‘a’ int char c i

변수의 초기화 자료형 변수이름 = 초깃값; 변수 초기화의 예 ‘a’ char c = ‘a’; int i = 7; double interest_rate = 0.05; 7 int i 0.05 double interest_rate

일반 문장이 시작된 후에 변수를 선언하는 것은 C언어에서는 곤란합니다. 변수 선언 위치 일반 문장이 시작된 후에 변수를 선언하는 것은 C언어에서는 곤란합니다. int main(void) { int i; // ○ printf("Hello World!\n"); … int sum; // ⅹ } 클릭 1 : 변수 부분 색칠, 말풍선 클릭 2 : 일반문장 부분 색칠, 말풍선 클릭 3 : 잘못된 변수 선언 말풍선

변수의 사용 대입 연산자를 이용하여서 값을 저장한다. int value; value = 10; … value = 20;

변수의 사용 저장된 값은 변경이 가능하다. int value1 = 10; int value2; value2 = value1;

정수형 short int long ≤ ≤ ≤ ≤ short, int, long 가장 기본이 되는 것은 int 16비트(2바이트) ≤ 32비트(4바이트) ≤ 32비트(4바이트) 가장 기본이 되는 것은 int CPU에 따라서 크기가 달라진다. 16비트, 32비트, 64비트 (Q) 왜 여러 개의 정수형이 필요한가? (A) 용도에 따라 프로그래머가 선택하여 사용할 수 있게 하기 위하여

정수형의 범위 int형 약 -21억에서 +21억 short형 long형 보통 int형과 같음

예제 total sale = 2000000000 /* 정수형 자료형의 크기를 계산하는 프로그램*/ #include <stdio.h> int main(void) {         short year;         int sale;         long total_sale;         year = 10;             // 약 3만2천을 넘지 않도록 주의         sale = 200000000; // 약 21억을 넘지 않도록 주의         total_sale = year * sale; // 약 21억을 넘지 않도록 주의                  printf("total sale = %ld \n", total_sale);         return 0; } total sale = 2000000000

signed, unsigned 수식자 unsigned: 0이나 양수만 표현 unsigned int 흔히 생략 (signed) int (signed) short (int) (signed) long (int) unsigned (int) unsigned short (int) unsigned long (int)

오버플로우 오버플로우(overflow): 변수가 나타낼 수 있는 범위를 넘는 숫자를 저장하려고 할 때 발생 2147483648 int int OverFlow

오버플로우 s_money = -32768 u_money = 0 #include <stdio.h> #include <limits.h> int main(void) { short s_money = SHRT_MAX; // 최댓값으로 초기화한다. 32767 unsigned short u_money = USHRT_MAX; // 최댓값으로 초기화한다. 65535 s_money = s_money + 1; printf("s_money = %d\n", s_money); u_money = u_money + 1; printf("u_money = %d\n", u_money); return 0; } 오버플로우 발생!! s_money = -32768 u_money = 0 클릭 1 : 빨간 줄 밝기 변화 클릭 2 : 오버플로우 문구 밝기 변화 클릭 3 : 실행화면 나타내기

오버플로우 규칙성이 있다. 수도 계량기나 자동차의 주행거리계와 비슷하게 동작 ... ... 2147483646 - 32768 32767 32766 32767 ... 2147483646 short 의 경우 ... 1 65534 65535 unsigned short 의 경우

정수 상수 숫자를 적으면 기본적으로 int형이 된다. sum = 123; // 123은 int형 상수의 자료형을 명시하려면 다음과 같이 한다. sum = 123L; // 123은 long형 접미사 자료형 예 u 또는 U unsigned int 123u 또는 123U l 또는 L long 123l 또는 123L ul 또는 UL unsigned long 123ul 또는 123UL

10진법, 8진법, 16진법 10진법 이외의 진법으로도 표기 가능 int x = 10; int y = 012; // 8진수 int z = 0xA; // 16진수

예제 /* 정수 상수 프로그램*/ #include <stdio.h> int main(void) {        int x = 10;   // 10은 10진수 int형이고 값은 십진수로 10이다.        int y = 010;  // 010은 8진수 int형이고 값은 십진수로 8이다.        int z = 0x10; // 0x10은 16진수 int형이고 값은 십진수로 16이다. printf("x = %d\n", x);        printf("y = %d\n", y);        printf("z = %d\n", z);        return 0; } x = 10 y = 8 z = 16

기호 상수 기호 상수(symbolic constant): 기호를 이용하여 상수를 표현한 것 (예) area = 3.141592 * radius * radius; area = PI * radius * radius; income = salary - 0.15 * salary;        income = salary - TAX_RATE * salary; 기호 상수의 장점 가독성이 높아진다. 값을 쉽게 변경할 수 있다.

기호 상수의 장점

기호 상수를 만드는 방법 ① #define 기호상수이름 값 (예) #define EXCHANGE_RATE 1120

기호 상수를 만드는 방법 1120 ② const 자료형 변수이름 = 초깃값 (예) const int EXCHANGE_RATE = 1120; 1120 EXCHANGE_RATE 상수

예제: 기호 상수 기호상수 #include <stdio.h> #define TAX_RATE 0.2 int main(void) { const int MONTHS = 12; int m_salary, y_salary; // 변수 선언 printf( "월급을 입력하시오: "); // 입력 안내문 scanf("%d", &m_salary); y_salary = MONTHS * m_salary; // 순수입 계산 printf("연봉은 %d입니다.\n", y_salary); printf("세금은 %f입니다.\n", y_salary * TAX_RATE); return 0; } 기호상수 월급을 입력하시오: 100 연봉은 1200입니다. 세금은 240.000000입니다.

음의 정수 표현 방법 2의 보수로 표현 2의 보수를 만드는 방법

예제 /* 2의 보수 프로그램*/ #include <stdio.h> int main(void) {         int x = 3;         int y = -3;         printf("x = %08X\n", x); // 8자리의 16진수로 출력한다.         printf("y = %08X\n", y);            // 8자리의 16진수로 출력한다.         printf("x+y = %08X\n", x+y);      // 8자리의 16진수로 출력한다.         return 0; } 음수가 2의 보수로 표현되는지를 알아보자. x = 00000003 y = FFFFFFFD x+y = 00000000

부동소수점형 컴퓨터에서 실수는 부동소수점형으로 표현 소수점이 떠서 움직인다는 의미 과학자들이 많이 사용하는 과학적 표기법과 유사

실수 표현 방법 부동 소수점 방식 단일정밀도(single-precision) 표현할 수 있는 범위가 넓다. 10-38 에서 10+38

부동소수점형 float double long double < ≤ 64비트

예제 /* 부동 소수점 자료형의 크기 계산*/ #include <stdio.h> int main(void) {         float x = 1.234567890123456789F;         double y = 1.234567890123456789;         printf("float의 크기=%d\n", sizeof(float));         printf("double의 크기=%d\n", sizeof(double));         printf("long double의 크기=%d\n", sizeof(long double));         printf("x = %30.25f\n",x);         printf("y = %30.25f\n",y); return 0; } float의 크기=4 double의 크기=8 long double의 크기=8 x =    1.2345678806304932000000000 y =    1.2345678901234567000000000

부동소수점 상수 일반적인 실수 표기법 3.141592 (double형) 3.141592F (float형: …f, …F) 지수표기법 1.23456e4 = 12345.6 1.23456e-3 = 0.00123456 유효한 표기법의 예 1.23456   2.  // 소수점만 붙여도 된다.   .28  // 정수부가 없어도 된다.   0e0    2e+10     // +나 -기호를 지수부에 붙일 수 있다.   9.26E3    //   9.26e3    //

부동소수점형 사용시 주의사항 언더플로우(underflow)로 인해 오차가 있을 수 있다! #include <stdio.h> int main(void) {         double x;         x = (1.0e20 + 5.0)-1.0e20;          printf("%f \n",x);         return 0; } 부동소수점 연산에서는 오차가 발생한다. 5.0이 아니라 0으로 계산된다. 0.000000

문자형 문자는 컴퓨터보다는 인간에게 중요 문자도 숫자를 이용하여 표현 공통적인 규격이 필요하다. 아스키 코드(ASCII: American Standard Code for Information Interchange) 8비트를 사용하여 영어 알파벳 표현 (예) !는 33, ‘A’는 65, ‘B’는 66, ‘a’는 97, ‘b’는 98 !"#$%&'()*+,-./0123456789:;<=>? @ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_ `abcdefghijklmnopqrstuvwxyz{|}~

아스키 코드표 (일부)

문자 변수 ‘A’ 65 char형의 변수가 문자 저장 char형의 변수에 문자를 저장하려면 아스키 코드 값을 대입 code char answer; char code; char c char answer char code char형의 변수에 문자를 저장하려면 아스키 코드 값을 대입 code = 65; // ‘A’ 저장 code = 'A'; 클릭 : ‘A’ 65 code int

예제 (Q) 1과 ‘1’의 차이점은? (A) 1은 정수 상수이고 ‘1’은 문자 상수이다. /* 문자 변수와 문자 상수*/ #include <stdio.h> int main(void) {         char code1 = 'A';    // 문자 상수로 초기화         char code2 = 65;     // 아스키 코드로 초기화         printf("문자 상수 초기화 = %c\n", code1);         printf("아스키 코드 초기화 = %c\n", code2); } 문자 상수 초기화 = A 아스키 코드 초기화 = A (Q) 1과 ‘1’의 차이점은? (A) 1은 정수 상수이고 ‘1’은 문자 상수이다.

제어 문자 인쇄 목적이 아니라 제어 목적으로 사용되는 문자들 (예) 줄바꿈 문자, 탭 문자, 벨소리 문자, 백스페이스 문자 제어 문자를 나타내는 방법 아스키 코드를 직접 사용 이스케이프 시퀀스 사용 char beep = 7; printf("%c", beep); char beep = '\a'; printf("%c", beep);

이스케이프 시퀀스 제어 문자 이름 표현 값 의미 널문자(null) \0 문자열의 끝을 표시 벨(bell) \a 7 벨소리 발생 문자열의 끝을 표시 벨(bell) \a 7 벨소리 발생 백스페이스(backspace) \b 8 커서를 현재의 위치에서 한 글자 뒤로 이동 수평탭(horizontal tab) \t 9 커서를 다음 수평 탭 위치로 이동 줄바꿈(newline/linefeed, LF) \n 10 커서를 다음 라인으로 이동 수직탭(vertical tab) \v 11 커서를 다음 수직 탭 위치로 이동 폼피드(formfeed) \f 12 프린터에서 다음 페이지로 넘길 때 사용 캐리지 리턴(carriage return, CR) \r 13 커서를 현재 라인의 시작 위치로 이동 큰따옴표 \" 34 큰따옴표 자체 작은따옴표 \' 39 작은따옴표 자체 역슬래시(backslash) \\ 92 역슬래시 자체

예제 #include <stdio.h> int main() { int id, pass; printf("아이디와 패스워드를 4개의 숫자로 입력하세요:"); printf("id: ____\b\b\b\b"); scanf("%d", &id); printf("pass: ____\b\b\b\b"); scanf("%d", &pass); printf("\a입력된 아이디는 \"%d\"이고 패스워드는 \"%d\"입니다.", id, pass); return 0; } 아이디와 패스워드를 4개의 숫자로 입력하세요: id: 1234 pass: 5678 입력된 아이디는 "1234"이고 패스워드는 "5678"입니다.

정수형으로서의 char형 8비트의 정수를 저장하는 데 char 형을 사용할 수 있다. char code = 65; printf("%d %d %d\n", code, code+1, code+2); // 65 66 67이 출력된다. printf("%c %c %c\n", code, code+1, code+2); // A B C가 출력된다. 65 66 67 A B C