쉽게 풀어쓴 C 프로그래밍

Similar documents
쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍

<4D F736F F F696E74202D20C1A634C0E520BAAFBCF6BFCDC0DAB7E1C7FC>

쉽게 풀어쓴 C 프로그래밍

PowerPoint Presentation

Microsoft PowerPoint - chap-04.pptx

Microsoft PowerPoint - chap-04.pptx

C 언어의구성요소인상수, 변수, 입 출력함수에 대하여학습

쉽게풀어쓴 C 언어 Express 제 4 장변수와자료형 이번장에서학습할내용 제 4 장변수와자료형 제 4 장변수와자료형 * 변수와상수의개념이해 * 자료형 * 정수형 * 실수형 * 문자형 * 기호상수사용 * 오버플로우와언더플로우이해 이번장에서는변수와각종자료형을살펴봅니다.

Microsoft PowerPoint - chap03-변수와데이터형.pptx

OCW_C언어 기초

<4D F736F F F696E74202D2032C1D6C2F72D32C2F7BDC32028B0ADC0C7C0DAB7E D20BAAFBCF6BFCD20BFACBBEAC0DA>

PowerPoint Presentation

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt

K&R2 Reference Manual 번역본

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

Microsoft PowerPoint - Chapter_04.pptx

Microsoft PowerPoint - C프로그래밍-chap03.ppt [호환 모드]

Microsoft PowerPoint - 2장 변수와 자료형 pptx

untitled

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

<4D F736F F F696E74202D20C1A633C0E52043C7C1B7CEB1D7B7A5B1B8BCBABFE4BCD2>

1.2 자료형 (data type) 프로그램에서다루는값의형태로변수나함수를정의할때주로사용하며, 컴퓨터는선언된 자료형만큼의메모리를확보하여프로그래머에게제공한다 정수 (integer) 1) int(4 bytes) 연산범위 : (-2 31 ) ~ (2 31 /2)-

Microsoft PowerPoint - chap-03.pptx

ABC 2장

OCW_C언어 기초

슬라이드 1

Microsoft PowerPoint - Lesson2.pptx

프로그램을 학교 등지에서 조금이라도 배운 사람들을 위한 프로그래밍 노트 입니다. 저 역시 그 사람들 중 하나 입니다. 중고등학교 시절 학교 도서관, 새로 생긴 시립 도서관 등을 다니며 책을 보 고 정리하며 어느정도 독학으르 공부하긴 했지만, 자주 안하다 보면 금방 잊어

슬라이드 1

쉽게 풀어쓴 C 프로그래밍

Microsoft PowerPoint - CP_02_Convert_To_C_02_Step.pptx

PowerPoint 프레젠테이션

Microsoft PowerPoint - [2009] 02.pptx

Microsoft PowerPoint - chap06-2pointer.ppt

Microsoft PowerPoint - chap04-연산자.pptx

Microsoft PowerPoint - ch07 - 포인터 pm0415

