목차 일부
CHAPTER 1 프로그래밍 및 문제 해결 방법에 대한 개관
1.1 프로그래밍의 개요 ... 2
프로그래밍이란 무엇인가? ... 2
어떻게 프로그램을 작성하는가? ... 2
1.2 프로그래밍 언어란 무엇인가? ... 8
1.3 컴퓨터란 무엇인가? ... 12
1.4 전산 전문직의 윤리와 책임 ... 17
...
더보기
목차 전체
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
더보기 닫기