1장 컴퓨터 프로그램및 - parkjonghyuk.net · 1을 저장할 수 있기 때문에 2진수...

40
SeoulTech 2010-2 nd 프로그래밍입문 2 1. 컴퓨터, 프로그램 및 C++ 입문 C++ 입문 박종 종혁 혁 교수 교수 UCS Lab UCS Lab (http://www.parkjonghyuk.net) Tel: 02-970-6702 Email: [email protected] 1

Upload: others

Post on 28-Oct-2019

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 1장 컴퓨터 프로그램및 - parkjonghyuk.net · 1을 저장할 수 있기 때문에 2진수 체계를 사용한다 . 컴퓨터의컴퓨터의 숫자나문자는0과1로구성된열로작성된다

SeoulTech 2010-2nd 프로그래밍입문 2

1장. 컴퓨터, 프로그램및C++입문C++ 입문

박박종종 혁혁 교수교수

UCS LabUCS Lab(http://www.parkjonghyuk.net)

Tel: 02-970-6702

Email: [email protected]

1

Page 2: 1장 컴퓨터 프로그램및 - parkjonghyuk.net · 1을 저장할 수 있기 때문에 2진수 체계를 사용한다 . 컴퓨터의컴퓨터의 숫자나문자는0과1로구성된열로작성된다

강의목표강의목표컴퓨터기초, 프로그램, 운영체제개념(1.2-1.4)(선택)2진수, 10진수, 16진수수의표현(1.5)

================================C++ 역사(1.6)C++ 프로그램작성방법(1.7)C 프로그램개발주기이해(1 8)C++ 프로그램개발주기이해(1.8)

================================(선택)Visual C++로프로그램작성(1 9)(선택)Visual C++로프로그램작성(1.9)(선택)Dev-C++로프로그램작성(1.10)(선택)윈도우명령라인에서컴파일하기(1 11)(선택)윈도우명령라인에서컴파일하기(1.11)(선택)Unix 명령라인에서컴파일하기(1.12)

C++로시작하는객체지향프로그래밍 2

Page 3: 1장 컴퓨터 프로그램및 - parkjonghyuk.net · 1을 저장할 수 있기 때문에 2진수 체계를 사용한다 . 컴퓨터의컴퓨터의 숫자나문자는0과1로구성된열로작성된다

컴퓨터구성컴퓨터구성

•컴퓨터는다음의주요한하드웨어컴포넌트로구성되어•컴퓨터는다음의주요한하드웨어컴포넌트로구성되어있다.

•중앙처리장치(CPU) 메모리(주메모리)•중앙처리장치(CPU), 메모리(주메모리), 저장장치(하드디스크, CD, 테이프), 입출력장치(모니터, 키보드,마우스,프린터)-통신장치(모뎀및네트워크키보드, 마우스, 프린터) 통신장치(모뎀및네트워크카드(NIC))

Bus

InputCommunicationStorage Output

Bus

CPU

e.g., Disk, CD, and Tape

Input Devices

e.g., Keyboard, Mouse

e.g., Monitor, Printer

CommunicationDevices

e.g., Modem, and NIC

StorageDevices Memory

Output Devices

C++로시작하는객체지향프로그래밍 3

and Tape Mouse Printerand NIC

Page 4: 1장 컴퓨터 프로그램및 - parkjonghyuk.net · 1을 저장할 수 있기 때문에 2진수 체계를 사용한다 . 컴퓨터의컴퓨터의 숫자나문자는0과1로구성된열로작성된다

CPU중앙처리장치(CPU)는컴퓨터의중추로서메모리에서명령을읽어오고실행하는역할을담당한다 CPU는 2개의요소로읽어오고실행하는역할을담당한다. CPU는 2개의요소로구성되는데제어부(control unit)와산술논리부(arithmetic/logic unit)이다. 컴퓨터의클럭속도는보통MHz(100만 Hz)이며) ( )CPU의속도는지속적으로증가되어왔다. 최근의 PC들은 Intel Core2 Duo 프로세서를탑재하고 3GHz(1GHz는 1,000MHz임) 이상의속도를내고있다이상의속도를내고있다.

Bus

CPU

Input CommunicationStorage Memor

Output CPU

e.g., Disk, CD, and Tape

Devices

e.g., Keyboard, Mouse

e.g., Monitor, Printer

Devices e.g., Modem,

and NIC

gDevices Memory Devices

C++로시작하는객체지향프로그래밍 4

Page 5: 1장 컴퓨터 프로그램및 - parkjonghyuk.net · 1을 저장할 수 있기 때문에 2진수 체계를 사용한다 . 컴퓨터의컴퓨터의 숫자나문자는0과1로구성된열로작성된다

Memoryy•메모리에는데이터와프로그램명령들이 CPU에서실행될수있도록저장되어있다 메모리단위는바이트로 8비트묶음을있도록저장되어있다. 메모리단위는바이트로 8비트묶음을의미한다.

•사용되기전에프로그램과데이터는메모리로로드되어야•사용되기전에프로그램과데이터는메모리로로드되어야한다. 메모리는완전히비어있다기보다는무엇인가기록되어있다고볼수있으며, 초기화되지않은값이메모리에있다면있다 볼수있 며, 기화되지않은값이메 리에있다면프로그램에서사용할수있는의미있는값은아니며, 새로운의미있는정보가메모리에쓰이게되면이전의값은사라진다.

Bus

CPU

e.g., Disk, CD,

Input Devices

e.g., Keyboard, e.g., Monitor,

CommunicationDevices

e g Modem

Storage Devices

Memory

Output Devices

C++로시작하는객체지향프로그래밍 5

e.g., Disk, CD, and Tape

e.g., Keyboard, Mouse

e.g., Monitor, Printer

e.g., Modem, and NIC

Page 6: 1장 컴퓨터 프로그램및 - parkjonghyuk.net · 1을 저장할 수 있기 때문에 2진수 체계를 사용한다 . 컴퓨터의컴퓨터의 숫자나문자는0과1로구성된열로작성된다

데이터저장형태컴퓨터는이진상태인 1과 0으로서정보를표현하는기기이다. 여러종류의데이터 숫자 문자 문자열등은일련의데이터, 숫자, 문자, 문자열등은일련의비트(바이너리디지트: 0과 1)로인코딩된다. 메모리에는이러한데이터와프로그램명령들이 CPU에서실행될수

Memory contentMemory address

프로그램명령들이 CPU에서실행될수있도록저장되어있다. 메모리단위는바이트로 8비트묶음을의미하며순서대로번지가매겨진다.

.

.

.

2000

.

.

.

01001010 Encoding for character ‘J’ 순서대로번지가매겨진다.프로그래머는데이터의인코딩, 디코딩에신경쓸필요는없다. 인코딩규칙에따라시스템에서자동으로수행되기때문이다

2001

2002

2003

2004

01100001

01110110

01100001

00000011

Encoding for character ‘a’ Encoding for character ‘v’

Encoding for character ‘a’ Encoding for number 3시스템에서자동으로수행되기때문이다.

인코딩규칙은다양한데, ASCII 인코딩의경우문자 ‘J’를 01001010 8비트(1바이트)로인코딩한다. 3과같이

2004

00000011

Encoding for number 3

8비트(1바이트)로인코딩한다. 3과같이작은숫자는 1바이트에저장하고, 큰수를저장하고자할경우에는인접한여러바이트를사용하여숫자를저장하게

C++로시작하는객체지향프로그래밍 6

된다. 바이트는최소저장단위이다.

Page 7: 1장 컴퓨터 프로그램및 - parkjonghyuk.net · 1을 저장할 수 있기 때문에 2진수 체계를 사용한다 . 컴퓨터의컴퓨터의 숫자나문자는0과1로구성된열로작성된다

저장장치메모리는휘발성이므로전원이없으면정보가지워지게된다. 때문에영구적인저장을위해서프로그램과데이터는저장때문에영구적인저장을위해서프로그램과데이터는저장장치에저장되어야하며컴퓨터가실제로사용할때메모리로옮겨져서사용된다. 예: 디스크드라이브(하드디스크, 플로피(디스크)- CD 드라이브(CD-R, CD-RW, DVD)-테이프드라이브-USB 플래시드라이브

Bus

CPU

Input Devices

CommunicationDevices

Storage Devices

Memory

Output Devices

e.g., Disk, CD, and Tape

e.g., Keyboard, Mouse

e.g., Monitor, Printer

e.g., Modem, and NIC

C++로시작하는객체지향프로그래밍 7

Page 8: 1장 컴퓨터 프로그램및 - parkjonghyuk.net · 1을 저장할 수 있기 때문에 2진수 체계를 사용한다 . 컴퓨터의컴퓨터의 숫자나문자는0과1로구성된열로작성된다

출력장치: 모니터모니터는 텍스트 또는 그래픽 정보를 출력하는 장치이다. 해상도와 도트피치(dot pitch)가 모니터의 화질을해상도와 도트피치(dot pitch)가 모니터의 화질을결정한다.

Bus

CPU

Input Devices

CommunicationDevices

Storage Devices

Memory

Output Devices

e.g., Disk, CD, and Tape

e.g., Keyboard, Mouse

e.g., Monitor, Printer

e.g., Modem, and NIC

C++로시작하는객체지향프로그래밍 8

Page 9: 1장 컴퓨터 프로그램및 - parkjonghyuk.net · 1을 저장할 수 있기 때문에 2진수 체계를 사용한다 . 컴퓨터의컴퓨터의 숫자나문자는0과1로구성된열로작성된다

모니터해상도와도트피치평방인치당픽셀(pixel: picture elements)의수로결정되는데 픽셀은화면에이미지를출력하기위해

해상도결정되는데, 픽셀은화면에이미지를출력하기위해사용되는작은점(화소)을의미한다. 17인치일반 LCD 모니터의경우가로 1280, 세로 1024 픽셀을표준

resolution

해상도로사용한다. 해상도는사용자에의해조절이가능하고해상도를높이게되면이미지가선명해지고깨끗하게보인다깨끗하게보인다.

픽셀간 간격을 의미하는 것으로 보통 0.21 밀리미터에서 밀리미터 정도가 된다 도트

도트피치밀리미터에서 0.81밀리미터 정도가 된다. 도트피치가 작을수록 화질이 좋다.dot pitch

C++로시작하는객체지향프로그래밍 9

Page 10: 1장 컴퓨터 프로그램및 - parkjonghyuk.net · 1을 저장할 수 있기 때문에 2진수 체계를 사용한다 . 컴퓨터의컴퓨터의 숫자나문자는0과1로구성된열로작성된다

통신장치많이사용되는통신장치에는다이얼업모뎀(modem), DSL, 케이블모뎀, 네트워크카드등이있다. 다이얼업모뎀은전화선을사용하여 56,000bps(bit per second)속도로통신이가능하다 DSL(Digital Subscriber Line)도전화선을per second) 속도로통신이가능하다. DSL(Digital Subscriber Line)도전화선을사용하여통신하지만, 다이얼업모뎀에비해 20배빠른속도로통신이가능하다. 케이블모뎀은케이블 TV 업체의케이블라인을사용하여통신하는방식이며 DSL과속도가비슷하다 네트워크카드(NIC N k통신하는방식이며 DSL과속도가비슷하다. 네트워크카드(NIC: Network Interface Card)는컴퓨터를 LAN(Local Area Network)에연결하기위해필요한장치이며 LAN은기업, 대학및기관에서폭넓게사용되고있다. 일반적인 NIC는 10BaseT로 10Mbps(초당백만비트)의속도로통신이가능하다.

O

Bus

CPU

e.g., Disk, CD, d T

Input Devices

e.g., Keyboard, M

e.g., Monitor, Printer

CommunicationDevices

e.g., Modem, d NIC

Storage Devices

Memory

Output Devices

C++로시작하는객체지향프로그래밍 10

and Tape Mouse Printerand NIC

Page 11: 1장 컴퓨터 프로그램및 - parkjonghyuk.net · 1을 저장할 수 있기 때문에 2진수 체계를 사용한다 . 컴퓨터의컴퓨터의 숫자나문자는0과1로구성된열로작성된다

프로그램

프로그램은소프트웨어를의미하는것이며컴퓨터가프로그램은소프트웨어를의미하는것이며컴퓨터가실행할명령(instruction)을의미한다.

사용자는프로그램을통해컴퓨터가처리할작업을지시하게된다 프로그램이없다면컴퓨터는하나의지시하게된다. 프로그램이없다면컴퓨터는하나의비어있는기계덩어리에불과하다.

컴퓨터는사람의말을이해할수없으므로, 컴퓨터,언어를사용하여컴퓨터에필요한프로그램을작성하는것이필요하다.

C++로시작하는객체지향프로그래밍 11

Page 12: 1장 컴퓨터 프로그램및 - parkjonghyuk.net · 1을 저장할 수 있기 때문에 2진수 체계를 사용한다 . 컴퓨터의컴퓨터의 숫자나문자는0과1로구성된열로작성된다

프로그래밍언어기계어 어셈블리언어 고급언어

기계어는 가장 원시적인 수준의 언어로 0과 1의기계어는 가장 원시적인 수준의 언어로 0과 1의조합으로 구성된 언어이며 특정 플랫폼의컴퓨터에 적합하게 작성되어 다른 타입의 컴퓨터컴퓨터에 적합하게 작성되어 다른 타입의 컴퓨터간에는 호환되지 못한다. 명령어도 바이너리 코드형태로 되어 있으므로, 다양한 명령을 사용하려면형태로 되어 있으므로, 다양한 명령을 사용하려면여러 바이너리 코드를 사용해야 한다. 기계어로프로그램을 작성하는 것은 지루한 작업이며 읽고수정하는 것도 쉽지 않다. 예로써 두 수를 더하는경우 다음과 같은 명령을 작성하여야 한다.

1101101010011010

C++로시작하는객체지향프로그래밍 12

Page 13: 1장 컴퓨터 프로그램및 - parkjonghyuk.net · 1을 저장할 수 있기 때문에 2진수 체계를 사용한다 . 컴퓨터의컴퓨터의 숫자나문자는0과1로구성된열로작성된다

프로그래밍언어기계어 어셈블리언어 고급언어

어셈블리어( bl l )는저수준의프로그래밍어셈블리어(assembly language)는저수준의프로그래밍언어로기계어명령을대신하는연상기호(mnemonic)를사용한다 예로써두수를더하는경우를어셈블리어로사용한다. 예로써두수를더하는경우를어셈블리어로작성하면다음과같은명령을작성하여야한다.

ADDF3 R1, R2, R3

Assembly Source File Machine Code File

… ADDF3 R1, R2, R3 …

Assembler

… 1101101010011010 …

C++로시작하는객체지향프로그래밍 13

Page 14: 1장 컴퓨터 프로그램및 - parkjonghyuk.net · 1을 저장할 수 있기 때문에 2진수 체계를 사용한다 . 컴퓨터의컴퓨터의 숫자나문자는0과1로구성된열로작성된다

프로그래밍언어기계어 어셈블리언어 고급언어

고급언어(high-level language)는영어문장과유사한형태로만들어져있으므로배우기쉽고프로그램작성이용이하다. 예를들어고급언어로원의반지름이5인원의면적을구하는프로그램은다음과같이작성하면된다작성하면된다.area = 5 * 5 * 3.1415;

C++로시작하는객체지향프로그래밍 14

Page 15: 1장 컴퓨터 프로그램및 - parkjonghyuk.net · 1을 저장할 수 있기 때문에 2진수 체계를 사용한다 . 컴퓨터의컴퓨터의 숫자나문자는0과1로구성된열로작성된다

인기있는고급언어

COBOL (Common Business Oriented Language)FORTRAN (FORmula TRANslation)BASIC (Beginner All-purpose Symbolic Instructional Code)Pascal (Blaise Pascal이라고도함)Ada (Ada Lovelace이라고도함)Visual Basic (Microsoft에서개발한비주얼베이직)Delphi (Borland에서개발한 Pascal 유사언어)C (B 언어를토대로만들어진언어)C++ (C 기반객체지향언어)JavaC# (Microsoft에서개발한 Java와유사한언어)

C++로시작하는객체지향프로그래밍 15

( )

Page 16: 1장 컴퓨터 프로그램및 - parkjonghyuk.net · 1을 저장할 수 있기 때문에 2진수 체계를 사용한다 . 컴퓨터의컴퓨터의 숫자나문자는0과1로구성된열로작성된다

소스코드컴파일

고급언어로작성된프로그램을소스프로그램(source 이라고한다 컴퓨터는소스프로그램을바로program)이라고한다. 컴퓨터는소스프로그램을바로

이해할수없기때문에컴파일러(compiler)를사용하여기계어로변환하는과정을거치게된다 기계어기계어로변환하는과정을거치게된다. 기계어프로그램은라이브러리와링크되어실행파일을만들게된다만들게된다.

CompilerSource File Object File Linker Excutable File

C++로시작하는객체지향프로그래밍 16

Page 17: 1장 컴퓨터 프로그램및 - parkjonghyuk.net · 1을 저장할 수 있기 때문에 2진수 체계를 사용한다 . 컴퓨터의컴퓨터의 숫자나문자는0과1로구성된열로작성된다

운영체제운영체제(OS)는컴퓨터에서실행되는가장중요한실행되는가장중요한프로그램으로컴퓨터시스템의자원을관리하고프로그램을

User

자원을관리하고프로그램을관리하는역할을한다. 우리가보통사용하는운영체제는

Application Programs

윈도우 (98, NT, 2000, Me, XP, Vista)나Mac OS 또는 Linux 운영체제중의하나일것이다

Operating System

운영체제중의하나일것이다. 윈도우는현존하는가장인기있는운영체제이며,웹

Hardware 있는운영체제이며, 웹브라우저, 워드프로세서같은응용프로그램도운영체제

C++로시작하는객체지향프로그래밍 17

없이는실행될수없다.

Page 18: 1장 컴퓨터 프로그램및 - parkjonghyuk.net · 1을 저장할 수 있기 때문에 2진수 체계를 사용한다 . 컴퓨터의컴퓨터의 숫자나문자는0과1로구성된열로작성된다

수체계NOTE: 이절은우선넘어가고다음에 2진수체계나 16진수에대한궁금한사항이있을때찾아보는형태로활용해도좋다.대 궁 사항이있 때찾아 형태 용해 좋다

0, 1binary

0, 1, 2, 3, 4, 5, 6, 7octal

0, 1, 2, 3, 4, 5, 6, 7, 8, 9decimal

h d i l 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, Fhexdecimal

C++로시작하는객체지향프로그래밍 18

Page 19: 1장 컴퓨터 프로그램및 - parkjonghyuk.net · 1을 저장할 수 있기 때문에 2진수 체계를 사용한다 . 컴퓨터의컴퓨터의 숫자나문자는0과1로구성된열로작성된다

수체계

컴퓨터는내부적으로메모리나디스크같은저장장치에 0과1을저장할수있기때문에 2진수체계를사용한다 컴퓨터의1을저장할수있기때문에 2진수체계를사용한다. 컴퓨터의숫자나문자는 0과 1로구성된열로작성된다. 이때 0과 1 각각을비트(bit)라고한다. 2진수체계는두개의수,즉 0과 1을각각을비트(bit)라고한다. 2진수체계는두개의수, 즉 0과 1을가지고있는것이다.

우리는 10진수체계를사용하므로 2진수는쉽게의미가오지는않는다. 프로그램에서 20을작성하는경우 10진수로작성하게되지만 컴퓨터소프트웨어에의해 2진수로변환되며 컴퓨터되지만, 컴퓨터소프트웨어에의해 2진수로변환되며, 컴퓨터내부의 2진수도변환에의해 10진수로표현된다.

C++로시작하는객체지향프로그래밍 19

Page 20: 1장 컴퓨터 프로그램및 - parkjonghyuk.net · 1을 저장할 수 있기 때문에 2진수 체계를 사용한다 . 컴퓨터의컴퓨터의 숫자나문자는0과1로구성된열로작성된다

수체계, cont.10진수의숫자는 0, 1, 2, 3, 4, 5, 6, 7, 8, 9이며 10진수는이들숫자로만만들어진다. 숫자는위치에따라숫자의값도달라진다. 숫자의위치에따른값은 10의멱승이된다. 예를들어, 십진수 7423에는숫자 7, 4, 2, 3이있는데각기 7000, 400, 20 3값을가진다20, 3 값을가진다.

103

7 4 2 3

102 101 100

0123 103102104107 ×+×+×+×=

3204007000 +++= 7423=

10진수체계시스템은 10개의수를사용하며각자리는 10의멱승의값을가진다. 여기에서 10은밑수(base) 또는기수(radi )가된다 따라서 2진수의경우에는 2개의수가기수(radix)가된다. 따라서 2진수의경우에는 2개의수가사용되므로기수가 2가되며, 16진수의경우에는 16개의수가사용되므로기수가 16이된다.

C++로시작하는객체지향프로그래밍 20

사용되므로기수가 16이된다.

Page 21: 1장 컴퓨터 프로그램및 - parkjonghyuk.net · 1을 저장할 수 있기 때문에 2진수 체계를 사용한다 . 컴퓨터의컴퓨터의 숫자나문자는0과1로구성된열로작성된다

수체계, cont.많은경우 10진수형태로프로그램을작성하게되지만, 운영체제같은시스템프로그래밍을작성하는경우에는기계어운영체제같은시스템프로그래밍을작성하는경우에는기계어코드를직접작성하는것도필요하므로 2진수를직접사용하기도한다. 2진수로표현하면길어지고이해도쉽지않게되므로 16진수(hexadecimal number)가 2진수를간략히표현하는형태로사용된다. 16진수는이진비트 4개로표현되며, 16진수체계는 0 1 2 3 4 5 6 7 8 9 A B C D E F의 16개의기호로체계는 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F의 16개의기호로숫자를표현한다. A, B, C, D, E, F 기호는숫자 10에서부터15까지를의미한다15까지를의미한다.

C++로시작하는객체지향프로그래밍 21

Page 22: 1장 컴퓨터 프로그램및 - parkjonghyuk.net · 1을 저장할 수 있기 때문에 2진수 체계를 사용한다 . 컴퓨터의컴퓨터의 숫자나문자는0과1로구성된열로작성된다

Binary Numbers => Decimalsy2진수는다음의 진수와같은값을가진다

01221 ... bbbbbb nnn −−

다음의 10진수와같은값을가진다.

01221 222222 01221 ×+×+×++×+×+× −− bbbbbb nnnnnn 222...222 01221 ×+×+×++×+×+× −− bbbbbb nnn

2진수 10은 = 10진수 2이다.021 1 +×

2진수 1000은 = 10진수 8이다.0202021 23 +×+×+×

이진수이진수10101011은

= 10진수171이다.

121202120212021 234567 +×+×+×+×+×+×+×

C++로시작하는객체지향프로그래밍 22

Page 23: 1장 컴퓨터 프로그램및 - parkjonghyuk.net · 1을 저장할 수 있기 때문에 2진수 체계를 사용한다 . 컴퓨터의컴퓨터의 숫자나문자는0과1로구성된열로작성된다

Decimals => Binaryec s y10진수를 2진수로변환하려면, 비트의값을구하는것이필요하다 다음과같이표현된다

01221 ,,,...,,, bbbbbb nnn −−

값을구하는것이필요하다. 다음과같이표현된다.

01221 222...222 01221 ×+×+×++×+×+×= −−−− bbbbbbd nnn

nnn

2진수를구하는방법은 10진수를 2로나누는데몫이 0이될때까지계속나누기를한다. 이때구해진나머지가 이된다. nnn bbbbbb ,,,...,,, 12210 −−

예를들어 10진수 123은 2진수로 1111011이다. 변환은다음과같다.

1232

61

612

30

302

15

152

7 Quotient

72

3

3 2

1

12

0

122 1

b

60 1

b

30 0

b

14 1

b3

Remainder 6 1

b

2 1

b5

0 1

b6

C++로시작하는객체지향프로그래밍 23

b0 b1 b2 b3 b4 b5 b6

Page 24: 1장 컴퓨터 프로그램및 - parkjonghyuk.net · 1을 저장할 수 있기 때문에 2진수 체계를 사용한다 . 컴퓨터의컴퓨터의 숫자나문자는0과1로구성된열로작성된다

Windows 계산기공학용윈도우계산기로수변환기능이있다. 계산기프로그램은윈도우에서 [시작]-[프로그램]-[보조프로그램]에서실행한다.

C++로시작하는객체지향프로그래밍 24

Page 25: 1장 컴퓨터 프로그램및 - parkjonghyuk.net · 1을 저장할 수 있기 때문에 2진수 체계를 사용한다 . 컴퓨터의컴퓨터의 숫자나문자는0과1로구성된열로작성된다

Hexadecimals => Decimals16진수는이진비트 4개로표현되며, 16진수체계는 0, 1, 2, 3,

의 개의기호로숫자를4, 5, 6, 7, 8, 9, A, B, C, D, E, F의 16개의기호로숫자를표현한다. A, B, C, D, E, F 기호는숫자 10에서부터 15까지를의미한다 16진수 는01221 hhhhhh의미한다. 16진수 는다음의 10진수와같다.

01221 ... hhhhhh nnn −−

01221 161616...161616 01221 ×+×+×++×+×+× −−−− hhhhhh nnn

nnn

16진수 7F 15167 1 +× = 10진수 127

16진수 FFFF = 10진수 6553515161516151615 23 +×+×+×

C++로시작하는객체지향프로그래밍 25

Page 26: 1장 컴퓨터 프로그램및 - parkjonghyuk.net · 1을 저장할 수 있기 때문에 2진수 체계를 사용한다 . 컴퓨터의컴퓨터의 숫자나문자는0과1로구성된열로작성된다

Decimals => Hexadecimalec s e dec

16진수 은 10진수로다음과같은표현할01221 ,,,...,,, hhhhhh nnn −−16진수 은 10진수 다음과같은 현할수있다.

01221 161616161616 hhhhhhd nnn

,,, ,,,

01221 161616...161616 01221 ×+×+×++×+×+×= −−−− hhhhhhd nnn

nnn

16진수를구하는방법은 10진수를16진수를구하는방법은 10진수를16으로나누어몫이 0이될때까지계속한다. 이때구해진나머지가

12316

7

7 16

0 Quotient

계속 다 이때구해 나머지가이된다.

예를 어 진수 은 진수

nnn hhhhhh ,,,...,,, 12210 −−112 11

0 7 Remainder

예를들어 10진수 123은 16진수로7B이다. 변환은다음과같다.

h0 h1

C++로시작하는객체지향프로그래밍 26

Page 27: 1장 컴퓨터 프로그램및 - parkjonghyuk.net · 1을 저장할 수 있기 때문에 2진수 체계를 사용한다 . 컴퓨터의컴퓨터의 숫자나문자는0과1로구성된열로작성된다

Hexadecimal Binaryy0000 0 0

Binary Hex Decimal 16진수를 2진수로변환하기위해서는16진수의각자리를 4비트 2진수로변환하면

0001 1 10010 2 20011 3 3

된다.

0011 3 30100 4 40101 5 50110 6 6

2진수를 16진수로변환하기위해서는오른쪽에서부터왼쪽으로 2진수 4자리마다0110 6 6

0111 7 71000 8 8 1001 9 9

잘라 16진수로변환하면된다.

1001 9 91010 A 101011 B 11 1 1 1 0 0 0 1 1 0 1 1100 C 121101 D 131110 E 14 D83

C++로시작하는객체지향프로그래밍 27

1111 F 15

Page 28: 1장 컴퓨터 프로그램및 - parkjonghyuk.net · 1을 저장할 수 있기 때문에 2진수 체계를 사용한다 . 컴퓨터의컴퓨터의 숫자나문자는0과1로구성된열로작성된다

C++의역사C, C++, Java, C#은유사하며서로관련이있는언어이다. Java는 C++가모델이되었고, C#은 C++와비슷하면서 Java 언어의특징을가지는언어이다 이들중한언어를알고있으면다른언어를배우기가쉬워진다언어이다. 이들중한언어를알고있으면다른언어를배우기가쉬워진다.

언어는 B언어로부터발전하였으며 B언어는 BCPL언어가모태가되었다언어는 B 언어로부터발전하였으며 B 언어는 BCPL 언어가모태가되었다. BCPL은 1960년대중반에운영체제와컴파일러개발을위해마틴리차드(Martin Richards)에의해개발되었으며켄톰슨(Ken Thompson)은BCPL의많은특징을수용하여 B언어를만들게되었다.

는 의확장으로 년동안에벨연구소의비얀C++는 C의확장으로 1983-1985년동안에벨연구소의비얀스트로스트룹(Bjarne Stroustrup)에의해개발되었으며 C 언어에여러특징들이더해졌다. 가장중요한특징은객체지향프로그래밍(object-oriented 특징들이더해졌다. 가장중 한특징은객체지향 래밍(object oriented programming)을위한클래스에관한내용이추가된것이다.C++ 언어에대한국제표준은 1998년미국ANSI(American National Standards

C++로시작하는객체지향프로그래밍 28

Institute)에의해서정해졌다.

Page 29: 1장 컴퓨터 프로그램및 - parkjonghyuk.net · 1을 저장할 수 있기 때문에 2진수 체계를 사용한다 . 컴퓨터의컴퓨터의 숫자나문자는0과1로구성된열로작성된다

간단한 C++ 프로그램C++ 언어를사용하여화면에 “Welcome to C++!”이란문자열을출력하는프로그램이다.출력하는프로그램이다.

#include <iostream>int main()int main(){// Display Welcome to C++ to the consolep ystd::cout << "Welcome to C++!" << std::endl;return 0;

}

Welcome Run

C++로시작하는객체지향프로그래밍 29

Page 30: 1장 컴퓨터 프로그램및 - parkjonghyuk.net · 1을 저장할 수 있기 때문에 2진수 체계를 사용한다 . 컴퓨터의컴퓨터의 숫자나문자는0과1로구성된열로작성된다

간단한 C++ 프로그램확장리스트 1.1의프로그램은한줄의메시지를출력하였다. 일단이프로그램을이해하고나면여러줄을출력하는것은어려운일이아니다 리스트 1 2는이해하고나면여러줄을출력하는것은어려운일이아니다. 리스트 1.2는리스트 1.1을수정하여 3줄을출력하는프로그램으로수정하였다.

#include <iostream>int main(){std::cout << "Welcome to C++!" << std::endl;std::cout << "Welcome to C++Builder!" << std::endl;std::cout << Welcome to C++Builder! << std::endl;std::cout << "Welcome to C++ Compiler!" << std::endl;return 0;;

}

C++로시작하는객체지향프로그래밍 30

Page 31: 1장 컴퓨터 프로그램및 - parkjonghyuk.net · 1을 저장할 수 있기 때문에 2진수 체계를 사용한다 . 컴퓨터의컴퓨터의 숫자나문자는0과1로구성된열로작성된다

프로그램작성

Create/Modify Source Code

#include <iostream>

Source code (developed by the programmer)

프로그램작성, 컴파일, 실행 Source Code

#include <iostream> int main() { // Display Welcome to C++ to the console std::cout << "Welcome to C++!" << std::endl; return 0; }

Saved on the disk

Compiler

If compilation errors stored on the disk

Machine Code

stored on the disk

An object file (e.g., Welcome.obj) is created.

E t bl C d

stored on the disk

Linker

An executable file (e.g., Welcome.exe) is created. Executable Code

Run Executable Code e g Welcome

An executable file (e.g., Welcome.exe) is created.

e.g., Welcome

Result

C++로시작하는객체지향프로그래밍 31

If runtime errors or incorrect result

Page 32: 1장 컴퓨터 프로그램및 - parkjonghyuk.net · 1을 저장할 수 있기 때문에 2진수 체계를 사용한다 . 컴퓨터의컴퓨터의 숫자나문자는0과1로구성된열로작성된다

프로그램밍실습준비-VC++ 사용하기

순서1) 프로젝트를만든다.)2) 파일에서 C++ Source파일을만든다.3) 프로그램소스를만든다.4) 컴파일하기 (소스파일 목적파일로변환)5) 실행파일만들기6)에러찾기(F4)및수정6) 에러찾기(F4) 및수정

