목차 일부
1. 컴퓨터, 인터넷, 월드 와이드 웹 ... 1
1.1 소개 ... 2
1.2 컴퓨터란 무엇인가? ... 4
1.3 컴퓨터 구조 ... 4
1.4 운영체제의 발전 ... 5
1.5 개인용 컴퓨팅, 분산 컴퓨팅, 클라이언트/서버 컴퓨팅 ... 6
1.6 기계어, 어셈블리어, 고급 언어 ... 7
1.7 C의 역사 ......
더보기
목차 전체
1. 컴퓨터, 인터넷, 월드 와이드 웹 ... 1
1.1 소개 ... 2
1.2 컴퓨터란 무엇인가? ... 4
1.3 컴퓨터 구조 ... 4
1.4 운영체제의 발전 ... 5
1.5 개인용 컴퓨팅, 분산 컴퓨팅, 클라이언트/서버 컴퓨팅 ... 6
1.6 기계어, 어셈블리어, 고급 언어 ... 7
1.7 C의 역사 ... 8
1.8 C 표준 라이브러리 ... 9
1.9 소프트웨어 경향의 중요한 요소 : 객체 기술 ... 10
1.10 C++와 C++ How to Program ... 12
1.11 Java와 Java How to Program ... 12
1.12 기타 고급 언어 ... 13
1.13 구조적 프로그래밍 ... 13
1.14 일반적인 C 프로그램 개발 환경의 기초 ... 14
1.15 하드웨어 경향 ... 17
1.16 인터넷의 역사 ... 17
1.17 월드 와이드 웹의 역사 ... 18
1.18 C와 이 책에 관한 일반적인 주의 사항 ... 19
2. C 프로그래밍 소개 ... 27
2.1 소개 ... 28
2.2 간단한 C 프로그램 : 한 라인에 텍스트 출력하기 ... 28
2.3 다른 간단한 C 프로그램 : 두 정수를 더하기 ... 32
2.4 메모리의 개념 ... 37
2.5 C에서 산술 ... 38
2.6 선택문 : 등위 연산자와 관계 연산자 ... 41
3. C에서 구조적 프로그램 개발 ... 57
3.1 소개 ... 58
3.2 알고리즘 ... 58
3.3 의사코드 ... 59
3.4 제어 구조 ... 59
3.5 if 선택 구조 ... 61
3.6 if/else 선택 구조 ... 63
3.7 while 반복 구조 ... 67
3.8 알고리즘 형식화 : 사례연구 1(변환 지정자) ... 68
3.9 top-down, stepwise refinement를 이용한 알고리즘 형식화 : 사례연구 2(감시 제어 반복) ... 70
3.10 top-down, stepwise refinement를 이용한 공식 알고리즘 : 사례연구 3(중첩 제어 구조) ... 76
3.11 할당 연산자 ... 80
3.12 증가, 감소 연산자 ... 81
4. C 프로그램 제어 ... 101
4.1 소개 ... 102
4.2 반복의 기본사항 ... 102
4.3 카운터 제어 반복 ... 103
4.4 for 반복 구조 ... 105
4.5 for 구조 : 주의와 관찰 ... 107
4.6 for 구조를 사용한 예 ... 108
4.7 switch 다중-선택 구조 ... 111
4.8 do/while 반복 구조 ... 117
4.9 break, continue 문장 ... 118
4.10 논리 연산자 ... 120
4.11 등위, 할당 연산자의 혼동 ... 123
4.12 구조적 프로그래밍 요약 ... 124
5. C 함수 ... 142
5.1 소개 ... 143
5.2 C 프로그램 모듈 ... 143
5.3 수학 라이브러리 함수 ... 144
5.4 함수 ... 146
5.5 함수의 정의 ... 146
5.6 함수의 원형 ... 150
5.7 헤더파일 ... 153
5.8 함수 호출 : 값에 의한 호출과 참조에 의한 호출 ... 154
5.9 임의의 수 생성 ... 154
5.10 예제 : A Game of Chance ... 159
5.11 기억 클래스(또는 기억장소 종류) ... 161
5.12 범위 규칙 ... 163
5.13 재귀 ... 166
5.14 재귀 사용의 예 : 피보나치 수열 ... 169
5.15 재귀와 반복 ... 172
6. C 배열 ... 195
6.1 소개 ... 196
6.2 배열 ... 196
6.3 배열 정의 ... 198
6.4 배열 사용 예 ... 198
6.5 함수로 배열 전달 ... 210
6.6 배열 정렬 ... 214
6.7 배열을 사용하여 평균, 중간값, 최빈수 계산 ... 215
6.8 배열 탐색 ... 219
6.9 다차원 배열 ... 223
7. C 포인터 ... 245
7.1 소개 ... 246
7.2 포인터 변수 선언과 초기화 ... 246
7.3 포인터 연산자 ... 247
7.4 참조에 의한 함수 호출 ... 250
7.5 포인터와 한정자 const의 사용 ... 253
7.6 참조에 의한 호출을 사용하는 버블정렬 ... 259
7.7 포인터 표현과 포인터 계산 ... 265
7.8 포인터와 배열 사이의 관계 ... 267
7.9 포인터의 배열 ... 271
7.10 사례연구 : 카드 혼합과 분배 시뮬레이션 ... 272
7.11 함수 포인터 ... 276
8. C 문자와 문자열 ... 302
8.1 소개 ... 303
8.2 문자열과 문자의 기초 ... 303
8.3 문자 처리 라이브러리 ... 305
8.4 문자열 변환 함수 ... 310
8.5 표준 입/출력 라이브러리 함수 ... 314
8.6 문자열 처리 라이브러리의 문자열 조작 함수 ... 318
8.7 문자열 처리 라이브러리의 함수 비교 ... 320
8.8 문자열 처리 라이브러리의 검색 함수 ... 322
8.9 문자열 처리 라이브러리의 메모리 함수 ... 328
8.10 문자열 조작 라이브러리의 다른 함수들 ... 332
9. C 입/출력 ... 347
9.1 소개 ... 348
9.2 스트림 ... 348
9.3 printf의 출력 형식 ... 348
9.4 정수 출력 ... 349
9.5 부동소수 출력 ... 351
9.6 문자열, 문자 출력 ... 352
9.7 다른 변환 지정자 ... 353
9.8 필드 너비와 정밀도 출력 ... 355
9.9 printf 형식 제어 문자열에서 부호 사용 ... 357
9.10 리터럴과 Escape Sequence 출력 ... 360
9.11 scantf의 입력 형식 ... 360
10. C 구조체, 공용체, 비트 처리, 열거형 ... 374
10.1 소개 ... 375
10.2 구조체 정의 ... 375
10.3 구조체 초기화 ... 378
10.4 구조체 멤버 접근 ... 378
10.5 함수에서의 구조체 사용 ... 380
10.6 typedef ... 380
10.7 예제 : 보다 효과적으로 카드를 섞고 나누어주는 프로그램 ... 381
10.8 공용체 ... 383
10.9 비트 단위 계산 ... 386
10.10 비트 필드 ... 394
10.11 열거형 ... 397
11. C 파일 처리 ... 408
11.1 소개 ... 409
11.2 데이터 계층 ... 409
11.3 파일과 스트림 ... 411
11.4 순차 접근 파일 생성하기 ... 412
11.5 순차 접근 파일에서 데이터 읽어들이기 ... 417
11.6 임의 접근 파일 ... 422
11.7 임의 접근 파일 생성하기 ... 423
11.8 임의 접근 파일에 데이터를 임의로 기록하기 ... 425
11.9 임의 접근 파일로부터 데이터를 임의로 읽어오기 ... 427
11.10 사례연구 : 트랜잭션 처리 시스템 ... 429
12. C 자료 구조 ... 444
12.1 소개 ... 445
12.2 자기 참조 구조체 ... 446
12.3 동적 메모리 할당 ... 446
12.4 연결 리스트 ... 447
12.5 스택 ... 455
12.6 큐 ... 461
12.7 트리 ... 467
13. C 전처리기 ... 496
13.1 소개 ... 497
13.2 include 전처리기 지시어 ... 497
13.3 define 전처리기 지시어 : 심볼릭 상수 ... 497
13.4 define 전처리기 지시어 : 매크로 ... 498
13.5 조건부 컴파일 ... 500
13.6 error와 pragma 전처리기 지시어 ... 501
13.7 와 연산자 ... 501
13.8 라인 번호 ... 502
13.9 미리 정의된 심볼릭 상수 ... 502
13.10 가정(assertion) ... 502
14. C 고급 문제 ... 508
14.1 소개 ... 509
14.2 UNIX와 DOS 시스템에서의 입/출력 방향지정 ... 509
14.3 변수 길이 인자 리스트 ... 510
14.4 커맨드 라인 인자 ... 512
14.5 복잡한 원본파일 프로그램 컴파일시 주의할 점 ... 513
14.6 exit와 atexit를 가진 프로그램 종료 ... 515
14.7 volatile 형식 한정자 ... 517
14.8 정수와 부동소수점 상수 ... 517
14.9 파일에 대해서 ... 517
14.10 신호 처리 ... 519
14.11 동적 메모리 할당 : calloc과 realloc 함수 ... 522
14.12 조건 없는 분기 : goto ... 522
15. C++ 소개 ... 530
15.1 소개 ... 531
15.2 C++ ... 531
15.3 간단한 프로그램 : 두 개의 정수 합 ... 532
15.4 C++ 표준 라이브러리 ... 534
15.5 헤더파일 ... 535
15.6 확장 함수 ... 537
15.7 참조와 참조 파라미터 ... 539
15.8 디폴트 인자와 비어있는 파라미터 리스트 ... 543
15.9 단항 범위 연산자 ... 545
15.10 함수 오버로딩 ... 547
15.11 함수 템플릿 ... 548
16. C++ 클래스와 데이터 추상화 ... 557
16.1 소개 ... 558
16.2 Time 추상 데이터 형식(클래스) 구현 ... 559
16.3 클래스 범위와 클래스 멤버 접근 ... 565
16.4 구현으로부터 인터페이스 분리 ... 567
16.5 멤버 접근 제어 ... 570
16.6 접근 함수들과 유용한 함수들 ... 573
16.7 클래스 객체 초기화 : 생성자 ... 576
16.8 생성자를 가진 디폴트 인자 사용 ... 577
16.9 소멸자 사용 ... 581
16.10 생성자와 소멸자가 호출되었을 때 ... 581
16.11 데이터 멤버와 멤버 함수 사용 ... 584
16.12 Private 데이터 멤버 참조 리턴 ... 589
16.13 디폴트 멤버와이즈 복사에 의한 할당 ... 591
16.14 소프트웨어 재사용성 ... 593
17. C++ 클래스 : 2부 ... 602
17.1 소개 ... 603
17.2 const(상수) 객체와 const 멤버 함수 ... 603
17.3 합성 : 클래스 멤버로서의 객체 ... 611
17.4 friend 함수와 friend 클래스 ... 617
17.5 this 포인터 사용하기 ... 620
17.6 new와 delete 연산자의 동적 메모리 할당 ... 625
17.7 static 클래스 멤버 ... 627
17.8 데이터 추상화와 정보 은닉 ... 632
17.8.1 예제 : 배열 추상 데이터 형식 ... 634
17.8.2 예제 : 문자열 추상 데이터 형식 ... 635
17.8.3 예제 : 대기 행렬 추상 데이터 형식 ... 635
17.9 container 클래스와 반복 적용 ... 635
18. C++ 연산자 오버로딩 ... 643
18.1 소개 ... 644
18.2 연산자 오버로딩의 기초 ... 644
18.3 연산자 오버로딩의 제한 ... 646
18.4 클래스 멤버 대 friend 함수로서의 연산자 함수 ... 648
18.5 오버로딩 스트림 삽입과 스트림 추출 연산자 ... 649
18.6 오버로딩 단일 연산자 ... 652
18.7 오버로딩 이진 연산자 ... 652
18.8 사례연구 : 배열 클래스 ... 653
18.9 형식 사이에서의 변환하기 ... 665
18.10 ++와 -- 오버로딩 ... 666
19. C++ 상속성 ... 676
19.1 소개 ... 677
19.2 상속성 : 기저 클래스와 파생 클래스 ... 679
19.3 protected 멤버 ... 681
19.4 기저 클래스 포인터를 파생 클래스 포인터로 캐스팅하기 ... 681
19.5 멤버 함수들 사용하기 ... 687
19.6 파생 클래스에 기저 클래스 멤버들 재정의하기 ... 687
19.7 Public, Protected와 Private 상속 ... 691
19.8 직접 기저 클래스들과 간접 기저 클래스들 ... 692
19.9 파생 클래스들에서 생성자와 소멸자 사용하기 ... 692
19.10 파생 클래스 객체를 기저 클래스 객체 전환으로 암시화하기 ... 696
19.11 상속성을 가진 소프트웨어 공학 ... 697
19.12 합성 대 상속 ... 699
19.13 '사용한다(Uses A)'와 '안다(Knows A)' 관계 ... 699
19.14 사례연구 : Point, Cycle, Cylinder ... 700
20. C++ 가상 함수들과 다형성 ... 714
20.1 소개 ... 715
20.2 형식 필드와 switch 구문 ... 715
20.3 가상 함수들 ... 716
20.4 추상 기저 클래스들과 유형 클래스들 ... 716
20.5 다형성 ... 717
20.6 새 클래스들과 동적 바인딩 ... 720
20.7 가상 소멸자들 ... 720
20.8 사례연구 : 인터페이스와 구현 상속 ... 720
20.9 다형성, 가상 함수들과 동적 바인딩 'under the hood' ... 729
21. C++ 스트림 입/출력 ... 737
21.1 소개 ... 738
21.2 스트림 ... 739
21.2.1 Iostream 라이브러리 헤더파일 ... 740
21.2.2 스트림 입/출력 클래스와 객체 ... 740
21.3 스트림 입력 ... 742
21.3.1 스트림 삽입 연산자 ... 742
21.3.2 종속 접속한 스트림 삽입/추출 연산자 ... 744
21.3.3 char* 변수 출력 ... 745
21.3.4 멤버 함수 put으로 문자 출력 : 종속 접속한 puts ... 745
21.4 스트림 입력 ... 746
21.4.1 스트림 추출 연산자 ... 746
21.4.2 get 및 getline 멤버 함수 ... 748
21.4.3 istream 멤버 함수 peek, putback, ignore ... 751
21.4.4 안전한 형식 I/O ... 751
21.5 read, gcount 및 write를 포함한 형식화되지 않은 I/O ... 751
21.6 스트림 처리기 ... 752
21.6.1 정수 스트림 기수 : dec, oct, hex, setbase ... 753
21.6.2 부동 소수점 정밀도 ... 754
21.6.3 필드 너비(setw, width) ... 755
21.6.4 사용자 정의 처리기 ... 756
21.7 스트림 형식 상태 ... 757
21.7.1 형식 상태 플래그 ... 757
21.7.2 후위 0 및 10진 소수점(ios::showpoint) ... 758
21.7.3 정렬(ios::left, ios::right, ios::internal) ... 759
21.7.4 채워 넣기(fill, setfill) ... 761
21.7.5 정수 스트림 기수(ios::dec, ios::oct, ios::hex, ios::showbase) ... 763
21.7.6 부동 소수점 숫자, 과학적 표기법(ios::scientific, ios::fixed) ... 763
21.7.7 대/소문자 제어(ios::uppercase) ... 764
21.7.8 형식 플래그 설정 및 재설정하기 ... 765
21.8 스트림 오류 상태 ... 767
21.9 입력 스트림에 출력 스트림 연결하기 ... 769
22. C++ 템플릿 ... 782
22.1 소개 ... 783
22.2 클래스 템플릿 ... 783
22.3 클래스 템플릿과 형식이 없는 파라미터 ... 789
22.4 템플릿 상속성 ... 790
22.5 템플릿과 friend ... 790
22.6 템플릿과 static 멤버들 ... 791
23. C++ 예외 처리하기 ... 795
23.1 소개 ... 796
23.2 예외 처리하기가 꼭 필요한 경우 ... 798
23.3 다른 오류 처리 방법 ... 799
23.4 C++ 예외 처리하기의 기본 : try, throw, catch ... 799
23.5 간단한 예외 처리 프로그램 : 0으로 나누기 ... 800
23.6 예외 발생 ... 802
23.7 예외 잡기 ... 803
23.8 예외를 다시 발생 ... 806
23.9 예외 명세서 ... 808
23.10 예상하지 못한 예외 처리하기 ... 808
23.11 스택 풀기 ... 809
23.12 생성자, 소멸자 그리고 예외 처리하기 ... 810
23.13 예외와 상속 ... 811
23.14 new 실패 처리 ... 811
23.15 클래스 auto_ptr(자동 포인터)과 동적 메모리 할당 ... 815
23.16 표준 라이브러리 예외 계층 ... 816
24. Java 애플리케이션과 애플릿 소개 ... 827
24.1 소개 ... 828
24.2 Java 환경 ... 828
24.3 Java와 이 책에 대해 ... 831
24.4 간단한 프로그램 : 텍스트 출력하기 ... 832
24.5 또 다른 Java 프로그램 : 정수 합 구하기 ... 839
24.6 Java 2 Software Development Kit(J2SDK) 애플릿 ... 843
24.6.1 TicTaeToe 애플릿 ... 844
24.6.2 DravTest 애플릿 ... 846
24.6.3 Java2D 애플릿 ... 847
24.7 간단한 Java 애플릿 : 문자열 그리기 ... 848
24.8 2가지 다른 애플릿 : 문자열 그리기와 선긋기 ... 854
24.9 또 다른 Java 애플릿 : 정수 합 구하기 ... 855
25. Java에서 연산자와 메소드 그리고 배열 ... 873
25.1 소개 ... 874
25.2 원시 데이터 형식과 키워드 ... 874
25.3 논리 연산자 ... 876
25.4 메소드 정의 ... 880
25.5 Java API 패키지 ... 884
25.6 임의의 숫자 생성 ... 886
25.7 예제 : 주사위 놀이 ... 889
25.8 JApplet 클래스 메소드 ... 897
25.9 배열 정의와 할당 ... 898
25.10 배열 사용 예제 ... 899
25.11 참조와 참조 파라미터 ... 907
25.12 여러 행으로 구성된 배열 ... 908
26. Java 객체기반 프로그래밍 ... 920
26.1 소개 ... 921
26.2 클래스의 추상 데이터 형식 구현 ... 922
26.3 클래스 유효 범위 ... 928
26.4 패키지 생성 ... 928
26.5 클래스 객체의 초기화 : 생성자 ... 932
26.6 set과 get 메소드 ... 932
26.7 this 참조 사용 ... 938
26.8 종결자 ... 940
26.9 Static 클래스 멤버 ... 941
27. Java 객체지향 프로그래밍 ... 952
27.1 소개 ... 953
27.2 슈퍼 클래스와 서브 클래스 ... 954
27.3 protected 멤버 ... 956
27.4 슈퍼 클래스와 서브 클래스 사이의 관계 ... 956
27.5 암시적으로 서브 클래스를 슈퍼 클래스로 변환하기 ... 963
27.6 소프트웨어 공학에서 상속 개념 ... 963
27.7 합성과 상속 ... 964
27.8 다형성 ... 964
27.9 필드 형식과 switch 문장 ... 965
27.10 동적 메소드 바인딩 ... 965
27.11 final 메소드와 클래스 ... 965
27.12 추상 슈퍼 클래스와 유형의 클래스 ... 966
27.13 다형성 예 ... 967
27.14 새로운 클래스와 동적 바인딩 ... 967
27.15 인터페이스 상속과 구현 예제 ... 968
27.16 인터페이스 생성과 사용 예제 ... 973
27.17 내부 클래스 정의 ... 978
27.18 내부 클래스 정의 ... 988
27.19 윈시 데이터 형식의 랩퍼방법 클래스 ... 988
28. Java 그래픽과 Java2D ... 996
28.1 소개 ... 997
28.2 그래픽 문맥과 그래픽 객체 ... 999
28.3 컬러 ... 1000
28.4 폰트 관련 ... 1007
28.5 선, 사각형 그리고 타원 그리기 ... 1012
28.6 원호 ... 1015
28.7 다각형과 멀티선 그리기 ... 1018
28.8 Java2D API ... 1020
28.9 Java2D 모양들 ... 1021
29. Java 그래픽 사용자 인터페이스 컴포넌트 ... 1035
29.1 소개 ... 1036
29.2 스윙 개요 ... 1037
29.3 JLabel ... 1039
29.4 이벤트 처리 모델 ... 1042
29.5 JTextField와 JPasswordField ... 1042
29.5.1 이벤트 처리가 동작하는 방법 ... 1049
29.6 JTextArea ... 1050
29.7 JButton ... 1053
29.8 JCheckBox ... 1056
29.9 JComboBox ... 1059
29.10 마우스 이벤트 처리 ... 1062
29.11 배치 관리자 ... 1065
29.11.1 FlowLayout ... 1066
29.11.2 BorderLayout ... 1068
29.11.3 GridLayout ... 1071
29.12 패널 ... 1073
29.13 JPanel 자신이 포함된 서브 클래스 생성 ... 1075
29.14 윈도우 ... 1080
29.15 프레임에 메뉴 사용하기 ... 1082
30. Java 멀티미디어 : 이미지, 애니메이션 그리고 오디오 ... 1102
30.1 소개 ... 1103
30.2 로딩, 출력 그리고 이미지의 크기 변화 ... 1104
30.3 오디오 클립 로딩과 실행 ... 1106
30.4 애니메이션 ... 1109
30.5 애니메이션에서의 문제점 ... 1113
30.6 HTML param 태그를 사용한 애플릿의 최적화 ... 1115
30.7 이미지 맵 ... 1119
30.8 Java 플러그-인 ... 1121
30.9 인터넷과 www 자원 ... 1122
A. 인터넷과 웹 주소록 ... 1127
A.1 C/C++ 주소 ... 1127
A.2 C++ 튜토리얼 ... 1128
A.3 C/C++ FAQs ... 1129
A.4 Visual C++ ... 1130
A.5 comp.lang.c++ ... 1130
A.6 C/C++ 컴파일러 ... 1132
A.7 C++ 개발 툴 ... 1134
A.8 Java Resources ... 1134
A.9 Java 제품 ... 1136
A.10 Java FAQs ... 1136
A.11 Java 튜토리얼 ... 1137
A.12 Java 관련 잡지 ... 1137
A.13 Java Applets ... 1138
A.14 멀티미디어 ... 1139
A.15 Java 뉴스 그룹 ... 1139
B. C99 인터넷과 웹 주소록 ... 1141
B.1 C99 주소 ... 1141
C. 연산자 우선순위 표 ... 1144
D. ASCII 문자 세트 ... 1150
E. 수 체계 ... 1151
E.1 소개 ... 1152
E.2 2진수를 8진수와 16진수로 만들기 ... 1154
E.3 8진수와 16진수를 2진수로 변환하기 ... 1155
E.4 2진수, 8진수, 16진수를 10진수로 변환 ... 1156
E.5 10진수를 2진수, 8진수, 16진수로 변환 ... 1156
E.6 음의 2진수 : 2의 보수 표기법 ... 1158
찾아보기 ... 1163
더보기 닫기