프로그램의실행화면 주석 (comment) 두수의합 : 300 /* 두개의숫자의합을계산하는프로그램 */ 주석은코드를설명하는글입니다. 주석 3 가지방법의주석 주석의예 /* 한줄로된주석 */ /* 저자 : 홍길동날짜 : 2013.

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

프로그래밍 및 연습 1

PowerPoint 프레젠테이션

Microsoft PowerPoint - c2.ppt

중간고사

untitled

금오공대 컴퓨터공학전공 강의자료

ABC 3장

Microsoft PowerPoint - 03_(C_Programming)_(Korean)_Pointers

Microsoft PowerPoint - chap03.ppt

비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2

03 상수, 변수, 자료형

11장 포인터

Microsoft PowerPoint - Perpect C 02.ppt [호환 모드]

Microsoft PowerPoint - 2주차-1차시 (강의자료) ch01 - C Programming 기초 (part 2)

본 강의에 들어가기 전

ABC 3장

untitled

슬라이드 1

C 프로그래밊 개요

PowerPoint 프레젠테이션

PowerPoint Presentation

OCW_C언어 기초

Microsoft PowerPoint - chap-07.pptx

프로그래밍개론및실습 2015 년 2 학기프로그래밍개론및실습과목으로본내용은강의교재인생능출판사, 두근두근 C 언어수업, 천인국지음을발췌수정하였음

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍

Microsoft PowerPoint 자바-기본문법(Ch2).pptx

Microsoft PowerPoint - chap05-제어문.pptx

Microsoft PowerPoint - chap13-입출력라이브러리.pptx

쉽게 풀어쓴 C 프로그래밍

Microsoft PowerPoint - 제11장 포인터(강의)

Microsoft PowerPoint - Lesson6.pptx

Microsoft PowerPoint - chap11-포인터의활용.pptx

Microsoft PowerPoint - chap06-1Array.ppt

Microsoft PowerPoint - chap10-함수의활용.pptx

학습목차 2.1 다차원배열이란 차원배열의주소와값의참조

윤성우의 열혈 TCP/IP 소켓 프로그래밊

슬라이드 1

The C++ Programming Language 4 장타입과선언 4.11 연습문제 Hello,world! 프로그램을실행시킨다. 프로그램이컴파일되지않으면 B3.1 을참고하자. #include<iostream> //#include 문, 헤더파일, 전처리지시

슬라이드 1

0. 표지에이름과학번을적으시오. (6) 1. 변수 x, y 가 integer type 이라가정하고다음빈칸에 x 와 y 의계산결과값을적으시오. (5) x = (3 + 7) * 6; x = 60 x = (12 + 6) / 2 * 3; x = 27 x = 3 * (8 / 4

3. 1 포인터란 3. 2 포인터변수의선언과사용 3. 3 다차원포인터변수의선언과사용 3. 4 주소의가감산 3. 5 함수포인터


쉽게 풀어쓴 C 프로그래밊

JAVA PROGRAMMING 실습 02. 표준 입출력

이번장에서학습할내용 동적메모리란? malloc() 와 calloc() 연결리스트 파일을이용하면보다많은데이터를유용하고지속적으로사용및관리할수있습니다. 2

쉽게

11장 포인터


[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

Microsoft PowerPoint - 제11장 포인터

컴파일러

PowerPoint 프레젠테이션

금오공대 컴퓨터공학전공 강의자료

Microsoft PowerPoint - chap-05.pptx

A Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning

쉽게 풀어쓴 C 프로그래밍

untitled

PowerPoint 프레젠테이션

목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2

Transcription:

이번장에서학습할내용 * 변수와상수의개념이해 * 자료형 * 정수형 * 실수형 * 문자형 * 기호상수사용 * 오버플로우와언더플로우이해 이번장에서는변수와각종자료형을살펴봅니다.

변수 Q) 변수 (variable) 이란무엇인가? A) 프로그램에서일시적으로데이터를저장하는공간 Q) 변수는왜필요한가? A) 데이터가입력되면어딘가에저장해야만다음에사용할수있다. 78 90 56 성적들의평균을구하려면먼저성적들이어딘가에저장되어있어야함 12 평균

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

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

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

변수와상수 변수 (variable): 저장된값의변경이가능한공간 상수 (constant): 저장된값의변경이불가능한공간 ( 예 ) 3.14, 100, A, Hello World! 12 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); 상수 원의면적을입력하시요 :10 원의면적 : 314.159210 } return 0;

자료형 자료형 (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 의 printf("char 형의 printf("int 형의 printf("short 형의 printf("long 형의 printf("float 형의 크기 : %d", sizeof(x)); 크기 : %d", sizeof(char)); 크기 : %d", sizeof(int)); 크기 : %d", sizeof(short)); 크기 : %d", sizeof(long)); 크기 : %d", sizeof(float)); printf("double 형의크기 : %d", 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-2147483648~2147483647 long long 형정수 4-2147483648~2147483647 unsigned short 부호없는 short 형정수 2 0~65535 unsigned int 부호없는정수 4 0~4294967295 unsigned long 부호없는 long 형정수 4 0~4294967295 부호있음 char 문자및정수 1-128~127 부호없음 unsigned char 문자및부호없는정수 1 0~255 부동소수점형 float 단일정밀도부동소수점 4 1.2E-38~3.4E38 double 두배정밀도부동소수점 8 2.2E-308~1.8E308 long double 두배정밀도부동소수점 8 2.2E-308~1.8E308

변수의이름짓기 식별자 (identifier): 식별할수있게해주는이름 변수이름 함수이름 김영희 김철수 앞으로 x 라고불러주세요 x 7 100 sum 앞으로 sum 라고불러주세요

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

좋은변수이름 변수의역할을가장잘설명하는이름 밑줄방식 : bank_account 단어의첫번째글자를대문자 :BankAccount 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

변수선언 컴파일러에게어떤변수를사용하겠다고미리알리는것 자료형 변수이름 int index; int index

변수선언의예 변수선언의예 char c char c; int i; double interest_rate; int height, width; int i double interest_rate int height int width

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

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

변수선언위치 int main(void) { int i; // 일반문장이시작된후에변수를선언하는것은 C 언어에서는곤란합니다. printf("hello World!\n"); int sum; // ⅹ }

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

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

예제 : 변수의선언 #include <stdio.h> 변수선언 int main(void) { int usd; int krw; // 달러화 // 원화 printf(" 달러화금액을입력하시오 : "); scanf("%d", &usd); krw = 1120 * usd; printf(" 달러화 %d 달러는 %f 원입니다.", usd, krw); 달러화금액을입력하시오 : 100 달러화 100 달러는 112000 원입니다. } return 0;

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

정수형선언의예 short grade; // short 형의변수를생성한다. int count; // int 형의변수를생성한다. long distance; // distance 형의변수를생성한다.

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

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

signed, unsigned 수식자 unsigned 음수가아닌값만을나타냄을의미 unsigned int signed 부호를가지는값을나타냄을의미 흔히생략 short int long

unsigned 수식자 unsigned int speed; // 부호없는 int형 unsigned distance; // unsigned int distance와같다. unsigned short players; // 부호없는 short형 unsigned long seconds; // 부호없는 long형

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

오버플로우 #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", s_money); u_money = u_money + 1; printf("u_money = %d", u_money); return 0; 오버플로우발생!! assasa s_money = -32768 u_money = 0

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

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

기호상수의장점

기호상수를만드는방법 #1 EXCHANGE_RATE 이라는기호를 1120 으로정의 #define EXCHANGE_RATE 1120

기호상수를만드는방법 #2 변수가값을변경할수없게한다. const int EXCHANGE_RATE = 1120; const 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; // 순수입계산월급을입력하시요 : 100 printf(" 연봉은 %d입니다.", y_salary); 연봉은 1200입니다. printf(" 세금은 %f입니다.", y_salary*tax_rate); 세금은 240.000000입니다. } return 0;

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

/* 부동소수점자료형의크기계산 */ #include <stdio.h> int main(void) { float x = 1.234567890123456789; 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형) 지수표기법 1.23456e4 = 12345.6 1.23456e-3 = 0.00123456 유효한표기법의예 1.23456 2. // 소수점만붙여도된다..28 // 정수부가없어도된다. 0e0 2e+10 // + 나 -기호를지수부에붙일수있다. 9.26E3 // 9.26e3 //

