| 000 | 00000cam c2200205 c 4500 | |
| 001 | 000045841726 | |
| 005 | 20150822100415 | |
| 007 | ta | |
| 008 | 150821s2014 ggka 001c kor | |
| 020 | ▼a 9788960776142 ▼g 93560 | |
| 035 | ▼a (KERIS)BIB000013578649 | |
| 040 | ▼a 222001 ▼c 222001 ▼d 222001 ▼d 222001 ▼d 211009 | |
| 041 | 1 | ▼a kor ▼h eng |
| 082 | 0 0 | ▼a 005.1 ▼2 23 |
| 085 | ▼a 005.1 ▼2 DDCK | |
| 090 | ▼a 005.1 ▼b 2014z5 | |
| 100 | 1 | ▼a Spraul, V. Anton |
| 245 | 1 0 | ▼a 프로그래머처럼 생각하기 : ▼b 문제 해결과 논리적 사고 훈련을 통한 프로그래밍 학습 / ▼d 안톤 스프라울 지음 ; ▼e 김무항 옮김 |
| 246 | 1 9 | ▼a Think like a programmer : ▼b an introduction to creative problem solving |
| 260 | ▼a 의왕 : ▼b 에이콘, ▼c 2014 | |
| 300 | ▼a 346 p. : ▼b 삽화 ; ▼c 26 cm | |
| 500 | ▼a 색인수록 | |
| 650 | 0 | ▼a Computer programming |
| 650 | 0 | ▼a Creative thinking |
| 650 | 0 | ▼a Problem solving |
| 700 | 1 | ▼a 김무항, ▼e 역 ▼0 AUTH(211009)17989 |
| 900 | 1 0 | ▼a 스프라울, 안톤, ▼e 저 |
| 945 | ▼a KLPA |
소장정보
| No. | 소장처 | 청구기호 | 등록번호 | 도서상태 | 반납예정일 | 예약 | 서비스 |
|---|---|---|---|---|---|---|---|
| No. 1 | 소장처 중앙도서관/제2자료실(3층)/ | 청구기호 005.1 2014z5 | 등록번호 111740519 (9회 대출) | 도서상태 대출가능 | 반납예정일 | 예약 | 서비스 |
컨텐츠정보
책소개
프로그래밍 입문자를 위한 책인 동시에 어떤 문제에 대한 해결책을 프로그래밍으로 구현하려 할 때 막막함을 한 번이라도 느껴본 적이 있는 모든 이들을 위한 책.
어떤 문제를 해결하기 위한 논리적 사고 과정과 문제 해결 기법을 학습하고 여기서 도출된 해결책을 C++라는 도구를 사용해 어떻게 프로그래밍할 것인가에 대해 학습한다. 이러한 과정 중에 자연스레 C++의 개념과 문법을 학습함으로써 이후에 독자들이 C++라는 언어를 실제 업무나 과제 중에 등장하는 문제를 해결하는 데 적용할 수 있게 돕는다.
문제를 해결하기 쉽게 만들기 위해 개별적인 구성요소로 나누는 법, 함수와 클래스, 라이브러리를 이용하여 코드 재사용을 최대한 활용하는 법, 특정 작업에 가장 적합한 데이터 구조를 선택하는 법, 재귀와 동적 메모리와 같은 고급 프로그래밍 도구 활용법, 특정한 유형의 문제를 해결하기 위해 생각을 정리하고 전략을 개발하는 법 등을 다루고 있다.
★ 요약 ★
이 책은 프로그래밍 입문자를 위한 책인 동시에 어떤 문제에 대한 해결책을 프로그래밍으로 구현하려 할 때 막막함을 한 번이라도 느껴본 적이 있는 모든 이들을 위한 책이다. C++의 개념과 문법만을 학습하기 위한 참고서 형태의 책이 아니다. 어떤 문제를 해결하기 위한 논리적 사고 과정과 문제 해결 기법을 학습하고 여기서 도출된 해결책을 C++라는 도구를 사용해 어떻게 프로그래밍할 것인가에 대해 학습한다. 이러한 과정 중에 자연스레 C++의 개념과 문법을 학습함으로써 이후에 독자들이 C++라는 언어를 실제 업무나 과제 중에 등장하는 문제를 해결하는 데 적용할 수 있게 돕는다.
★ 이 책에서 다루는 내용 ★
■ 문제를 해결하기 쉽게 만들기 위해 개별적인 구성요소로 나누는 법
■ 함수와 클래스, 라이브러리를 이용하여 코드 재사용을 최대한 활용하는 법
■ 특정 작업에 가장 적합한 데이터 구조를 선택하는 법
■ 재귀와 동적 메모리와 같은 고급 프로그래밍 도구 활용법
■ 특정한 유형의 문제를 해결하기 위해 생각을 정리하고 전략을 개발하는 법
★ 이 책의 대상 독자 ★
시행착오를 겪으면서 배우기보다는 체계적인 방법으로 문제 해결 능력을 배울 수 있다. 이 책은 그러한 문제 해결 능력을 배우기 위한 지침서다. 이 책을 통해 여러분은 생각을 정리하는 기법과 해결책을 찾아내는 과정, 특정한 부류의 문제에 적용하기 위한 전략을 배울 수 있다. 이러한 접근법을 배우는 동시에 여러분의 창의성을 끌어낼 것이다. 더 이상 실수는 없을 것이다. 프로그래밍은 창의적인 활동이다. 특히 문제 해결은 더욱 그러하다. 창의성은 신비한 것이며 창의적인 사고가 동작하는 방식에 대해 정확하게 말할 수 있는 사람은 없다. 그러나 우리가 작곡을 배우거나 창의적인 글쓰기에 대한 조언을 얻거나 그림 그리는 법을 배울 수 있다면 프로그래밍 문제를 창의적으로 해결하는 방법 또한 배울 수 있다. 이 책은 여러분이 무엇을 해야 할지 상세히 알려주지는 않는다. 하지만 여러분의 잠재적인 문제 해결 능력을 개발해서 여러분 스스로 무엇을 해야 할지 알 수 있도록 도울 것이다. 다시 말해 여러분이 꿈꿔왔던 프로그래머가 될 수 있도록 도와줄 수 있는 책이다.
★ 이 책의 구성 ★
이 책에서 다루는 주제는 많은 신입 프로그래머들이 어려움을 겪어온 분야들이다. 또한 이 책은 프로그래밍 초반과 중반 무렵 다양한 영역에서 발생하는 대표적인 모습들을 폭넓게 제시한다.
그러나 이 책은 알고리즘에 대해 예제 위주로 설명한 '요리책(Cookbook)' 스타일의 책이거나 특정 문제를 해결하기 위한 패턴에 대한 책이 아니라는 점을 거듭 강조하고 싶다. 책의 후반부에서 잘 알려진 알고리즘과 패턴을 어떻게 적용할지에 대해 논의를 하겠지만, 이 책을 특정 문제를 해결하기 위한 커닝 페이퍼로 사용하거나 여러분이 현재 겪고 있는 문제에 직접적으로 관련된 장에만 집중하지 않았으면 한다.
★ 저자 서문 ★
여러분은 프로그램 언어를 이해했음에도 프로그램을 만드는 일이 어려운가? 프로그램 책을 읽는 내내 고개를 끄덕이며 읽지만 읽은 내용을 프로그램에 적용하기가 힘든가? 온라인에서 읽은 프로그램의 각 코드가 어떤 역할을 하는지 다른 사람에게 설명할 수 있을 정도로 이해를 하는데도, 프로그램 작업과 문서 편집기의 빈 화면을 보면 머릿속이 하얘지는가?
여러분만 그런 것이 아니다. 나는 지난 15년간 프로그래밍 강의를 해왔다. 강의에 출석하는 학생 대부분이 비슷한 상황을 겪고 있다. 이러한 상황을 겪는 이유는 바로 문제 해결(problem solving) 능력이 부족하기 때문이다. 문제 해결 능력이란 주어진 문제를 기술하고 그것을 해결하기 위해 독창적인 프로그램을 작성할 수 있는 능력을 말한다. 물론 모든 프로그램이 광범위한 문제 해결 능력을 필요로 하는 건 아니다. 여러분이 기존 프로그램을 아주 사소하게 수정하고 디버깅하거나, 기존 프로그램에 테스트 코드를 추가하는 등의 일을 한다면 그 프로그래밍은 완전히 기계적인 작업이기 때문에 창의력이 필요하지는 않다. 그러나 모든 프로그램에는 문제 해결 능력을 요하는 시점이 있다. 그렇기 때문에 전문 프로그래머들은 프로그래밍 과정에서 직면하는 문제를 해결할 수 있어야 한다.
시행착오를 겪으면서 배우기보다는, 체계적인 방법으로 문제 해결 능력을 배우는 편이 좋다. 이 책은 그러한 문제 해결 능력을 배우기 위한 지침서다. 이 책을 통해 여러분은 생각을 정리하는 기법과 해결책을 찾아내는 과정, 특정한 부류의 문제에 적용하기 위한 전략을 배울 수 있다. 이 책을 통해 이러한 접근법을 배우는 동시에 여러분의 창의성을 끌어낼 수 있을 것이다. 더 이상 실수는 없을 것이다. 프로그래밍은 창의적인 활동이다. 특히 문제 해결은 더욱 그러하다. 창의성은 신비한 것이며 창의적인 사고가 동작하는 방식에 대해 정확하게 말할 수 있는 사람은 없다. 그러나 작곡을 배우거나 창의적인 글쓰기에 대한 조언을 얻거나 그림 그리는 법을 배울 수 있다면, 프로그래밍 문제를 창의적으로 해결하는 방법 또한 배울 수 있다. 이 책은 여러분이 무엇을 해야 할지 상세히 알려주지는 않는다. 하지만 여러분의 잠재적인 문제 해결 능력을 개발해서 여러분 스스로 무엇을 해야 할지 알 수 있도록 도울 것이다. 다시 말해 여러분이 꿈꿔왔던 프로그래머가 될 수 있도록 도와줄 수 있는 책이다.
이 책을 쓴 목적은 여러분이 모든 프로그래밍 작업을 체계적으로 접근할 수 있게 도와서 궁극적으로는 주어진 문제를 해결할 수 있다는 자신감을 갖게 하는 데 있다. 이 책을 다 읽고 난 후에 여러분 모두가 '프로그래머처럼 생각'하고 '스스로가 모두 프로그래머라는 사실을 믿을 수 있기'를 바란다.
정보제공 :
저자소개
안톤 스프라울(지은이)
전세계에 있는 학생들에게 프로그래밍 입문과 컴퓨터 과학을 15년 이상 가르쳐왔다. 저서로 『Think Like a Programmer』(No Starch), 『Computer Science Made Simple』(Broadway)이 있다.
김무항(옮긴이)
위치 기반 서비스, 증강 현실, 보안 등 다양한 분야에서 연구와 개발을 했다. 기술 번역에 관심이 많다. 에이콘출판사에서 펴낸 『드루팔 사용하기』(2013)와 『프로그래머처럼 생각하기』(2014), 『PHP와 MariaDB를 활용한 웹 애플리케이션 개발』(2016), 『파이썬으로 처음 시작하는 코딩』(2018), 『소프트웨어 아키텍처 이론과 실제 4/e』(2022), 『소프트웨어 엔지니어링 생산성 돌아보기』(2023) 등을 번역했다.
목차
1장 문제 해결 전략 __고전 퍼즐 ____여우와 거위, 옥수수 ____타일 밀기 퍼즐 ____스도쿠 ____콰라시 열쇠 __일반적인 문제 해결 기술 ____항상 계획을 세워라 ____문제를 다른 방식으로 표현해보자 ____문제를 나누어라 ____아는 것부터 시작하라 ____문제를 축소하라 ____유사점을 찾아라 ____실험하라 ____좌절하지 말자 __연습문제 2장 기본 퍼즐 __2장에서 사용할 C++ 살펴보기 __출력 패턴 __입력 처리 ____문제 분할 ____조각들을 하나로 합치기 __상태 추적 __결론 __연습문제 3장 배열을 이용한 문제 해결 __배열에 관한 기본 지식 ____저장 ____복사 ____회수와 검색 ____정렬 ____통계 계산 __배열을 사용한 문제 해결 ____리팩토링 __고정 데이터 배열 __비 스칼라 배열 __다차원 배열 __배열을 사용해야 하는 경우 __연습문제 4장 포인터와 동적 메모리를 사용한 문제 해결 __포인터에 관한 기본 지식 __포인터의 이점 ____런타임 시 크기를 결정할 수 있는 데이터 구조 ____크기 변경이 가능한 데이터 구조 ____메모리 공유 __포인터를 사용해야 하는 경우 __메모리 ____스택과 힙 ____메모리 크기 ____수명 __포인터 문제의 해결 ____가변 길이 문자열 ____연결 리스트 __결론과 다음 과정 __연습문제 5장 클래스를 사용한 문제 해결 __클래스에 관한 기본 지식 __클래스 사용 목적 ____캡슐화 ____코드 재사용 ____문제 세분화 ____정보 은닉 ____가독성 ____표현성 __간단한 클래스 작성 ____기본 클래스 프레임워크 ____지원 메소드 __동적 데이터를 사용하는 클래스 ____노드 추가 ____연결 리스트 재배열 ____소멸자 ____깊은 복사 ____전체적인 관점에서 동적 메모리를 사용하는 클래스 살펴보기 __피해야 할 실수 ____가짜 클래스 ____한정된 용도를 지니는 클래스 __연습문제 6장 재귀를 사용한 문제 해결 __재귀에 관한 기본 지식 __전방 재귀와 후방 재귀 ____첫 번째 접근법 ____두 번째 접근법 __체계적인 재귀 적용 방식 __일반적인 실수 ____매개변수 과다 ____전역 변수 __동적 데이터 구조에 재귀 적용 ____재귀와 연결 리스트 ____재귀와 이진 트리 __래퍼 함수 __재귀를 사용해야 하는 경우 ____재귀를 반대하는 이유 __연습문제 7장 코드 재사용을 통한 문제 해결 __올바른 재사용과 잘못된 재사용 __구성요소란 무엇인가? ____코드 블록 ____알고리즘 ____패턴 ____추상 데이터 타입 ____라이브러리 __구성요소에 대한 지식 쌓기 ____탐색 학습 ____필요에 따른 학습 __구성요소 타입 선택 ____실제 구성요소 선택하기 ____결과 비교 __연습문제 8장 프로그래머처럼 사고하기 __자신만의 종합 계획 만들기 ____자신의 장단점에 따라 전략 세우기 ____종합 계획 세우기 __어떤 문제든 효율적으로 대처하기 ____속이기 위한 방법 찾기 ____행맨 게임에서 플레이어 2를 속이는 데 필요한 연산 ____초기 설계 ____코딩 초기 단계 ____초기 구현에 대한 분석 ____문제 해결 기술 __새로운 프로그래밍 기술 학습 ____새로운 언어 ____이미 친숙한 언어에 관한 새로운 기술 익히기 ____새로운 라이브러리 ____수업을 들어라 __결론 __연습문제



