본문바로가기

자료 카테고리

전체 1
도서자료 1
학위논문 0
연속간행물·학술기사 0
멀티미디어 0
동영상 0
국회자료 0
특화자료 0

도서 앰블럼

전체 (1)
일반도서 (1)
E-BOOK (0)
고서 (0)
세미나자료 (0)
웹자료 (0)
전체 (0)
학위논문 (0)
전체 (0)
국내기사 (0)
국외기사 (0)
학술지·잡지 (0)
신문 (0)
전자저널 (0)
전체 (0)
오디오자료 (0)
전자매체 (0)
마이크로폼자료 (0)
지도/기타자료 (0)
전체 (0)
동영상자료 (0)
전체 (0)
외국법률번역DB (0)
국회회의록 (0)
국회의안정보 (0)
전체 (0)
표·그림DB (0)
지식공유 (0)

도서 앰블럼

전체 1
국내공공정책정보
국외공공정책정보
국회자료
전체 ()
정부기관 ()
지방자치단체 ()
공공기관 ()
싱크탱크 ()
국제기구 ()
전체 ()
정부기관 ()
의회기관 ()
싱크탱크 ()
국제기구 ()
전체 ()
국회의원정책자료 ()
입법기관자료 ()

검색결과

검색결과 (전체 1건)

검색결과제한

열기
자료명/저자사항
두렵지 않은 C++ : 영리하게 코딩하고 싶은 C++ 초급 개발자를 위한 가이드 / 브라이언 오버랜드 지음 ; 한정애 옮김 인기도
발행사항
의왕 : 에이콘 : 에이콘출판, 2013
청구기호
005.133 -13-14
자료실
[서울관] 서고(열람신청 후 1층 대출대)
형태사항
617 p. : 삽화 ; 25 cm
표준번호/부호
ISBN: 9788960774025
제어번호
MONO1201310497
주기사항
원표제: C++ without fear : a beginner's guide that makes you feel smart (2nd ed.)
색인수록
부록: 연산자 ; 데이터형 ; 문법 요약 외

목차보기더보기


1장 첫 번째 C++ 프로그램
___프로그래머처럼 생각하기
______컴퓨터는 시키는 대로만 한다
______프로그램에게 무엇을 시킬지 결정하기
______동등한 C++ 명령문 작성
______칼럼: 컴퓨터는 정말 얼마나 ‘똑똑’한가, 진짜?
______몇 가지 바보 같은 정의 - 리뷰
___C++는 무엇이 다른가?
___C++ 프로그램 작성
______프로그램 명령문 입력
______프로그램 빌드(컴파일과 링크)
______프로그램 테스트
______필요한 만큼 수정
___자신만의 C++ 컴파일러 설치
______예제 1.1 메시지 출력
______Dev-C++ 환경을 사용할 경우
______마이크로소프트 사의 비주얼 스튜디오를 사용할 경우
______동작 방법
______연습문제
______칼럼: #include와 using이 무엇인가?
___다음 출력 행으로 줄 바꿈
______예제 1.2 여러 줄 출력
______동작 방법
______연습문제
______칼럼: 문자열이란 무엇인가?
___데이터 저장하기: C++ 변수
___데이터형 소개
______칼럼: 왜 한 배가 아니라 두 배인가?
______예제 1.3 기온 변환
______동작 방법
______프로그램 최적화
______연습문제
___변수 이름과 키워드에 관한 몇 가지
______연습문제
___정리

2장 결정, 결정
___데이터형에 대한 몇 가지 더
___프로그램에서의 결정
______칼럼: 인공 지능(AI, artificial interlligence)이란 무엇인가?
______if와 if-else
______칼럼: 왜 두 연산자(= 와 ==)를 사용하는가?
______예제 2.1 홀수 혹은 짝수?
______동작 방법
______코드 최적화
______연습문제
___루프 소개
______칼럼: 무한 루프
______예제 2.2 1에서부터 N까지 출력
______동작 방법
______프로그램 최적화
______연습문제
___C++에서 참 혹은 거짓
______칼럼: 불리언 데이터형
___증가 연산자(++)
___명령문과 표현식
___불리언(지름길) 논리 소개
______칼럼: 무엇이 ‘참’인가?
______예제 2.3 나이 검사
______동작 방법
______연습문제
___수학 라이브러리 소개
______예제 2.4 소수 검사
______동작 방법
______프로그램 최적화
______연습문제
______예제 2.5 빼기 게임(NIM)
______동작 방법
______연습문제
___정리

