프로그래밍은 연습으로 배우는 것이다!
가장 깊이 있는 C 언어 입문서
C 언어의 난해하고 까다로운 주제도 생략하지 않고 단계별로 차근차근 설명한다.
개념을 생략하고 쉬운 책이 되는 것보단 제대로 설명한다.
처음 입문하는 사람도 따라 할 수 있다!
프로그래밍을 처음 학습하는 사람도 단계별로 차근차근 따라하면 충분히 이해할 수 있는 구성으로 되어 있다.
이론 > 실습 > 퀴즈 > 연습문제 > 심사문제를 따라 가면서 한 가지 주제를 5번 반복해서 학습한다. 마지막으로 핵심정리와 Q&A로 정리한다.
올바른 코딩을 익혀라
C 언어는 오래된 언어이고 함정이 많은 언어다.
잘못된 코드를 작성하고 올바르게 풀었다고 착각하기 쉬운 언어다.
온라인 심사로 꼼꼼하게 채점해서 실수를 바로 잡는다.
의미있는 성장을 하라
학습 진척도를 통해 자신의 학습을 점검하고 성장을 체크한다.
심사문제 평균 통과율 90%! 심사를 통과하고 성장을 확인하라!
노력하면 반드시 통과하고 성장할 수 있는 심사문제!
10번, 20번씩 시도한 만큼 확실하게 성장한다.
학습 전용 사이트 제공
코딩 도장(dojang.io) 사이트에서 학습 진척도, 온라인 심사, 독자 Q&A를 제공한다.
초판 출간 이후 누적 페이지뷰 5,500만, 방문자수 1,800만을 달성!
예제 소스: https://github.com/gilbutITbook/006759
코딩 도장: https://dojang.io
[베타테스터의 한마디]
이 책처럼 이해하기 쉬운 책은 없었습니다.
"C 언어 책은 많습니다. 하지만 제대로 된 책은 단 한 권입니다. 그게 바로 이 책입니다. C 언어를 공부하는 분들이 꼭 봐야 할 책!! 기초부터 고급 기술까지 탄탄하게 설명이 되어있습니다. 다른 C 언어 책은 어렵고 지루합니다. 하지만 이 책은 누가 읽어도 쉽고 재미있게 C 언어를 배울 수 있습니다.
많은 C 언어 책을 봤지만, 이 책처럼 이해하기 쉬운 책은 없었습니다. 처음 공부하는 분과 C 언어 공부를 해봤던 분 모두 이 책 한 권이면 해결될 것입니다. 이 책은 C 언어를 다시 공부하시고 싶으신 분, 기초를 확실히 잡고 싶으신 분과 재미있게 공부 하고 싶으신 분들께 추천해 드립니다.
김현명 | 20대
직접 생각하고 코드를 입력하는 과정이 재미있었습니다.
C 언어도 프로그래밍도 처음이었는데도 하나하나 배우고 문제를 푸는 데 무엇보다 '재미'가 있었습니다. 쉬운 부분도 있었고 어려운 부분도 있었는데 문제를 통해 새로운 방향으로 생각할 수 있어 신선했습니다. 그냥 글자만 읽는 것이 아니라 직접 생각하고 코드를 입력하는 과정이 재미있었던 것 같습니다.
이원희 | 30대
강좌 내용도 지루하지 않았고 이해하기 쉽습니다.
제어 흐름, 데이터 구조를 활용하는 방법과 ANSI C가 정의한 가이드를 제시한 점이 좋았습니다. 강좌 내용도 지루하지 않았고 이해하기 쉽게 되어 있어 많은 도움이 되었습니다.
정구민 | 20대
포인터와 메모리에 대해 확실하게 연습!
C 언어의 아주 기초부터 착실히 다질 수 있었습니다. 특히, 포인터와 메모리에 대해 확실히 연습해볼 수 있습니다.
Hyukun | 30대
C 언어를 처음 접하는 사람부터 경험자까지!
C 언어에 대해 처음 접하는 사람부터 공부하고 있는 사람까지 처음 시작하기에도 좋고, 알고 있던 내용을 복습하기에도 좋은 것 같습니다!
이창호 | 20대
[저자 서문]
컴퓨터만큼 발전이 빠른 분야도 없습니다. 컴퓨터가 만들어지고 불과 70여 년 만에 상상을 초월하는 성능과 기능을 갖추게 되었습니다. 처음 접한 컴퓨터는 8비트 컴퓨터였는데 당시에는 그냥 글자가 화면에 나오는 타자기 수준이었습니다. 그 이전에는 집채만 한 군사용 계산기였죠. 하지만 지금은 현실과 구분되지 않을 정도의 화려한 그래픽으로 된 게임을 즐기고, 컴퓨터는 절대 사람에게 이길 수 없다고 여겨졌던 바둑마저도 사람을 이기는 수준에 이르렀습니다.
전기 전자 기술이 컴퓨터 하드웨어를 고성능으로 발전시켰지만, 사실 컴퓨터의 발전은 소프트웨어의 발전이라 할 수 있습니다. 게임도 알파고도 전부 소프트웨어입니다. 우리가 실제로 컴퓨터를 접하는 대상은 소프트웨어죠.
이렇게 발전한 소프트웨어에는 프로그래밍 언어가 큰 역할을 했습니다. 아주 초창기에는 사람이 직접 전선을 연결해서 원하는 계산을 하기도 했고, 한동안 기계어나 어셈블리를 입력하여 개발하기도 했습니다. 개발하기도 어렵고, 불편한 데다가 기간도 오래 걸렸습니다.
시간이 흘러 사람이 쉽게 알아볼 수 있는 프로그래밍 언어가 나오면서 발전 속도가 훨씬 빨라졌습니다. 대표적인 언어가 C 언어인데 윈도우, 리눅스, OS X 같은 운영체제와 다양한 소프트웨어가 C 언어로 개발되었습니다. 이후 수많은 프로그래밍 언어가 나오면서 소프트웨어 시대를 열었습니다.
현재 우리가 컴퓨터로 접하는 화려한 그래픽의 게임, 인터넷을 둘러보는 웹 브라우저, 스마트폰의 앱은 모두 소프트웨어입니다. 자판기, 지하철 전광판, 자동차 엔진, 엘리베이터, 신호등도 눈에 보이지 않지만, 모두 소프트웨어입니다. 일상생활이 소프트웨어로 시작해서 소프트웨어로 끝난다고 해도 과언이 아닙니다.
시대가 시대인 만큼 소프트웨어는 더욱 많이 사용될 것이고 직업으로서도 전망이 밝다고 생각합니다.
우리는 여기서 C 언어를 배우고자 합니다. C 언어는 프로그래밍의 기본이라 알려져 있지만, 배우기는 쉽지가 않습니다. 언어 자체는 간단하지만, 컴퓨터의 구조와 운영체제의 동작까지 익혀야 원활하게 사용할 수 있기 때문입니다.
제가 C 언어를 처음 배울 때를 생각해보면 여러 가지 어려움이 많았습니다. 포인터가 이해되지 않아서 쩔쩔매기도 했고, 자료형 변환이 이해되지 않아서 그냥 문법만 외워서 쓰기도 했습니다. 그래서 이 책을 쓰면서 어떻게 하면 좀 더 쉽게 C 언어를 배울 수 있을까 고민을 많이 했습니다.
C 언어의 문법과 사용 방법을 설명하면서 어려운 컴퓨터 구조나 운영체제 부분은 최소한으로 줄이고 필요한 부분에만 집중했습니다. 좀 더 깊고 자세한 설명은 참고와 Q&A를 통해서 익힐 수 있게 구성했습니다.
프로그래밍 언어는 단순히 공부만 해서 되는 것이 아니라 연습을 하면서 자연스럽게 원리를 익히는 것이 중요합니다. 이 책에서는 직접 타이핑하면서 연습할 수 있도록 코딩 도장 웹 사이트를 제공합니다. 코딩 도장의 심사 문제를 통해 스스로 생각하며 풀어보는 과정이 프로그래밍에 대한 이해를 깊게 해줄 것입니다.
베타테스트 기간 동안 책 내용에 대한 의견을 주신 분들과 심사 문제를 테스트해주신 모든 분께 감사의 말씀을 드립니다. 아무쪼록 C 언어 학습에 어려움을 겪고 있는 모든 분에게 도움이 되었으면 좋겠습니다.
_남재윤
UNIT 1. 소프트웨어 교육과 C 언어
UNIT 2. Visual Studio 설치하기
UNIT 3. Hello, world!로 시작하기
UNIT 4. 기본 문법 알아보기
핵심 정리
Q & A
UNIT 5. 변수 만들기
UNIT 6. 디버거 사용하기
UNIT 7. 정수 자료형 사용하기
UNIT 8. 실수 자료형 사용하기
핵심 정리
Q & A
UNIT 9. 문자 자료형 사용하기
UNIT 10. 상수 사용하기
UNIT 11. 입력 값을 변수에 저장하기
핵심 정리
Q & A
UNIT 12. 덧셈, 뺄셈하기
UNIT 13. 증가, 감소 연산자 사용하기
UNIT 14. 곱셈, 나눗셈하기
UNIT 15. 나머지 연산하기
UNIT 16. 자료형의 확장과 축소 알아보기
핵심 정리
Q & A
UNIT 17. if 조건문으로 특정 조건일 때 코드 실행하기
UNIT 18. else를 사용하여 두 방향으로 분기하기
UNIT 19. else if를 사용하여 여러 방향으로 분기하기
핵심 정리
Q & A
UNIT 20. 비교 연산자와 삼항 연산자 사용하기
UNIT 21. 논리 연산자 사용하기
UNIT 22. 불 자료형 사용하기
핵심 정리
Q & A
UNIT 23. 비트 연산자 사용하기
UNIT 24. 비트 연산자 응용하기
UNIT 25. 연산자 우선순위 알아보기
핵심 정리
Q & A
UNIT 26. switch 분기문으로 다양한 조건 처리하기
UNIT 27. for 반복문으로 Hello, world! 100번 출력하기
UNIT 28. while 반복문으로 Hello, world! 100번 출력하기
UNIT 29. do while 반복문으로 최소 한 번은 실행하기
UNIT 30. break, continue로 반복문 제어하기
UNIT 31. 계단식으로 별 출력하기
핵심 정리
Q & A
UNIT 32. goto로 프로그램의 흐름을 원하는대로 바꾸기
UNIT 33. FizzBuzz
핵심 정리
Q & A
UNIT 34. 포인터 사용하기
UNIT 35. 메모리 사용하기
핵심 정리
Q & A
UNIT 36. 배열 사용하기
UNIT 37. 2차원 배열 사용하기
UNIT 38. 포인터와 배열 응용하기
핵심 정리
Q & A
UNIT 39. 문자열 사용하기
UNIT 40. 입력 값을 문자열에 저장하기
핵심 정리
Q & A
UNIT 41. 문자열의 길이를 구하고 비교하기
UNIT 42. 문자열을 복사하고 붙이기
UNIT 43. 문자열 만들기
UNIT 44. 문자열 검색하기
UNIT 45. 문자열 자르기
UNIT 46. 문자열과 숫자를 서로 변환하기
UNIT 47. 회문 판별과 N-gram 만들기
핵심 정리
Q & A
UNIT 48. 구조체 사용하기
UNIT 49. 구조체 포인터 사용하기
UNIT 50. 두 점 사이의 거리 구하기
핵심 정리
Q & A
UNIT 51. 구조체 멤버 정렬 사용하기
UNIT 52. 구조체와 메모리 활용하기
UNIT 53. 구조체 배열 사용하기
핵심 정리
Q & A
UNIT 54. 공용체 사용하기
UNIT 55. 구조체와 공용체 활용하기
핵심 정리
Q & A
UNIT 56. 구조체 비트 필드 사용하기
UNIT 57. 열거형 사용하기
핵심 정리
Q & A
UNIT 58. 자료형 변환하기
UNIT 59. 포인터 연산 사용하기
핵심 정리
Q & A
UNIT 60. 함수 사용하기
UNIT 61. 함수에서 반환값 사용하기
UNIT 62. 함수에서 매개변수 사용하기
핵심 정리
Q & A
UNIT 63. 함수에서 포인터 매개변수 사용하기
UNIT 64. 함수에서 배열 매개변수 사용하기
UNIT 65. 함수에서 구조체 매개변수 사용하기
핵심 정리
Q & A
UNIT 66. 함수에서 가변 인자 사용하기
UNIT 67. 함수에서 재귀호출 사용하기
UNIT 68. 함수 포인터 사용하기
UNIT 69. 함수 포인터 활용하기
핵심 정리
Q & A
UNIT 70. 파일에서 문자열을 읽고 쓰기
UNIT 71. 파일 포인터 활용하기
UNIT 72. 파일에서 구조체를 읽고 쓰기
핵심 정리
Q & A
UNIT 73. 배열 정렬하기
UNIT 74. 연결 리스트 구현하기
핵심 정리
Q & A
UNIT 75. 매크로 사용하기
UNIT 76. 조건부 컴파일과 파일 포함 사용하기
UNIT 77. 여러 소스 파일 사용하기
핵심 정리
Q & A
UNIT 78. 전역 변수 사용하기
UNIT 79. 기억 부류 지정자 사용하기
UNIT 80. 실행 파일 옵션 사용하기
핵심 정리
Q & A
UNIT 81. 실전 예제: 비트맵 파일을 아스키 아트로 변환하기
UNIT 82. 실전 예제: 파일 아카이브 구현하기
핵심 정리
Q & A
UNIT 83. 실전 예제: JSON 파일 읽고 쓰기
UNIT 84. 실전 예제: GitHub의 소스 코드 사용하기
핵심 정리
Q & A
UNIT 85. 부록
ㆍ지은이 남재윤
독자의견 남기기