이 세상에 없던 C언어 책
- 게임 코드 13개, 움직이는 코드 17개, LAB 36개, 연습문제 1004개
어느 C언어 책에서도 볼 수 없었던 개념 설명과 C코드를 담았다. 경마 게임, 포커 게임, 지뢰 피하기 게임 등 즐길 수 있는 게임 코드가 13개 있고 꽃이 피고 비가 내리고 눈이 내리는 등 다양하게 움직이는 코드가 17개 있다. 모든 코드는 30줄 정도로 만들어 쉽게 이해할 수 있으며 비주얼 스튜디오뿐 아니라 유닉스에서도 실습할 수 있다. 학습한 코드는 연습문제를 통하여 다양한 형태로 활용해 볼 수 있다.
실생활에서 흔히 접할 수 있는 예제와 여러 캐릭터를 활용한 그림으로 비전공자도 이해할 수 있도록 풀어서 설명했다. 소제목마다 난이도별 태그를 붙여서 원하는 학습 수준에 따라 필수, 기본, 심화 태그를 선택하여 학습할 수 있다.
조성호
중학교 때 아버지에게 선물 받은 컴퓨터가 계기가 되어, 한국외국어대학교 전산학과에 진학했다. 고려대학교 컴퓨터학과에서 석사와 박사 과정을 마쳤으며 현재 한신대학교 소프트웨어융합학부에서 교수로 재직 중이다. 컴퓨터를 포함하여 카메라, 자동차, 오디오와 같은 기계들에 관심이 많고, 프로그램으로 무언가 만드는 것도 좋아한다. 저서로 ‘쉽게 배우는 운영체제(한빛아카데미)’, ‘초연결 사회를 위한 컴퓨터 개론(한빛아카데미)’, ‘스크래치로 배우는 컴퓨팅 사고(한빛아카데미)’가 있다.
Chapter 01 C언어 기본
1.1 소프트웨어와 하드웨어
1 소프트웨어란?
2 하드웨어란?
3 컴퓨터란?
4 프로그래밍이란?
1.2 C언어와 컴파일러
1 C언어의 특징
2 C언어의 영향
3 컴파일러란?
1.3 알고리즘
1 알고리즘이란?
2 알고리즘 표현 방법
1.4 컴퓨팅 사고
1 컴퓨팅 사고란?
2 컴퓨팅 사고의 구성
3 알고리즘 작성
요약
연습문제
Chapter 02 C프로그래밍 준비
2.1 컴파일과 디버깅
1 프로그래밍 과정
2 디버깅이란?
2.2 비주얼 스튜디오 사용
1 비주얼 스튜디오 설치
2 비주얼 스튜디오 시작하기
3 비주얼 스튜디오에서 컴파일하기
4 문법 오류 처리하기
5 디버깅 사용하기
6 유닉스에서 C코드 실행하기
2.3 전산 관련 용어
1 데이터 단위
2 2진법
3 16진법
4 논리 연산
요약
연습문제
Chapter 03 C프로그램 구성요소
3.1 C프로그램 구조
1 C코드 구조
2 C코드 기본 규칙
3 주석이란?
3.2 함수와 라이브러리
1 함수란?
2 라이브러리와 헤더파일
3 함수 구조
4 제어문자
3.3 변수의 선언과 활용
1 변수란?
2 변수 만들기
3 대입 연산자
4 변수 값 출력하기
5 대입 연산자 활용
[LAB] 사칙 연산 코드 만들기
[LAB] 루트 값 구하기
요약
연습문제
Chapter 04 자료형과 특징
4.1 자료형별 특징
1 정수형의 특징
2 실수형의 특징
3 문자형의 특징
4 변수 초기화
5 입력 함수 scanf()
6 비주얼 스튜디오에서 scanf() 사용
4.2 정수형
1 다양한 정수형 변수
2 정수형의 서식문자
3 정수의 저장 방식
4.3 실수형
1 다양한 실수형 변수
2 실수형의 서식문자
3 실수의 저장 방식
[LAB] 시급 계산 코드
4.4 문자형
1 문자형의 저장 방식
2 제어문자란?
3 특수문자 출력
4.5 상수
1 상수형 변수
2 매크로
3 리터럴
4 정수와 실수 리터럴
[LAB] 세금을 포함한 주급 계산
요약
연습문제
Chapter 05 연산자
5.1 연산자에 대하여
1 연산자와 피연산자
2 연산자 우선순위
5.2 주요 연산자
1 산술 연산자
2 비교 연산자
[LAB] 생수 값 계산하기
3 논리 연산자
4 대입 연산자
5 증감 연산자
[LAB] 피자 값 계산하기
5.3 그 외의 연산자
1 나열 연산자
2 sizeof 연산자
3 형 변환 연산자
[LAB] T와 F 출력하기
4 비트 연산자
5 복합 대입 연산자
5.4 연산자 우선순위
1 연산자 우선순위
2 연산자 결합방향
3 복잡한 연산자의 부작용
요약
연습문제
Chapter 06 조건문
6.1 제어문
1 제어문에 대하여
6.2 if-else 문
1 if 문 구조
2 if-else 문 구조
3 블록(block)의 사용
[LAB] 아르바이트 시급 계산하기
4 다중 조건문
[LAB] 가위바위보 게임
6.3 switch 문
1 switch 문 개요
2 switch 문에서 case의 변형
3 switch 문 활용
4 3항 조건 연산자
5 goto 문
요약
연습문제
Chapter 07 반복문
7.1 반복문 개요
1 반복문의 구조
7.2 for 문
1 for 문의 구조
2 for 문 활용
7.3 다중 반복문
1 다중 반복문이란?
2 다중 반복문 활용
[LAB] 알람시계 만들기
7.4 while 문
1 while 문 구조
2 break 문
3 continue 문
4 do while 문
[LAB] 스탠드 게임 만들기
[LAB] 단일 반복문을 사용한 알람시계
[LAB] 단일 반복문을 사용한 구구단 코드
[LAB] 유닉스와 윈도우즈의 차이
요약
연습문제
Chapter 08 함수
8.1 사용자 정의 함수
1 라이브러리 함수
2 사용자 정의 함수
3 사용자 정의 함수 구조
4 사용자 정의 함수 사용
[LAB] 사용자 정의 함수 활용 - 사운드 미터
8.2 변수의 종류와 범위
1 지역 변수
2 변수의 생존 범위
3 전역 변수
8.3 함수의 종류와 특징
1 함수의 종류
2 참조에 의한 호출(call by reference)
3 값 반환(return value)
[LAB] 오늘의 운세 코드
요약
연습문제
Chapter 09 배열
9.1 배열 개요
1 배열의 필요성
2 배열 사용하기
3 배열 활용하기
9.2 배열 활용
1 배열 초기화
2 배열 초기화 활용
[LAB] 경마 게임
[LAB] 내 팔자 어찌하오 게임
[LAB] 꽃 피는 봄 코드
3 배열과 매크로
[LAB] 여름 소나기 코드
9.3 문자열
1 문자열이란?
2 문자열 변수 초기화
[LAB] 가을 구름 코드
9.4 배열과 매개 변수
1 배열과 매개 변수
2 문자열과 매개 변수
9.5 2차원 배열
1 2차원 배열이란?
2 2차원 배열의 구조
[LAB] 간단한 포커 게임 만들기
[LAB] 눈 내리는 겨울 코드
요약
연습문제
Chapter 10 포인터
10.1 포인터 개요
1 포인터의 본질
2 직접 접근과 간접 접근
3 *를 붙이게 된 이유
4 포인터의 선언과 표시
5 포인터의 영향
10.2 포인터의 특징
1 포인터의 사용
2 포인터의 특징
[LAB] 추억은 방울방울
[LAB] 움직이는 빗살무늬
10.3 포인터와 배열
1 포인터와 배열의 유사점
2 포인터와 배열의 차이점
3 포인터와 매개 변수
[LAB] 지뢰 피하기 게임
4 포인터의 연산
[LAB] 확률 무작위 수를 사용한 포커 게임
5 포인터와 증감 연산자
[LAB] 포인터를 이용한 겨울 눈 쌓이는 코드
10.4 탐색과 정렬
1 이진 탐색
2 정렬 알고리즘
3 버블 정렬
4 선택 정렬
요약
연습문제
Chapter 11 문자와 문자열
11.1 문자열 처리
1 문자와 문자열의 기초
2 언더바가 붙은 함수
3 입출력 버퍼
[LAB] 빗살 찢어 코드
11.2 문자 입출력 함수
1 문자 입출력 함수
2 버퍼 없는 문자 입출력 함수
[LAB] 바람 기억 코드
[LAB] 빨라지는 원반 사격 게임
[LAB] 카멜레온 사운드 미터
11.3 문자열 처리 함수
1 문자 처리 함수들
2 문자열 처리 함수 개요
3 문자열 복사 또는 붙여넣기
4 문자열 비교 또는 찾기
5 문자열 분리하기
6 문자열을 숫자로 변환하기
7 문자열 정렬하기
[LAB] 쓸쓸하神 도깨비
11.4 여러 개의 문자열 처리
1 여러 개의 문자열 이해하기
2 여러 개의 문자열 사용하기
3 여러 개의 문자열 활용
[LAB] 찬란하神 도깨비
요약
연습문제
Chapter 12 구조체
12.1 구조체 정의
1 구조체란?
2 구조체 정의 및 선언
3 구조체에 데이터 넣기
12.2 사용자 정의 자료형
1 사용자 정의 자료형 만들기
2 구조체 복사하기
3 멤버 구조체
12.3 구조체 배열과 포인터
1 구조체 배열
2 구조체 배열 사용하기
[LAB] 문자 비 코드
12.4 구조체와 포인터
1 구조체 포인터 이해하기
2 포인터를 멤버로 가지는 구조체
[LAB] 가을 흘러가는 구름 코드
12.5 구조체와 함수
1 구조체와 매개 변수
2 구조체 배열을 함수로 전달하기
12.6 공용체와 열거형
1 공용체
2 열거형
요약
연습문제
Chapter 13 파일 입출력
13.1 기본 입출력
1 입출력 이해하기
2 기본 출력 함수: printf()
3 기본 입력 함수: scanf()
13.2 파일의 이해
1 파일 입출력 이해하기
2 파일 기술자
3 파일의 구성
4 파일 열고 닫기
13.3 텍스트 파일 입출력
1 문자 단위 입출력
2 문자열 단위 입출력
3 서식문자를 사용한 입출력
4 이진 파일 입출력
13.4 파일 포인터
1 파일 포인터 이해하기
2 파일 포인터 사용하기
요약
연습문제
Chapter 14 전처리와 다중 소스 파일
14.1 전처리와 매크로
1 전처리 이해하기
2 함수 매크로
3 여러 코드를 가진 매크로
4 매크로 선언 위치
5 문자열 변환
6 내장 매크로
14.2 조건부 컴파일
1 조건부 컴파일
2 다중 조건 매크로
14.3 다중 소스 파일
1 다중 소스 파일 이해하기
2 실행 파일이 만들어지는 과정
3 다중 소스 파일 설계
4 다중 소스 파일 만들기
5 정적 변수
6 외부 변수
요약
연습문제
Chapter 15 이중&함수 포인터
15.1 이중 포인터
1 이중 포인터란?
2 2차원 배열과 이중 포인터
3 함수와 이중 포인터
4 main() 함수 매개 변수
5 void 포인터
15.2 함수 포인터
1 함수 포인터 이해하기
2 함수 포인터 사용하기
3 함수 포인터 배열
4 유닉스에서 시그널 처리
15.3 순환 호출
1 함수와 스택
2 순환 호출
요약
연습문제
Chapter 16 동적 메모리 할당
16.1 동적으로 메모리 할당 받기
1 동적 메모리 할당의 필요성
2 동적 메모리 할당 함수
3 calloc()과 realloc()
16.2 연결 리스트
1 연결 리스트에 대하여
2 연결 리스트의 구현
3 연결 리스트의 삽입
요약
연습문제
찾아보기
이 책의 특징
1. 신선하고 재미있는 코드 200여 개 수록
2. 실생활 예제와 그림을 활용한 문법 설명
3. 30줄 수준의 간결한 소스코드로 비주얼 스튜디오, 유닉스 완벽 호환
4. 다양한 LAB을 통한 개념 활용
5. 객관식, 주관식 및 코드 문제 1004개
뻔하지 않고 FUN한 C언어 기초 학습서
표지를 펼치는 순간, 술술 읽히는 설명과 놀라운 코드에 책을 덮기가 아쉬울 정도이다. 이해하려 애쓰지 않아도 쉬운 설명과 그림을 따라가다 보면 머릿속에 개념이 그려진다. 코드를 실행하면 내가 입력한 문자들이 화려하게 움직이거나 게임이 실행되어 지루할 틈이 없다. 화려한 코드가 자칫 어려워 보일 수 있으나, 코드에 재미를 더하기 위한 함수는 ‘함수 소개’ 코너를 통해 설명하고 코드는 30줄 정도로 간결하기 때문에 충분히 이해하며 따라갈 수 있다.
학습자를 배려한 세심한 포인트도 있다. 의미별로 색상을 구분한 소스코드는 학습자가 시각적으로 코드 내용을 파악하며 한 줄씩 따라 작성하는데 도움이 된다. 1004개의 연습문제는 앞에서 학습한 내용을 점검하기에 충분하다.