keyword: "Cpp기초"


[yes24] [강컴]

책소개

프 로그래밍 초보자에게 난이도를 맞춘 C++ 입문서. C++의 기본 개념부터 기본, 고급 기능을 익힐 수 있도록 구성하였으며, 적절한 기본예제를 통해 이론에만 치우치지 않는 살아있는 지식을 전달하고, 한 발 더 나아간 응용예제로 응용력을 향상시킬 수 있도록 하였다. 또한 셀프스터디, 메멘토 퀴즈, 요약 등 다양한 공부거리를 통해 학습한 내용을 점검하고, 완성형과 작성형 문제를 통해 배운 내용을 최종 정리하도록 하였다.
     
 

 
저자 및 역자 소개

저자 : 신호철 / 조인현
신호철 cybrshin@gmail.com
광운대학교 전자공학과를 졸업하고 KAIST SEP 석사 과정을 마쳤다. 현재 삼성전자 소프트웨어연구소에서 연구원으로 8년째 근무중이며 주로 CE기기 내의 core engine 분야를 다루고 있다. 저서로는 『Visual C++를 이용한 게임 봇 만들기』(정보문화사, 2007)가 있다.

조인현 twoyear98@gmail.com
부산대학교 컴퓨터공학과를 졸업하고, KAIST SEP 석사 과정을 마쳤다. 좀더 유연하면서도 안전한 소프트웨어를 제작하는 것이 목표인 저자는 벤처 기업부터 대기업까지 다양한 현장에서 실무 경험을 쌓고 있다. 현재는 LG 전자 DTV 연구소에서 미들웨어와 관련된 일을 하고 있다.

 

 
목차


• 목차보기
 

Chapter 01. C++ 시작하기
01. C++의 소개
02. 객체지향 언어인 C++
03. C++ 개발환경 만들기

Chapter 02. 변수
01. 변수의 기본
02. 구조체
03. namespace
04. 형변환
예제모음 01. 학생의 정보를 담는 구조체 설계
예제모음 02. 음료의 종류를 저장할 구조체 설계

Chapter 03. 연산자
01. 연산자 개요
02. 기본 연산자
03. 관계 연산자
04. 비트 관련 연산자
05. 기타 연산자와 연산자 우선순위
예제모음 03. 사각형의 넓이 구하기
예제모음 04. 변수 추출하기

Chapter 04. 제어
01. 분기
02. 반복
예제모음 06. 원하는 정수의 합과 곱 구하기
예제모음 07. 원하는 범위의 정수의 합과 곱 구하기

Chapter 05. 함수
01. 함수의 기본
02. 함수의 입출력 방법
03. 재귀 함수
04. inline 함수
예제모음 08. 자신의 신상정보를 출력하기
예제모음 09. 삼각형의 넓이 구하기

Chapter 06. 클래스의 기본
01. 클래스와 인스턴스
02. 생성자와 소멸자
03. 클래스의 상속
04. 객체 포인터
예제모음 10. 클래스와 객체 포인터를 이용한 삼각형 넓이 구하기
예제모음 11. 클래스의 상속을 이용한 성적 관리 프로그램

Chapter 07. 클래스의 응용
01. 객체의 치환
02. 함수와 클래스의 상관관계
예제모음 12. 사각형의 넓이의 합 구하기 ①
예제모음 13. 사각형의 넓이의 합 구하기 ②

Chapter 08. 배열, 포인터, 참조
01. 배열
02. 포인터
03. new와 delete
04. 참조
05. 포인터와 참조의 확장
예제모음 14. 포인터형 변수를 이용한 성적 관리 프로그램
예제모음 15. 두 개의 숫자를 내림차순으로 정렬해 주는 프로그램

Chapter 09. 함수 중복
01. 함수 중복
02. 생성자 중복
03. 디폴트 인자와 중복의 모호성
예제모음 16. 두 숫자의 차를 계산해 주는 함수
예제모음 17. 서로 다른 형의 배열의 값을 가져오는 함수

