목차
CHAPTER 1 프로그래밍 및 문제 해결 방법에 대한 개관
   1.1 프로그래밍의 개요 ... 2
      프로그래밍이란 무엇인가? ... 2
      어떻게 프로그램을 작성하는가? ... 2
   1.2 프로그래밍 언어란 무엇인가? ... 8
   1.3 컴퓨터란 무엇인가? ... 12
   1.4 전산 전문직의 윤리와 책임 ... 17
      소프트웨어 불법복제 ... 17
      자료의 비공개성 ... 17
      컴퓨터 자원의 사용 ... 18
      소프트웨어 공학 ... 19
   1.5 문제 해결 기법 ... 20
      질문하라 ... 20
      친숙한 것을 찾아라 ... 20
      유추(Analogy)를 이용하여 풀어라 ... 21
      수단-목적 분석(Means-Ends Analysis) ... 22
      나누어 해결(Divide and Conquer) ... 23
      블록쌓기 접근 방법(The Building-Block Approach) ... 23
      답 합치기(Merging Solutions) ... 24
      정신적 장벽 : 시작을 두려워함 ... 24
      알고리즘적 문제 해결 ... 25
   요약 ... 25
CHAPTER 2 C++ 구문법 및 의미론과 프로그램 개발 과정
   2.1 C++ 프로그램 요소 ... 28
      C++ 프로그램 구조 ... 28
      구문법과 의미론 ... 31
      구문법 템플릿 ... 32
      프로그램 구성요소 명명하기 : 식별자 ... 34
      자료와 자료형 ... 35
      구성요소 명명하기 : 선언 ... 37
      행동 개시 : 실행문(Executable Statements) ... 41
      최소한의 것 외 : 프로그램에 주석 달기 ... 46
   2.2. 프로그램 작성 ... 47
      블록(복합문) ... 49
      C++ 전처리기 ... 51
      이름 공간에 대한 소개 ... 52
   2.3 출력에 대해 좀 더 자세히 ... 54
      빈 줄 만들기 ... 54
      출력행 내에 공백 삽입하기 ... 55
   테스트와 디버깅 ... 61
   요약 ... 62
   즉석 체크 ... 63
   시험 준비 연습문제 ... 65
   프로그래밍 워밍업 연습문제 ... 68
   프로그래밍 문제 ... 69
CHAPTER 3 수치 자료형, 표현식, 출력
   3.1 C++ 자료형의 개관 ... 72
   3.2 수치 자료형 ... 73
      정수형 ... 73
      부동소수점형 ... 74
   3.3 수치 자료형의 선언 ... 75
      이름상수 선언 ... 75
      변수 선언 ... 76
   3.4 간단한 산술식 ... 77
      산술 연산자 ... 77
      증감연산자 ... 80
   3.5 복합 산술식 ... 81
      우선순위 규칙 ... 82
      형 강제 변환 및 명시적 형 변환 ... 83
   3.6 함수 호출 및 라이브러리 함수 ... 86
      값 반환 함수 ... 86
      라이브러리 함수 ... 88
      Void 함수 ... 89
   3.7 출력 형식 지정 ... 90
      정수 및 문자열 ... 91
      부동소수점 수 ... 93
   3.8 기타 string 연산 ... 98
      length와 size 함수 ... 98
      find 함수 ... 99
substr 함수 ... 101
   테스트와 디버깅 ... 106
   요약 ... 107
   시험 준비 연습문제 ... 110
   프로그래밍 워밍업 연습문제 ... 113
   프로그래밍 문제 ... 116
CHAPTER 4 프로그램의 입력과 소프트웨어 설계 과정
   4.1 프로그램에 자료 넣기 ... 120
      입력 스트림과 추출 연산자(>>) ... 120
      읽기 표시와 새줄문자 ... 123
      get 함수로 문자 자료 읽기 ... 125
      ignore 함수를 사용하여 문자들 건너뛰기 ... 127
      문자열 자료 읽기 ... 128
   4.2 대화식 입출력 ... 129
   4.3 비대화식 입출력 ... 131
   4.4 파일 입출력 ... 132
      파일들 ... 132
      파일 사용하기 ... 133
      파일을 사용하는 예제 프로그램 ... 136
      실행중 파일명의 입력 ... 138
   4.5 입력 실패 ... 140
   4.6 Software 설계 방법론 ... 141
   4.7 객체란 무엇인가? ... 143
   4.8 객체지향 설계 ... 144
   4.9 함수 분해 ... 145
      모듈 ... 147
      설계에 대한 개관 ... 148
   테스트와 디버깅 ... 154
   요약 ... 156
   즉석 체크 ... 157
   시험 준비 연습문제 ... 158
   프로그래밍 워밍업 연습문제 ... 161
   프로그래밍 문제 ... 163
