메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기

한빛출판네트워크

이것이 C 언어다

서현우의 C 프로그래밍 정복

  • 저자 : 서현우
  • 출간 : 2014-05-20
  • 페이지 : 708 쪽
  • ISBN : 9788968481024
  • 물류코드 :2102
초급 초중급 중급 중고급 고급
4.5점 (13명)
좋아요 : 1069

명강사 명저 명강의, 3박자가 척척!

이 책의 서현우 저자는 10년이 넘는 동안 유수의 기업과 최고의 대학에서 현업자와 학생들에게 강의를 해왔습니다. 그간의 경험과 보고 들은 바를 모으고 정제하여 이 책에 담았습니다. 특히 대규모 인력과 비용을 투입해 만든 동영상 강의는 우리에게 익숙한 칠판 강의 형식으로 제작되어 현장감이 넘칩니다.


포인터 때문에 C를 포기했다면 다시 한 번 도전하세요!

9장에서는 포인터 개념을 눈으로 명확히 확인할 수 있도록 15개에 이르는 그림을 제시합니다. 포인터가 어려운 이유는 포인터가 시스템에서 어떻게 활용되는지 모르고 그냥 사용법을 외워 사용하기 때문입니다. char * a;에서 포인터 a는 몇 바이트를 차지하는 걸까요?  포인터가 시스템에서 어떻게 할당되고 어떻게 활용되며 왜 필요할까요? 그러한 내용을 다양한 그림을 통해 배우면 포인터 때문에 C를 포기하는 일은 없을 겁니다. 2부에서는 포인터를 응용한 다양한 활용법을 배우게 될 겁니다.


C 언어 표준 함수 완벽 수록

C 언어 표준 라이브러리는 우리가 익히 알고 있는 stdio.h와 string.h를 포함하여 10여 가지에 이르고, 표준 함수는 매크로를 포함해서 140여 가지에 이릅니다. 이렇게 많은 함수를 알고 활용하면 더 효과적으로 과제를 완성할 수 있는데요, 실제로 C를 오랫동안 개발해도 일목요연하게 정리된 표준 라이브러리를 한 번도 보지 못하고 조각조각 얻은 정보만 활용하는 경우가 드물지 않게 있습니다. __FILE__, __DATA__, va-arg, atexit은 과연 무엇일까요? 무엇이 있는지 아는 것이 힘입니다! 이제 이 책에서 C 언어 표준 함수 전체 목록을 확인할 수 있습니다.


입문자와 전문가에게 유용한 337 프로젝트의 결실!

기획 기간을 뺀 순수 집필 기간만 3년! 이 책은 '저자가 3년 간 집필'하고 '감수자 3명이 정밀하게 기술을 검토'하고 '베타 리더 7명이 정말로 이해 잘되도록 의견을 주고 품질을 검토하여' 탄생했습니다. 이 책은 초보자가 쉽게 C를 습득할 수 있게 쉽게 설명하고 동시에 전문가도 소장할 가치가 있는 깊이 있는 내용을 담고 있는 337 프로젝트의 결정체입니다.

 

<바로가기 링크 안내>

 

커뮤니티 바로가기 click9.png

무료 동영상 강의 바로가기 click9.png

컴파일러 다운로드 및 설치 방법(PDF) click9.png

 

저자

서현우

컴퓨터공학을 전공하고 16년간 학교와 기업체에서 C 언어 전문 강사로 활동했으며, 현재는 유튜브 비디오 크리에이터로 활동 중이다. 평소에는 어린 두 아이와 눈높이를 맞추는 자상함이 있지만, 강의할 때 뿜어 나오는 카리스마는 수강생을 C 언어의 세계로 빠져들게 한다. 오프라인 강의에서 보여줬던 쉽고 깔끔한 강의, 전문적이고 기본기를 다져주는 강의, 집중력을 이끌어내는 명쾌한 강의를 이제는 유튜브를 통해 쉽게 수강할 수 있다.

PART 1  C 언어 기본


1장 프로그램 만들기
  1.1 프로그램과 C 언어
  1.2 컴파일러 사용법
    1.2.1 소스 파일(source file) 작성
    1.2.2 컴파일
    1.2.3 실행
    연습문제 / 정답 및 해설


2장 상수와 데이터 출력
  2.1 C 프로그램의 기본 형태와 데이터 출력 방법
    2.1.1 main 함수 구조
    2.1.2 출력 함수(printf)의 사용법
    2.1.3 printf 함수로 제어 문자 출력
    2.1.4 printf 함수로 정수와 실수 출력
    연습문제 / 정답 및 해설
  2.2 상수와 데이터 표현 방법
    2.2.1 정수 상수 표현법
    2.2.2 실수 상수 표현법
    2.2.3 문자와 문자열 상수 표현법
    2.2.4 상수가 컴파일된 후의 비트 형태
    2.2.5 정수형 상수가 컴파일된 후의 비트 형태
    2.2.6 실수형 상수가 컴파일된 후의 비트 형태
    연습문제 / 정답 및 해설


3장 변수와 데이터 입력
  3.1 변수
    3.1.1 변수 선언 방법
    3.1.2 쓰레기값과 초기화
    3.1.3 정수를 저장하는 자료형
    3.1.4 unsigned 정수 자료형
    3.1.5 실수 자료형
    3.1.6 문자열 저장
    3.1.7 const를 사용한 변수
    3.1.8 예약어와 식별자
    연습문제 / 정답 및 해설
  3.2 데이터 입력
    3.2.1 scanf 함수의 사용법
    3.2.2 scanf 함수의 응용
    3.2.3 문자와 문자열의 입력
    연습문제 / 정답 및 해설


