청구할인 안내(인터파크 제휴카드) | 안내
삼성카드 3% (3만원 이상 결제/최대 1만원 할인)
북피니언 롯데카드 30% (최대할인 3만원 / 3만원 이상 결제)
하나SK 북&카드 30% (최대할인 3만원 / 3만원 이상 결제)
EBS 롯데카드 20% (최대할인 3만원 / 3만원 이상 결제)
인터파크 NEW 우리V카드 10% (최대할인 3만원 / 3만원 이상 결제)
인터파크 현대카드 7% (최대할인 3만원 / 3만원 이상 결제)
Close

2013년 9월 9일 이후 누적수치입니다.

Programming: Principles and Practice Using C++ (Second Edition) 한국어판 [개정판]

원제 : Programming: Principles and Practice Using C++ (2nd Edition)
판매지수 419
?
판매지수란?
사이트의 판매량에 기반하여 판매량 추이를 반영한 인터파크 도서에서의 독립적인 판매 지수입니다. 현재 가장 잘 팔리는 상품에 가중치를 두었기 때문에 실제 누적 판매량과는 다소 차이가 있을 수 있습니다. 판매량 외에도 다양한 가중치로 구성되어 최근의 이슈도서 확인시 유용할 수 있습니다. 해당 지수는 매일 갱신됩니다.
Close
정가

60,000원

  • 54,000 (10%할인)

    3,000P (5%적립)

  • 중고판매

    이 책을 인터파크에
    판매하세요

할인혜택
적립혜택자동적립
배송정보
주문수량
감소 증가
  • 이벤트/기획전

  • 연관도서(10)

  • 사은품(4)

책소개

C++ 창시자가 전해주는 프로그래밍의 이상과 원리!

'오래가는 프로그래머', '존경받는 프로그래머'가 되고 싶다면 초보 프로그래머에서 익숙한 개발자까지 누구나 곁에 두고 읽어야 할 필독서다. 실용적인 예제를 바탕으로 최신 C++ 표준인 C++11과 C++14의 새로운 기능은 물론, 구조적 프로그래밍과 객체지향 프로그래밍, 제네릭 프로그래밍을 비롯하여 현대적인 프로그래밍 언어를 관통하는 프로그래밍 패러다임의 진수를 체득할 수 있다!

출판사 서평

[이 책에서 다루는 내용]

- 실전 프로그래밍을 위한 준비 운동
소프트웨어 개발을 비롯한 기술적인 분야의 복잡한 프로그램을 작성할 수 있다!

- 기본적인 개념과 기법 완벽 마스터
기본적인 개념과 기법을 다른 입문서보다 심도 있게 다룸으로써 유용하고 정확하며, 유지 보수가 쉽고 효율적인 코드를 작성할 수 있다.

- 최신 C++(C++11과 C++14)를 이용한 프로그래밍
객체 지향 프로그래밍과 제네릭 프로그래밍을 비롯한 일반적인 프로그래밍 입문서이자, 전 세계의 소프트웨어에서 가장 널리 사용하는 언어 중 하나인 C++ 프로그래밍 언어의 기초를 확고히 다질 수 있다. 더불어 현대적인 C++ 프로그래밍 기법은 물론, C++ 표준 라이브러리와 프로그래밍을 쉽게 만들어 주는 C++11과 C++14의 기능을 체득한다.

- 초보자는 물론 새로운 무언가를 배우고자 하는 모두를 위한 책
프로그래밍 경험이 전혀 없는 사람을 고려해 설계한 책으로, 수년간 수천 명의 대학 신입생을 대상으로 그 효과가 입증됐으며, 자습용으로도 널리 사용되고 있다. 더 나아가 많은 실무자와 우수한 학생에게 고수의 비법을 전수함으로써 새로운 깨달음을 얻게 한다.

- 폭넓은 시야로 배우는 프로그래밍
책의 전반부에서는 광범위한 기본 개념과 설계 기법, 프로그래밍 기법, 언어의 기능, 라이브러리를 설명함으로써 입력과 출력, 계산, 간단한 그래픽을 이용한 프로그램을 작성할 수 있게 해준다. 책의 후반부에서는 특화된 주제(텍스트 처리와 출력, 계산, C 프로그래밍 언어 등)를 다루며, 풍부한 참고 자료를 제공한다. 소스코드를 비롯한 독자 지원은 저자의 홈페이지에서 찾을 수 있다.

[이 책의 대상 독자]

