머리말 CHAPTER 01 컴퓨터와 논리의 개요 ... 21 1.1 컴퓨터의 구성 요소와 연산 과정 ... 22 1.2 프로그래밍 과정의 단계 ... 26 1.2.1 문제의 이해 ... 26 1.2.2 논리의 설계 ... 27 1.2.3 프로그램의 코딩 ... 27 1.2.4 프로그램의 번역 ... 28 1.2.5 프로그램의 테스트 ... 29 1.2.6 프로그램의 활용 ... 30 1.3 데이터의 계층구조 ... 31 1.4 순서도 기호와 의사코드의 사용 ... 33 1.5 변수의 사용 ... 37 1.6 프로그램의 종료 ... 39 1.7 연결자의 사용 ... 42 1.8 변수에 값을 대입 ... 43 1.9 데이터의 타입 ... 45 1.10 프로그래밍 기법들의 발전 ... 47 요약 ... 48 주요 용어 ... 48 복습 문제 ... 51 연습 문제 ... 53 CHAPTER 02 프로그램의 구조화 ... 57 2.1 컴퓨터의 구성 요소와 연산과정 ... 58 2.2 프로그램의 기본 구조 ... 60 2.3 Priming Read의 사용 ... 66 2.4 구조화의 필요성 ... 72 2.5 구조화의 확인 ... 75 2.6 case와 do until 구조 ... 81 요약 ... 86 주요 용어 ... 86 복습 문제 ... 87 연습 문제 ... 89 CHAPTER 03 프로그램의 모듈화와 문서 ... 95 3.1 모듈화의 장점 ... 96 3.1.1 프로그램의 추상화 ... 96 3.1.2 다수 프로그래머의 공동 작업 ... 97 3.1.3 모듈의 재사용 ... 97 3.1.4 프로그램 구조의 인식 ... 98 3.2 프로그램의 모듈화 ... 100 3.3 모듈의 호출 ... 103 3.4 변수의 선언 ... 104 3.5 계층도 ... 106 3.6 프로그램의 문서 ... 108 3.7 출력 문서 ... 109 3.8 입력 문서 ... 116 3.9 사용자 문서 ... 121 요약 ... 123 주요 용어 ... 123 복습 문제 ... 125 연습 문제 ... 128 CHAPTER 04 프로그램의 작성 및 설계 ... 133 4.1 프로그램의 메인 논리 ... 134 4.2 초기화 작업 ... 138 4.2.1 변수 선언 ... 138 4.2.2 파일 열기 ... 143 4.2.3 제목 출력 ... 144 4.2.4 첫 번째 입력 ... 144 4.3 메인 루프 ... 149 4.4 마무리 작업 ... 152 4.5 프로그램 설계의 중요성 ... 154 4.6 모듈의 포함 ... 154 4.7 변수와 모듈의 이름 ... 157 4.8 명확한 명령문의 작성 ... 158 4.8.1 적절한 줄 바꾸기 ... 158 4.8.2 임시 변수의 사용 ... 159 4.8.3 상수의 사용 ... 160 4.9 좋은 프로그래밍 습관 ... 160 요약 ... 161 주요 용어 ... 161 복습 문제 ... 162 연습 문제 ... 165 CHAPTER 05 판단 ... 169 5.1 불리언 식 ... 170 5.2 비교 연산자 ... 172 5.3 AND 논리 ... 176 5.3.1 효율적인 AND 판단 ... 180 5.3.2 1개의 AND로 판단들을 결합 ... 182 5.3.3 AND 사용의 흔한 실수 ... 183 5.4 OR 논리 ... 185 5.4.1 OR 사용의 흔한 실수 ... 186 5.4.2 효율적인 OR 판단 ... 189 5.4.3 1개의 OR로 판단들을 결합 ... 191 5.5 범위 검사 ... 192 5.5.1 범위 검사의 흔한 실수 ... 195 5.6 AND와 OR의 우선순위 ... 196 5.7 case 구조 ... 199 5.8 의사결정 테이블 ... 200 요약 ... 208 주요 용어 ... 208 복습 문제 ... 209 연습 문제 ... 213 CHAPTER 06 루프 ... 219 6.1 루프의 장점 ... 220 6.2 while 루프 ... 220 6.3 루프의 제어 ... 223 6.4 센티넬 변수의 사용 ... 227 6.5 루프 제어 변수의 감소 ... 229 6.6 루프 사용의 흔한 실수 ... 230 6.6.1 루프 제어 변수의 초기화 ... 230 6.6.2 루프 제어 변수의 변경 ... 230 6.6.3 루프 제어 변수의 비교 ... 231 6.6.4 루프에 포함하는 명령문 ... 231 6.6.5 초기화 필요가 없는 변수 ... 232 6.7 for 루프 ... 233 6.8 do until 루프 ... 235 6.9 루프의 공통된 특징 ... 239 6.10 중첩 루프 ... 240 6.11 루프를 이용한 총합 ... 245 요약 ... 248 주요 용어 ... 248 복습 문제 ... 249 연습 문제 ... 253 CHAPTER 07 제어 탈출 ... 257 7.1 제어 탈출의 논리 ... 258 7.2 단일 단계 제어 탈출 ... 259 7.3 제목에서 제어 데이터의 사용 ... 264 7.4 꼬리말에서 제어 데이터의 사용 ... 266 7.5 합계에서 제어 탈출 ... 268 7.6 다단계 제어 탈출 ... 273 7.7 페이지 탈출 ... 279 요약 ... 285 주요 용어 ... 285 복습 문제 ... 286 연습 문제 ... 289 CHAPTER 08 배열 ... 293 8.1 배열의 사용 ... 294 8.2 컴퓨터 메모리에서의 위치 ... 294 8.3 중첩된 판단을 대체하는 배열 ... 295 8.4 배열의 선언과 초기화 ... 305 8.5 수행할 때와 컴파일할 때의 배열 ... 307 8.6 배열의 값을 적재 ... 310 8.7 배열의 탐색 ... 312 8.8 병렬 배열의 사용 ... 314 8.9 배열의 경계 ... 318 8.10 조기 탈출 ... 320 8.11 범위의 비교 ... 322 요약 ... 326 주요 용어 ... 326 복습 문제 ... 327 연습 문제 ... 330 CHAPTER 09 배열의 응용 ... 337 9.1 데이터 정렬의 필요성 ... 338 9.2 두 값의 교환 ... 339 9.3 버블 정렬 ... 340 9.3.1 배열의 크기 변수 사용 ... 347 9.3.2 가변 크기의 리스트 ... 350 9.3.3 불필요한 비교의 감소 ... 353 9.3.4 불필요한 패스의 제거 ... 355 9.4 삽입 정렬 ... 357 9.5 선택 정렬 ... 359 9.6 인덱스 파일 ... 361 9.7 연결 리스트 ... 362 9.8 다차원 배열 ... 364 요약 ... 370 주요 용어 ... 370 복습 문제 ... 371 연습 문제 ... 374 CHAPTER 10 메뉴와 입력의 확인 ... 377 10.1 대화식 프로그램의 필요성 ... 378 10.2 1단계 메뉴의 사용 ... 379 10.3 블랙박스 같은 모듈 ... 383 10.4 메뉴 프로그램의 개선 ... 388 10.5 CASE 구조의 사용 ... 393 10.6 다단계 메뉴의 사용 ... 396 10.7 입력의 확인 ... 403 10.8 데이터 확인의 종류 ... 405 10.8.1 데이터 타입의 확인 ... 405 10.8.2 데이터 범위의 확인 ... 406 10.8.3 데이터의 합리성과 일관성 확인 ... 406 10.8.4 데이터 존재의 확인 ... 407 요약 ... 408 주요 용어 ... 408 복습 문제 ... 409 연습 문제 ... 412 CHAPTER 11 파일의 처리 ... 417 11.1 파일 병합의 필요성 ... 418 11.2 병합 프로그램의 메인 논리와 초기화 ... 419 11.3 병합 프로그램의 메인 루프와 마무리 ... 427 11.4 초기화에서 EOF의 검사 ... 427 11.5 마스터 파일과 트랜잭션 파일 ... 429 11.6 트랜잭션의 반영 ... 430 11.7 다수의 트랜잭션 허용 ... 436 11.8 순차 파일의 갱신 ... 437 요약 ... 448 주요 용어 ... 448 복습 문제 ... 449 연습문제 ... 452 CHAPTER 12 고급 모듈화 기술 ... 457 12.1 지역변수와 전역변수 ... 458 12.2 모듈로 값을 전달 ... 464 12.3 모듈로 여러 값을 전달 ... 470 12.4 모듈로부터 값의 반환 ... 493 12.5 내장 함수 ... 475 12.6 IPO 차트 ... 477 12.7 캡슐화의 장점 ... 478 12.8 결합력의 감소와 응집력의 증가 ... 480 12.8.1 결합력의 감소 ... 480 12.8.2 응집력의 증가 ... 483 요약 ... 486 주요 용어 ... 486 복습 문제 ... 488 연습 문제 ... 491 CHAPTER 13 객체지향 프로그래밍 ... 493 13.1 객체지향 프로그래밍의 개요 ... 494 13.2 클래스 ... 496 13.3 객체의 사용 ... 499 13.4 상속 ... 500 13.5 다형성 ... 505 13.6 생성자와 소멸자 ... 506 13.7 GUI 객체의 클래스 ... 510 13.8 객체지향 프로그래밍의 장점 ... 511 요약 ... 513 주요 용어 ... 513 복습 문제 ... 514 연습 문제 ... 517 부록 A 어려운 구조화 문제의 해결 ... 519 부록 B 수 체계와 컴퓨터 코드의 이해 ... 529 부록 C 큰 의사결정 테이블의 사용 ... 535 부록 D 프로그램 소스 ... 543 찾아보기 ... 585