CHAPTER 5 조건들, 논리식들 그리고 선택 제어구조들
   5.1 제어의 흐름 ... 166
   5.2 조건과 논리식 ... 167
      부울(bool) 자료형 ... 167
      논리식 ... 168
      연산자 우선순위 ... 174
      부동소수점형과 관계연산자 ... 175
   5.3 If문 ... 177
      If-Then-Else 형식 ... 177
      블록(복합문) ... 179
      If-Then 형식 ... 180
      흔한 실수 ... 182
   5.4 중첩된 If문 ... 182
      매달린 else ... 185
   5.5 I/O Stream 상태의 테스트 ... 186
   테스트와 디버깅 ... 192
   요약 ... 203
   즉석 체크 ... 203
   시험 준비 연습문제 ... 204
   프로그래밍 워밍업 연습문제 ... 208
   프로그래밍 문제 ... 210
CHAPTER 6 반복
   6.1 While문 ... 214
   6.2 루프 실행의 단계들 ... 216
   6.3 While문을 이용한 루프 ... 216
      계수제어 루프 ... 217
      사건제어 루프 ... 218
      루프 하위 작업들 ... 221
   6.4 루프 설계 방법 ... 223
      제어 흐름의 설계 ... 224
      루프 내의 프로세스 설계하기 ... 225
      루프 탈출 ... 226
   6.5 중첩된 논리 ... 226
      중첩된 루프 설계 ... 228
   테스트와 디버깅 ... 233
   요약 ... 237
   즉석 체크 ... 237
   시험 준비 연습문제 ... 238
   프로그래밍 워밍업 연습문제 ... 241
   프로그래밍 문제 ... 243
CHAPTER 7 함수(Functions)
   7.1 Void 함수를 이용한 함수 분해 ... 246
      Void 함수로 모듈 작성하기 ... 246
   7.2 사용지정의 함수의 개요 ... 250
      함수 호출의 제어 흐름 ... 250
      함수 매개변수 ... 250
   7.3 Void 함수의 구문법과 의미론 ... 252
      함수 호출 ... 252
      함수 선언과 정의 ... 253
      지역변수 ... 255
      반환문 ... 256
      헤더파일 ... 257
   7.4 매개변수 ... 258
      값 매개변수 ... 259
      참조 매개변수 ... 260
   7.5 함수 설계 ... 262
      단언들을 프로그램 주석으로 작성하기 ... 263
      자료흐름의 방향을 문서화하기 ... 265
   테스트와 디버깅 ... 275
   요약 ... 279
   즉석 체크 ... 280
   시험 준비 연습문제 ... 281
   프로그래밍 워밍업 연습문제 ... 286
   프로그래밍 문제 ... 289
CHAPTER 8 영역, 존속기간 그리고 함수에 대한 추가사항
   8.1 식별자의 영역 ... 294
      영역 규칙 ... 296
      변수 선언과 정의 ... 299
      이름 공간 ... 300
   8.2 변수의 존속기간 ... 303
      선언에서의 초기화 ... 304
   8.3 인터페이스 설계 ... 306
      부작용 ... 306
      전역상수 ... 307
   8.4 값 반환 함수 ... 308
      부울(Boolean) 함수 ... 312
      값 반환 함수의 인터페이스 설계 ... 313
      값 반환 함수를 사용해야 할 때 ... 314
   테스트와 디버깅 ... 324
   요약 ... 326
   즉석 체크 ... 327
   프로그래밍 워밍업 연습문제 ... 331
   프로그래밍 문제 ... 333