학생들에게 전하는 말
지금까지 우리가 텍사스 A&M 대학교에서 이 책으로 가르쳤던 1학년 학생의 60%가 예전에 프로그래밍을 했던 경험이 있었고, 나머지 40%는 태어나서 단 한 줄의 코드도 본 적이 없었다. 그래도 대부분의 학생들이 성공적으로 수업을 마쳤고, 여러분도 할 수 있으리라 믿는다.
이 책을 꼭 수업용 교재로 읽을 필요는 없으며, 자습용 교재로도 많이 쓰인다. 하지만 이 책으로 수업을 듣든 혼자 공부하든 상관없이 누군가와 함께 공부하길 바란다. 프로그래밍은 외롭게 혼자 하는 작업이 아니다. 대부분의 사람들은 같은 목표를 공유하는 그룹의 일원일 때 더 효율적으로 일하고, 더 빨리 배운다. 친구와 함께 배우고, 문제에 대해 토론하는 일은 단순한 잡담이 아니라, 우리를 진일보시키는 가장 효율적이고 즐거운 방법이다. 친구와 함께 일하려면 적어도 여러분의 생각을 명확하게 표현해야 하고, 이는 여러분이 얼마나 잘 이해하고 기억하는지를 시험할 수 있는 최고의 방법이다. 여러분 스스로 모든 모호한 점과 프로그래밍 환경의 문제를 해결해야 할 필요는 없지만, 설사 교사가 시키지 않더라도 실습문제를 건너 뛰거나 충분한 연습문제를 풀지 않음으로써 여러분 스스로를 속이지 말자. 다른 분야와 마찬가지로 프로그래밍을 익히려면 연습이 필요하다는 점을 명심하자. 코드를 직접 작성하지 않으면 이 책을 읽는 일은 그저 무의미한 이론 공부에 불과하다.

대부분의 학생들이 , 특히 사려가 깊은 학생일수록 이렇게 열심히 공부할 만한 가치가 있는지 의구심이 들 수 있다. 그럴 때는 잠시 쉬었다가 지금 이 '들어가며'를 다시 읽고, 1장('컴퓨터, 사람, 프로그래밍')과 22장('프로그래밍의 이상과 역사')을 살펴보자. 그 곳에서 내가 발견한 프로그래밍의 흥미로운 점과 프로그래밍을 바탕으로 세상에 긍정적인 공헌을 할 수 있다고 생각하는 이유를 밝힌다. 나의 교육 철학과 접근 방식이 궁금하다면 0장('독자에게 전하는 글')을 참고하라.
이 책이 너무 두껍다고 겁먹지 말자. 이 책이 두꺼워진 주요 이유는 내가 학생들이 필요한 부분의 설명만 찾게 하기보다, 반복적으로 설명하고 예제를 추가하는 방식을 선호하기 때문이다. 두 번째 이유는 책의 뒤쪽 절반 정도는 임베디드 시스템 프로그래밍과 텍스트 분석, 수치 계산 등 여러분이 관심 있는 분야에 대해 찾아볼 수 있는 참고 자료나 추가 자료로 구성했기 때문이다.
마지막으로, 너무 성급하지 말라. 새롭고 가치 있는 기술을 배우는 일은 언제나 시간을 요하며, 그럴 만한 가치가 있는 법이다.

교사에게 전하는 말
이 책은 전형적인 컴퓨터 과학 101 수업(개론 수업) 교재가 아니라, 실제로 작동하는 소프트웨어를 개발하는 방법을 주로 다룬다. 따라서 보통 컴퓨터 과학 학생들이 배우는 내용(튜링 완전성(turing completeness), 상태 기계(state machine), 이산 수학(discrete mathmatics), 촘스키 그래머(Chomsky grammars) 등)을 다루지 않는다. 학생들이 유치원 때부터 컴퓨터를 다양한 곳에 활용해봤다는 가정하에 하드웨어(hardware)에 대해서도 설명하지 않는다. 컴퓨터 과학에 있어 가장 중요한 주제들도 되도록 언급하지 않는다. 이 책은 오직 프로그래밍(소프트웨어를 개발하는 방법)만을 다룬다. 따라서 전통적인 수업 과정에서 다루는 내용보다 좁은 주제에 집중한다. 컴퓨터 과학은 수업 한 번으로 배울 수 없으므로 여기서는 오직 한 가지, 프로그래밍을 잘 하는 데 집중할 것이다. 이 책을 컴퓨터 과학이나 컴퓨터 공학, 전자 공학(1학년 학생 중엔 전자 공학도가 많다), 정보 과학 등의 교과 과정에서 채택한다면 다른 수업과 겸해서 개론 수업의 일부로 활용하길 바란다.
0장('독자에게 전하는 글')에서 나의 교육 철학과 일반적인 접근방식을 알 수 있는데, 학생들이 그러한 생각에 따라 공부할 수 있게 전해주기 바란다.

[이 책의 구성]
1부. '기본 다지기'에서는 C++ 언어를 이용한 프로그래밍의 기본 개념들과 기법을 살펴보고 코드 작성을 시작하는 데 필요한 라이브러리의 기능을 알아본다. 여기에는 타입 시스템(type system)과 산술 연산, 제어 구조, 오류 처리, 설계와 구현, 함수(function) 사용법, 사용자 정의 타입(user-defined type) 등을 다룬다.

