Presentation is loading. Please wait.

Presentation is loading. Please wait.

3장. Hello World 01_ Hello World 프로그램 훑어보기.

Similar presentations


Presentation on theme: "3장. Hello World 01_ Hello World 프로그램 훑어보기."— Presentation transcript:

1 3장. Hello World 01_ Hello World 프로그램 훑어보기

2 Hello, World 프로그램 Hello, World 프로그램의 소스 코드 실행 결과
#include <iostream> using namespace std; int main() { cout << “Hello, World\n”; return 0; }

3 Hello, World 프로그램의 분석 cout 객체에 문자열을 보내면 화면에 출력된다.
프로그램에게 시킬 일은 main() 함수 안에 적는다. 세미콜론이 마침표의 역할을 한다. cout << “Hello, World\n”; #include <iostream> using namespace std; int main() { ... return 0; }

4 01_ C++에서 정보를 다루는 법 02_ 변수를 사용하는 규칙
4장. 변수 01_ C++에서 정보를 다루는 법 02_ 변수를 사용하는 규칙

5 정보와 변수 C++에 있어서 모든 정보는 근본적으로 숫자다. 그림을 숫자로 표현한 예 변수는 정보를 보관할 수 있는 공간이다.

6 변수의 정의 변수 3개를 정의하고 초기화 하는 방법 1 변수 3개를 정의하고 초기화 하는 방법 2 변수의 정의와 관련된 규칙
정의하지 않은 변수는 사용할 수 없다. 변수를 사용하기 전에 변수를 미리 정의해야 한다. int a; int b; int c; a = 100; b = 200; c = 300; int a = 100, b = 200, c = 300;

7 변수에 보관된 값 출력하기 cout 객체에 변수를 보내면 보관된 값이 출력된다. 실행 결과
#include <iostream> using namespace std; int main() { int a = 100, b = 200, c = 300; cout << a << “, “ << b << “, “ << c << “\n”; return 0; }

8 변수의 대입 변수를 다른 변수에 대입하면 보관된 값이 복사된다. int d = 1000, e = 2000;
d = e; // d 의 값은 2000이 된다.

9 변수의 이름을 짓는 규칙 다음의 조건에 부합되는 이름만 사용할 수 있다. 중복된 이름의 변수를 사용할 수 없다.
변수 이름에는 알파벳, 숫자, 언더스코어(_)만 포함할 수 있다. 단, 숫자는 변수 이름의 첫번째 글자로 사용할 수 없다. 변수 이름의 길이에는 제한이 없다. 변수 이름에 포함하는 알파벳은 대소문자를 구분한다. 키워드는 변수의 이름으로 사용할 수 없다. * C++의 키워드는 p.58에서 확인할 수 있다.

10 변수의 이름을 잘 짓는 법 다음의 권장사항을 따르면 효율적인 이름을 지을 수 있다.
변수의 용도를 예상할 수 있게 이름을 짓자. 단어와 단어를 구분할 수 있게 짓자. 필요 없이 긴 이름은 피하자. StudentNumber (O) n, num, number, students (X) StudentNumber, student_number (O) studentnumber (X)

11 5장. 타입 1 01_ C++에서 제공하는 타입 02_ 형변환

12 타입의 종류 C++에서 제공하는 기본 타입들

13 정수 타입 (Integers) 정수 타입별로 보관할 수 있는 값의 범위 10 진수, 8 진수, 16 진수의 표현 타입 최소값
최대값 크기(bytes) signed short -32768 32767 2 unsigned short 65535 signed int 4 unsigned int signed long unsigned long * 32비트 윈도우즈 시스템을 기준으로 한 값 int decimal = 41; // 10 진수 int octal = 041; // 8 진수 int hexadecimal = 0x41; // 16 진수

14 비트(Bits)와 바이트(Bytes) 비트는 0 혹은 1을 나타낼 수 있는 전기장치로 생각할 수 있다. 1 바이트는 8비트다.
unsigned short 타입의 변수의 범위 계산하기 unsigned short 타입의 크기는 2 바이트 2 바이트는 16비트 총 216 (= 65536) 개의 상태를 가질 수 있다. 그러므로 0 ~ 의 값을 보관할 수 있다.

15 signed와 Unsigned의 의미 동일한 내용의 정보라도 방식에 따라서 다른 값으로 해석될 수 있다.

16 실수 타입(Floating points)
실수 타입별로 보관할 수 있는 값의 범위 float 타입 상수의 표현 타입 최소값 최대값 크기(bytes) float E-38 E+38 4 double E-308 E+308 8 long double * 32비트 윈도우즈 시스템을 기준으로 한 값 float f = f; // 실수 뒤에 f를 붙인다. double d = 1.23; long double ld = 123.0;

17 부동 소수점 방식의 이해 부동 소수점 방식은 실수를 가수와 지수부분으로 나누어 보관.
부동 소수점 방식을 사용하면 보다 넓은 범위의 숫자를 보관할 수 있지만 정밀도를 잃어버리는 단점도 있다.

18 문자 타입 (Characters) 문자 타입별로 보관할 수 있는 값의 범위 문자 타입도 결국은 숫자를 보관한다. 타입 최소값
최대값 크기(bytes) signed char -128 127 1 unsigned char 255 wchar_t 65539 2 * 32비트 윈도우즈 시스템을 기준으로 한 값

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