3장 간편한 다용도 ‘for’ 명령문
___카운트를 위한 루프
___‘for’ 루프 소개
___수많은 예제
______칼럼: ‘for’는 항상 ‘while’처럼 동작하는가?
______예제 3.1 ‘for’를 사용해 1에서부터 N까지 출력
______동작 방법
______연습문제
___for에서 복합 명령문(블록) 사용
___즉석에서 루프 변수 선언
______예제 3.2 ‘for’를 사용한 소수 검사
______동작 방법
______연습문제
___비교 언어 101: 베이직의 ‘For’명령문
___정리

4장 함수: 많은 것을 호출
___함수의 개념
___함수 사용의 기본
______단계 1: 함수 선언(프로토타입)
______단계 2: 함수 정의
______단계 3: 함수 호출
______예제 4.1 avg() 함수
______동작 방법
______함수가 함수를 호출!
______연습문제
______예제 4.2 소수 함수
______동작 방법
______연습문제
___지역 변수와 전역 변수
______칼럼: 왜 전역 변수를 사용할까?
___재귀 함수
______예제 4.3 인수 분해
______동작 방법
______칼럼: 수학쟁이를 위한 칼럼
______연습문제
______예제 4.4 최대 공약수를 구하는 유클리드의 알고리즘
______동작 방법
______칼럼: 유클리드가 누구지?
______연습문제
______칼럼: 수학쟁이를 위한 칼럼: 증명의 나머지 부분
______예제 4.5 아름다운 재귀, 하노이의 탑
______동작 방법
______연습문제
______예제 4.6 난수 생성기
______동작 방법
______연습문제
___게임과 추가 게임
___정리

5장 배열: 모두 한 줄에
___C++ 배열 들여다보기
___배열 초기화
___0으로 시작하는 인덱스
______칼럼: 왜 0으로 시작하는 인덱스를 쓰는가?
______예제 5.1 요소 출력
______동작 방법
______연습문제
______예제 5.2 난수는 얼마나 무작위일까?
______동작 방법
______연습문제
___문자열과 문자열의 배열
______예제 5.3 첫 번째 카드 돌리기
______동작 방법
______연습문제
______두 번째 카드 돌리기
______동작 방법
______연습문제
______예제 5.5 세 번째 카드 돌리기
______동작 방법
______프로그램 최적화
______연습문제
___지혜로운 한마디
___2차원 배열: 행렬로 한 걸음
___정리

6장 포인터: 데이터를 처리할 손잡이
___포인터가 뭔데?
___포인터의 개념
______칼럼: 주소는 어떻게 생겼는가?
___포인터 선언과 사용
______예제 6.1 주소 출력
______예제 6.2 double_it 함수
______동작 방법
______연습문제
___교환: 포인터를 사용하는 또 다른 함수
______예제 6.3 배열 정렬
______동작 방법
______연습문제
___포인터 연산
___포인터와 배열 처리
______예제 6.3 배열을 0으로 초기화
______동작 방법
______좀 더 간결한 코드 작성
______연습문제
___정리

7장 문자열: 텍스트 분석
___컴퓨터 내의 텍스트 저장소
______칼럼: 컴퓨터는 프로그램을 어떻게 번역하는가?
___문자열이 없다면 아무 뜻도 없다
___문자열 조작 함수
______예제 7.1 문자열 생성
______동작 방법
______연습문제
______칼럼: 이스케이프 문자열이란 무엇인가?
___문자열 입력 읽기
______예제 7.2 숫자 얻기
______동작 방법
______연습문제
______예제 7.3 대문자로 변환
______동작 방법
______연습문제
___개별 문자와 문자열
______예제 7.4 strtok으로 입력 값 자르기
______동작 방법
______연습문제
___새로운 C++ 문자열 데이터형
______String 클래스 지원 포함
______string으로 변수 선언과 초기화
______string형 변수로 작업
______입력과 출력
______예제 7.5 string형을 사용해 문자열 생성
______동작 방법
______연습문제
___string 클래스가 지원하는 기타 연산
___정리