2부. 입력과 출력에서는 키보드와 파일로부터 문자나 숫자 입력을 받고, 그에 상응하는 출력을 모니터나 파일에 내보내는 방법을 설명한다. 그리고 수치 데이터와 텍스트, 기하학적 도형을 시각적으로 출력하고, 그래픽 사용자 인터페이스GUI를 바탕으로 입력을 받아들이는 방법을 살펴본다.

3부. 데이터와 알고리즘에서는 C++ 표준 라이브러리에 포함된 컨테이너와 알고리즘 프레임 워크인 표준 템플릿 라이브러리(STL, Standard Template Library)에 초점을 맞춘다. 컨테이너(vector, list, map 등)의 사용법과 내부 구현 방식(포인터 활용, 배열, 동적 메모리, 예외, 템플릿)을 살펴본다. 그리고 표준 라이브러리의 알고리즘(sort, find, inner_product 등) 설계와 사용법을 보여준다.

4부. 시야 넓히기에서는 프로그래밍의 이상과 역사, 여러 가지 응용 예(행렬 계산, 텍스트 조작, 테스트, 임베디드 시스템 프로그래밍 등)와 C 언어의 개요를 바탕으로 프로그래밍을 여러 각도에서 살펴본다.

부록에서는 C++ 언어 자체에 대한 요약과 표준 라이브러리의 기능, 통합 개발 환경(IDE, Integrated Development Environment)과 그래픽 사용자 인터페이스 라이브러리 사용법 등 수업 시간에 다루기 적절하지 않은 유용한 정보를 제공한다.

[지은이의 말]
프로그래밍(programming)은 주어진 문제의 해법을 컴퓨터가 실행할 수 있는 형태로 표현하는 기술이다. 프로그래밍에서 가장 공들여야 할 부분이 바로 그 해답을 찾고 가다듬는 일이며, 이 해답을 프로그래밍하는 과정에서 문제를 더 명확히 이해할 수 있다.
이 책은 예전에 한 번도 프로그래밍을 해본 적이 없지만 프로그래밍을 열심히 배우려는 의지가 있는 사람을 위한 책으로, C++ 프로그래밍 언어를 이용해서 프로그래밍의 이론과 실전 기술을 이해할 수 있게 만들었다. 나는 여러분이 최신 기술을 이용해서 간단하고 실용적인 프로그래밍을 하는 데 충분한 지식과 경험을 얻을 수 있길 바란다. 그렇다면 그러한 목적을 달성하는 데 얼마나 많은 시간이 필요할까? (보통 난이도의 수업을 네 개 정도 수강한다면) 대학교 1학년 과정에서 한 학기 동안 진행하면 적당하다. 혼자 공부한다면 그보다는 오래 걸린다(아마도 14주 동안 매주 15시간 정도 학습).

석 달이란 시간이 짧지는 않지만 배워야 할 것이 많으며, 지금으로부터 한 시간쯤 후에는 첫 번째 프로그램을 간단히 작성해본다. 그리고 모든 학습은 점진적으로 진행한다. 각 장에서는 새롭고 유용한 개념을 소개하고, 실전에서 쓸 만한 예제를 바탕으로 개념을 설명한다. 학습을 진행하다 보면 컴퓨터가 여러분이 원하는 일을 수행할 수 있게 아이디어를 코드(code)로 표현하는 능력이 점차 향상될 것이다. 나는 절대로 '한 달 동안 이론을 공부한 후에 여러분이 이론을 활용할 수 있는지 시험'해보는 방식으로 가르치지 않는다.

이쯤에서 궁금한 점이 있다. 여러분은 왜 프로그래밍을 배우려 하는가? 우리의 문명은 소프트웨어(software)를 기반으로 유지된다. 소프트웨어를 이해하지 못하면 여러분은 '마법'을 믿는 수준에서 벗어날 수 없고, 가장 흥미롭고 유익하고 사회적으로 유용한 기술 분야를 접할 수도 없다. 그래서 나는 프로그래밍에 대해 말할 때 매우 광범위한 분야를 논한다. 그래픽 사용자 인터페이스(GUI, Graphical User Interfaces)를 탑재한 개인용 컴퓨터에서부터 공학적인 수치 계산, (디지털 카메라와 자동차, 휴대폰 등에 들어가는) 임베디드 시스템(embedded system) 제어 응용 프로그램, 텍스트 편집기에 이르기까지 인간 생활의 많은 부분과 사업적인 응용 분야에서 그 예를 볼 수 있다. 그리고 수학과 마찬가지로 프로그래밍도 잘 갈고 닦으면 인간의 사고력 배양에 도움을 주는 값진 지적 활동이 될 수 있다. 다행히도 프로그래밍은 컴퓨터가 주는 피드백(feedback) 덕분에 대부분의 수학보다 손에 잡히는 무언가로서, 더 많은 사람이 수학보다 쉽게 접근할 수 있다. 여러분은 프로그래밍을 바탕으로 세상의 경계를 넓히고, 바라건대 더 좋은 방향으로 세상을 변화시킬 수 있다. 마지막 이유를 들자면 프로그래밍은 매우 즐거운 일이기도 하다.