4장 연산자
  4.1 산술, 관계, 논리 연산자
    4.1.1 연산자와 피연산자
    4.1.2 산술 연산자와 대입 연산자
    4.1.3 나눗셈 연산자와 나머지 연산자
    4.1.4 증감 연산자
    4.1.5 관계 연산자
    4.1.6 논리 연산자
    4.1.7 연산의 결과값은 어떻게 되나요?
    연습문제 / 정답 및 해설
  4.2 비트 연산자와 그 외의 멋진 연산자
    4.2.1 형변환 연산자
    4.2.2 sizeof 연산자
    4.2.3 복합대입 연산자
    4.2.4 콤마 연산자
    4.2.5 조건 연산자
    4.2.6 비트 연산자
    4.2.7 연산자 우선순위와 연산 방향
    연습문제 / 정답 및 해설 
  도전 실전 예제


5장 선택문(if, switch~case)
  5.1 if문
    5.1.1 if문의 기본 형식
    5.1.2 if ~ else문
    5.1.3 if ~ else if ~ else문
    연습문제 / 정답 및 해설
  5.2 if문의 활용과 switch~case문
    5.2.1 if문 중첩
    5.2.2 if문을 중첩해서 쓰는 이유
    5.2.3 else 결합 문제
    5.2.4 switch ~ case문
    연습문제 / 정답 및 해설 
  도전 실전 예제


6장 반복문
  6.1 while, for, do~while
    6.1.1 while문
    6.1.2 for문
    6.1.3 do ~ while문
    연습문제 / 정답 및 해설
  6.2 반복문 활용
    6.2.1 중첩 반복문
    6.2.2 break와 continue 분기문
    연습문제 / 정답 및 해설
  도전 실전 예제


7장 함수
  7.1 함수의 작성과 사용
    7.1.1 함수 정의
    7.1.2 함수 호출과 반환
    7.1.3 함수 선언
    연습문제 / 정답 및 해설
  7.2 여러 가지 함수 유형
    7.2.1 매개변수가 없는 함수
    7.2.2 반환값이 없는 함수
    7.2.3 반환값과 매개변수가 모두 없는 함수
    7.2.4 재귀호출 함수
    7.2.5 재귀호출이 반복문과 다른 점은 무엇인가?
    연습문제 / 정답 및 해설 
  도전 실전 예제


8장 배열
  8.1 배열의 선언과 사용
    8.1.1 배열 선언과 배열 요소 사용
    8.1.2 배열 초기화
    8.1.3 배열과 반복문
    8.1.4 sizeof 연산자를 활용한 배열 처리
    연습문제 / 정답 및 해설
  8.2 문자를 저장하는 배열
    8.2.1 char형 배열의 선언과 초기화
    8.2.2 문자열 대입
    8.2.3 문자열 전용 입출력 함수(gets, puts)
    연습문제 / 정답 및 해설 
  도전 실전 예제


9장 포인터
    9.1 포인터의 기본 개념
    9.1.1 주소 연산자(&)
    9.1.2 포인터와 간접참조 연산자(*)
    9.1.3 여러 가지 포인터
    9.1.4 const를 사용한 포인터
    연습문제 / 정답 및 해설
  9.2 포인터에 관한 궁금한 이야기
    9.2.1 주소와 포인터의 차이
    9.2.2 주소와 포인터의 크기
    9.2.3 포인터의 대입 규칙
    9.2.4 포인터가 필요한 이유
    연습문제 / 정답 및 해설 
  도전 실전 예제


PART 11  C 언어 고급


10장 배열과 포인터
  10.1 배열과 포인터의 관계
    10.1.1 배열명의 정체
    10.1.2 배열명으로 배열 요소 사용하기
    10.1.3 배열명 역할을 하는 포인터
    10.1.4 배열명과 포인터의 차이
    10.1.5 포인터의 뺄셈과 관계 연산
    연습문제 / 정답 및 해설
  10.2 배열을 처리하는 함수
    10.2.1 배열의 값을 출력하는 함수
    10.2.2 배열 요소의 개수가 다른 배열도 출력하는 함수
    10.2.3 배열에 값을 입력하는 함수
    연습문제 / 정답 및 해설 
  도전 실전 예제


11장 문자 
  11.1 아스키 코드값과 문자 입출력 함수
    11.1.1 문자 상수 구현 방법
    11.1.2 아스키 코드
    11.1.3 scanf 함수를 사용한 문자 입력
    11.1.4 getchar 함수와 putchar 함수
    연습문제 / 정답 및 해설
  11.2 버퍼를 사용하는 입력 함수
    11.2.1 scanf 함수가 문자를 입력하는 과정
    11.2.2 scanf 함수 반환값 활용
    11.2.3 getchar 함수를 사용한 문자열 입력
    11.2.4 fflush 함수
    연습문제 / 정답 및 해설 
  도전 실전 예제


12장 문자열
  12.1 문자열과 포인터
    12.1.1 문자열 상수 구현 방법
    12.1.2 char 포인터로 문자열 사용
    12.1.3 scanf 함수를 사용한 문자열 입력
    12.1.4 gets 함수를 사용한 문자열 입력
    12.1.5 fgets 함수를 사용한 문자열 입력
    12.1.6 표준 입력 함수의 버퍼 공유 문제
    12.1.7 문자열을 출력하는 puts, fputs 함수
    연습문제 / 정답 및 해설
  12.2 문자열 연산 함수
    12.2.1 문자열을 대입하는 strcpy 함수
    12.2.2 strcpy 함수 구현 방법
    12.2.3 원하는 개수의 문자만을 복사하는 strncpy 함수
    12.2.4 문자열 길이를 계산하는 strlen 함수
    12.2.5 문자열을 붙이는 strcat, strncat 함수
    12.2.6 문자열을 비교하는 strcmp, strncmp 함수
    연습문제 / 정답 및 해설 
  도전 실전 예제


13장 변수의 영역과 데이터 공유
  13.1 변수 사용 영역
    13.1.1 지역 변수
    13.1.2 블록 안에서 사용하는 지역 변수
    13.1.3 전역 변수
    13.1.4 정적 지역 변수
    13.1.5 레지스터 변수
    연습문제 / 정답 및 해설
  13.2 함수의 데이터 공유 방법
    13.2.1 값을 복사해서 전달하는 방법
    13.2.2 주소를 전달하는 방법
    13.2.3 주소를 반환하는 함수
    연습문제 / 정답 및 해설 
  도전 실전 예제


