책소개 |
|
저자 및 역자 소개 |
|
목차 |
|
![]() |
• 출판사 리뷰 |
![]() |
잘 다져진 개념 위에서 쉽게 구현하는 C++의 핵심
Beginner가 제안하는 4단계 학습법! 1단계: 개념 이해 풍부한 그림과 명쾌한 설명으로 개념에 대한 이해를 극대화하고 학습 재미에 푹 빠질 수 있도록 돕습니다. 2단계: 예제 실습 적절한 기본예제를 통해 이론에만 치우치지 않는 살아있는 지식을 전달하고 한 발 더 나아간 응용예제를 통해 응용력을 그립니다. 3단계: 학습 점검 셀프스터디, 메멘토 퀴즈, 요약 등 다양한 공부거리를 통해 학습한 내용을 점검하고, 세분화된 지식을 전체적으로 조립합니다. 4단계: 문제 풀이 완성형과 작성형 문제를 통해 배운 내용을 최종 정리하고 문제 해결력을 킬러 다음 단계로 올라간 토대를 마련합니다. C++ 시작하기(1장) -. C++ 소개 -. 객체지향 언어의 특징 -. C++ 개발환경 만들기 -. 처음으로 해보는 C++ 프로그래밍 C++ 기본 다지기(2장~9장) -. 변수와 구조체 -. 기본 연산자(산술, 치환, 관계, 논리, 비트, 시프트) -. 분기와 반복 -. 함수와 클래스 -. 배열, 포인터, 참조 C++ 고급 개념 익히기(10장~15장) -. 함수 중복과 연산자 중복 -. 입출력과 가상함수 -. 일반화와 예외처리 -. STL C++ 실전 프로그래밍(16장~17장) -. 오델로 만들기 -. 숫자야구 만들기 1장. C++ 시작하기 운전을 하기 위해 제일 먼저 해야 할 일은 운전면허를 따는 것이다. C++도 마찬가지다. C++로 프로그래밍하려면 제일 먼저 C++의 운전 방법을 배워야 한다. 즉, C++라는 언어를 어떻게 입력해서, 어떻게 만들고, 어떻게 배포해야 하는 지에 대한 일련의 과정을 배워야 하는 것이다. 이 장에서는 이 과정을 다룬다. C++의 운전 도구(개발 도구) 중 하나인 비주얼 스튜디오 6.0을 설치하고 사용하면서 C++의 실제 개발 과정을 상세히 익혀 보자. 2장. 변수 이제 C++를 어떻게 운전해야 하는지도 알았으니, 본격적으로 C++를 구성하고 있는 강력한 여러 장치들을 학습할 차례다. 그 처음으로 우리는 C++의 가장 기본인 변수에 대해서 배울 것이다. 변수는 말 그대로 '변하는 숫자'다. 그렇지만 지금부터는 여기에 한 가지 더 추가해서 기억하자. 즉, 변수는 '변하는 숫자' + '그 숫자를 담고 있는 그릇'이다. 그래서 간혹 숫자들이 그릇에서 넘치기도 하고 새기도 한다(오버플로우와 언더플로우). 3장. 연산자 변수라는 그릇을 어떻게 만드는지 알았다면 이제 그 그릇을 가공해보자. 변수라는 그릇은 연산자라는 도구를 사용해서 가공한다. 그릇을 두 개로 합치는 연산자, 그릇을 반으로 쪼개는 연산자, 그릇이 적당한 크기로 되어 있는지 확인하는 연산자 등을 이용해서 세상에서 가장 유용한 그릇을 만들어 보자. 4장. 제어 프로그램은 멀리서 보면 매우 복잡한 일을 하고 있는 것처럼 보이지만, 가까이서 유심히 살펴보면 수많은 데이터를 입출력하고, 수많은 조건에 따라 분류하는 작업을 반복적으로 수행하는 노력의 집합체일 뿐이다. 따라서 프로그램은 가공되지 않은 데이터들을 가공하는 윤활유 역할을 한다고 볼 수 있는데, 그 윤활유는 분기와 반복이다. 5장. 함수 요즘도 설날이나 추석 등 명절이 되면 TV에서는 마술사들이 나와서 다양한 마술을 펼친다. 물론, 지금은 그 비밀이 많이 밝혀져서 예전에 비해 그 흥미로움이 많이 줄어든 것이 사실이지만, 모자 속에서 비둘기가 나오고, 큰 상자에 들어간 사람이 반으로 나누어지는 모습을 보고 있으면 그렇게 신기할 수가 없었다. 갑자기 왜 마술 이야기를 꺼냈을까? C++에도 바로 함수라는 흥미로운 마술 상자가 있기 때문이다. 함수는 입력을 넣으면 출력이 나오는 C++의 마술 상자다. 6장. 클래스의 기본 '클래스(Class)'는 여러분들이 알고 있는 그대로 학급, 반이라는 뜻이다. 즉 '영어 클래스'는 '영어 공부를 하기 위한 학생들이 모인 반'이고 '농구 클래스'는 '농구를 좋아하는 학생들이 모인 반'이다. C++에서도 클래스는 동일한 의미로 사용된다. 즉, 'C++ 클래스'에 모인 학생들은 '같은 목적을 가진 함수와 이 함수를 사용하는 변수'라는 점만 다르다. 7장. 클래스의 응용 한 학년이 올라가면 1년 동안 정들었던 친구들과 헤어져서 새로운 반에서 새로운 친구들과 만난다. "새 술은 새 부대"에 라는 격언이 있듯이 새로운 학년이 되어 클래스가 바뀌면 처음에는 서운하겠지만 새로운 친구도 만날 수 있고, 새로운 기분으로 공부할 수 있다. C++의 클래스도 현실 세계와 같다. 클래스에 새로운 친구를 추가할 수도 있고, 새로운 클래스로 바뀔 수도 있다. 새로운 클래스에 빨리 친해지려면 이 장의 내용을 잘 이해해야 한다. 8장. 배열, 포인터, 참조 "3열 종대로 헤쳐 모여~~~", 꼭 군대가 아니더라도 학교 체육시간에 전후좌우의 간격 등을 나란히 해서 운동장에 모인 사람 숫자를 파악할 때 자주 사용되는 효율적인 방법이다(그렇지만 이 명령을 들으면 왠지 기분은 좋지 않다). C++에서는 배열이라는 이름으로 이 방법을 사용하는데, 이를 통해 다양한 종류의 데이터를 효과적으로 사용할 수 있다. 9장. 함수 중복 간혹 TV에서 나와 똑같은 이름을 가진 사람이 나와서 인터뷰를 하고 있는 것을 보면 가끔 이상한 기분이 든다. 분명 나와는 전혀 상관없는 사람인데, 나도 '철수'고 다른 사람도 '철수'라고 불리니 말이다. C++에서도 이러한 동명이인 함수가 있다. 그렇지만 현실세계와 다른 것은 프로그래머가 좀더 풍부하게 함수를 이용할 수 있게 해주기 위해서 일부러 이름을 똑같이 짓는 것이다. 10장. 연산자 중복 C++에서 또 다른 동명이인이 있는데, 그들은 바로 연산자들이다. 연산자 중복은 같은 연산자에 서로 다른 매개변수를 사용해서 선택적으로 연산을 수행하게 하는 것인데, 결과적으로는 함수 중복의 부분 집합에 불과한 것이다. 연산자 중복의 중심에는 friend 함수가 있다. 11장. 입출력 요즘에는 해외에 나가는 문턱이 많이 낮아져서 누구나 한 번쯤은 해외에 다녀온 경험이 있을 것이다. 그리고 대부분 해외로 나가고, 다시 국내로 들어올 때는 보잉기나 에어버스 같은 대형 여객기를 탄다. C++에도 입출력에 이용되는 cout과 cin이라는 대형 여객기가 있지만, 많은 사람들이 C에서 사용하던 printf라는 구형 비행기를 탄다. 이제 편리하지만 printf의 익숙함에 가려져 상대적으로 잘 타지 않던 cout과 cin으로 입출력하자. 12장. 가상함수 얼마 전 자동차가 로봇으로 변하는 영화, '트랜스포머'가 극장가를 뜨겁게 달군 적이 있다. 이처럼 현실에서도 상황에 맞게 자동차가 자유자재로 변할 수 있다면 얼마나 편할까? 예를 들어, 육지에서는 자동차지만 바다에서는 배가 되고, 또 하늘을 날을 수도 있다면 너무 편할 것이다. 거기에 카멜레온처럼 주변의 온도나 환경에 맞게 차의 색상까지 바뀐다면 편안함에 멋스러움까지 더해질 것이다. C++에서는 가상함수를 통해서 이렇게 구현할 수 있다. 13장. 일반화 겨울철에 먹을 수 있는 맛있는 간식거리가 많지만 그 중에서 하나를 꼽으라고 하면 바로 붕어빵일 것이다. 붕어빵의 달콤한 맛이 붕어빵을 사게 하는 가장 큰 이유지만 붕어빵을 사기 위해 포장마차에서 기다리면서 붕어빵틀에서 하나씩 만들어지는 모습을 보는 것도 붕어빵을 사게 하는 재미의 하나기도 하다. 이 장에서 배울 일반화는 붕어빵처럼 내용물을 바꾸기만 하면 같은 모양이 만들어지는 붕어빵 틀을 만드는 작업이다. 14장. 예외처리 '예외처리'란 일종의 '안전장치', 즉 보험이라고 생각하면 된다. 아무리 운전을 잘 하는 운전자들도 '자동차보험'에 들고, 아무리 건강한 사람도 '건강보험' 한 두 개 정도는 기본으로 가입하고 있다. 왜 그럴까? 바로 미래에 일어날 일을 예측하지 못하고, 혹시 잘못되었을 경우에 대비하기 위해서다. 프로그래밍에서도 마찬가지다. 공동으로 프로그래밍을 하거나 다른 사람이 사용할 수 있는 코드를 생성할 때 예기치 못한 결과가 발생할 수 있으므로 이런 상황에 유연하게 대처할 수 있는 방법을 마련해두어야 한다. 15장. STL 필자가 C++를 처음 접했을 때는 매우 불편한 언어라는 생각을 했다. 특히 문자열을 처리해야 한다거나 메모리를 직접 할당해야 하는 작업을 할 때는 더욱 그랬다. 물론, 혹자는 이러한 부분이 C++의 장점이라고 하지만 때로는 불필요한 작업이 되어 개발자에게 돌아올 수도 있는 것은 사실이다. 원하는 기능을 하는 클래스를 일일이 직접 구현해야 한다면 말이다. 그래서 보완책으로 만들어 둔 것이 STL이다. 즉, STL은 많은 사람들이 원하는 기능을 미리 만들어 둔 라이브러리다. 16장. 실전 프로젝트 1: 오델로 만들기 지금까지 C++에 대해서 많은 내용을 살펴보았다. 이제 그 내용들을 하나로 엮을 차례다. 지금까지는 짧은 예제 프로그램들을 예로 들면서 설명했지만, 이번에는 배운 내용들을 활용해가며 좀더 많은 기능을 수행하는 프로그램을 만들어보면서 앞서 배운 내용들을 정리한다. 좀 더 이해하기 쉽고 재미있는 예제인 오델로 게임을 만들어 보자. 17장. 실전 프로젝트 2: 숫자야구 만들기 보드 게임의 원조라고 할 수 있는 추억의 게임들이 몇 개 기억난다. 가로, 세로 5칸씩 25칸을 만들어, 자신들이 좋아하는 연예인 이름을 먼저 지우는 빙고 게임부터, 책받침을 잘라 만들었던 축구게임까지... 이 장에서는 그 중 하나였던 숫자 야구 게임을 만들어볼 것이다. 3개의 숫자를 임의로 정해서 기억하건, 적어 놓고, 서로 질문을 통해 상대방이 생각한 숫자를 정확하게 먼저 맞추는 사람이 이기는 게임이다. 이 게임을 만들고 나면 이제 여러분들도 당당하게 C++ 프로그래머라고 말할 수 있을 것이다.
|