그렇다면 왜 C++인가? 프로그래밍 언어 없이는 프로그래밍을 배울 수 없고, C++는 실세계의 소프트웨어에서 활용하는 주요 개념과 기법을 모두 지원하기 때문이다. 그리고 C++는 가장 널리 쓰이는 프로그래밍 언어 중의 하나로, 거의 모든 분야에서 활용하고 있다. 깊은 바다 밑바닥부터 화성 표면에 이르기까지, 어디서나 C++ 응용 프로그램을 찾아볼 수 있다. C++는 비영리 국제 표준화 단체에서 정교하고 포괄적으로 정의됐고, 어떤 종류의 컴퓨터에서나 그 종류에 맞는 고품질의 무료 구현체(implementations)를 구할 수 있다. C++로 배우는 대부분의 프로그래밍 개념은 C와 C#, 포트란(Fortran), 자바(Java) 등의 언어에서도 적용할 수 있다. 마지막 이유는 내가 우아하고 효율적인 코드를 작성할 때 가장 선호하는 언어가 바로 C++이기 때문이다.

하지만 이 책이 가장 쉬운 프로그래밍 입문서가 아니라는 점을 알아두자. 애초에 그렇게 만들 생각도 없었다. 나는 여러분이 실전 프로그래밍의 기본을 다질 수 있기를 바랄 뿐이다. 근래의 소프트웨어는 불과 몇 년 전에 나온 신기술을 바탕으로 한다는 점에서 그마저도 쉬운 목표는 아니다.

나는 기본적으로 여러분의 목적이 프로 정신을 바탕으로 책임감 있게 다른 사람들에게 유용한 고품질의 시스템을 만드는 데 있다고 가정한다. 따라서 나는 가르치고 배우기 쉬운 주제보다 실전 프로그래밍을 시작하는 데 필요한 주제를 다룬다. 이러한 주제를 다룰 때는 먼저 그 주제에 대해 설명하고, 개념을 예시하고, 해당 기술을 구현할 때 필요한 언어의 기능을 살펴본 후 제공된 연습문제를 푸는 순서로 진행한다. 여러분이 그저 장난감 프로그램을 이해하는 정도에서 만족한다면 내가 전달하려고 하는 내용보다 훨씬 적은 지식만 습득하게 된다. 그렇다고 해서 별로 실용성 없는 내용으로 여러분의 시간을 빼앗지는 않겠다. 이 책에서 어떤 주제를 다룬다면 그 주제가 여러분에게 필요하기 때문이다.

하지만 여러분이 다른 사람의 코드를 제대로 이해하지 않고 그대로 가져다 쓰거나, 스스로 많은 코드를 추가할 생각이 없다면 굳이 이 책을 볼 필요는 없다. 그렇다면 다른 책을 보거나 다른 언어를 사용하라. 여러분이 생각하는 프로그래밍이 그런 것이라면 왜 그런 생각을 하게 됐고, 그런 생각이 여러분의 필요를 충족할 수 있는지 다시 한 번 생각해보자. 사람들은 프로그래밍의 가치와 복잡성을 과소평가하는 경향이 있다. 물론 내가 설명하는 측면의 소프트웨어와 여러분이 필요한 것의 괴리로 인해 여러분이 프로그래밍을 싫어하지는 말았으면 한다. 정보 기술(Information technology)의 세계에는 프로그래밍 지식을 요구하지 않는 분야도 많다. 이 책은 단지 제대로 된 프로그램을 만들거나 분석하고 싶은 사람들을 위한 책이다.

이 책의 구성과 실용적인 목적으로 보자면 이미 C++를 조금 알고 있는 사람이나 다른 언어를 알고 있는 상태에서 C++를 배우려는 사람이 참고서로 사용할 수도 있다. 여러분이 이 두 가지 경우 중 하나에 속한다면 책을 다 읽는 데 얼마나 시간이 걸릴지는 모르겠지만 되도록 많은 연습문제를 풀기 바란다. 이를 바탕으로 오래되고 익숙한 스타일로 프로그래밍할 때 생기는 일반적인 문제를 더 적합한 최신 기술로 해결할 수 있다. 지금까지 예전 방식으로 C++를 배웠다면 7장에 다다르기 전에 놀랍고 유용한 무언가를 발견할 것이다. 여러분의 이름이 스트롭스트룹이 아닌 이상, 여기서 설명하는 C++는 여러분이 알고 있던 C++가 아닐 테니까.