14장 다차원 배열과 포인터 배열
  14.1 2차원 배열
    14.1.1 2차원 배열 선언과 요소 사용
    14.1.2 2차원 배열 초기화
    14.1.3 2차원 char 배열
    14.1.4 2차원 char 배열 초기화
    14.1.5 3차원 배열
    연습문제 / 정답 및 해설
  14.2 포인터 배열
    14.2.1 포인터 배열 선언과 사용
    14.2.2 2차원 배열처럼 활용하는 포인터 배열
    연습문제 / 정답 및 해설 
  도전 실전 예제


15장 응용 포인터
  15.1 2중 포인터와 배열 포인터
    15.1.1 2중 포인터 개념
    15.1.2 2중 포인터 활용 예 1
    15.1.3 2중 포인터 활용 예 2
    15.1.4 배열 요소의 주소와 배열의 주소
    15.1.5 2차원 배열과 배열 포인터
    15.1.6 2차원 배열의 요소를 참조하는 원리
    연습문제 / 정답 및 해설
  15.2 함수 포인터와 void 포인터
    15.2.1 함수 포인터의 개념
    15.2.2 함수 포인터의 활용
    15.2.3 void 포인터
    연습문제 / 정답 및 해설 
  도전 실전 예제


16장 메모리 동적 할당
  16.1 동적 할당 함수
    16.1.1 malloc, free 함수
    16.1.2 동적 할당 영역을 배열처럼 쓰기
    16.1.3 기타 동적 할당 함수
    연습문제 / 정답 및 해설
  16.2 동적 할당 저장 공간의 활용
    16.2.1 동적 할당을 사용한 문자열 처리
    16.2.2 동적 할당 영역에 저장한 문자열을 함수로 처리하는 예
    16.2.3 main 함수의 명령행 인수 사용
    16.2.4 명령행 인수를 사용한 문자열 입력 예
    연습문제 / 정답 및 해설 
  도전 실전 예제


17장 사용자 정의 자료형
  17.1 구조체
    17.1.1 구조체 선언과 멤버 사용
    17.1.2 다양한 구조체 멤버
    17.1.3 구조체 변수의 초기화와 대입 연산
    17.1.4 구조체 변수를 함수 매개변수에 사용하기
    17.1.5 비트 필드 구조체
    연습문제 / 정답 및 해설
  17.2 구조체 활용, 공용체, 열거형
    17.2.1 구조체 포인터와 -> 연산자
    17.2.2 구조체 배열
    17.2.3 구조체 배열을 처리하는 함수
    17.2.4 자기 참조 구조체
    17.2.5 공용체
    17.2.6 열거형
    17.2.7 typedef를 사용한 형 재정의
    17.2.8 구조체, 공용체, 열거형을 사용한 프로그램
    연습문제 / 정답 및 해설 
  도전 실전 예제


18장 파일 입출력
  18.1 파일 개방과 입출력
    18.1.1 파일 개방과 폐쇄
    18.1.2 스트림 파일과 파일 포인터
    18.1.3 문자 입력 함수 fgetc
    18.1.4 문자 출력 함수 fputc
    18.1.5 기본적으로 개방되는 표준 입출력 스트림 파일
    18.1.6 텍스트 파일과 바이너리 파일
    18.1.7 + 개방 모드, fseek, rewind, feof 함수
    연습문제 / 정답 및 해설
  18.2 다양한 파일 입출력 함수
    18.2.1 한 줄씩 입출력하는 fgets와 fputs
    18.2.2 다양한 형태로 입출력 하는 fscanf, fprintf
    18.2.3 스트림 파일의 버퍼 공유 문제와 fflush 함수
    18.2.4 fread와 fwrite 함수 
    연습문제 / 정답 및 해설 
  도전 실전 예제


19장 전처리와 분할 컴파일
  19.1 전처리 지시자
    19.1.1 파일을 포함하는 #include
    19.1.2 매크로명을 만드는 #define
    19.1.3 #define을 사용한 매크로 함수
    19.1.4 이미 정의된 매크로
    19.1.5 매크로 연산자 #과 ##
    19.1.6 조건부 컴파일 지시자
    19.1.7 #pragma 지시자
    연습문제 / 정답 및 해설
  19.2 분할 컴파일
    19.2.1 분할 컴파일 방법
    19.2.2 분할 컴파일에서 extern과 static의 용도
    19.2.3 헤더 파일의 필요성과 중복 문제 해결 방법
    연습문제 / 정답 및 해설 
  도전 실전 예제