8장 파일: 전자적 저장소
___파일 스트림 객체 소개
___디스크 파일을 참조하는 방법
______예제 8.1 파일에 글쓰기
______동작 방법
______연습문제
______예제 8.2 텍스트 파일 출력
______동작 방법
______연습문제
___텍스트 파일과 바이너리 파일
______칼럼: ‘바이너리 파일’들은 진짜로 바이너리일까?
___바이너리 연산 소개
______예제 8.3 무작위 접근 쓰기
______동작 방법
______연습문제
______예제 8.4 무작위 접근 읽기
______동작 방법
______연습문제
___정리

9장 고급 프로그래밍 기술
___커맨드라인 인자
______예제 9.1 커맨드라인에서 입력받은 파일 출력
______동작 방법
______프로그램 개선
______칼럼: 미리 정의된 상수의 아름다움
______연습문제
___함수 오버로딩
______칼럼: 오버로딩과 객체지향
______예제 9.2 다른 데이터형을 갖는 배열 출력
______동작 방법
______연습문제
___do-while 루프
___switch-case 명령문
___다중 모듈
___예외 처리: 예외가 있습니다!
______예외의 기초
______예외 처리: 첫 번째 시도
______try-catch 예외 처리 소개
___정리

10장 C++11의 새로운 기능
___C++11 기능의 개요
___long long형(long long long은 아님)
______칼럼: 왜 ‘자연’ 정수인가?
______64비트 리터럴(상수) 사용
______long long형으로 입력받기
______long long 숫자 보기 좋게 출력
______예제 10.1 피보나치: 64비트 예제
______동작 방법
______연습문제
______숫자 현지화
______칼럼: 피보나치가 누굴까?
___범위 기반 ‘for’
______예제 10.2 범위 기반 ‘for’로 배열 초기화
______동작 방법
______연습문제
___auto와 decltype 키워드
___nullptr 키워드
___강한 데이터형 열거형
______C++11에서 enum 클래스
______확장된 열거형 문법: 저장소 제어
______예제 10.3 가위 바위 보 게임
______동작 방법
______더 재미있는 게임
______연습문제
___원 문자열 리터럴
___정리

11장 클래스 소개: 분수 클래스
___객체지향: 유사 지능 데이터형
______칼럼: OOP…… 그만한 가치가 있나요?
___Point: 간단한 클래스
______칼럼: C 프로그래머를 위한 칼럼: 구조체와 클래스
___private: 멤버들만 접근 가능(데이터 보호)
______예제 11.1 Point 클래스 검사
______동작 방법
______연습문제
___Fraction 클래스 소개
___인라인 함수
___최대공약수 찾기
___최소공배수 찾기
______예제 11.2 분수를 지원하는 함수
______동작 방법
______연습문제
______예제 11.3 Fraction 클래스 검사
______동작 방법
______칼럼: 새로운 #include 방식?
______연습문제
______예제 11.4 분수 연산: 뎃셈과 곱셈
______동작 방법
______연습문제
___정리

12장 생성자: 그걸 만든다면……
___생성자 소개
___다중 생성자(오버로딩)
___C++11만 지원: 클래스 내에서 멤버 초기화
___기본 생성자: 그리고 경고
______칼럼: C++가 기본 생성자를 가지고 놀리는 거 아냐?
___C++11만 지원: 생성자 파견? 위임?
___C++11만 지원: 일관된 초기화
______예제 12.1 Point 클래스 생성자
______동작 방법
______연습문제
______예제 12.2 분수 클래스 생성자
______동작 방법
______연습문제
___참조 변수와 인자(&)
___복사 생성자
______칼럼: 복사 생성자와 참조자
______예제 12.3 분수 클래스 복사 생성자
______동작 방법
______연습문제
___문자열에서 분수로 바꾸는 생성자
___정리