프로그래밍을 배우려면 프로그램을 직접 작성해야 한다. 이런 점에서 프로그래밍은 실용적인 요소를 포함한 종목과 비슷하다. 예를 들어 수영과 악기 연주, 자동차 운전은 연습을 하지 않고 책만 읽어서는 배울 수 없다. 마찬가지로 많은 코드를 직접 읽고 작성하지 않으면 프로그래밍을 배울 수 없다. 따라서 이 책에서는 설명하는 내용이나 도식과 밀접하게 관련된 예제 코드를 중점적으로 다룬다. 이를 바탕으로 프로그래밍의 이상과 개념, 이론을 이해하고 이를 표현하는 데 필요한 언어적 구성 요소를 익힌다. 하지만 이러한 이해가 필수적이라고해도 그것만으로는 실용적인 프로그래밍 기술을 얻을 수 없다. 즉, 연습문제를 풀어봄으로써 코드를 작성하고 컴파일(compile)하고 실행하는 도구에 익숙해져야 한다. 프로그래밍 학습에 있어 코드 작성 말고는 도리가 없다. 게다가 코딩은 즐거운 일이잖은가!

물론 코딩이 프로그래밍의 전부는 아니다. 프로그래밍은 몇 가지 규칙을 따르고 매뉴얼을 읽는 일보다 훨씬 많은 일을 포함한다. 단언컨대 이 책은 C++ 문법에 국한되지 않는다. 프로그래밍의 기본적인 이상과 이론, 기술에 대한 이해가 좋은 프로그래머(programmer)의 자질이기 때문이다. 이런 프로그래머가 잘 설계된 코드를 작성하지 않으면 정확하고 견고하고 관리하기 쉬운 시스템(system)은 있을 수 없다. 그리고 이런 기본이야 말로 영원한 법이다. 오늘날 사용하는 언어와 도구가 진화하거나 대체돼도 기본은 여전히 기본이다.

그렇다면 컴퓨터 과학(computer science)과 소프트웨어 공학(software engineering), 정보 기술은 무엇일까? 모두 다 프로그래밍을 말하는가? 물론 아니다. 프로그래밍은 컴퓨터에 관련된 모든 분야의 기저에 깔린 기초적인 주제이며, 균형 잡힌 컴퓨터 과학 학습 과정의 일부다. 앞으로 알고리즘(algorithm)과 자료 구조(data structure), 사용자 인터페이스(user interface), 데이터 처리, 소프트웨어 공학의 주요 개념과 기술을 설명하겠지만, 이 책이 각 분야의 철저하고 균형잡힌 학습을 대체할 수는 없다.

코드는 아름답고 유용해질 수 있다. 이 책의 목적은 여러분이 그러한 사실을 실감하게하는 데 있다. 코드가 아름답다는 말의 의미를 깨닫고, 아름다운 코드를 만드는 데 필요한 이론과 실전 기술을 익히는 데 있다. 여러분의 프로그래밍에 행운이 함께 하기를!

[옮긴이의 말]
'재즈'를 소재로 다룬 영화로는 공전의 히트를 기록한 영화 [위플래쉬]의 주인공 앤드류는 세계 최고의 드러머가 되는 꿈에 모든 것을 바칩니다. 그러나 영화 내내 앤드류가 한 일이라고는 딱 한 가지, 단 한 번의 '더블 타임 스윙'을 완성하기 위해 똑같은 리듬을 수도 없이 반복해서 연습하는 일뿐입니다. 오랫동안 사랑했던 여인마저 버릴 정도로, 손에서 피가 흘러 더 이상 움직일 수 없을 정도로 그는 '연습'에 천착합니다.

사람마다 이 영화를 보며 느끼는 점이야 다르겠지만, 저는 '기본기'의 중요성을 새삼 되새기게 됐습니다. 그것이 운동이든, 학문이든, 사람 사이의 관계든 모든 분야를 관통하는 하나의 화두는 역시 '기본기'가 아닐까요? 프로그래밍도 마찬가지라고 생각합니다. 응용 분야가 무엇이든, 사용하는 언어가 무엇이든, 모든 것을 관통하는 기본기야말로 '오래가는 프로그래머',
'존경받는 프로그래머'가 되는 지름길입니다.

그렇다면 프로그래밍의 기본기는 무엇일까요? 저자가 책에서 여러 번 강조하듯이 '프로그래밍은 우리의 생각을 컴퓨터가 해석할 수 있는 언어로 명확하고 효과적으로 표현하는 일'이라고 할 수 있습니다. 결국 프로그래밍에 있어 중요한 점은 어떤 언어를 사용하느냐가 아니라 아이디어를 '어떻게' 표현하느냐 하는 점입니다.

하지만 '기본기'라는 관점에서 프로그래밍을 조명하는 책은 시중에서 찾아보기 어렵습니다. 특히 궁극의 무림 고수에게 '기본기'를 전수받는 기회는 흔치 않습니다. 다행히도 이 책의 저자 비야네 스트롭스트룹은 여러분에게 탄탄한 기본기를 전수해줄 수 있는 고수 중의 고수입니다. 그냥 고수가 아니라 전 세계에서 가장 널리 쓰이는 언어인 C++를 창시한 궁극의 고수입니다. 우리는 이 책에서 저자가 수십 년 동안 쌓아온 기본기를 엿볼 수 있습니다.