단축키를활용하여보다편리하게프로그래밍할수단축키를활용하여보다편리하게프로그래밍할수있음.– 빌드단축키 : F7빌드단축키 : F7– 실행단축키 : Ctrl + F5*실행을바로해도자동적으로빌드를실행함.

C++로시작하는객체지향프로그래밍 32

Page 33: 1장 컴퓨터 프로그램및 - parkjonghyuk.net · 1을 저장할 수 있기 때문에 2진수 체계를 사용한다 . 컴퓨터의컴퓨터의 숫자나문자는0과1로구성된열로작성된다

프로젝트만들기 /소스파일작성하기프로젝트만들기 / 소스파일작성하기

C++로시작하는객체지향프로그래밍 33

Page 34: 1장 컴퓨터 프로그램및 - parkjonghyuk.net · 1을 저장할 수 있기 때문에 2진수 체계를 사용한다 . 컴퓨터의컴퓨터의 숫자나문자는0과1로구성된열로작성된다

프로젝트만들기 /소스파일작성하기프로젝트만들기 / 소스파일작성하기

C++로시작하는객체지향프로그래밍 34

Page 35: 1장 컴퓨터 프로그램및 - parkjonghyuk.net · 1을 저장할 수 있기 때문에 2진수 체계를 사용한다 . 컴퓨터의컴퓨터의 숫자나문자는0과1로구성된열로작성된다