13장 연산자 함수: 클래스 활용
___클래스 연산자 함수 소개
___전역 함수로서의 연산자 함수
___참조자로 효율 높이기
______예제 13.1 포인트 클래스 연산자
______동작 방법
______연습문제
______예제 13.2 분수 클래스 연산자
______동작 방법
______코드 최적화
______연습문제
___기타 데이터형과 함께 사용
___클래스 할당 함수(=)
___같은지 비교 함수(==)
___클래스 ‘출력’ 함수
______예제 13.3 최종 분수 클래스
______동작 방법
______연습문제
___C++11만 지원: 사용자 정의 리터럴
______원 문자열 리터럴 정의
______준비된 리터럴 정의
___정리

14장 동적 메모리와 문자열 클래스
___동적 메모리: ‘new’ 키워드
___객체와 ‘new’
___여러 데이터 할당
______칼럼: 메모리 할당과 관련된 문제 해결하기
______예제 14.1 동적 메모리 사용
______동작 방법
______연습문제
___클래스 소멸자
______예제 14.2 간단한 문자열 클래스
______동작 방법
______연습문제
___‘깊은’ 복사와 복사 생성자
___this 키워드
___할당 연산자 다시 보기
___결합 함수 작성
______예제 14.3 최종 문자열 클래스
______동작 방법
______연습문제
___정리

15장 완전한 OOP 예제 두 개
___연결 리스트 소개
______노드 설계
______간단한 연결 리스트 구현
______알파벳 순서 리스트
______예제 15.1 이름을 알파벳 순서로 정렬
______동작 방법
______메모리 누수 처리
______C++11만 지원: 삭제를 위해 스마트 포인터 사용
______칼럼: 재귀 호출과 반복 비교
______연습문제
___하노이의 탑, 애니메이션 추가
______mystack 클래스 설계
______mystack 클래스 사용
______예제 15.2 움직이는 타워
______동작 방법
______연습문제
___정리

16장 STL을 사용한 손쉬운 프로그래밍
___리스트 템플릿 소개
______칼럼: C++에서 템플릿 작성하기
______리스트 클래스 생성과 사용
______반복자 작성과 사용
______C++11만 지원: for each
______칼럼: 포인터와 반복자
______예제 16.1 STL 정렬된 리스트
______동작 방법
______지속적으로 정렬돼 있는 리스트
______연습문제
___RPN 계산기 설계
______칼럼: 폴란드식 표기법에 대한 간단한 역사 이야기
______RPN을 위해 스택 사용
______일반화된 STL 스택 클래스 소개
______예제 16.2 역폴란드 계산기
______동작 방법
______연습문제
___꺾쇠의 올바른 해석
___정리

17장 상속: 물려받은 것들
___하위 클래스를 만드는 방법
______칼럼: 왜 ‘공용(public)’ 기본 클래스인가?
______예제 17.1 FloatFraction 클래스
______동작 방법
______연습문제
___FloatFraction 클래스에서의 문제
___C++11만 지원: 기본 클래스 생성자 상속
______예제 17.2 완전한 FloatFraction 클래스
______동작 방법
______연습문제
___보호받는 멤버
___객체 포함
___클래스 계층 구조를 통한 안전한 상속
___정리

18장 다형성: 객체 독립성
___FloatFraction 클래스에 대한 다른 접근 방법
___우리를 구원해줄 가상 함수!
______칼럼: 가상 함수를 쓰는 비용은?
______예제 18.1 수정된 FloatFraction 클래스
______동작 방법
______연습문제
___C++11만 지원: 명시적 오버라이딩 요구
___‘순수 가상’과 기타 추상화 관련 사항
___추상 클래스와 인터페이스
___객체지향과 I/O
______끝없이 확장 가능한 cout
______다형적이지 않은 cout
______예제 18.2 진짜 다형성: Printable 클래스
______동작 방법
______연습문제
___마지막 한마디(혹은 두 마디)
___진짜 마지막 한마디
___정리

