열심히 이것이 C언어다 란 책을 통해 C언어를 공부하고 있는데, 알고지내는 지인이 이런말을 했다."이 책으로 C언어 공부하면 이런 로봇도 만들 수 있는 거야?"이 책의 겉표지엔 굉장히 으리으리한 로봇 하나가 서 있는데 그걸 보고 물어본 질문이다.사실 C언어는 모든 언어의 기본이 되기도 하고, 대부분 개발자가 처음 언어를 공부한다고 하면 공부하는 언어이기도 하다. 또한 실제로도 C언어는 임베디드나 운영체제, 특히 성능이 중요한 분야에서는 활용도가 높고 기본이 되는 언어이다. 그래서 이 책을 보고 C언어를 공부하면 사실이런 로봇도 만들 수도..?있다고 생각된다.C언어는 모든 언어 중 가장 기본이 되는 언어인 것은 사실이고, 처음 개발을 시작할 때 공부하는 언어이다. 나 역시 처음 프로그래밍 공부를 시작할 때 C언어 기본 입문서를 잡고 공부를 했던 기억이 있다. 그렇게 매번 언어 입문서를 보고 공부하다보면 같은 곳에서 손을 놓았던 기억이 난다. 바로 문자열에서 배열과 포인터의 관계, 포인터에 대한 개념이 들어가면서부터이다. 몇번이고 읽어보지만 혼자 공부할 때마다이해하기가 힘들었고, 그러다보니 흥미가 자연스럽게 떨어져 책을 놓게 되었다. 그래서 이것이 C언어다 를 볼 땐 무엇보다 첫 입문자의 마음으로 C언어를 할 때 어렵게 다가왔던 개념들에 대해서 잘 이해할 수 있을지, 혼자서 이 책으로 공부할 수 있을지에 대해관심을 갖고 보게 되었다.책은 크게 두개의 파트로 나눠져 있는데, Part1.C언어의 기본과 Part2.C언어 고급. 즉 기본과 고급으로 나눠져 있다.처음 언어를 시작하는 사람이라면 우선적으로 목표를 C언어 기본에 두고 공부를 하고, C언어를 알고 있으나 이해를 넓히고 싶다면 앞부분은 생략하고 고급에서부터 시작해도 상관없다고 생각된다.C언어 기본 파트에선 C언어에서 가장 기본적으로 다루는 문법적인 부분을 설명한다. 첫 장에서 기본적인 컴파일러의 의미, 프로그램이 어떻게 실행하는지를 시작으로 변수/상수의 의미, 조건문/반복문, 함수, 배열, 기초적인 포인터의 개념을 다루고 있다.C언어 고급 파트에선 배열과 포인터의 관계나 문자열 처리방법, 동적할당, 다차원 배열, 구조체 등 C언어에서 다루는 고급적인, 조금 사람들이 이해하기 어렵다고 생각하는 개념들에 대해서 설명하고 있다.이 책의 저자 서현우님은 C언어 전문강사로 12년째 일을 하고 계신 분이라고 한다. 그래서 그런지 책 전체적으로 C언어를 사람들에게 쉽게 이해할 수 있게 전달할 수 있는 방법을 고민하고 작성했단 느낌을 많이 받았다.우선, 책 전체적으로 실습하며 따라할 수 있는 실습위주의 방식으로 하고 있어서, 각 개념들을 따라치며 자연스럽게 이해할 수 있다. 그리고 각 챕터에 핵심이 되는 문장에 굵은 음영표시로 강조하여 이해를 도와주고 있다.무엇보다 이 책의 가장 큰 특징은 이해하기 어려운 부분을 이미지로 도식화한 설명이 많다는 것이다. 대부분 처음 접하는 사람들은 글이나 코드로 된 설명으로만 보게 되면, 이게 무슨 말인지? 무엇을 의미하는 지 이해하기가 힘들다. 그런 부분들을 머릿속에 쉽게 그려볼 수 있도록 많은 이미지로 도식화하여 제공 해주고있어 이해를 도와준다.마찬가지로 처음 C언어를 배울 땐, 왜 이렇게 사용하는 지? , 왜 이렇게 되는건지? 에 대한의문이 들때가 있는데, 혼자 공부하게 되면 그냥 이런거구나하고 끝나기 마련인데, 책에 왜 이렇게 사용되는지, 왜 이렇게 되는건지에 대해서도 꼼꼼히 기입하고 있다. 또한 왜? 에 대해서 뿐만 아니라 C언어를 하면서 흔히 하는 실수에 대해서도 책에 기입하고 있어, 혼자 자습하기에도 좋은 책이라고 생각된다.또한 매 챕터에 연습문제와 실전예제를 제공해주고 있다. 각 문제와 예제는 기초적인 알고리즘 문제 형태로 제공된다.C언어를 배운 다음, 다음 관심을 갖고 공부할 과목은 알고리즘일텐데 각 챕터에서 배운 문법을 알고리즘 문제에선 어떻게 쓸 수 있는지 어떤 프로그램을 만드는데 쓰는지알 수 있어, 배우는 데 흥미를 계속 갖을 수 있게 도와준다.끝으로 책을 구매하면 동영상 무료강의를 볼 수 있단 것도 이 책의 큰 특징이다. 대부분 이 책을 구매하는 사람들은 처음 C언어를 공부하려고 하는 사람들일텐데 책으로만 봤을 때 이해하기 힘든 부분은 동영상을 보면서 공부할 수 있게 되어, 좀더 끝까지 포기하지 않고 C언어를 공부할 수 있는 계기가 될 수 있다.챕터별 강의를 앞페이지에서 QR코드로 제공하고 있다. 행여 강의를 못찾을까봐 QR로도 제공하는 것 같다.. 이러한 부분만 봐도, 이 책은 처음 공부하는 사람에게 친절하게 가능한 많은 도움을 주려고 노력한 책이라고 생각된다. C언어에 대한 입문서들이 이미 많이 나와있지만,혼자 자습해야 하는 사람, 또는 너무 어렵게 된 내용에 C언어를 포기한 사람들에게 이 책을 추천해주고 싶다.이 책은 한빛미디어에서 만드는 이것이ㅇㅇ이다! 시리즈 중 하나로 이것이 C언어다 는 C언어에 대한 내용을 다룬기본서적이다. 이것이 ㅇㅇ이다. 시리즈 대부분은 언어에 대한 기본서적이 많고, 겉표지 디자인이 로봇으로 되어있는 특징? 을 갖고있다. 혹시나 으리으리한 로봇 디자인의 책을 모으고 싶다면 이것이 ㅇㅇ시리즈를 한번 찾아보는 것도 좋을 것 같다. 개인적으론 이것이 안드로이드다 의 안드로이드 겉표지를 좋아한다.. 이것이~ 시리즈에 대한 정보는 여기서 볼 수 있다.->링크http://huiyu.tistory.com/285
이 책은 저자가 10년 넘게 프로그램과 C 언어 입문자에게 강의하면서 얻게 된 ‘입문자에게 진정으로 필요하고 절실한 내용’을 담았다. 모든 장은 ‘학습 목표’를 제시하고 목표 달성에 알맞은 예제와 초보자의 눈높이에 맞힌 설명이 이어진다. 또한 ‘연습문제’와 ‘도전 실전 예제’로 실력을 다질 수 있게 한다. C 언어는 하드웨어와 가까운 프로그래밍 언어이기 때문에 단순히 문법만 익혀서는 제대로 프로그램을 할 수 없다. 그러한 이유로 C 내면의 동작 원리를 수많은 그림과 함께 알기 쉽도록 설명했기에, 입문자는 물론이고 기존 프로그래머들에게도 유용하다. 이 책이 제시하는 내면의 설명을 읽다 보면 많은 사람을 절망으로 빠트린 ‘포인터’마저도 확실히 정복하게 될 것이다!
동영상 강의 이벤트 참여하기 ~1/16 *클릭*
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 표준 라이브러리 함수와 매크로. 678
_ E. 실전 프로젝트. 702
카테고리 없음