Chapter 10. 연산자 중복
01. 연산자 중복
02. 이항 연산자 중복
03. 관계 연산자 중복
04. 단항 연산자 중복
05. friend 함수를 이용한 연산자 중복
06. 치환 연산자 중복
예제모음 18. 스트림 출력 연산자 '<<'의 중복 사용
예제모음 19. 교집합, 합집합을 구해주는 새로운 연산자의 선언의 예

Chapter 11. 입출력
01. cin과 cout를 이용한 입출력
02. 입출력 연산자 중복
03. 조작자 생성
04. 파일 입출력
예제모음 20. 사각형 정보 출력하기
예제모음 21. 사각형 정보 입력하기
예제모음 22. 사각형 정보 파일에 출력하기

Chapter 12. 가상함수
01. 가상함수의 개요
02. 순수 가상함수
예제모음 23. 확장이 용이한 도형의 넓이 구하기
예제모음 24. 추상 클래스를 이용한 + / - 계산기 만들기

Chapter 13. 일반화
01. 일반함수
02. 일반 클래스
예제모음 25: Swap 함수의 일반화
예제모음 26: List 클래스의 일반화
요약/연습문제

Chapter 14. 예외처리
01. 예외처리 개요
02. Throw의 인자로 클래스 이용하기
03. 여러 타입의 catch
04. 예외의 중첩
예제모음 27: 사각형 클래스에서의 예외처리
예제모음 28: 다형성을 이용한 예외처리

Chapter 15. STL
01. STL 개요
02. 자주 사용되는 STL의 활용
예제모음 29. STL을 이용한 숫자 정렬하기
예제모음 30. STL 이용한 소수 구하기

Chapter 16. 실전 프로젝트 1: 오델로
01. 게임 개요
02. 게임 구현
03. 실행 결과
04. 전체 소스

Chapter 17. 실전 프로젝트 2: 숫자 야구
01. 게임 개요
02. 게임 구현
03. 실행 결과
04. 전체 소스

 
• 출판사 리뷰
 


잘 다져진 개념 위에서 쉽게 구현하는 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++ 프로그래머라고 말할 수 있을 것이다.
추천평


적합한 난이도와 예제를 통한 구성이 입문자에게 적합합니다
의외로 들릴 수도 있지만 보통 프로그래밍을 수업하는 데 있어 가장 큰 단점은 학생들이 중간에 포기를 하는 것입니다. 그 포기의 이유는 간단합니다. 거의 중간 이후 뒤쪽에서 발생하죠. C 언어에서는 구조체와 함수에서, C++ 언어의 경우는 포인터나 객체에서 많이 포기합니다. 그런 쪽의 내용일수록 단순, 간단명료한 정의와 예제가 필요합니다. Beginner라는 새로운 시리즈의 구성을 보면 이런 부분들이 많이 고려되어 있어 반갑습니다. 초심자를 위한 적합한 난이도와 예제를 통해서 이제 수업을 포기하는 학생들은 없어지리라 기대합니다.
안치현 (열린 사이버대 컴퓨터정보학과 교수)

이론 설명은 5분 내외로 하되, 여러 가지 예제를 통해 직접 익히는 것이 좋습니다
프로그래밍을 시작하는 입문자를 대상으로 한 기획 의도와 컨셉, 뼈대는 좋습니다. 그렇지만 지금보다 더 많은 그림과 예제가 있다면 학생들이 이해하기 더 좋을 것 같습니다. (너무 욕심인가요?) 개념은 자꾸 반복하면 지루할 수 있으므로 명확하게 한 번 정도만 소개하고, 관련된 예제를 강화하여 응용력을 높인 부분에 큰 점수를 주고 싶습니다.
이종원 (청강문화산업대학 e-스포츠학과 교수)
-


 

"Cpp기초" 관련 글 목록