부록 A 연산자
___영역(::) 연산자
___sizeof 연산자
___데이터형을 변환하는 오래된 방법과 새로운 방법
___정수형과 부동소수점 나눗셈
___비트 단위 연산자(&, /, ^,~, <<, >>)
___조건 연산자
___할당 연산자
___연결(,) 연산자

부록 B 데이터형
___데이터형의 정밀도
___숫자 리터럴의 데이터형
___문자열 리터럴과 이스케이프 문자열
___부호가 있는 정수를 위한 2의 보수 표기법

부록 C 문법 요약
___기본 표현식 문법
___기본 명령문 문법
___제어 구조와 분기(branch) 명령문
___if-else 명령문
___while 명령문
___do-while 명령문
___for 명령문
___switch-case 명령문
___break 명령문
___continue 명령문
___goto 명령문
___return 명령문
___throw 명령문
___변수 선언
___함수 선언
___클래스 선언
___열거형 선언

부록 D 전처리 지시어
___#define 지시어
___## 연산자(결합)
___defined 함수
___#elif 지시어
___#endif 지시어
___#error 지시어
___#if 지시어
___#ifdef 지시어
___#ifndef 지시어
___#include 지시어
___#line 지시어
___#undef 지시어
___미리 정의된 상수

부록 E ASCII 코드

부록 F 표준 라이브러리 함수
___문자열(C 문자열) 함수
___데이터 변환 함수
___단일 문자 함수
___수학 함수
___난수 관련 함수
___시간 관련 함수
___strftime 함수를 위한 형식

부록 G I/O 스트림 객체와 클래스
___콘솔 스트림 객체
___I/O 스트림 조작기
___입력 스트림 함수
___출력 스트림 함수
___파일 I/O 함수

부록 H STL 클래스와 객체
___STL 문자열 클래스
___ 템플릿
___ 템플릿

부록 I 용어집

이용현황보기