프로젝트만들기 /소스파일작성하기프로젝트만들기 / 소스파일작성하기

C++로시작하는객체지향프로그래밍 35

Page 36: 1장 컴퓨터 프로그램및 - parkjonghyuk.net · 1을 저장할 수 있기 때문에 2진수 체계를 사용한다 . 컴퓨터의컴퓨터의 숫자나문자는0과1로구성된열로작성된다

프로젝트만들기 /소스파일작성하기프로젝트만들기 / 소스파일작성하기

C++로시작하는객체지향프로그래밍 36

Page 37: 1장 컴퓨터 프로그램및 - parkjonghyuk.net · 1을 저장할 수 있기 때문에 2진수 체계를 사용한다 . 컴퓨터의컴퓨터의 숫자나문자는0과1로구성된열로작성된다

컴파일하기 &실행하기컴파일하기 & 실행하기

C++로시작하는객체지향프로그래밍 37

Page 38: 1장 컴퓨터 프로그램및 - parkjonghyuk.net · 1을 저장할 수 있기 때문에 2진수 체계를 사용한다 . 컴퓨터의컴퓨터의 숫자나문자는0과1로구성된열로작성된다

컴파일하기 &실행하기컴파일하기 & 실행하기

C++로시작하는객체지향프로그래밍 38

Page 39: 1장 컴퓨터 프로그램및 - parkjonghyuk.net · 1을 저장할 수 있기 때문에 2진수 체계를 사용한다 . 컴퓨터의컴퓨터의 숫자나문자는0과1로구성된열로작성된다

컴파일하기 &실행하기컴파일하기 & 실행하기

C++로시작하는객체지향프로그래밍 39

Page 40: 1장 컴퓨터 프로그램및 - parkjonghyuk.net · 1을 저장할 수 있기 때문에 2진수 체계를 사용한다 . 컴퓨터의컴퓨터의 숫자나문자는0과1로구성된열로작성된다

질의및응답

끝끝

C++로시작하는객체지향프로그래밍 40