타입, 연산자 Chapter 5, 6 Kum Deuk Kyu , Ph. D. Spring 2015

Slides:



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

멘토링 2 주차 장 프로그래밍을 위한 자바의 자료형  값이 변하지 않는 상수  메모리 기억공간인 변수.
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++ 통합 환경 들어가기.
프로그래밍1 및 실습 (C언어) - 3장 기본자료형 (3.6부터 끝까지) -
Vision System Lab, Sang-Hun Han
컴퓨터 응용 및 실습 Part1. OOP&Java Programming data type Review
Power C++ 제6장 포인터와 문자열.
C++ Espresso 제3장 배열과 포인터.
C++ Espresso 제3장 배열과 포인터.
쉽게 풀어쓴 C언어 Express 제5장 수식과 연산자 C Express Slide 1 (of 34)
C++ Espresso 제1장 기초 사항.
제 1장 C 언어의 소개.
C++ Espresso 제2장 제어문과 함수.
어서와 Java는 처음이지! 제2장 자바 프로그래밍 기초.
2014 ITA 8월 강의 C Programming -1주차- C언어 기초 정대진 ( )
2015년 하반기 소방교육 자 유 전 공 학 부 (금) 안녕하십니까 자유전공학부 행정실 입니다.
강좌명 : C++프로그래밍 (C++ Programming)
C++ 프로그래밍 년 2학기 전자정보공학대학 컴퓨터공학부.
Chapter 02 자바 기본구조 자바 프로그래밍의 기초적인 문법을 소개
8. 객체와 클래스 (기본).
2강. JAVA 프로그래밍이란?-II & 변수 JAVA 프로그램 환경설정과 실행 방법 변수란?
제3장 추가 실습 3장 관련 C 언어 프로그래밍 실습.
4장: 자료형과 수식.
배열, 포인터, 참조 배열은 같은 형을 가지는 변수들의 묶음이다..
변수와 자료형.
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 02. 프로그램의 기본구성.
18장. 헤더 파일과 구현 파일 01_ 헤더 파일과 구현 파일의 사용.
3장. Hello World 01_ Hello World 프로그램 훑어보기.
14장. 함수 1 01_ 함수의 기본 02_ 인자의 전달.
C++ 프로그래밍 년 2학기 전자정보공학대학 컴퓨터공학부.
Chapter 1 C++ 기초 Copyright © 2010 Pearson Addison-Wesley. All rights reserved.
C++ Programming: chapter 7 – inheritence
제 2 장 변수와 상수.
프로그래밍2 및 실습 C언어 기반의 C++ 2.
스택(Stack) 김진수
4주차: Data Types and Functions
5장. 상수와 기본 자료형. 5장. 상수와 기본 자료형 5-1 C 언어가 제공하는 기본 자료형 자료형(data type) 기본 자료형 사용자 정의 자료형 int val; "선언할 변수의 특징을 나타내기 위한 키워드" 기본 자료형 기본적으로 제공이 되는 자료형 사용자.
adopted from KNK C Programming : A Modern Approach
컴퓨터 개론 및 실습 Dept. Computer Eng. Hankuk University of Foreign Studies
Chapter 4 수식과 연산자.
컴퓨터의 기초 제 2강 - 변수와 자료형 , 연산자 2006년 3월 27일.
Chapter 1 C와는 다른 C++. 최호성.
제2장 제어구조와 배열 if-else 문에 대하여 학습한다. 중첩 if-else 문에 대하여 학습한다.
Formatted Input/Output
제 3 장 연산자 (Operators).
제 2장 어휘구조와 자료형 토 큰 리 터 럴 주 석 자 료 형 배 열 형.
Java의 정석 제 2 장 변수(Variable) Java 정석 남궁성 강의
컴퓨터 프로그래밍 기초 - 4th : 수식과 연산자 -
4. 고급변수 사용 : 포인터와 관련하여 메모리 바라보기
프로그래밍 원리 Chapter 04 자료 처리와 연산자 신한대학교 IT융합공학부 박 호 균.
4장 - PHP의 표현식과 흐름 제어-.
Chapter 04 자료 유형.
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
컴퓨터 프로그램 제2,3장 간단한 C 프로그램 김 문 기.
제 3장 데이터형과 연산자 Hello!! C 언어 강성호 김학배 최우영.
학습목표 Chapter 2-1. 변수와 포인터 변수의 선언과 변수에 대한 메모리 할당을 살펴본다.
루프와 카운트 Looping and counting
제8장 포인터와 동적객체 생성 포인터의 개념을 이해한다. 포인터와 관련된 연산을 이해한다.
5. 논리적 자료표현 : 구조체.
치료 레크레이션 프로그램 (지적 장애 대상) 과 목: 학 과: 학 번: 이 름: 제 출 일 자 담 당 교 수:
누구나 즐기는 C언어 콘서트 제2장 기초 사항 IT응용시스템공학과 김형진 교수.
연산자(2) Chapter 6 Kum Deuk Kyu , Ph. D. Spring 2015
03. 메모리 관리 C++ 프로그램에서 다룰 수 있는 메모리의 종류
자바 5.0 프로그래밍.
포인터와 배열 조 병 규 한 국 교 통 대 학 교 SQ Lab..
3주차: Control Flow and Others
C.
printf("Global Korea\n");
Python 기본.
Presentation transcript:

타입, 연산자 Chapter 5, 6 Kum Deuk Kyu , Ph. D. Spring 2015 PMP, CISA, ISO 9001 Auditor Dept. of Computer Software DongSeoul University dkkum@hanmail.net, dkkum73@gmail.com

Contents 복습 예제 응용 예제 타입(2) 연산자(1)

복습 예제(1/2) 이것만은 알고 갑시다. 1. 아래 괄호를 채워보자. 마지막 두 개의 괄호는 '있다', '없다' 중에서 고르자. C++에서 모든 정보는 ( 숫자 )로 표현한다. ( 변수 )는 숫자를 보관할 수 있는 공간(방)이다. ( cout ) 객체를 사용해서 변수의 값을 화면에 출력할 수 있다. 변수의 값을 다른 변수에 대입할 수 ( 있다 ) 같은 이름의 변수가 두 개 존재할 수 ( 없다 ) 2. 아래 변수 이름 중에서 올바르지 않은 이름을 찾아보자.. 25th_birthday : x 숫자가 앞에있음 my first variable : x 띄어쓰기 안됨 I o error! : x 특수문자는 대부분 안됨 _만 되는듯 volatile : x 키워드라 안됨 Int3 o I_like_a_very_long_variable_because_it_is_very_clear o Fire at a Research Center Engineer Physicist Mathematics S/W Engineer

복습 예제(2/2) 3. 소스 코드와 그 실행결과를 보여주려고 한다. 아래 빈 항목을 채워 소스 코드를 완성해 주길 바란다! #include [ <iostream> ] using namespace std;   int main() { int a = 1, b = 2, c = 3, d = 4, e = 5; [ cout << a << “\n” << a << b << “\n” << a << b << c << “\n” << a << b << c << d << “\n” << a << b << c << d << e ]; return 0; } 실행결과 1 12 123 1234 12345 Fire at a Research Center Engineer Physicist Mathematics S/W Engineer

응용 예제 3-1(1/2) 변수의 범위(scope)와 생명주기 변수가 선언되고 이용되고, 소멸되는 과정을 말한다. 선언된 변수가 유효한 범위를 말한다. 블록 안에서 선언된 변수는 블록 안에서만 유효하다. 중첩된 블록 안에서 선언된 변수는 하위 블록 (좀더 안쪽에 선언된 블록)들에서도 유효하다. 소멸자를 호출하거나 인위적으로 변수를 해제하지 않는 이상, 먼저 생성된 변수가 나중에 소멸된다. 기존에 존재하는 변수와 동일한 이름의 변수를 선언하면, 나중에 선언된 변수가 기존의 변수보다 우선한다. Fire at a Research Center Engineer Physicist Mathematics S/W Engineer

응용 예제 3-1(2/2) 01 #include<iostream.h> 02 03 void main() 04 { 05 06 int [ ① ] = 1; 07 { 08 09 char [ ② ] = 'a'; 10 { 11 12 cout << "var = " << var << '\n'; 13 } 14 cout << "var = " << var << '\n'; 15 } 16 cout << "var = " << var << '\n'; 17 } var var Fire at a Research Center Engineer Physicist Mathematics S/W Engineer

타입(2)

실수 타입(Floating points) 실수 타입 별로 보관할 수 있는 값의 범위 float 타입 상수의 표현 타입 최소값 최대값 크기(bytes) float 1.17549E-38 3.40282E+38 4 double 2.22507E-308 1.79769E+308 8 long double float f = 0.00123f; // 실수 뒤에 f를 붙인다. double d = 1.23; long double ld = 123.0; Fire at a Research Center Engineer Physicist Mathematics S/W Engineer