CHAPTER 9 그 밖의 제어구조들
   9.1 Switch문 ... 336
   9.2 Do-While문 ... 340
   9.3 For문 ... 342
   9.4 Break와 Continue문 ... 345
   9.5 루프문 선택을 위한 지침 ... 348
   테스트와 디버깅 ... 353
   요약 ... 354
   즉석 체크 ... 354
   시험 준비 연습문제 ... 355
   프로그래밍 워밍업 연습문제 ... 357
   프로그래밍 문제 ... 359
CHAPTER 10 단순 자료형 : 기본형과 사용자정의형
   10.1 기본 단순 자료형 ... 362
      정수형 ... 364
      부동소수점 자료형 ... 365
   10.2 추가적인 C++ 연산자들 ... 366
      배정 연산자와 배정 수식 ... 367
      증가와 감소 연산자 ... 369
      비트용 연산자 ... 369
      형 변환(cast) 연산 ... 370
sizeof 연산자 ... 370
      ?: 연산자 ... 370
      연산자 우선순위 ... 371
   10.3 문자 자료 이용하기 ... 372
      문자 집합 ... 373
      C++ char 상수 ... 374
      프로그래밍 기법 ... 375
   10.4 부동소수점 수에 대한 보충 ... 379
      부동소수점 수의 표현 ... 379
   10.5 사용자정의 단순형 ... 384
      typedef 문장 ... 384
      열거형 ... 385
      사용자 작성 헤더파일 ... 392
   10.6 형 변환에 대한 보충 ... 394
      산술식과 관계식에서의 형 변환 ... 394
      배정, 인자 전달 그리고 함수값의 반환에서의 형 변환 ... 395
   테스트와 디버깅 ... 403
   즉석 체크 ... 406
   시험 준비 연습문제 ... 407
   프로그래밍 워밍업 연습문제 ... 409
   프로그래밍 문제 ... 411
CHAPTER 11 구조적 자료형, 자료 추상화 그리고 클래스
   11.1 단순 자료형과 구조적 자료형 ... 414
   11.2 레코드(C++ 구조체) ... 415
      개별 구성요소의 접근 ... 417
      구조체의 군집 연산 ... 419
      구조체 선언에 대해 자세히 알아보기 ... 421
      계층적 레코드 ... 421
   11.3 공용체(Union) ... 424
   11.4 자료 추상화 ... 425
   11.5 추상 자료형 ... 427
   11.6 C++ 클래스 ... 430
      클래스, 클래스 객체, 클래스 멤버 ... 432
      클래스 객체에 대한 기본 연산 ... 433
      클래스의 통용 범위(scope) ... 436
      정보은닉(Information Hiding) ... 436
   11.7 명세와 구현 파일 ... 438
      명세 파일 ... 439
      구현 파일 ... 440
      다중 파일 프로그램의 컴파일과 링킹하기 ... 445
   11.8 클래스 생성자를 이용한 보증된 초기화 ... 447
      생성자의 호출 ... 450
      TimeType을 위한 명세와 구현 파일의 개정 ... 450
   테스트와 디버깅 ... 470
   즉석 체크 ... 476
   시험 준비 연습문제 ... 478
   프로그래밍 워밍업 연습문제 ... 482
   프로그래밍 문제 ... 484
CHAPTER 12 배열
   12.1 1차원 배열 ... 490
      배열 선언 ... 492
      각 요소 접근하기 ... 493
      범위 밖(Out-of-Bounds)의 배열 인덱스 ... 496
      선언에서의 배열 초기화 ... 496
      군집 배열 연산(의 부족) ... 497
      배열의 선언과 접근의 예 ... 498
      인자로서 배열 전달 ... 501
      배열에 대한 단언 ... 503
      배열에서의 Typedef 사용 ... 504
   12.2 레코드와 클래스 객체의 배열 ... 505
      레코드의 배열 ... 505
      클래스 객체의 배열 ... 507
   12.3 특별한 종류의 배열 처리 ... 508
      부분배열 처리 ... 508
      의미론적 내용을 가진 인덱스 ... 508
   12.4 2차원 배열 ... 509
   12.5 2차원 배열 처리 ... 512
      행의 합계 ... 513
      배열의 초기화 ... 516
      배열의 인쇄 ... 517
   12.6 인자로써 2차원 배열 전달 ... 518
   12.7 2차원 배열을 정의하는 또 다른 방법 ... 521
   12.8 다차원 배열 ... 523
   테스트와 디버깅 ... 538
   요약 ... 542
   즉석 체크 ... 543
   시험 준비 연습문제 ... 545
   프로그래밍 워밍업 연습문제 ... 551
   프로그래밍 문제 ... 554