부록 
   A. 아스키 코드표
   B. 선택정렬 알고리즘
   C. 날짜와 시간 함수, 난수 함수, 가변 인수 함수
   D. C 표준 라이브러리 함수와 매크로
   E. 실전 프로젝트

  •  열심히 '이것이 C언어다'란 책을 통해 C언어를 공부하고 있는데, 알고지내는 지인이 이런말을 했다.
    "이 책으로 C언어 공부하면 이런 로봇도 만들 수 있는 거야?"

     이 책의 겉표지엔 굉장히 으리으리한 로봇 하나가 서 있는데 그걸 보고 물어본 질문이다.

    이것이C언어다_겉.jpg

     사실 C언어는 모든 언어의 기본이 되기도 하고, 대부분 개발자가 처음 언어를 공부한다고 하면 공부하는 언어이기도 하다.  또한 실제로도 C언어는 임베디드나 운영체제, 특히 성능이 중요한 분야에서는 활용도가 높고 기본이 되는 언어이다. 그래서 이 책을 보고 C언어를 공부하면 사실 이런 로봇도 만들 수도..? 있다고 생각된다.

     

     C언어는 모든 언어 중 가장 기본이 되는 언어인 것은 사실이고, 처음 개발을 시작할 때 공부하는 언어이다.  나 역시 처음 프로그래밍 공부를 시작할 때 C언어 기본 입문서를 잡고 공부를 했던 기억이 있다. 그렇게 매번 언어 입문서를 보고 공부하다보면 같은 곳에서 손을 놓았던 기억이 난다.  바로 문자열에서 배열과 포인터의 관계, 포인터에 대한 개념이 들어가면서부터이다.  몇번이고 읽어보지만 혼자 공부할 때마다 이해하기가 힘들었고, 그러다보니 흥미가 자연스럽게 떨어져 책을 놓게 되었다. 그래서 '이것이 C언어다'를 볼 땐 무엇보다 첫 입문자의 마음으로 C언어를 할 때 어렵게 다가왔던 개념들에 대해서 잘 이해할 수 있을지, 혼자서 이 책으로 공부할 수 있을지에 대해 관심을 갖고 보게 되었다.

     

     책은 크게 두개의 파트로 나눠져 있는데, Part1.C언어의 기본과 Part2.C언어 고급. 즉 기본과 고급으로 나눠져 있다.
    처음 언어를 시작하는 사람이라면 우선적으로 목표를 C언어 기본에 두고 공부를 하고, C언어를 알고 있으나 이해를 넓히고 싶다면 앞부분은 생략하고 고급에서부터 시작해도 상관없다고 생각된다.

     C언어 기본 파트에선 C언어에서 가장 기본적으로 다루는 문법적인 부분을 설명한다. 첫 장에서 기본적인 컴파일러의 의미, 프로그램이 어떻게 실행하는지를 시작으로 변수/상수의 의미, 조건문/반복문, 함수, 배열, 기초적인 포인터의 개념을 다루고 있다.

    이것이C언어다_기본.jpg

     C언어  고급 파트에선 배열과 포인터의 관계나 문자열 처리방법, 동적할당, 다차원 배열, 구조체 등 C언어에서 다루는 고급적인, 조금 사람들이 이해하기 어렵다고 생각하는 개념들에 대해서 설명하고 있다.

     

    이것이C언어다_고급.jpg

     이 책의 저자 서현우님은 C언어 전문강사로 12년째 일을 하고 계신 분이라고 한다. 그래서 그런지 책 전체적으로 C언어를 사람들에게 쉽게 이해할 수 있게 전달할 수 있는 방법을 고민하고 작성했단 느낌을 많이 받았다.
     우선, 책 전체적으로 실습하며 따라할 수 있는 실습위주의 방식으로 하고 있어서, 각 개념들을 따라치며 자연스럽게 이해할 수 있다. 그리고 각 챕터에 핵심이 되는 문장에 굵은 음영표시로 강조하여 이해를 도와주고 있다.
     무엇보다 이 책의 가장 큰 특징은 이해하기 어려운 부분을 이미지로 도식화한 설명이 많다는 것이다. 대부분 처음 접하는 사람들은 글이나 코드로 된 설명으로만 보게 되면, 이게 무슨 말인지? 무엇을 의미하는 지 이해하기가 힘들다. 그런 부분들을 머릿속에 쉽게 그려볼 수 있도록 많은 이미지로 도식화하여 제공 해주고있어 이해를 도와준다.

     

    이것이C언어다_도식화2.jpg

     마찬가지로 처음 C언어를 배울 땐, '왜 이렇게 사용하는 지?', '왜 이렇게 되는건지?'에 대한 의문이 들때가 있는데, 혼자 공부하게 되면 그냥 이런거구나 하고 끝나기 마련인데, 책에 왜 이렇게 사용되는지, 왜 이렇게 되는건지에 대해서도 꼼꼼히 기입하고 있다.  또한 '왜?'에 대해서 뿐만 아니라 C언어를 하면서 흔히 하는 실수에 대해서도 책에 기입하고 있어, 혼자 자습하기에도 좋은 책이라고 생각된다.
     또한 매 챕터에 연습문제와 실전예제를 제공해주고 있다. 각 문제와 예제는 기초적인 알고리즘 문제 형태로 제공된다. C언어를 배운 다음, 다음 관심을 갖고 공부할 과목은 알고리즘일텐데 각 챕터에서 배운 문법을 알고리즘 문제에선 어떻게 쓸 수 있는지 어떤 프로그램을 만드는데 쓰는지 알 수 있어, 배우는 데 흥미를 계속 갖을 수 있게 도와준다.
     끝으로 책을 구매하면 동영상 무료강의를 볼 수 있단 것도 이 책의 큰 특징이다. 대부분 이 책을 구매하는 사람들은 처음 C언어를 공부하려고 하는 사람들일텐데 책으로만 봤을 때 이해하기 힘든 부분은 동영상을 보면서 공부할 수 있게 되어, 좀더 끝까지 포기하지 않고 C언어를 공부할 수 있는 계기가 될 수 있다.

     

     챕터별 강의를 앞페이지에서 QR코드로 제공하고 있다. 행여 강의를 못찾을까봐 QR로도 제공하는 것 같다.. 이러한 부분만 봐도, 이 책은 처음 공부하는 사람에게 친절하게 가능한 많은 도움을 주려고 노력한 책이라고 생각된다. C언어에 대한 입문서들이 이미 많이 나와있지만, 혼자 자습해야 하는 사람, 또는 너무 어렵게 된 내용에 C언어를 포기한 사람들에게 이 책을 추천해주고 싶다.

    이것이C언어다_큐알.jpg

     

     이 책은 한빛미디어에서 만드는 '이것이ㅇㅇ이다!' 시리즈 중 하나로 '이것이 C언어다'는 C언어에 대한 내용을 다룬 기본서적이다. '이것이 ㅇㅇ이다.' 시리즈 대부분은 언어에 대한 기본서적이 많고, 겉표지 디자인이 로봇으로 되어있는 특징? 을 갖고있다. 혹시나 으리으리한 로봇 디자인의 책을 모으고 싶다면 이것이 ㅇㅇ시리즈를 한번 찾아보는 것도 좋을 것 같다. 개인적으론 '이것이 안드로이드다'의 안드로이드 겉표지를 좋아한다..  

    '이것이~'시리즈에 대한 정보는 여기서 볼 수 있다.->링크

     

     

    http://huiyu.tistory.com/285 

  • # 이것이 C언어다 - 서현우

      개인적으로 C라는 언어를 별로 안 좋아합니다. C가 만들어지기 전에 있었던 언어들(어셈블리어라던가, B언어라던가)에 비해서는 인간친화적인 언어라고 하지만 여전히 인간보다는 기계에 더 가까운 언어이기 때문에 아무래도 번거롭고 불편한 점이 많이 때문입니다. 특히 컴퓨터가 '귀한 컴퓨터느님'취급 받던 시기에 나온 언어라서, 컴퓨터의 동작원리에 가깝게 사고할수록 편리한 언어인데, 제가 C언어를 처음 접한 시점이 프로그래밍이라는 것을 처음 배우는 시점이었기 때문에, 컴퓨터의 동작원리에 가깝게 사고할수록 편리한 언어인 C언어는 불편하면서, 어렵기만 한 언어에 불과했습니다. 사실 지금도 그리 다르지 않습니다. 전문적인 소프트웨어, 그것도 아주 고성능이 필요한 경우가(운영체제라던가, 운영체제라던가, 운영체제라던가) 아니라면 사실 좋은 대안이 워낙 많습니다. 한참 공부하고 있는 파이썬을 비롯해서, RUST, GO 등 훨씬 많은 기본 라이브러리를 제공하고, 고급 자료형을 탑재한 생산성 좋은 언어들이 좋은 대안입니다.  


      네, C언어 험담을 왕창 했습니다. 그럼 여기서 한 가지 궁금증이 생깁니다. "아니 그렇게 C언어를 싫어하면서, 왜 C언어 책은 읽고 서평을 쓰고 있는가?"라는 의문입니다. 네, 만악의 근원 마법사 책이 문제입니다. 컴퓨터에 대해서 관심이 생긴 시기는 꽤 오래 전의 일입니다. 하지만 지금처럼 투자에 빠져들듯이 깊이 빠져들 만큼 흥미를 느끼진 못했었습니다. 너무 복잡하고, 어려워 보였기 때문입니다. 그런데 마법사 책(컴퓨터 프로그램의 구조와 해석)을 보고 나서부터 조금 달라졌습니다. 분명 여전히 어려운 것은 사실이지만, 사실 컴퓨터라는 도구가 할 수 있는 일 자체가 제한적이기 때문에, 당연히 프로그램이라는 컴퓨터에게 일을 시키는 매뉴얼 자체도 아주 단순한 행위들의 조합으로 구성되어 있다는 것을 알게 되었기 때문입니다. 그리고 그 과정에서, "어려워도 원리를 알아야 한다"는 생각을 하게 되었습니다. 분명 원리를 이해하는 일이 녹녹지 않은 일이긴 합니다. 하지만 원리를 이해하는 일은, 녹녹지 않은 과정을 감수할 만큼 큰 편익을 제공하는 일이라고 생각합니다. 예컨대, 'f(x) = 25 + 3x + x^2'이라는 함수가 있다고 할 때, 'f(x) = 25 + 3x + x^2'라는 함수의 식을 알고 결괏값을 보고 규칙성을 찾아내는 것과 f(1) = 29, f(2) = 35, f(3) = 43이라는 결괏값만 보고 f(4)의 값을 추정하는 것 간의 차이만큼 차이가 발생한다고 생각합니다. 즉, 어떤 논리적 객체를 다룰 때, 인풋과 아웃풋 사이의 과정을 블랙박스로 두지 않는 것만으로도 학습 효율이 현격하게 좋아진다는 것입니다.   


      C 언어를 공부해야겠다는 생각을 한 이유가 바로 위의 생각 때문입니다. 물론 파이썬 같은 아주 폭넓은 패키지를 제공하고, 언어 자체가 고급 자료형을 탑재하고 있는 언어를 사용하는 것이 훨씬 생산성도 좋고 편리하고 쉽습니다. 하지만 역설적으로 파이썬과 같은 고급 언어는 편리하기 때문에 중간 연산 과정에 대해서 알 수 있는 것이 거의 없습니다. 그래서 당장 어떤 일을 해결하기에는 참 좋지만, 조금 더 내 경우에 최적화된 방법론을 고안할 때는 다소 아쉬운 부분이 있는 것이 사실입니다. 물론 대부분의 경우에는, '더 최적화된 방법론'이 필요한 경우가 드물기 때문에 파이썬만 공부해도 큰 문제는 없다고 생각합니다. 하지만 만약에 조금 더 욕심이 난다면, C언어와 같은, 사용자에게는 조금 더 번거롭고, 불편하고, 원시적인 언어를 공부해보는 것이 큰 도움이 될 것입니다. 어떤 언어가 원시적이고, 컴퓨터에 가까운 Low-level 언어라는 점은 그 언어의 코드 그 자체가, 컴퓨터라는 기계가 동작하는 원리에 대해서 더 많은 것은 보여준다는 것을 의미하기 때문입니다.   


      그럼 C언어를 공부할 필요가 있다는 것까지는 알겠고, 왜 하필 이 책으로 공부를 해야 하느냐?라고 물으신다면, 사실 "꼭 이 책으로 공부할 필요는 없어요."라고 답해야 할 것 같습니다. 사실 시중에 C언어 책이 참 많습니다. 전 세계적으로 C의 바이블로 여겨지는 KNK도 있고, C언어의 아버지 데니스 리치 옹이 직접 집필한 C&R도 있습니다. 뿐만 아니라 국내 저자가 출간한 책들도 꽤 많습니다.   


    그럼에도 불구하고 [이것이 C언어다]라는 이 책도 좋은 교재 중에 하나가 될 수 있다고 생각합니다.   


      우선 첫 번째 이유는, '국문 서적'이라는 점입니다. 사실 까놓고 말해서 우리가 영어권 국가에 살고 있었고, 영어가 모국어였다면, 묻지도 따지지도 말고 KNK가 좋다고 생각합니다. 바이블이고, 아예 C로 먹고사는 분들도 강추하는 책이니까요. 하지만 문제는 KNK는 영문으로 된 책입니다. 사실 기술서적은 영문으로 봐도 큰 무리가 없긴 합니다만, 그래도 아무래도 읽는데 들어가는 시간이나, 저자가 나름 '친절하게 설명하는 부분'이 독자에게 상대적으로 '덜 친절하게 ' 느껴질 수 있다는 점에서 국문 서적의 장점이 있다고 생각합니다.   


      두 번째 이유는, "C99를 기준으로 설명하는 책이다"라는 점입니다. C언어는 컴파일되는 언어입니다. 그래서 실제 코드가 컴퓨터에게 전해질 때는 무조건 '컴파일'이라는 단계를 거쳐야만 합니다. 그런데 동시에 역사가 상당히 오래되었고, 아주 폭넓게 쓰이는 언어이기 때문에 형식도 여러 갈래가 있습니다. 하지만 역시 가장 좋은 것은 국제표준 형식인 C99라고 생각합니다. C99를 기준으로 프로그램을 짜고, 공부할 경우 어떤 컴파일러에서도 큰 무리가 없이 컴파일이 되고, 실행이 되겠지만 비표준 형식을 기준으로 프로그램을 짜고, 공부할 경우 다른 컴파일러에서 문제를 일으키는 경우가 더러 발생할 수 있기 때문입니다.   


      마지막 세 번째 이유는, "동영상 강의를 무료로 제공한다"라는 점입니다. 사실 이미 C언어를 수차례 접해본 프로그래머나 전문가 수준의 내용을 원하는 독자들은 KNK로 갈 것이라고 생각합니다. 바이블이 있음에도 불구하고, 국문 서적을 찾는 사람들은 대부분 프로그래밍에 대해서 아직 생소하고, 어려워하는 단계에 있는 사람들일 가능성이 높습니다. 그리고 그런 경우 텍스트만 보고 따라 하는 것은 중간에 아주 사소한 문제 때문에 곤란을 겪을 가능성이 높다고 생각합니다. 그리고 아닌 말로 정말 텍스트만 보고 따라 할 것이라면 차라리 그냥 KNK로 보는 게 낫지 않을까 하는 생각도 듭니다. 그런데, 이 책은 저자가 직접 무료로 동영상 강의를 제공합니다. 사실 대부분의 경우에는 책의 설명만으로도 충분합니다만, 실습을 하면서 막히는 부분이나 이해가 잘 안 가는 부분을 저자가 칠판에 글을 써가며 설명해주는 동영상 강의를 보면서 다시 도전해볼 수 있다는 점은 국내 저자의 책을 샀을 때만 누릴 수 있는 가장 큰 장점이라고 생각합니다.   


      사실 파이썬으로 편하게 코딩하다가 C언어로 코딩을 하려니까 꽤 답답했습니다. 심지어 저는 컴퓨터 환경이 크롬북이기 때문에 Termux에서 GCC 컴파일러로 컴파일을 해야 하는 상황이라서 더 귀찮았습니다. 하지만 책을 끝내는 시점이 되니, 확실히 공부하기 전보다 C언어뿐만 아니라 CS 관련 대부분의 주제에 대해서 공부하고 이해하는데 한결 수월해진 것을 체감할 수 있었습니다. :)     


      **이 책은 한빛미디어의 나는 리뷰어다 프로그램을 통해 제공받은 것임을 밝힙니다.**


     

  • 프로그래밍에 대해 전혀 모르는 상태로 C언어를 배우기 시작할 때 도움이 되었던 책입니다.

     

    입문자가 접하기에, 실전 예제에서 다소 절망감을 맛 볼 수는 있지만 예제의 수준이 평범한 것보다 어려운 것이 훨씬 좋다고 생각합니다.

     

    다른 출판사의 C# 입문서를 공부하고 있는데, 이 책이 자꾸만 아른거리네요..

  • <이것이 C언어다>책과 더불어 직강을 수강할 기회가 있었는데, 정말 행운이었다는 생각이 듭니다. 아직은 학부 전공자로써 많은 경험과 좋은 프로그래밍 실력을 갖추진 않았더라도, C문법에 대한 이해는 잘 하고 있다는 자신감을 갖고 있었지만, 책 내용과 더불어 강의를 들으면서 기초가 정말 부족했다는 점을 많이 배운 것 같네요.


    우선 제가 생각하는 책의 장점은 다음과 같습니다.


    첫째, 포인터, 특히 응용 포인터에 대해 이해하기 좋습니다. 제가 다른 책을 열심히 탐독하며 공부했더라면 진작에 깨우쳤을지도 모르지만, 부끄럽게도 6년동안이나 완벽하게 직관적으로 이해하고 있지 못했던 부분이 시원하게 풀렸습니다.

    또한 포인터 뿐 아니라 문자열 관련 파트도 상당히 자세히 다루고 있는데, 이유인즉 저자분의 오랜 강의경험에 의하면 문자열 파트를 상세히 다루는 것이 꽤 중요하다고 생각하셨다고 합니다. 저 또한 관련 예제나 문자/문자열 함수에 관한 예제와 설명을 보며 완전히 공감이 되더군요.

    둘째, 책의 구성이 개인적으로도 매우 마음에 듭니다. 각 챕터의 첫 장에는 해당 챕터와 관련한 주요 함수들의 원형, 기능, 예 등이 표로 정리되어 있고, 그 다음에는 예제, 그리고 설명 방식으로 구성되어 있습니다. 이는 레퍼런스용으로도 유용할 뿐 아니라 배우는 사람에게도 몰입도를 높일 것 같습니다.


    챕터 가장 첫 부분의 학습목표와 핵심 포인트가 정리된 부분도 복습시에 굉장히 유용합니다. 숫자로 정리된 부분은 정말로 그 장의 핵심입니다!


    마지막으로 예제 및 연습문제들은 꽤 생각을 요구하는 문제들이 많습니다.


    물론 아쉬운 점도 있습니다. 크리티컬하진 않지만 가끔 있는 몇몇 오탈자가 아쉽고, 이 책을 학부 졸업하고 나서야 접했다는게 아쉽네요.

  • 그동안 어렵게만 느껴졌고 아무리 배워도 전혀 나아지지가 않았던 프로그래밍을 접하면서 프로그래밍은 나와는 전혀 맞지 않은 분야로 생각되었습니다.

    그러다보니 자연스럽게 프로그래밍언어에 대해서는 기피하게 되었고 프로그래밍은 소위 머리가 좀 있는 사람들만 할 수 있는 전유물 정도로 생각하게 되었습니다.

    그래서 IT분야에서도 되도록이면 프로그래밍을 요리조리 피해다니며 나름 잘 버텨왔다고 생각해왔는데 프로그래밍은 IT분야에서 땔래야 땔수없는 필수불가결하다는 것을 깨닫게 되었습니다.

    현재 C언어로 구현된 리눅스 관련 업종에 종사하다보니 현재의 언어중에서도 가장 오래되었고 어렵다고만하는 C언어를 배우지 않을수가 없었습니다.

    시작도 하기전에 과거의 프로그래밍관련 실패가 주마등처럼 스쳐지나가면서 과연 잘 할수 있을까? 유명강사를 통한 학원수강의 도움을 좀 받아볼까 등 여러가지 생각이 교차되었고 이러한 상황에서 최근 한빛미디어에서 새롭게 출간한 <이것이 C언어>라는 교재를 알게되었습니다.

    그리고 퇴근길에 서점에 방문하여 이책이 과연 나에게 맞는 교재가 되어줄지를 판단하기위해 목차부터 내용까지 세세하게 검토하게 되었는데 예상했던 것보다 집필과 구성이 너무 마음에 들어 그자리에서 바로 구매를 결심하게 되었습니다.

    이 책을 통해 C언어를 공부하면서 느낀점이 있다면 역시 프로그래밍은 처음시작시에 어떠한 입문서로 시작하느냐에 그성패가 달려있다라는 것을 알게되었습니다.

    지금까지 단 한번도 처음부터 끝까지 프로그래밍 교재를 완주하지 못했던 저에게 있어 이 책은 언어중에서도 가장 어렵다는 C언어를 처음부터 끝까지 완주할 수 있게 만들어준 저에게는 최초의 프로그래밍 교재이며 프로그래밍에 대한 자신감을 불러일으켜준 책이 아니였나 생각됩니다.

    C언어를 포기하는 이유 가운데 하나가 그 어렵다는 포인터 때문이기도한데 그동안 배워도 학습해도 항상 새롭기만했던 그 포인터가 이해되는 것이 신기했습니다.

    그 이유는 이 책에서 포인터 개념을 명확히 확인할 수 있도록 15개에 이르는 그림을 통해 시스템에 어떻게 할당되고 어떻게 활용되며 왜 필요한지에 대한 원리를 명확하게 짚어주었기 때문에 가능했던거 같습니다.

    이와같이 이 책은 구성자체가 입문서에 맞도록 챕터 하나하나마다 그 원리를 설명해주고 그를 바탕으로 이해시켜주기에 막연하게 외우면서 공부할 필요가 없다는 것이였습니다.

    또한 이 책을 처음 선택했을 때 그 이유 가운데 하나가 이 책의 저자인 서현우 저자가 C언어만 10년 넘게 다루어온 베테랑이였다는 점이였습니다.

    그렇기에 C언어를 학습하는데 있어 무엇인 문제인지 어떻게 쉽게 이해시킬 수 있는지를 책한권에 충분히 담아낼 수 있는 C언어에 대한 내공이 충분했다는 점과 대규모 인력과 비용을 투입해 만든 동영상강의가 C언어를 한층 성숙하게 끌어올릴 수 있는 발판을 만들어 줄 수 있겠다는 생각이 들었기 때문입니다.

    또한 저도 한빛미디어를 통해 베타리더를 경험해보았기 때문에 이책의 크고 작은 오류를 잡아준 베타 리더의 역할이 이 책을 접하는 학습자에게 필요한 눈높이를 맞추어줄 수 있다는 점이 얼마나 큰지를 알고 있습니다.

    그렇기에 명강사의 명강의와 학습자의 눈높이에 필요한 베타리더의 활동이라는 부분만 보더라도 이 책 한권이 나오기위해 얼마나 많은 수고와 노력이 있었는지를 알 수 있었고 그러한 밑바탕이 제가 이책을 완독할 수 있었던 계기를 만들어주었던거 같습니다.

    이책을 통해 프로그래밍은 결코 어려운것이 아닌 어떤 입문서를 통해 기본을 다져나아가야 하느냐가 중요하다는 것을 알게되었습니다.

    남들이 좋은책이라고 하더라도 나에게는 안맞는 책이 분명히 존재하기에 나에게 맞는 필요한 책이 무엇인지를 직접 눈으로보고 판단하면서 자신의 입맞에 맞는 책을 찾는 것이 중요하다고 생각됩니다.

    이 책은 그동안 수도없이 포기해야만 했던 C언어 학습자에게 사막의 오아시스와도 같은 경험을 선사해 줄 것이라 생각됩니다. 그 오아시스를 저도 한번 맛보았기에 자신있게 말씀드릴 수 있습니다.

    책 한권을 완독했다고 바로 프로그래밍을 잘 할 수 있는 것은 아니지만 그동안 프로그래밍에 대해 갖고 있던 불안감을 잠식시키기에는 충분했습니다.

    이 책이 저와같이 프로그래밍에 대해 철저히 담을 쌓고 포기해왔던 수많은 학습자에게 C언어는 결코 어려운 것이 아닌 접근방식이 틀렸기때문이다라는 것을 새롭게 각인시켜 줄 것이라 생각됩니다.

    이 책과 탄탄한 저자의 직강을 통해 C언어의 매력에 한 번 빠져보시기 바랍니다.

  • 책은 700 페이지 정도로 두께가 얇은 편은 아니다.
    하지만 C언어의 기본적인 내용만 담는다 해도 그리 두꺼운 편은 아닐것이다.

    일단 책의 표지가 개인적으로 참 맘에 든다.
    어릴때는 그다지 로봇 그림에 관심이 없었는데 커서 왜그리 관심이 가는지..

    책의 구성은 하나의 주제에 대해서
    그 안에서 다시 짧게 소주제로 구성이 되어있다.
    소주제 사이에는 마무리 요약정리와 그에 대한 문제들이 수록되어 있는 구조이다.

    개인적으로 소주제로 짧게 구성되어 있는 부분이 참 좋은거 같다.
    괜찮은 구조인거 같다.

    보통 두꺼운 책은 하나의 주제가 길게 구성되어 있다.
    내용에 대해서 깊이있게 다루는 부분은 좋으나 자칫 필요이상으로 서술되어 있는 경우도 많고 지루할 수도 있다.
    보통 얇은 책은 하나의 주제가 짧게 구성 되어있다.
    내용을 간략하게 다루어 읽기는 좋으나 그 깊이가 좀 떨어지는 경우가 많다.

    이 책은 주제 안에 다시 소주제로 짧게 구성하여
    내용도 깊이있게 다루면서 소주제로 짧게 구성한 만큼
    필요한 부분만 다루는거 같아 읽기에 좋았다.

    프로그램의 흐름을 설명할 때 순서도를 같이 보여주는 부분도 좋았다.
    개인적으로 순서도로 표시하는 방식이 점차 잊혀지는(?) 거 같아 아쉬운데
    흐름을 설명할때 순서도로 이해하기 쉽게 표시하여 괜찮은거 같다.

    설명부분에 그림이 많이 들어가 있어
    이해하기 쉽게 구성한 부분도 괜찮은거 같다.

    개인적으로
    하나의 주제가 끝날때 마다 작은 프로젝트 형식의 도전과제가 있는데
    그중 한두개 정도는 소주제형식으로 다루었다면 하는 아쉬움이 있다.


    C언어에 배우려는 분들에게 참 괜찮은 책인거 같다.

  • 내용도 좋고 괜찬은데 동영상강좌를 찾으려 해도 아무리 안나오네요 어떻게 보는지 알려 주셨으면 합니다.

  • 한번도 프로그래밍언어 같은건 다루어 보지 않았지만 영상과 책을 통해 쉽고 빠르게 이해됩니다!

  • C강의중 제일 좋은것같습니다..

    딱 동영상 보니까~ 많은 강의 겸험이 있으신분같군요..!!

  • 초보부터 고급까지 도움이 되는 강의인것 같다.

    쉽게 기초부분부터 설명을 해주어서 이해하기 쉽고,
    이미공부 했던사람도 다시 개념을 잡을 수 있어서
    너무 좋은 것 같다.

  • 동영상 강의에 대한 질문이 있는데
    답변이 없네요 리뷰쓰는 곳이라 그런가...
    저도 동영상 강의와 병행하고 싶은데

  • 동영상강좌 어디에서 볼수 있나요..

  • 이메일에 1년 무상 수강권 제공이라고 있던데.

    책 구매하면 1년간 동영상 수강 볼수 있는건가요?