부동소수점오버플로우 #include <stdio.h> int main(void) { float x = 1e39; printf("x = %e\n",x); } 숫자가커서오버플로우발생 x = 1.#INF00e+000 계속하려면아무키나누르십시오...

부동소수점언더플로우 #include <stdio.h> int main(void) { float x = 1.23456e-38; float y = 1.23456e-40; float z = 1.23456e-46; 숫자가작아서언더플로우발생 } printf("x = %e\n",x); printf("y = %e\n",y); printf("z = %e\n",z); x = 1.234560e-038 y = 1.234558e-040 z = 0.000000e+000

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

중간점검 1. 부동소수점형에속하는자료형을모두열거하라. 2. float 형대신에 double 형을사용하는이유는무엇인가? 3. 부동소수점형에서오차가발생하는근본적인이유는무엇인가? 4. 12.345 처럼소수점이있는실수를 int 형의변수에넣을경우, 어떤일이발생하는가? 5. 수식 (1.0/3.0) 을 float 형변수와 double 형변수에각각저장한후에출력하여보자. (1.0/3.0) 은 0.333333... 값을출력하여야한다. 소수점몇자리까지정확하게출력되는가?

문자형 문자는컴퓨터보다는인간에게중요 문자도숫자를이용하여표현 C 에서문자는숫자로표현됩니다. 65 69 71 74 78

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