CHAPTER 13 배열 기반 리스트
   13.1 추상 자료형으로서의 리스트 ... 560
   13.2 비정렬 리스트 ... 565
      기본 연산 ... 565
      삽입과 삭제 ... 567
      순차 탐색 ... 569
      정렬 ... 570
   13.3 정렬 리스트 ... 574
      기본 연산 ... 576
      순차 탐색 ... 579
      이진 탐색 ... 580
      삭제 ... 586
   13.4 문자열의 이해 ... 588
      C 문자열의 초기화 ... 590
      C 문자열 입력과 출력 ... 591
      문자열 클래스 또는 C 문자열? ... 596
   테스트와 디버깅 ... 603
   요약 ... 604
   즉석 체크 ... 605
   시험 준비 연습문제 ... 606
   프로그래밍 워밍업 연습문제 ... 609
   프로그래밍 문제 ... 610
CHAPTER 14 객체지향 소프트웨어 개발
   14.1 객체지향 프로그래밍 ... 614
   14.2 객체(Objects) ... 616
   14.3 상속(Inheritance) ... 617
      새로운 파생 클래스 만들기 ... 618
      ExtTime 클래스의 명세 ... 622
      ExtTime 클래스의 구현 ... 624
      헤더파일들의 중복 포함 피하기 ... 628
   14.4 포함(Composition) ... 629
      TimeCard 클래스의 설계 ... 629
      TimeCard 클래스의 구현 ... 631
   14.5 동적 바인딩과 가상 함수 ... 633
      슬라이싱 문제 ... 634
      가상 함수 ... 636
   14.6 객체지향 설계 ... 638
      단계 1 : 객체들과 연산들을 식별한다 ... 638
      단계 3 : 드라이버를 설계한다 ... 640
   14.7 설계의 구현 ... 641
   테스트와 디버깅 ... 663
   요약 ... 665
   즉석 체크 ... 665
   시험 준비 연습문제 ... 667
   프로그래밍 워밍업 연습문제 ... 669
   프로그래밍 문제 ... 671
CHAPTER 15 재귀
   15.1 재귀란? ... 674
   15.2 하노이 탑 ... 678
   15.3 구조적 변수를 사용하는 재귀 알고리즘 ... 683
   15.4 재귀 대 반복? ... 686
   테스트와 디버깅 ... 686
   요약 ... 687
   즉석 체크 ... 687
   시험 준비 연습문제 ... 688
   프로그래밍 워밍업 연습문제 ... 689
   프로그래밍 문제 ... 690
APPENDIX 부록
   A 예약어 ... 694
   B 연산자 우선순위 ... 694
   C 표준 라이브러리 루틴의 선택 ... 696
      C.1 헤더파일 cassert ... 696
      C.2 헤더파일 cctype ... 697
      C.3 헤더파일 cfloat ... 699
      C.4 헤더파일 climits ... 699
      C.5 헤더파일 cmath ... 700
      C.6 헤더파일 cstcllib ... 702
      C.7 헤더파일 cstring ... 704
      C.8 헤더파일 string ... 705
   D 이 책을 구버전 C++과 함께 사용하기 ... 706
      D.1 string형 ... 706
      D.2 표준 헤더파일들과 이름 공간 ... 707
      D.3 fixed와 showpoint 처리자 ... 708
      D.4 bool형 ... 709
   E 문자 집합 ... 711
   F 프로그램 스타일, 형식, 문서화 ... 713
      F.1 일반 가이드라인 ... 713
      F.2 주석 ... 713
      F.3 식별자 ... 716
      F.4 행과 수식들의 형식 ... 716
      F.5 들여쓰기 ... 717
   용어해설 ... 719
   연습문제 해답 ... 725
   찾아보기 ... 747
닫기