부록/예제소스
자료명 등록일 다운로드
DOWNLOAD 예제소스 2019-07-11 다운로드
결재하기
• 문화비 소득공제 가능
• 배송료 : 0원배송료란?

배송료 안내

  • 책, 아이템 등 상품을 3만원 이상 구매시 무료배송
  • 브론즈, 실버, 골드회원이 주문하신 경우 무료배송

무료배송 상품을 포함하여 주문하신 경우에는 구매금액에 관계없이 무료로 배송해 드립니다.

닫기

리뷰쓰기

닫기
* 도서명 :
이것이 C 언어다
* 제목 :
* 별점평가
* 내용 :

* 리뷰 작성시 유의사항

글이나 이미지/사진 저작권 등 다른 사람의 권리를 침해하거나 명예를 훼손하는 게시물은 이용약관 및 관련법률에 의해 제재를 받을 수 있습니다.

1. 특히 뉴스/언론사 기사를 전문 또는 부분적으로 '허락없이' 갖고 와서는 안됩니다 (출처를 밝히는 경우에도 안됨).
2. 저작권자의 허락을 받지 않은 콘텐츠의 무단 사용은 저작권자의 권리를 침해하는 행위로, 이에 대한 법적 책임을 지게 될 수 있습니다.

오탈자 등록

닫기
* 도서명 :
이것이 C 언어다
* 구분 :
* 상품 버전
종이책 PDF ePub
* 페이지 :
* 위치정보 :
* 내용 :

도서 인증

닫기
도서명*
이것이 C 언어다
구입처*
구입일*
부가기호*
부가기호 안내

* 회원가입후 도서인증을 하시면 마일리지 500점을 드립니다.

* 한빛 웹사이트에서 구입한 도서는 자동 인증됩니다.

* 도서인증은 일 3권, 월 10권, 년 50권으로 제한됩니다.

* 절판도서, eBook 등 일부 도서는 도서인증이 제한됩니다.

닫기

해당 상품을 장바구니에 담았습니다.이미 장바구니에 추가된 상품입니다.
장바구니로 이동하시겠습니까?

자료실