실수 뒤에 f가 붙어있지 않으면 double 타입으로 인식 부동 소수점 정수와 구분하기 위해 소수점 사용 5.5, 8.3, -12.6 실수 타입의 사용예제 (예제 5-4, p81) int main() { // 실수 타입 변수 정의 float f; double d; long double ld; // 변수에 실수 값을 대입 - 1 f = 0.00123f; d = 1.23; ld = 123.0; // 변수에 실수 값을 대입 - 2 f = 1.23E-3f; d = 1.23E0; ld = 1.23E2; return 0; } 실수 뒤에 f가 붙어있지 않으면 double 타입으로 인식 Fire at a Research Center Engineer Physicist Mathematics S/W Engineer

부동 소수점 방식의 이해 부동 소수점 방식은 실수를 가수와 지수부분으로 나누어 보관 Fire at a Research Center Engineer Physicist Mathematics S/W Engineer

*문자 타입은 256개의 상태가 각각 문자를 의미한다고 해석할 수 있다!! 문자 타입(Characters) char 형 하나의 문자를 나타냄 char variable; // comment 문자 단일 인용부호(‘)로 감싸짐 문자 상수 : ‘A’, ‘a’, ‘!’ 문자 타입도 결국은 숫자를 보관한다. *문자 타입은 256개의 상태가 각각 문자를 의미한다고 해석할 수 있다!! Fire at a Research Center Engineer Physicist Mathematics S/W Engineer

문자 타입의 사용 아스키 코드 값 확인 (예제 5-6, p85) #include <iostream> using namespace std; int main() { // 'A'의 아스키 코드 값 확인 int a = 'A'; cout << a << "\n"; // 65를 문자로 표현하면? char b = 65; cout << b << "\n"; return 0; } int a = 'A'; 문자를 정수 타입에 대입 char b = 65; 정수를 문자 타입에 대입 Fire at a Research Center Engineer Physicist Mathematics S/W Engineer

이스케이프 문자열(Escape Sequences) 타입 아스키 코드 상에서의 표현 C++에서의 표현 개행 문자 NL(LF) \n 수평탭 HT \t 수직탭 VT \v 백스페이스 BS \b 캐리지 리턴 CR \r 폼피드 FF \f 벨소리 BEL \a 역슬래쉬 \ \\ 작은 따옴표 ‘ \’ 큰따옴표 “ \” 8진수 ooo \ooo 16진수 hhh \xhhh Fire at a Research Center Engineer Physicist Mathematics S/W Engineer

이스케이프 문자열의 사용 아스키 코드 값 확인 (예제 5-7, p88) #include <iostream> using namespace std; int main() { // Hello, World!를 쓰려다 실수했음 cout << "Hello, Works"; // 백스페이스로 뒤에 두 글자를 지운다. cout << "\b\b"; // Hello, World!를 마무리한다. cout << "ld!\n"; return 0; } Fire at a Research Center Engineer Physicist Mathematics S/W Engineer

부울 타입 (Boolean) 부울 타입은 true 혹은 false의 값을 갖는다. #include <iostream> using namespace std; int main() { bool b1; bool b2; b1 = true; b2 = false; cout << “b1 = “ << b1 << “\n”; cout << “b2 = “ << b2 << “\n”; } *어떻게 출력될까요? Fire at a Research Center Engineer Physicist Mathematics S/W Engineer

형변환 (Type Conversion) 암시적(Explicit) / 명시적(Implicit) 형 변환 특별히 명시해주지 않았지만, 서로 다른 형의 값 혹은 변수 간의 차이 때문에 자동적으로 일어나게 되는 형 변환을 말한다. 쉽게 암시적 형 변환의 반대라고 생각하면 되겠다. 즉, 명시적 형 변환은 우리가 그 형을 의도적으로 명시해 줌으로써, 형 변환을 수행하게 하는 것이다. 명시적 Fire at a Research Center Engineer Physicist Mathematics S/W Engineer

암시적 형변환 (Implicit Type Conversion) 암시적 형변환은 변수를 대입하는 과정에서 자동적으로 발생하는 형변환이다. 이 때 값이 변할 수 있는데, 다음의 경우는 그 결과를 예상할 수 있는 경우이다. 실수 타입에서 정수 타입으로 형변환 발생 시 소수점 이하 부분이 잘린다. (반올림 아님) 모든 타입에서 부울 타입으로 형변환 발생시, 0이 아닌 모든 값은 true로, 0은 false로 바뀐다. 다음의 경우는 그 결과를 예상할 수 없는 경우이다. 큰 범위를 갖는 타입에서 작은 범위를 갖는 타입으로 형변환 발생시 예) int -> unsigned short double -> float float -> short int -> float Fire at a Research Center Engineer Physicist Mathematics S/W Engineer

