2017 All Rights Reserved 초판 1쇄발행 2017 7 31 지은이 펴낸이 펴낸곳 출판신고 2009 11 10 406 2009 000087 주소 159 3 3 B 전화 070 8201 9010 팩스 02 6280 0405 홈페이지 www jpub kr 원고투고 jeipub@gmail com 독자문의 readers jpub@gmail com 교재문의 jeipubmarketer@gmail com 편집부 소통 기획팀 회계팀 교정 교열 본문디자인 표지디자인 용지 인쇄 제본 ISBN 979 11 85890 88 3 93000 값 22 000 제이펍은독자여러분의아이디어와원고투고를기다리고있습니다. 책으로펴내고자하는아이디어나원고가있으신분께서는책의간단한개요와차례, 구성과저 ( 역 ) 자약력등을메일로보내주세요. jeipub@gmail.com
드리는말씀 이책에기재된내용을기반으로한운용결과에대해저자, 소프트웨어개발자및제공자, 제이펍출판사는일체의책임을지지않으므로양해바랍니다. 이책에등장하는회사명, 제품명은일반적으로각회사의등록상표 ( 또는상표 ) 이며, 본문중에는 TM, C, R 마크등을생략하고있습니다. 책의내용과관련된문의사항은지은이혹은출판사로연락주시기바랍니다. - 지은이 : http://cafe.naver.com/sketchurimagination - 출판사 : readers.jpub@gmail.com
차례 viii x PART I 프로그램, 프로그래밍 1 CHAPTER 1 프로그램이란무엇일까? 5 1.1 5 1.2 7 1.3 9 1.4 11 1.5 14 1.6 22 CHAPTER 2 프로그램의핵심 : 알고리즘 26 2.1 = + 26 2.2 37 2.3 43 2.4 48 2.5 50 CHAPTER 3 프로그램의구현도구 : 프로그래밍언어 55 3.1 55 3.2 56 3.3 64 3.4 69 3.5 71 3.6 74 CHAPTER 4 명령어와데이터의표현 78 4.1 79 4.2 85 4.3 94 차례 v
CHAPTER 5 알고리즘은어떻게만들어질까? 99 5.1 99 5.2 C 103 5.3 C C++ 108 5.4 111 PART II C 언어 113 CHAPTER 6 함수의구조 117 6.1 117 6.2 126 6.3 127 CHAPTER 7 데이터유형 129 7.1 129 7.2 133 7.3 137 7.4 printf 143 7.5 147 7.6 150 CHAPTER 8 연산자 152 8.1 152 8.2 153 8.3 155 8.4 158 8.5 163 8.6 165 8.7 166 8.8 170 8.9 172 8.10 176 CHAPTER 9 조건문 178 9.1 178 9.2 if else 179 9.3 if else 184 9.4 switch case 186 9.5 191 CHAPTER 10 반복문 193 10.1 193 vi 차례
10.2 while 194 10.3 do while 197 10.4 for 198 10.5 continue break 201 10.6 205 10.7 209 10.8 212 CHAPTER 11 배열 214 11.1 214 11.2 215 11.3 219 11.4 222 11.5 2 226 11.6 229 CHAPTER 12 포인터 230 12.1 230 12.2 232 12.3 236 12.4 238 12.5 2 244 12.6 249 12.7 256 CHAPTER 13 함수 257 13.1 257 13.2 262 13.3 263 13.4 265 PART III 카르노맵 267 CHAPTER 14 논리식의간략화 271 CHAPTER 15 카르노맵입출력 277 CHAPTER 16 1, 2셀그룹찾기 285 CHAPTER 17 4, 8, 16셀그룹찾기 294 CHAPTER 18 간략화된그룹집합선택 305 CHAPTER 19 카르노맵알고리즘의개선 315 320 차례 vii
머리말 C C C C C C C C C C 1 C 1 C 1 C 1 viii 머리말
2 C 1 2 C 3 C 1 2 3 3 C C C 머리말 ix
베타리더후기 강경구 C C 김용현 (Microsoft MVP) 김종욱 ( 카이스트 ) C C 송영준 x 베타리더후기
이요셉 ( 솔루티스 ) C API 한홍근 ( 서울옥션블루 ) C C 제이펍은책에대한애정과기술에대한열정이뜨거운베타리더들로하여금출간되는모든서적에사전검증을시행하고있습니다. 베타리더후기 xi
PART I 프로그램, 프로그래밍
C C Hello World C C Hello World Hello World C C C C C 3
1 4
C H A P T E R 1 프로그램이란무엇일까? 1.1 시스템이란무엇일까? system systema * systema system 1. an assemblage or combination of things or parts forming a complex or unitary whole * http www dictionary com 5
특정목적을달성하기위해조직화된요소들의집합체 a b c TV 그림 1-1 시스템의입력, 처리, 출력 6 CHAPTER 1 프로그램이란무엇일까?
1.2 블랙박스시스템과화이트박스시스템 9 9 9 black box 그림 1-2 블랙박스시스템 1.2 블랙박스시스템과화이트박스시스템 7
블랙박스는검은색이다? 항공기에내장되어있는블랙박스는항공기사고를규명하거나재발을방지하는데중요한역할을하는장비입니다. 블랙박스에는비행기의비행정보, 항로, 교신내용등을저장하기때문에 비행기록장치 (Flight Data Recorder) 라고도불립니다. 하지만비행기의블랙박스는이름처럼검은색이아닙니다. 비행기의블랙박스는사고현장에서발견하기쉽도록붉은색이나오렌지색을띠고있습니다. 블랙박스는추락할때의다양한충격이나열, 물속에서도견딜수있도록만들어집니다. 또한발신기를내장하고있기때문에화재등으로겉면의색깔이바뀌어색상만으로구별하기가어려운경우에도발신기신호를통해블랙박스의위치를찾아낼수있습니다. white box 그림 1-3 화이트박스시스템 C 8 CHAPTER 1 프로그램이란무엇일까?
1.3 하드웨어및소프트웨어로만들어지는프로그램 * 그림 1-4 프로그램의종류의처리가능한데이터 CD Compact Disc CD 0 1 CD CD CD * C 1.3 하드웨어및소프트웨어로만들어지는프로그램 9
IC Integrated Circuit IC IC CD CD CD CD firmware CD MP3 ROM Read Only Memory 10 CHAPTER 1 프로그램이란무엇일까?
1.4 아날로그와디지털의차이는무엇일까? 1 12 3 a b 그림 1-5 아날로그온도계와디지털온도계 1.4 아날로그와디지털의차이는무엇일까? 11
noise 디지털은왜잡음에강할까? 디지털데이터의가장큰장점중하나는잡음에강하다는것입니다. 데이터값은전달과정에서여러가지이유로변경될수있습니다. 어렸을때실전화기를만들어본경험이있을것입니다. 실의길이가길어지면상대편의말이잘들리지않습니다. 실을통해전달되는소리가점점작아지기때문입니다. 목소리의크기를전압으로표현하면말하는쪽의전압은 5.0V인데반해, 듣는쪽의전압은 4.0V로떨어지는것입니다. 실이이보다길어지면아예들리지않을것입니다. 아날로그데이터에서 5.0V와 4.0V는서로다른값입니다. 실전화기에서의큰소리와작은소리는서로다른소리에해당합니다. 하지만디지털데이터에서 5.0V와 4.0V는동일한값에해당합니다. 디지털데이터는 0과 1의두가지값만을가집니다. 하지만디지털데이터는실제존재하는데이터가아니므로아날로그데이터의일정한 범위 에디지털데이터를대응시키고있습니다. 예를들면 5.0V~3.5V 는디지털 1의값을, 1.5V~0.0V 는디지털 0의값을나타내는식입니다. 따라서디지털데이터의경우, 실의길이가웬만큼길어진다고하더라도 0과 1의조합은변하지않습니다. continuous discrete 1 2 1 0 1 2 LP Long Playing CD LP CD LP LP LP CD LP LP 12 CHAPTER 1 프로그램이란무엇일까?
LP 1 6 LP CD a ADC DAC b 그림 1-6 아날로그및디지털신호의기록및재생과정 LP CD ADC DAC ADC Analog to Digital Converter DAC Digital to Analog Converter 100% 1.4 아날로그와디지털의차이는무엇일까? 13
1.5 아날로그신호를디지털신호로변환하기 ADC * ADC sampling quantization sampling frequency bit depth resolution 1 DPI Dots Per Inch PPI Pixels Per Inch x y SD Standard Definition HD High Definition Full HD SD 720 480 HD 1280 720 Full HD 1920 1080 1 7 staircase effect a b 그림 1-7 해상도에따른원표현 * ADC Analog to Digital Converter Analog to Digital Conversion 14 CHAPTER 1 프로그램이란무엇일까?
color depth true color 24 24 2 24 = 16 777 216 1 8 8 3 a 8 b 3 그림 1-8 색깊이에따른이미지표현 샘플링 1 9 f t 1.5 아날로그신호를디지털신호로변환하기 15
f (t) t 그림 1-9 마이크로폰의출력신호 LP CD t0 sample f (t) 그림 1-10 샘플링과정 t t 0 f 0 t 0 f 0 = 1 CD 44 1kHz 44 100 0 023ms 1 44 100 1 11 1 11 a f 1 = 1 t 1 1 11 b f 2 = 1 t 2 2 1 11 a 16 CHAPTER 1 프로그램이란무엇일까?
1 11 b 1 11 a * f (t) t1 t a f (t) t2 b t 그림 1-11 샘플링주파수에따른원신호의복원 2 2 2 sampling theorem Nyquist Nyquist Shannon information theory 2 * 1.5 아날로그신호를디지털신호로변환하기 17
CD 20kHz 2 40kHz CD 44 1kHz 20kHz CD 20kHz CD LP CD 2 aliasing 1 12 1 12 b 4 4 2 1 12 c 1 5 1 5 30 30Hz 15Hz 18 CHAPTER 1 프로그램이란무엇일까?
a b 4 c 1 5 그림 1-12 사인파의샘플링및복원 양자화 quantization a b a b c 1.5 아날로그신호를디지털신호로변환하기 19
c = a+b 2 1 3 1 1 1 1 1 3 1 1 1 2 10 1 3 1 1 1 13 1 11 1 2 x y N 2 N N 1 13 1 13 a 1 13 b CD 16 2 16 = 65 536 CD 16 CD 16 CD SACD Super Audio CD DVD 24 20 CHAPTER 1 프로그램이란무엇일까?
f (t) t a 5 3 f (t) b 10 4 그림 1-13 비트깊이에따른원신호의복원 t 디지털 -아날로그변환 ADC DAC MP3 MP3 0 1 DAC DAC DAC DAC 1.5 아날로그신호를디지털신호로변환하기 21
아날로그회로의기본법칙 - 옴의법칙 (Ohm s Law) 아날로그와디지털데이터를다루는회로는차이가있지만, 디지털데이터를다루는회로는아날로그회로를바탕으로하고있으므로아날로그회로가기본이됩니다. 회로는전자 (electron) 의에너지를이용하여전구에불을켜고, 세탁기를돌리고, 컴퓨터가동작하도록하는등다양한작업을수행하도록해줍니다. 하지만전자는원자 (atom) 에서도매우작은부분을차지합니다. 원자의크기는 10-8 cm 정도로머리카락두께의 100 만분의 1 정도에지나지않습니다. 전자의크기는정확하게알려져있지않지만, 원자를축구장에비유한다면전자는축구장에있는축구공보다훨씬작은크기입니다. 이처럼작은크기의, 눈에보이지않는전자를다루는것은쉽지않습니다. 따라서전자공학에서는전자를움직이거나제어하기위한기본량과이들사이의관계를정의하고있습니다. 전자를제어하기위한기본량에는전류, 전압, 저항이있습니다. 전자가 일을한다 는것은 움직인다 는것을의미합니다. 전류 (current, I) 는전자가움직인양을나타내는단위입니다. 하지만전자의흐름, 즉전류가생기기위해서는전자가움직일수있는힘을가해주어야하며, 이때전류가발생하도록하는힘을전압 (voltage, V) 이라고합니다. 전압이높을수록많은전류가흐릅니다. 반면, 저항 (resistance, R) 은전류의흐름을방해하는힘으로, 저항이높을수록전류는적게흐릅니다. 전류, 전압, 저항사이의관계를나타내는법칙이자, 전자공학의기본이되는법칙이 옴의법칙 입니다. 옴의법칙은 V = I R로표시되며, 이는전압이전류와저항에비례한다는것을나타냅니다. 옴의법칙은 1826 년독일의물리학자인옴에의해증명되었습니다. 1.6 프로그램으로서역할 ADC DAC ADC DAC 그림 1-14 디지털시스템에서프로그램 아날로그입출력장치 22 CHAPTER 1 프로그램이란무엇일까?
ADC DAC 1 14 1 15 ADC DAC 그림 1-15 디지털시스템에서프로그램 디지털입출력장치 1 15 1 15 ADC DAC 그림 1-16 컴퓨터에서프로그램의역할 ADC DAC HDMI High Definition Multimedia Interface DVI Digital Visual Interface 1.6 프로그램으로서역할 23
a D SUB b DVI c HDMI 그림 1-17 모니터연결을위한아날로그및디지털커넥터 operating system Voyager 1 Curiosity 24 CHAPTER 1 프로그램이란무엇일까?
이미테이션게임 앨런튜링앨런튜링 (Alan Turing) 은영국의수학자이자암호학자로, 컴퓨터과학의선구적인인물입니다. 튜링은알고리즘에의한계산을튜링기계 (Turing machine) 라는추상적인모델을통해형식화하고, 사람이할수있는모든계산을알고리즘을통해컴퓨터역시수행할수있다는것을증명함으로써컴퓨터과학의발전에한획을그은인물로평가되고있습니다. 튜링은인공지능의기초가되는튜링테스트를고안한것으로도유명합니다. 튜링테스트는컴퓨터가사람을얼마만큼비슷하게모방 (imitation) 할수있는지를기준으로기계가지능을가지고있는지판별하는방법입니다. 튜링테스트는여러가지변형이있지만, 컴퓨터 (A) 와사람 (B) 이각각밀폐된공간에있고, 또다른사람인심사위원 (C) 은문자를통해서만 A와 B에게질문을하는구성으로이루어져있습니다. C가 A와 B의대답으로부터어느쪽이컴퓨터인지를분간할수없다면컴퓨터가지능을가지고있는것으로생각해야한다는것이튜링의주장입니다. 어찌보면매우단순한것처럼보이지만, 컴퓨터가사람처럼반응하기위해서는문자로전달되는문장의의미를이해해야하고, 질문에맞는적절할대답을찾아내야하며, 대답을찾아낼때이전의대화내용까지고려해야하는등사람처럼반응한다는것은간단한문제가아닙니다. 아직완전하다고는볼수없지만, 2014년에이루어진 5분동안의대화에서 13 세의소년을모방한프로그램인유진 (Eugene) 은심사위원의 1/3 을속여튜링테스트를통과한첫번째프로그램으로이름을올렸습니다. 이처럼컴퓨터로할수있는일은점점늘어나고있으며, 그중심에프로그램이있습니다. 1.6 프로그램으로서역할 25