20 부울 타입 (Boolean) 부울 타입은 true 혹은 false의 값을 갖는다. 실행 결과 bool b1; bool b2;
b1 = true; b2 = false; cout << “b1 = “ << b1 << “\n”; cout << “b2 = “ << b2 << “\n”;

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

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

23 01_ 기본적인 연산자 02_ 비트 단위 연산 03_ 연산자 더 잘 알기
6장. 연산자 01_ 기본적인 연산자 02_ 비트 단위 연산 03_ 연산자 더 잘 알기

24 사칙 연산 사칙 연산 및 나머지 연산의 예 실행 결과 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”;

25 연산자 사용의 규칙 연산자는 정해진 개수(1, 2, 3)의 피연산자를 받아서 하나의 값을 반환한다.
위의 규칙은 연쇄적으로 적용된다. 연산의 결과값은 다른 연산의 피연산자로 사용될 수 있다.

26 대입 연산자 (Assignment Operators)
우측 피연산자의 값을 좌측에 대입한다. 대입 연산자도 연쇄적으로 사용할 수 있다.

27 관계 연산자 (Relational Operators)
피연산자의 대소관계를 비교한다. 실행결과 int a = 3; int b = 5; bool b1 = a > b; // a가 b보다 크다 bool b2 = a >= b; // a가 b보다 크거나 같다 bool b3 = a < b; // a가 b보다 작다 bool b4 = a <= b; // a가 b보다 작거나 같다 bool b5 = a == b; // a와 b가 같다 bool b6 = a != b; // a와 b가 같지 않다 cout << boolalpha; // bool 타입의 값을 문자로 출력하게 만든다. 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";

28 논리 연산자 (Logical Operators)
논리 연산을 수행한다. 피연산자를 사용해서 부울 연산을 수행한다. bool b1 = true; bool b2 = false; bool and = b1 && b2; bool or = b1 || b2; bool not = ! b1; 피연산자1 피연산자2 AND(&&) OR(||) NOT(!) false true * NOT 연산자는 피연산자1 만 받는다.

29 관계연산자와 논리연산자 일반적으로 논리연산자는 관계연산자와 함께 사용한다. 관계연산자의 우선순위가 높으므로 먼저 수행된다.
int age = 20; // 나이 bool male = true; // 성별 // 20세 이상이면서 남성인지 여부를 알아봄 bool ok = age >= 20 && male == true

30 비트단위 연산자 (Bitwise Operators)
비트단위 논리 연산자(Logical Bitwise Operators)는 각각의 비트를 대상으로 논리 연산을 수행한다.

31 비트단위 논리 연산자의 종류 각 비트를 대상으로 다음과 같이 연산한다. 피연산자1의 i 번째 비트 피연산자2의 i번째 비트
AND(&) OR(|) XOR(^) NOT(~) 1 * NOT 연산자는 피연산자1 만 받는다.

32 비트단위 논리 연산자의 예 178과 113을 사용해서 4가지 비트단위 논리 연산을 수행해보자.
unsigned char a, b; a = 178; b = 113; unsigned char c1, c2, c3, c4; c1 = a & b; // AND c2 = a | b; // OR c3 = a ^ b; // XOR c4 = ~a; // NOT

33 쉬프트 연산자 (Shift Operators)
쉬프트 연산자는 비트를 몇 칸씩 옆으로 이동시킨다. unsigned short green_temp = 544; // green_temp의 비트들을 오른쪽으로 5칸씩 이동시킨다. unsigned short green = green_temp >> 5; // green == 17

34 부호있는 값의 쉬프트 부호있는 값을 우측으로 쉬프트 시키는 경우에는 부호(+/-)에 따라서 다르게 연산한다.
// unsigned와 signed 변수에 같은 값을 넣는다. unsigned short us = 0xff00; short s = (short)0xff00; // 동일한 쉬프트를 수행한다. unsigned short us_shift = us >> 4; short s_shift = s >> 4; // 결과 출력 cout << " us = " << bitset<16>(us) << "(" << us << ")\n"; cout << " s = " << bitset<16>(s) << "(" << s << ")\n"; cout << "us >> 4 = " << bitset<16>(us_shift)<< "(" << us_shift << ")\n"; cout << " s >> 4 = " << bitset<16>(s_shift) << "(" << s_shift << ")\n";

35 연산자의 축약형 연산자의 축약형을 사용해서 번거로운 코딩을 줄일 수 있다. 축약형 같은 의미의 수식 a += b;
a = a + b; a -= b; a = a – b; a *= b; a = a * b; a /= b; a = a / b; a %= b; a = a % b; a &= b; a = a & b; a |= b; a = a | b; a ^= b; a = a ^ b; a <<= b; a = a << b; a >>= b; a = a >> b;

36 연산중에 발생하는 형변환 두 피연산자의 타입이 다르다면, 두 피연산자 중에서 보다 큰 타입 쪽으로 형변환이 발생한다.
int 보다 작은 타입들은 int 혹은 unsigned int 타입으로 변환된다.


Download ppt "3장. Hello World 01_ Hello World 프로그램 훑어보기."

Similar presentations


Ads by Google