형변환의 규칙(1/2) 기본 타입간의 형변환 (예제 5-9, p93) #include <iostream> using namespace std; int main() { // 다양한 타입의 변수를 정의한다. int i = 65; float f = 66.89f; char c = 'C'; bool b = true; // 형변환에 사용할 변수들을 미리 정의해둔다. // (이렇게 하는 것이 더욱 간결한 경우가 있다) int f2i, c2i, b2i; float i2f, c2f, b2f; char i2c, f2c, b2c; bool i2b, f2b, c2b; // int 을 다른 타입으로 i2f = i; // int -> float i2c = i; // int -> char i2b = i; // int -> bool … Fire at a Research Center Engineer Physicist Mathematics S/W Engineer

형변환의 규칙(2/2) 기본 타입간의 형변환 (예제 5-9, p93) // float 를 다른 타입으로 f2i = f; // float -> int f2c = f; // float -> char f2b = f; // float -> bool // char 를 다른 타입으로 c2i = c; // char -> int c2f = c; // char -> float c2b = c; // char -> bool // bool 을 다른 타입으로 b2i = b; // bool -> int b2f = b; // bool -> float b2c = b; // bool -> char // 결과 출력 cout << "int : " << i << "\n\tto float : " << i2f << "\n\tto char : " << i2c << "\n\tto bool : " << i2b << "\n\n"; cout << "float : " << f << "\n\tto int : " << f2i << "\n\tto char : " << f2c << "\n\tto bool : " << f2b << "\n\n"; cout << "char : " << c << "\n\tto int : " << c2i << "\n\tto float : " << c2f << "\n\tto bool : " << c2b << "\n\n"; cout << "bool : " << b << "\n\tto int : " << b2i << "\n\tto float : " << b2f << "\n\tto char : " << b2c << "\n\n"; return 0; } Fire at a Research Center Engineer Physicist Mathematics S/W Engineer

*실수 타입이 짧은 정수 타입으로 변환 시 값이 변질된다!! 문제가 발생하는 형변환 문제가 생기는 형변환 (예제 5-10, p96) #include <iostream> using namespace std; int main() { // 정수타입간의 형변환 int i = 131071; unsigned short i2us = i; // int -> unsigned short short i2s = i; // int -> short // 실수타입간의 형변환 double d = 12345678901234.56789; float d2f = d; // double -> float // 실수타입에서 정수타입으로 형변환 float f = 76543.21f; short f2s = f; // float -> short // 정수타입에서 실수타입으로 형변환 int big_i = 1234567890; float i2f = big_i; // int -> float // 결과 출력 cout << fixed; cout << "int : " << i << "\n\tto unsigned short : " << i2us << "\n\tto short : " << i2s << "\n\n"; cout << "double : " << d << "\n\tto float : " << d2f << "\n\n"; cout << "float : " << f << "\n\tto short : " << f2s << "\n\n"; cout << "int : " << big_i << "\n\tto float : " << i2f << "\n\n"; return 0; } *실수 타입이 짧은 정수 타입으로 변환 시 값이 변질된다!! Fire at a Research Center Engineer Physicist Mathematics S/W Engineer

명시적 형변환 (Explicit Type Conversion) 명시적 형변환은 개발자가 직접 명령하는 형변환이다. 명시적 형변환을 사용해서 개발자의 의도를 명확히 할 수 있다. 컴파일러의 경고(Warning) 메시지를 막을 수 있다. 다른 개발자들에게 본인의 의도를 알릴 수 있다. 뒤에서 함수와 클래스를 배운 후에는 다음의 용도로 사용할 수 있다. 함수 호출 시에 인자를 명시적으로 형변환해서 넘겨준다. 부모 클래스의 포인터를 자식 클래스의 포인터로 다운캐스팅한다. float f = 66.89f; int i = (int)f; // i는 66 이 된다. Fire at a Research Center Engineer Physicist Mathematics S/W Engineer