이용현황 테이블로 등록번호, 청구기호, 권별정보, 자료실, 이용여부로 구성 되어있습니다.
등록번호 청구기호 권별정보 자료실 이용여부
0001798768 005.133 -13-14 [서울관] 서고(열람신청 후 1층 대출대) 이용가능
0001798769 005.133 -13-14 [서울관] 서고(열람신청 후 1층 대출대) 이용가능
  • 출판사 책소개 (알라딘 제공)

    컴퓨터 프로그래밍을 해보고 싶었다면, 그 중에서도 특히 널리 사용되는 C++를 배우고 싶었다면 『두렵지 않은 C++』로 시작하자. C++를 배우는 가장 멋진 방법이다.

    호평을 받았던 초판에서처럼 저자는 입력하기 편한, 짧고 간단한 예제를 강조했다. 몇 장이 지나면 유용한 유틸리티도 만들 수도 있고, 게임을 즐길 수도 있으며, 재미있는 컴퓨터 퍼즐을 만들 수도 있다. 복잡하기만 하거나 의미 없는 예제를 보여주곤 하는 많은 프로그래밍 교과서에서 벗어나 그의 방식을 따라 해보자. 이 책에는 여러분이 프로그래밍을 빨리 배우기 위해 필요한 모든 것들이 끈기 있게 설명돼 있고, 명확하게 묘사돼 있을 뿐만 아니라, 심지어 재미있기까지 하다.

    물론 프로그래밍은 복잡한 일이고 C++는 전문가들이 사용하는 언어다. 사실 가장 멋진 게임들, 그래픽과 인터넷 애플리케이션들 대부분은 C++로 만들어졌고 화성 탐사 로봇에서도 사용됐다.

    하지만 C++라는 언어 자체는 표지에 실린 괴물처럼 두려워해야 할 존재가 아니다. 잘게 쪼개고 들어가면서 그 진수를 파악하고, 간단한 예제로 공부하고 실용적인 연습문제를 풀어보면서 각 기능들이 왜 있는 것인지, 그리고 어떤 트릭이 숨겨져 있는지 알게 되는 동안 엄청나게 빠르게 C++를 배워나갈 수 있을 것이다.


    ★ 이 책에서 다루는 내용 ★

    『두렵지 않은 C++』에서 다루는 내용

    ■ C++ 프로그래밍의 기초
    ■ 자신만의 프로그래밍 작성법
    ■ 각 프로그램 조각들의 동작 원리
    ■ 유용하고 재사용 가능한 프로그램 코드 작성
    ■ 쉽고 이해하기 쉬운 용어로 익히는 객체지향 프로그래밍

    이 책의 내용은 거의 모든 C++ 언어에 적용할 수 있지만, 최근에 나온 아주 훌륭한 C++ 표준인 C++11의 중요한 기능 몇 가지를 추가로 설명했다. 또한 이 책에는
    개정판에서 추가된 내용

    ■ 더 늘어난 그림, 예제와 연습문제
    ■ 더욱 풍부해진 퍼즐과 게임
    ■ 75페이지에 달하는 C++ 언어 참고 자료
    ■ 무료 C++ 소프트웨어 다운로드 방법

    그냥 재미 삼아 C++ 프로그래밍을 배우려는 것이든, 프로그래밍으로 성공하고 싶은 것이든, 이 책이야말로 여러분이 선택할 수 있는 최고의 책이다.


    ★ 저자 서문 ★

    아주 오래 전, 프로그래머로 먹고 살기 위해 밤을 새워가며 C를 배워야 했을 때(C++도 나오기 전이었다) 내 월급의 절반을 써서라도 프로그래밍 멘토를 구했다면 멘토는 이렇게 조언했을 것이다. "바로 이 부분이 잘못됐네…… C를 배우면서 저지르는 오류들 말이야. 자, 이 오류를 피하려면 이렇게 해야 하네." 하지만 난 멘토를 구하지 않았고, 프로그램을 작성할 때 저지를 수 있는 모든 오류를 다 저지르고 다녔으며, 그걸 스스로 해결하기 위해 단맛 쓴맛을 다 맛봐야 했다.

    내가 말하고 싶은 것은 글을 쓸 줄 아는 프로그래머나 프로그램을 작성할 줄 아는 작가가 필요하다는 이야기가 아니다. 그런 사람은 드물다. 그보다 더 더욱 드문 건 프로그래머이면서 작가이고 선생님인 사람이다. 즉, 기초적인 사항들을 가르쳐주면서 잘 이끌어가고, 이 언어가 이렇게 만들어진 이유를 알려줌으로써 왜 이렇게 하면 유용할 뿐 아니라 멋지기까지 한지에 대해 열심히 설명해줄 수 있는 사람은 정말 드물다.

    그런 사람을 찾는 건 정말 어려웠다. 그래서 나는 내가 그런 사람이 돼야겠다고 결심했다.

    이후 마이크로소프트 사에서 일하면서 기술 지원과 테스트로 일을 시작했고 관리자로의 길을 걷기 시작했다. 하지만 내게 가장 중요했던 일은 새로운 기술을 설명하는 일이었다. 때로 나는 프로그래밍 언어의 새로운 기능을 접하는 두 번째나 세 번째 사람이었고, 암호문 같은 내용을 우주에 존재하는 다른 모든 사람이 이해할 수 있게 풀어 써야 했다. "간단하게 만들라"라는 목표는 그냥 일이 아니라 내 사명이었다.

    이 책의 특징

    이 책이 다른 점은 무엇일까? 바로 내가 여러분, 그러니까 독자 여러분을 지지한다는 점이다. 나는 어떤 위원회의 편이 아니라 여러분의 편이다. 나는 여러분이 프로그램을 '만들게 된 이유'도 다 알고 있으며, 왜 프로그램이 개선돼야 하는지도 알고 있다(그런 문제들도 다룰 생각이다). 하지만 내가 제일 신경을 많이 쓴 것은 무엇이 어떻게 동작하는가를 설명하는 부분이었다.

    이 책을 쓸 때 나는 여러분이 프로그래밍에 대해서는 전혀 모른다고 가정했다. 그래도 여러분이 컴퓨터를 켜고 마우스를 움직일 수는 있다고 생각했다. 좀 더 많은 걸 알고 있다면 처음 몇 장은 가볍게 뛰어넘어도 좋다.

    C와 C++의 창시자(데니스 리치(Dennis Ritchie)와 비야네 스트루스트룹(Bjarne Stroustrup))는 천재들이고, 난 그들의 성과에 경외심을 느낀다. 물론 C와 C++는 위대한 언어이지만 초보자들(그리고 상대적으로는 더 숙련된 프로그래머들)이 앞으로 적어도 몇 년 동안 절대 사용하지 않을 기능들도 좀 있다. 어떤 언어 기능을 무시할 수도 있고, 왜 무시해야만 하는지를 이야기하는 게 난 전혀 두렵지 않다. 동시에 나는 여러분께 시간과 에너지를 절약해주는 C++의 멋진 기능들을 알려주려고 애쓸 생각이다.

    이 책은 실용적인 예제들에 관한 책이다. 그리고 재미있게 읽을 수 있는 책이기도 하다! 이 책의 예제 대부분은 유용하고 실용적이며 예제 자체가 매우 흥미롭다(퍼즐이라든지 게임을 주로 다루었으니까 말이다).

    그러니 두려워 말자! 난 데이터 추상 같은 용어들을 너무 많이 써서(너무 남용되는 경향이 있다) 여러분이 정신을 놓게 만들지 않을 것이다. 교수님들이 그런 용어들을 정말 좋아하긴 하지만 대다수의 사람들에게는 여전히 혼란스러운 개념일 뿐이다. 여러분이 정말로 알기 원하는 몇 가지 용어(객체지향과 다형성)에 대해서는 쉽게 이해해서 바로 사용할 수 있도록 견고하고 실용적인 예제로 설명한다.

    개정판에서 달라진 내용

    초판은 지난 몇 년간 정말 잘 팔렸다. 완결된 예제, 연습문제, 개념적인 기술에 대한 풍부한 예제를 통해 C++ 프로그래밍을 공부하는 여러 가지 방법을 제시하는 기념비적인 책이었다. 개정판은 이 책만의 강점을 다음과 같이 좀 더 강화시켰다.

    oC++11의 새 기능 설명: 이 책을 여러분이 손에 쥐었을 때쯤에는 이미 C++11이 C++의 새로운 표준이 돼 있을 것이다. 컴파일러 판매자들은 이 표준을 지원하기 위해 새로운 C++를 내놓았거나 내놓으려 할 것이다. 이 책은 새 표준에서 제공하는 많은 기능들을 깊이 있게 살펴본다.

    o퍼즐과 게임을 다루는 풍부한 예제: 2장이 끝날 때쯤이면 프로그램을 어떻게 입력하는지 배울 것이며, 한 페이지도 안 되는 코드로도 완전한 게임을 만들 수 있고, 게다가 컴퓨터가 취할 최적화 전략도 구현할 수 있을 것이다. 하지만 이건 그저 시작일 뿐이다. 개정판에는 초판보다 더 재미있는 퍼즐과 게임들을 더 많이 소개한다.

    o개념적인 기술에 대한 풍부한 사용 예제: 추상적인 사항들을 명확하게 설명한 것이야말로 초판의 가장 큰 강점이었다. 이번 판은 그 강점을 이어받아 좀 더 풍부한 예제를 덧붙였다.

    o풍부한 연습문제: 공부할 때 가장 좋은 방법은 연습이다. 많은 연습문제를 통해 예제가 어떻게 동작하는지, 왜 그렇게 동작하는지, 자신만의 기능을 추가하려면 어떻게 수정해야 하는지 알아 볼 수 있다.

    o뜻이 잘 통하는 문법 도식: 게임을 프로그래밍하고 직접 게임을 하는 것은 재미있다. 하지만 프로그래밍을 배우려면 직관적인 정보가 필요할 때도 있다. 이 책에서 사용한 문법 도식은 다양한 예제를 사용해 실제 언어가 동작하는 방법을 정확하고 명확하게 보여준다. 한 명령문, 한 명령문, 한 키워드, 한 키워드 단위로 말이다.

    o표준 템플릿 라이브러리(STL, standard template library) 소개: STL 매뉴얼 전체를 다룰 만한 지면이 부족했지만, 개정판에서는(초판과 달리) 이 멋진 C++ 기능에 대해 궁금해 하는 독자들을 위해 STL을 사용하면 시간과 에너지를 얼마나 절약할 수 있는지, 그리고 정말로 짧은 코드만으로도 강력한 애플리케이션을 만들 수 있음을 설명한다.

    o늘어난 참고 자료: 맨 뒤의 부록은 C++ 프로그램을 작성할 때 들춰볼 수 있는 작은 책상용 참고 자료로 만들었다. 개정판에서는 이 부록 부분을 크게 확장했다.

    o철학을 담은 칼럼: 책 전반에서 C++와 관련이 있는, 하지만 컴퓨터 과학, 프로그래밍의 역사, 수학, 철학과 인공지능 등과 같은 더 넓은 세상에 영향을 주는 영역으로 우회하기도 할 생각이다. 하지만 이런 칼럼은 따로 구분돼 있으니 주제의 흐름을 방해하진 않을 것이다. 심심할 때 읽어봐도 좋다.

    ★ 옮긴이의 말 ★

    나는 컴퓨터 공학을 전공하고 지금도 프로그래머로 일하고 있긴 하지만, 사실 대학에 들어오기 전까지는 C++라는 게 뭔지도 몰랐다. 게다가 내가 다닌 대학은 그다지 친절한 편도 아니어서 프로그래밍 언어 정도는 스스로 알아둬야 하는 기본 교양이었다. 그래서인지 이 책을 번역하면서 "내가 대학 1학년일 때 이 책이 있었다면 대학 생활이 얼마간은 편해졌을 텐데"라는 생각이 많이 들었다.

    hello, world로 시작하는 수많은 입문서들이 있고, 그 책들의 설명에 틀린 점도 없는데 왜 그렇게도 도움을 받지 못했던 걸까? 정말 C와 C++에 대해 아무것도 모르는 사람이 어떤 유용한 것(이를테면 학교 프로젝트)을 만들어낼 수 있으려면 뭘 알아야 하는 것일까? 아마 이 책을 집어 든 여러분도 이미 집에 몇 권쯤 쌓여있는 책들을 보면서 내가 문제인 것인지, 책이 문제인 것인지 진지하게 고민 좀 해봤을 것 같다.

    대학을 졸업한 지도 벌써 10년이 지난 지금, 그 의문에 대한 나의 답은 단순하게 정리됐다. "프로그래밍 언어도 언어다. 단지 대화하는 대상이 애매한 건 못 참는 컴퓨터이고, 대화 내용이 그다지 평범하지 않을 뿐이다."

    여러분은 계산하는 기계인 컴퓨터에 뭘 묻고 싶은가? 내일 증시 동향? 경마 우승마? 로또 번호? 아쉽게도 컴퓨터가 이런 질문에 대한 답을 주진 못한다. 하지만 컴퓨터는 백치천재들과도 같아서, 1,024년의 부활절이 언제였는지, 아니면 여러분의 128세 생일이 화요일인지 수요일인지는 자신만만하게 알려줄 수 있다. 그러니 이런 계산은 컴퓨터에 맡기자. 이 책의 저자처럼 '두려움을 느끼지 않고' 용감하게, 어떻게 하면 더 짧은 시간 내에 답을 얻어낼 수 있는지, 어떻게 하면 노동시간은 줄이면서도 더 어려운 계산을 하는 프로그램을 쉽게 만들 수 있는지는 그렇게 한걸음 내딛고 난 후 고민해도 상관없다.

    일단 시작하자. 여러분도, 그 많은 입문서들도 문제는 없었다. 하지만 이 책으로 시작하면 좀 더 쉬울 것이다.
    더보기

권호기사보기

권호기사 목록 테이블로 기사명, 저자명, 페이지, 원문, 기사목차 순으로 되어있습니다.
기사명 저자명 페이지 원문 기사목차
연속간행물 팝업 열기 연속간행물 팝업 열기