아스키코드표 ( 일부 )

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

예제 /* 문자변수와문자상수 */ #include <stdio.h> int main(void) { char code1 = 'A'; char code2 = 65; // 문자상수로초기화 // 아스키코드로초기화 } printf(" 문자상수초기화 = %c\n", code1); printf(" 아스키코드초기화 = %c\n", code2); 문자상수초기화 = A 아스키코드초기화 = A

Quiz (Q) 1 과 1 의차이점은? (A) 1 은정수이고 1 은문자 1 을나타내는아스키코드이다. 1 49

이스케이프시퀀스 제어문자이름 제어문자표기 값 의미 널문자 \0 0 문자열의끝을표시 경고 (bell) \a 7 " 삐 하는경고벨소리발생 백스페이스 (backspace) \b 8 커서를현재의위치에서한글자뒤로옮긴다. 수평탭 (horizontal tab) \t 9 커서의위치를현재라인에서설정된다음탭위치로옮긴다. 줄바꿈 (newline) \n 10 커서를다음라인의시작위치로옮긴다. 수직탭 (vertical tab) \v 11 설정되어있는다음수직탭위치로커서를이동 폼피드 (form feed) \f 12 캐리지 return) 리턴 (carriage 주로프린터에서강제적으로다음페이지로넘길때사용된다. \r 13 커서를현재라인의시작위치로옮긴다. 큰따옴표 \ 34 원래의큰따옴표자체 작은따옴표 \ 39 원래의작은따옴표자체 역슬래시 (back slash) \\ 92 원래의역슬래시자체

중간점검 컴퓨터에서는문자를어떻게나타내는가? C 에서문자를가장잘표현할수있는자료형은무엇인가?

실습 : 태양빛도달시간 태양에서오는빛이몇분만에지구에도착하는지를컴퓨터로계산해보고자한다. 빛의속도는 1 초에 30 만 km 를이동한다. 태양과지구사이의거리는약 1 억 4960 만 km 이다.

실행결과 빛의속도는 300000.000000km/s 태양과지구와의거리 149600000.000000km 도달시간은 8.311111 초

힌트 문제를해결하기위해서는먼저필요한변수를생성하여야한다. 여기서는빛의속도, 태양과지구사이의거리, 도달시간을나타내는변수가필요하다. 변수의자료형은모두실수형이어야한다. 왜냐하면매우큰수들이기때문이다. 빛이도달하는시간은 ( 도달시간 = 거리 / ( 빛의속도 )) 으로계산할수있다. 실수형을 printf() 로출력할때는 %f 나 %lf 를사용한다.

소스 #include <stdio.h> int main(void) { double light_speed = 300000; double distance = 149600000; double time; // 빛의속도저장하는변수 // 태양과지구사이거리저장하는변수 // 149600000km로초기화한다. // 시간을나타내는변수 time = distance / light_speed; // 거리를빛의속도로나눈다. time = time / 60.0; // 초를분으로변환한다. printf(" 빛의속도는 %fkm/s \n", light_speed); printf(" 태양과지구와의거리 %fkm \n", distance); printf(" 도달시간은 %f 초 \n", time); // 시간을출력한다. } return 0; 빛의속도는 300000.000000km/s 태양과지구와의거리 149600000.000000km 도달시간은 8.311111 초

도전문제 위의프로그램의출력은 8.31111... 초로나온다. 이것을분과초로나누어서 8 분 20 초와같은식으로출력하도록변경하라. 필요하다면형변환을사용하라. 추가적인정수변수를사용하여도좋다.