*명시적인 형변환 시에는 임시 변수가 수반된다!! 명시적 형 변환의 사용 명시적인 형변환 (예제 5-11, p98) #include <iostream> using namespace std; int main() { // 다양한 타입의 변수 정의 int i = 65; float f = 66.89f; char c = 'C'; // 명시적으로 형변환한다 cout << "int i = " << i << "\n"; cout << "(char)i= " << (char)i << "\n"; cout << "(bool)i= " << (bool)i << "\n\n"; cout << "float f = " << f << "\n"; cout << "(int)f = " << (int)f<< "\n\n"; cout << "char c = " << c << "\n"; cout << "(int)c= " << (int)c<< "\n"; } *명시적인 형변환 시에는 임시 변수가 수반된다!! Fire at a Research Center Engineer Physicist Mathematics S/W Engineer

명시적 형 변환의 사용 2(응용 예제3-2) 01 #include<iostream> 02 using namespace std; 03 void main() 04 { 05 int salt = 30; 06 int water = 40; 07 float concentration = 0; 08 float real_concentration = 0; 09 10 concentration = (30 / 40) * 100; 11 cout << "Weight percent = " << concentration << " %\n"; 12 13 real_concentration = (float)30 / (float)40 * 100; 14 cout << "Real Weight percent = " << real_concentration << " %\n"; 15 } 명시적 형 변환 없이 정수 연산을 한다. 명시적 형 변환 후, 연산을 한다. Fire at a Research Center Engineer Physicist Mathematics S/W Engineer

연산자(1)

연산자란 연산자란 변수를 원하는 대로 가공하는 도구이다.하는 기본 타입들 변수를 값이 들어있는 상자라고 생각한다면, 연산자는 그 상자 안의 값을 가공하는 도구이다. Fire at a Research Center Engineer Physicist Mathematics S/W Engineer

연산자의 종류 연산자란 변수를 원하는 대로 가공하는 도구이다.하는 기본 타입들 기본 연산자 관계 연산자 비트 관련 연산자 기타 연산자 Fire at a Research Center Engineer Physicist Mathematics S/W Engineer

사칙 연산 사칙 연산 및 나머지 연산의 예 int a = 8; int b = 4; int c = a + b; int d = a – b; int e = a * b; int f = a / b; int g = a % b; cout << “8 + 4 = “ << c << “\n”; cout << “8 - 4 = “ << d << “\n”; cout << “8 * 4 = “ << e << “\n”; cout << “8 / 4 = “ << f << “\n”; cout << “8 % 4 = “ << g << “\n”; Fire at a Research Center Engineer Physicist Mathematics S/W Engineer

연산자 사용의 규칙 연산자는 정해진 개수(1, 2, 3)의 피연산자를 받아서 하나의 값을 반환한다. 위의 규칙은 연쇄적으로 적용된다. 연산의 결과값은 다른 연산의 피연산자로 사용될 수 있다. Fire at a Research Center Engineer Physicist Mathematics S/W Engineer

대입 연산자 (Assignment Operators) 우측 피연산자의 값을 좌측에 대입한다. 대입 연산자도 연쇄적으로 사용할 수 있다. Fire at a Research Center Engineer Physicist Mathematics S/W Engineer

관계 연산자 (Relational Operators) #include <iostream> using namespace std; int main() { // 피연산자를 정의한다. int a = 3; int b = 5; // 관계 연산자의 사용 bool b1, b2, b3, b4, b5, b6; b1 = a > b; // a가 b보다 크다 b2 = a >= b; // a가 b보다 크거나 같다 b3 = a < b; // a가 b보다 작다 b4 = a <= b; // a가 b보다 작거나 같다 b5 = a == b; // a와 b가 같다 b6 = a != b; // a와 b가 같지 않다 // bool 타입의 값을 문자로 출력하게 만든다. cout << boolalpha; // 결과를 출력 cout << a << " > " << b << " --> " << b1 << "\n"; cout << a << " >= " << b << " --> " << b2 << "\n"; cout << a << " < " << b << " --> " << b3 << "\n"; cout << a << " <= " << b << " --> " << b4 << "\n"; cout << a << " == " << b << " --> " << b5 << "\n"; cout << a << " != " << b << " --> " << b6 << "\n"; return 0; } Fire at a Research Center Engineer Physicist Mathematics S/W Engineer *관계 연산자의 결과값은 bool 타입 즉, true 아니면 false다!!

Kum Deuk Kyu Mobile 010-5334-2448 dkkum@hanmail.net, dkkum73@gmail.com Q & A Thank You ! 여러분은 누구보다 위대하고 존귀한 존재이며, 사랑하는 하나님의 자녀입니다. 학업이나 진로, 개인적인 상담을 원하시는 분은 아래 연락처로 연락주세요..^^ Kum Deuk Kyu Mobile 010-5334-2448 dkkum@hanmail.net, dkkum73@gmail.com