여기서 말하는 기본기란 여타 프로그래밍 서적에서 쉽게 볼 수 있는 C++의 문법이 아닙니다. 단순한 언어 차원의 문법을 뛰어넘는, 구조적 프로그래밍과 객체 지향 프로그래밍, 제네릭 프로그래밍을 비롯한 현대적인 프로그래밍 언어를 관통하는 프로그래밍 패러다임의 진수를 체득할 수 있습니다. 그리고 이를 바탕으로 아이디어를 명확히 반영하는 코드, 유지 보수가 쉬운 코드, 성능 측면의 효율성을 갖춘 코드, 버그가 없는 정확한 코드를 작성하는 방법과 더 나아가 코드를 검증하고 테스트하는 방법을 설명합니다.

그렇다고 이 책이 고리타분한 이론서는 아닙니다. '구슬이 서말이라도 꿰어야 보배'라는 말처럼 아무리 멋진 이론이라도 현실에 적용하지 못하면 공허한 말장난일 뿐입니다. 이 책은 이론적인 설명과 더불어 실용적인 예제를 바탕으로 배운 내용을 충분히 연습하고 적용할 수 있는 기회를 제공합니다. 더불어 새로운 C++ 표준인 C++11과 C++14에 대한 내용도 폭넓게 다루고 있기에, 이미 프로그래밍에 익숙한 개발자라도 미처 알지 못했던 기본기나 기법을 발견하게 될 것입니다. 부디 이 책이 이제 막 프로그래밍을 시작하는 초심자는 물론, 프로그래밍에 익숙한 개발자 모두에게 이상적인 소프트웨어 개발을 향한 나침반이 되기를 바랍니다.

목차

0장 독자에게 전하는 글
0.1 이 책의 구성
0.2 나의 교육 철학
0.3 프로그래밍과 컴퓨터 과학
0.4 창의성과 문제 해결
0.5 독자 의견
0.6 참고 자료
0.7 지은이 소개

1장 컴퓨터, 사람, 프로그래밍
1.1 소개
1.2 소프트웨어
1.3 사람
1.4 컴퓨터 과학
1.5 컴퓨터의 광범위한 쓰임새
1.6 프로그래머의 이상

1부 기본 다지기

2장 Hello, World!

2.1 프로그램
2.2 고전적인 첫 번째 프로그램
2.3 컴파일 과정
2.4 링크 과정
2.5 프로그래밍 환경

3장 객체, 타입, 값
3.1 입력
3.2 변수
3.3 입력과 타입
3.4 연산과 연산자
3.5 대입과 초기화
3.6 복합 대입 연산자
3.7 이름
3.8 타입과 객체
3.9 타입 안전성

4장 계산
4.1 계산
4.2 목적과 도구
4.3 표현식
4.4 구문
4.5 함수
4.6 vector
4.7 언어 기능

5장 오류
5.1 소개
5.2 오류의 원인
5.3 컴파일 시간 오류
5.4 링크 시간 오류
5.5 실행 시간 오류
5.6 예외
5.7 논리 오류
5.8 평가
5.9 디버깅
5.10 사전 조건과 사후 조건
5.11 테스팅

6장 프로그램 작성
6.1 문제
6.2 문제 고찰
6.3 계산기로 복귀!
6.4 문법
6.5 문법에서 코드로
6.6 첫 번째 버전 시도
6.7 두 번째 버전 시도
6.8 토큰 스트림
6.9 프로그램 구조

7장 프로그램 완성
7.1 소개
7.2 입력과 출력
7.3 오류 처리
7.4 음수
7.5 나머지: %
7.6 코드 정리
7.7 오류 복구
7.8 변수

8장 언어적 세부 사항: 함수 등
8.1 언어의 기술적 세부 사항
8.2 선언과 정의
8.3 헤더 파일
8.4 유효 범위
8.5 함수 호출과 반환
8.6 평가 순서
8.7 네임스페이스

9장 언어적 세부 사항: 클래스 등
9.1 사용자 정의 타입
9.2 클래스와 멤버
9.3 인터페이스와 구현
9.4 클래스로의 진화
9.5 열거형
9.6 연산자 오버로딩
9.7 클래스 인터페이스
9.8 Date 클래스

2부 입력과 출력
10장 입출력 스트림
10.1 입력과 출력
10.2 입출력 스트림 모델
10.3 파일
10.4 파일 열기
10.5 파일 읽고 쓰기
10.6 입출력 오류 처리
10.7 값 한 개 읽기
10.8 사용자 정의 출력 연산자
10.9 사용자 정의 입력 연산자
10.10 표준 입력 루프
10.11 구조화된 파일 읽기

11장 입출력 맞춤화
11.1 정규성과 비정규성
11.2 출력 형식화
11.3 파일 열기와 위치 지정
11.4 문자열 스트림
11.5 행 지향 입력
11.6 문자 분류
11.7 비표준 구분자 사용
11.8 기타 훨씬 더 많은 것

12장 디스플레이 모델
12.1 왜 그래픽스인가?
12.2 디스플레이 모델
12.3 첫 번째 예제
12.4 GUI 라이브러리 사용
12.5 좌표
12.6 도형
12.7 Shape 사용
12.8 프로그램 실행

13장 그래픽스 클래스
13.1 그래픽스 클래스의 개요
13.2 Point와 Line
13.3 Lines
13.4 Color
13.5 Line_style
13.6 Open_polyline
13.7 Closed_polyline
13.8 Polygon
13.9 Rectangle
13.10 명명하지 않은 객체 관리
13.11 Text
13.12 Circle
13.13 Ellipse
13.14 Marked_polyline
13.15 Marks
13.16 Mark
13.17 Image

14장 그래픽스 클래스 설계
14.1 설계 원칙
14.2 Shape
14.3 기반 클래스와 파생 클래스
14.4 객체 지향 프로그래밍의 이점

15장 함수와 데이터의 그래프 그리기
15.1 소개
15.2 간단한 함수의 그래프 그리기
15.3 Function
15.4 Axis
15.5 근사치
15.6 데이터의 그래프 그리기

16장 그래픽 사용자 인터페이스
16.1 사용자 인터페이스 방식
16.2 Next 버튼
16.3 간단한 윈도우
16.4 Button과 기타 Widget
16.5 예제
16.6 제어 반전
16.7 메뉴 추가
16.8 GUI 코드 디버깅

3부 데이터와 알고리즘

17장 벡터와 자유 저장 영역

17.1 소개
17.2 벡터의 기본
17.3 메모리와 주소, 포인터
17.4 자유 저장 영역과 포인터
17.5 소멸자
17.6 요소에 접근
17.7 클래스 객체를 가리키는 포인터
17.8 타입 다루기: void*와 캐스트
17.9 포인터와 참조
17.10 this 포인터

18장 벡터와 배열
18.1 소개
18.2 초기화
18.3 복사
18.4 필수적인 연산
18.5 vector 요소에 접근
18.6 배열
18.7 예제: 회문

19장 벡터, 템플릿, 예외
19.1 문제 정의
19.2 크기 변경
19.3 템플릿
19.4 구간 검사와 예외
19.5 자원과 예외

20장 컨테이너와 반복자
20.1 데이터 저장과 처리
20.2 STL의 이상
20.3 시퀀스와 반복자
20.4 연결 리스트
20.5 다시 보는 vector 일반화
20.6 예제: 간단한 텍스트 편집기
20.7 vector와 list, string
20.8 우리가 만든 vector를 STL에 비슷하게 만들기
20.9 내장형 배열을 STL에 접목
20.10 컨테이너 요약

21장 알고리즘과 맵
21.1 표준 라이브러리 알고리즘
21.2 가장 간단한 알고리즘: find()
21.3 범용적인 검색 : find_if()
21.4 함수 객체
21.5 수치 알고리즘
21.6 연관 컨테이너
21.7 복사
21.8 정렬과 검색
21.9 컨테이너 알고리즘

4부 시야 넓히기

22장 프로그래밍의 이상과 역사

22.1 역사와 이상, 프로 정신
22.2 간략히 살펴보는 프로그래밍 언어의 역사

23장 텍스트 조작
23.1 텍스트
23.2 문자열
23.3 입출력 스트림
23.4 맵
23.5 문제 제기
23.6 정규 표현식
23.7 정규 표현식을 이용한 검색
23.8 정규 표현식 문법
23.9 정규 표현식 매칭
23.10 참고 자료

24장 수치 계산
24.1 소개
24.2 크기와 정밀도, 오버플로
24.3 배열
24.4 C 스타일 다차원 배열
24.5 Matrix 라이브러리
24.6 예제: 선형 방정식 풀기
24.7 난수
24.8 표준 수학 함수
24.9 복소수
24.10 참고 자료

25장 임베디드 시스템 프로그래밍
25.1 임베디드 시스템
25.2 기본적인 개념
25.3 메모리 관리
25.4 주소와 포인터, 배열
25.5 비트, 바이트, 워드
25.6 코딩 표준

26장 테스팅
26.1 우리의 목적
26.2 증명
26.3 테스팅
26.4 테스팅을 쉽게 해주는 설계
26.5 디버깅
26.6 성능
26.7 참고 자료

27장 C 프로그래밍 언어
27.1 C와 C++: 형제 사이
27.2 함수
27.3 기타 사소한 차이점
27.4 자유 저장 영역
27.5 C 스타일 문자열
27.6 입력과 출력: stdio
27.7 상수와 매크로
27.8 매크로
27.9 예제: 침습적 컨테이너

5부 부록

부록 A 언어 요약
A.1 일반적인 내용
A.2 리터럴
A.3 식별자
A.4 유효 범위와 저장 영역의 유형, 수명
A.5 표현식
A.6 구문
A.7 선언
A.8 내장형 타입
A.9 함수
A.10 사용자 정의 타입
A.11 열거형
A.12 클래스
A.13 템플릿
A.14 예외
A.15 네임스페이스
A.16 별칭
A.17 전처리기 지시어

부록 B 표준 라이브러리 요약
B.1 개요
B.2 오류 처리
B.3 반복자
B.4 컨테이너
B.5 알고리즘
B.6 STL 유틸리티
B.7 입출력 스트림
B.8 문자열 조정자
B.9 수치
B.10 시간
B.11 C 표준 라이브러리 함수
B.12 기타 라이브러리

부록 C 비주얼 스튜디오 시작
C.1 프로그램 실행
C.2 비주얼 스튜디오 설치
C.3 프로그램 작성과 시작

부록 D FLTK 설치
D.1 소개
D.2 FLTK 다운로드
D.3 FLTK 설치
D.4 비주얼 스튜디오에서 FLTK 사용
D.5 테스트

부록 E GUI 구현
E.1 콜백 구현
E.2 Widget 구현
E.3 Window 구현
E.4 Vector_ref
E.5 예제: Widget 조작

관련이미지

저자소개

비야네 스트롭스트룹(Bjarne Stroustrup) [저] 신작알림 SMS신청 작가DB보기
생년월일 -
출생지 -
출간도서 0종
판매수 0권

C++ 프로그래밍 언어를 설계하고 초기 구현체를 만들었으며, 덴마크의 오르후스대학교를 졸업하고 영국의 케임브리지대학교에서 박사 학위를 받았다. 모건 스탠리에서 기술부서 이사로 재직 중이며, 컬럼비아 대학교 컴퓨터공학과의 객원교수이자 텍사스 A&M 대학교 컴퓨터공학과의 연구 특임교수이며, 미국 공학회의 일원이다. 학계에서 일하기 전에는 AT&T 벨연구소에서 수십 년간 재직했다.
[The C++ Programming Language, Fourth Edition](에이콘출판, 2015년 근간)의 저자다.

생년월일 -
출생지 -
출간도서 0종
판매수 0권

한양대학교 컴퓨터 전공을 마치고, 현재 삼성SDS 연구소에 책임 연구원으로 재직 중이다. 회사에서든 일상에서든 새롭고 흥미로운 기술이라면 무엇이든 배우고 즐길 준비가 돼 있으며, 백발노인이 돼서도 끝없이 탐구하고 창조하는 사람이 되는 것을 인생의 목표로 삼고 있다. 옮긴 책으로는 에이콘출판사에서 출간한 [Chef, 클라우드 서비스 설정관리 자동화 도구](2015)와 [JavaScript Testing](2014), [WordPress: The Missing Manual 워드프레스 사용자 가이드](2014)가 있다.

리뷰

0.0 (총 0건)

기대평

작성시 유의사항

평점
0/200자
등록하기

기대평

0.0

교환/환불

교환/환불 방법

‘마이페이지 > 취소/반품/교환/환불’ 에서 신청함, 1:1 문의 게시판 또는 고객센터(1577-2555) 이용 가능

교환/환불 가능 기간

고객변심은 출고완료 다음날부터 14일 까지만 교환/환불이 가능함

교환/환불 비용

고객변심 또는 구매착오의 경우에만 2,500원 택배비를 고객님이 부담함

교환/환불 불가사유

반품접수 없이 반송하거나, 우편으로 보낼 경우 상품 확인이 어려워 환불이 불가할 수 있음
배송된 상품의 분실, 상품포장이 훼손된 경우, 비닐랩핑된 상품의 비닐 개봉시 교환/반품이 불가능함

소비자 피해보상

소비자 피해보상의 분쟁처리 등에 관한 사항은 소비자분쟁해결기준(공정거래위원회 고시)에 따라 비해 보상 받을 수 있음
교환/반품/보증조건 및 품질보증 기준은 소비자기본법에 따른 소비자 분쟁 해결 기준에 따라 피해를 보상 받을 수 있음

기타

도매상 및 제작사 사정에 따라 품절/절판 등의 사유로 주문이 취소될 수 있음(이 경우 인터파크도서에서 고객님께 별도로 연락하여 고지함)

배송안내

  • 인터파크 도서 상품은 택배로 배송되며, 출고완료 1~2일내 상품을 받아 보실 수 있습니다

  • 출고가능 시간이 서로 다른 상품을 함께 주문할 경우 출고가능 시간이 가장 긴 상품을 기준으로 배송됩니다.

  • 군부대, 교도소 등 특정기관은 우체국 택배만 배송가능하여, 인터파크 외 타업체 배송상품인 경우 발송되지 않을 수 있습니다.

  • 배송비

도서(중고도서 포함) 구매

2,000원 (1만원이상 구매 시 무료배송)

음반/DVD/잡지/만화 구매

2,000원 (2만원이상 구매 시 무료배송)

도서와 음반/DVD/잡지/만화/
중고직배송상품을 함께 구매

2,000원 (1만원이상 구매 시 무료배송)

업체직접배송상품 구매

업체별 상이한 배송비 적용