본문 바로가기

리디 접속이 원활하지 않습니다.
강제 새로 고침(Ctrl + F5)이나 브라우저 캐시 삭제를 진행해주세요.
계속해서 문제가 발생한다면 리디 접속 테스트를 통해 원인을 파악하고 대응 방법을 안내드리겠습니다.
테스트 페이지로 이동하기

C 언어 코딩과 알고리즘 상세페이지

C 언어 코딩과 알고리즘작품 소개

<C 언어 코딩과 알고리즘> 이 책은 C 프로그래밍 입문서입니다.
처음으로 프로그래밍을 시작하시는 분들을 프로그래머로 취업을 할 수 있는 수준까지 도달시키는 것이 이 책의 목표입니다.
이 책은 다음과 같은 특징이 있습니다.

▪ C99, C11 등 C 언어의 최신 버전을 설명하고 있습니다.

C 언어는 1972년에 탄생해서 지금까지 수십년 동안 세계적으로 널리 사용되는 언어입니다.
C 언어의 근본이 되는 국제 표준 버전은 1990년에 발표된 ANSI C입니다.
그러나 기존 ANSI C를 업그레이드해서 1999년에 C99 표준이 발표되고, 2011년에 C11 표준이 발표되었으며 이후 많은 컴파일러들이 이 새로운 표준을 수용하고 있습니다.
초보자들을 대상으로 하는 책들은 대부분 기본을 설명한다는 의미에서 ANSI C만을 기준으로 설명하고 있어, C 학습을 모두 마쳐도 실무를 하려면 다시 C99, C11 표준에 새로 추가되거나 수정된 내용을 정리하고 학습해야 하는 경우가 많습니다.
그래서 이 책에서는 ANSI C를 기준으로 기본 개념을 잡아가되, C99, C11 표준의 추가, 수정된 문법을 설명하고 있어 실무에 투입되어도 당황하는 일이 없을 것입니다.
C 언어도 버전이 있다는 사실을 고려하지 않아 두 번 학습을 하는 일이 없도록 했습니다.

▪ 문법 설명 이외에 알고리즘 개발 능력을 기릅니다.

이 책 내용의 약 30% 정도는 “알고리즘 트레이닝”에 관한 것입니다.
프로그래밍 학습을 하면서 주로 문법을 위주로 간단한 코드를 동원한 학습을 마치고 “이제 뭘 해야 하나요?”라는 질문을 많이 합니다.
문법 학습을 마쳤다고 해서 학습이 끝난 것이 절대 아닙니다.
실제 프로그래밍에 반드시 필요한 능력은 알고리즘 개발 능력입니다.
알고리즘 개발 능력은 갑자기 증가하는 것이 아니라서 평소 꾸준히 연습하고 경험해야 합니다.
그래서 이 책에서는 “알고리즘 트레이닝”이라는 섹션을 두어 방금 배운 문법을 활용하여 다양한 알고리즘을 경험하도록 유도하고 있습니다.
문법도 한번 배웠다고 해서 완전히 익숙해지지 않기 때문에 해당 문법이 어떻게 프로그래밍에 응용되는지를 알고리즘 개발을 통해 깊이있게 경험하는 것이 효율적입니다.
이 책의 “알고리즘 트레이닝”은 대부분 코드의 빈 칸을 완성하는 문제 형식으로 제시되며, 소스 코드를 분석하고 생각하는 시간을 가지도록 했습니다.
하지만 문제를 풀고 평가하기 위한 것이 아니라 다양한 알고리즘 개발을 경험하게 하는데 목표가 있습니다.
이 책에는 “연습문제”도 있고 “파이널 테스트”라는 자가 점검용 문제들이 있으나 “알고리즘 트레이닝”은 온전히 알고리즘 개발 능력을 키우기 위해 많은 코드를 들여다 보고자 하는 것입니다.
초보 프로그래머로 취업을 하면 대부분 그 조직의 기존 업무 프로그램 코드를 익히고 유지, 보수를 하는 기본적인 일부터 시작합니다.
그래서 취업을 위해서는 문법을 넘어 빠르게 코드를 파악하고 분석하는 능력이 필수적이며 그런 능력을 키우기 위해 “알고리즘 트레이닝” 섹션을 제공하고 있습니다.

▪ 세밀하고 풍부하게 문법을 설명하고 있습니다.

초보자라고 C의 문법조차 대충 개념만 잡고 지나가는 경우가 많습니다.
이 책에서는 필수적인 문법들이외도 실무에서 또는 프로그래머로서 알아두어야 할만한 내용들을 풍부하게 수록하고 있습니다.
각 장의 끝 부분에 필요하면 “추가 이슈”라는 절을 두어 기본 문법 이외에 정리해야 할 내용들을 집중적으로 설명하고 있습니다.
기본적인 문법들은 프로그래밍의 경험이 전혀 없다는 가정하에 많은 그림과 표를 동원하여 친절하게 설명하고 있습니다.
시간이 없거나 기본만 빠르게 학습하려면 “추가 이슈”는 읽지 않아도 됩니다.
하지만 그렇지 않다면 가능한 “추가 이슈”도 학습해두는 것이 좋습니다.
확실하게 초보를 벗어날 수 있기 때문입니다.

이 책 한권으로 문법과 알고리즘을 함께 학습할 수 있을 것입니다.



출판사 서평

파이썬 언어가 유행하면서 한 때 C 언어가 이제 저물 것이라는 의견이 있었으나 그런 예상과는 달리 세계적으로 오히려 C 언어의 사용이 늘어나고 있다고 합니다.
C 언어는 거의 모든 언어의 토대가 되는 언어이기 때문에 IT가 주도하는 4차산업혁명의 각 분야에서 앞으로도 활발히 사용될 것입니다.
프로그래밍을 전공하거나 프로그래밍 전문가를 꿈꾸면서 C 언어를 익히지 않으면 그 지식은 모래성이 될 가능성이 높습니다.
C 언어는 그만큼 프로그래밍에서 의미있는 위치를 차지하고 있습니다.
하드웨어와 소프트웨어의 접점에 있는 중간 단계의 언어이기 때문에 4차산업혁명의 다양한 제어공학에도 필수적인 언어입니다.

처음 C 언어를 대하면서 마치 외계어 같다고 비명을 지르는 경우도 있으나 그것은 학습의 순서와 방법이 잘못되어서 그런 측면이 큽니다.
어떤 순서로 가르치고 배우느냐는 매우 중요합니다.
프로그래밍 언어 학습은 개념 정립의 연속이기 때문에 각 단계별로 문법에 대한 확실한 이해가 중요합니다.
알고리즘을 개발하기 위해서는 더 많은 경험과 연습이 필요하기도 합니다.
프로그래밍 학습은 문법적인 개념과 알고리즘 개발을 함께 훈련하는 과정입니다.
본서는 그런 학습의 특성에 맞추기 위해 책 전반에 걸쳐 많은 기획 요소를 배치하고 있습니다.


저자 소개

이강재(kjlee@ssc.ac.kr)

수원과학대학교 컴퓨터정보과 교수
컴퓨터 공학박사

한국정보과학회 종신회원
한국컴퓨터정보학회 종신회원

평생을 대학에서 프로그래밍과 컴퓨터 공학을
가르치고 연구했습니다.
효율적인 교육방법과 학습방법에 관한
노하우를 그대로 이 책에서 녹여내고 있습니다.


이병재(pcbookweb@hanmail.net)

PCBOOK 출판사의 대표이며,
소프트웨어 개발업체인 주식회사 아울컴 부설
아울연구소 근무를 겸하고 있습니다.
컴퓨터 공학을 전공하고
OS 랩에서 운영체제를 연구했습니다.

프로그래머, 강사, 컴퓨터잡지 편집장을 거치며
다양한 기업과 기관에서 컴퓨터 관련 강의를 했으며,
KBS 라디오 방송의 컴퓨터 코너에
10개월간 고정 출연하기도 했습니다.

피씨북 출판사에서 발간해온
대부분의 책들을 기획하고
일부 서적의 공저, 번역 활동을 해왔습니다.

어셈블리 프로그래밍부터
프로그래머를 해온 탓에
시스템의 안쪽에 관심이 많으며,
10여개의 프로그래밍 언어를 경험해왔습니다.

[저서]
유닉스 완벽 해설
유닉스 명령어 해설
볼랜드 C
코딩 정복 4주 완성
파이썬 코딩의 첫걸음
파이썬 코딩 14개 이야기

목차

01장 시작하기 전에 알아야 할 것들

1.1 0과 1의 진실
진법의 세계
0과 1의 실체
2진수와 8진수와 16진수
1.2 주기억장치와 주소
1.3 컴퓨터의 기본 구조
중앙처리장치
주기억장치
프로그램의 실행 과정
1.4 프로그램의 작성과 실행
컴파일 작업
링크 작업
로딩 작업
1.5 C 프로그램은 "함수" 덩어리
1.6 Visual Studio 2017 Community 설치하기
Visual Studio community 2017 다운받기
Visual Studio community 2017 사용하기
프로젝트 생성하기
소스코드 작성하기
실행시키기
프로젝트 저장하고 끝내기
기존 프로젝트 열기
소스코드, 목적코드, 실행코드 찾아보기
명령 프롬프트에서 실행하기
1.7 C 언어의 버전과 특징
C 언어 표준
C 언어의 특징
파이널 테스트
이 장의 요점
정답

02장 처음해보는 C 프로그래밍
2.1 C 프로그램의 기본 구조
C 프로그램의 기본 틀
소스코드 작성 방법
세미콜론으로 끝나는 명령문
블록으로 묶는 중괄호
주석의 사용
2.2 printf()의 의미
printf()는 함수
#include와 함수
함수의 인수
줄바꿈을 하는 특수문자
2.3 변수 완전 정복 이야기
엑셀의 셀과 C의 변수는 동지
변수를 사용한 프로그램
변수 만들기
변수에 값 할당하기
변수 값 출력하기
변수로 계산하기
변수 초기화하기
디버거로 변수 값 추적하기
변수 이름을 만드는 규칙
2.4 C 명령문의 종류
2.5 에러를 찾는 방법과 좋은 프로그램의 조건
2.6 진수 변환과 숫자의 표현 방식
10진수와 2진수의 변환 방법
10진수와 8진수의 변환 방법
10진수와 16진수의 변환 방법
8진수와 2진수의 변환 방법
16진수와 2진수의 변환 방법
보수의 사용
파이널 테스트
이 장의 요점
정답

03장 C에서 사용하는 데이터 형

3.1 C의 데이터 형
3.2 정수형 데이터
정수형 상수
정수형 변수
3.3 실수형 데이터
실수형 상수
실수형 변수
3.4 문자형 데이터
문자 상수
문자형 변수
3.5 문자열과 이스케이프 시퀀스
문자열
이스케이프 시퀀스
3.6 데이터 형의 변환
묵시적 형 변환
명시적 형 변환
3.7 기호 상수
3.8 데이터 형에 관한 추가 이슈
데이터 형의 최대값, 최소값을 알려주는 기호 상수
Overflow와 Underflow
데이터 모델과 고정폭 데이터 형
부동소수점 오차와 머신 엡실론
실수를 부동소수점 형식으로 변환하는 방법
파이널 테스트
이 장의 요점
정답

04장 표준입력함수와 표준출력함수

4.1 표준입력함수와 표준출력함수
4.2 형식화된 출력에 사용하는 printf() 함수
정수 출력하기
실수 출력하기
문자와 문자열 출력하기
플래그의 종류
출력 폭과 +, - 플래그 사용하기
0, #, 공백 플래그 사용하기
4.3 문자만 출력하는 putchar() 함수
4.4 문자열만 출력하는 puts() 함수
4.5 형식화된 입력에 사용하는 scanf() 함수
4.6 문자만 입력하는 getchar() 함수
4.7 문자열만 입력하는 gets(), gets_s() 함수
파이널 테스트
이 장의 요점
정답

05장 연산자

5.1 연산자의 종류
5.2 할당 연산자
5.3 산술 연산자
5.4 증감 연산자
5.5 관계 연산자
5.6 논리 연산자
논리 연산의 최적화
참값의 의미
_Bool 형의 사용
5.7 조건 연산자
5.8 비트 연산자
비트 논리 연산자
비트 이동 연산자
5.9 혼합 할당 연산자
5.10 형 변환, 콤마, 주소, sizeof 연산자
형 변환 연산자
콤마 연산자
주소 연산자
sizeof 연산자
5.11 연산의 우선순위와 결합법칙
복잡한 식의 연산 우선순위
5.12 연산에 관한 추가 이슈
C99 표준에 추가된 논리연산자
Syntax error와 Semantic error
Expression과 Statement
Side Effect와 Sequence Point
파이널 테스트
이 장의 요점
정답

06장 제어문

6.1 제어문의 종류
6.2 if 조건문
다양한 if 조건식의 예
6.3 if - else 문
중첩 if 문
6.4 if - else if 문
6.5 switch 조건문
6.6 for 반복문
for 문의 형식
다양한 for 문의 사용 예
중첩 for 문
6.7 while 반복문
다양한 while 문의 예
중첩 while 문
6.8 do - while 반복문
다양한 do - while 문의 예
중첩 do - while 문
6.9 break 분기문
6.10 continue 분기문
6.11 goto 분기문
파이널 테스트
이 장의 요점
정답

07장 배열

7.1 배열의 개요
7.2 1차원 배열
7.3 문자형 배열
7.4 2차원 배열
7.5 3차원 배열
7.6 배열에 관한 추가 이슈
수정이 불가능한 배열 초기값
지정 초기화 기능 사용하기
배열 크기 구하기
C99 표준의 복합 리터럴
파이널 테스트
이 장의 요점
정답

08장 함수

8.1 함수의 개요
8.2 C 라이브러리 함수
8.3 사용자 정의 함수
사용자 정의 함수의 정의와 호출
인라인 함수의 사용
함수 원형의 선언
8.4 다양한 인수와 반환 값의 사용
main() 함수의 인수와 반환 값
인수도 없고 반환 값도 없는 함수의 정의
인수는 있으나 반환 값이 없는 함수의 정의
인수는 없으나 반환 값이 있는 함수의 정의
8.5 배열 인수의 사용
배열 요소를 인수로 전달
배열 전체를 인수로 전달
8.6 재귀함수(recursive function)
8.7 저장 클래스(Storage Class)
지역변수
전역변수
정적변수
외부변수
레지스터 변수
파이널 테스트
이 장의 요점
정답

09장 포인터

9.1 포인터의 기초지식
주소와 & 연산자
포인터의 선언 형식
포인터의 활용
주의해야 할 포인터의 사용
포인터의 증감연산
이중 포인터
9.2 배열과 포인터
포인터를 이용한 1차원 배열 요소의 참조
다차원 배열의 특성
포인터를 이용한 다차원 배열의 요소 참조
9.3 포인터 배열과 배열 포인터
포인터 배열
배열 포인터
9.4 함수와 포인터
주소에 의한 함수 호출
포인터를 이용하여 1차원 배열을 인수로 전달
포인터를 이용하여 다차원 배열을 인수로 전달
9.5 함수 포인터
9.6 가변 인수 함수
매크로를 사용하는 방법
포인터를 사용하는 방법
9.7 포인터에 관한 추가 이슈
2차원 배열의 다양한 포인터 표현식
void 포인터 사용하기
포인터의 const 사용하기
파이널 테스트
이 장의 요점
정답

10장 문자열 사용하기

10.1 문자열의 의미
10.2 1차원 배열과 포인터 변수
주의해야 할 문자열 할당문
10.3 2차원 배열과 포인터 배열
명령어 라인 인수 사용하기
10.4 문자열 입출력
동적으로 문자열 입력하기
한 번에 여러 개의 문자열 입력하기
fgets()와 fputs() 함수
10.5 문자열 처리 내장 함수
문자열 길이 구하기
문자열 비교하기
문자열 복사하기
문자열 연결하기
포맷 지정해서 문자열 만들기
문자열에서 문자열 검색하기
문자열에서 문자 검색하기
문자열 자르기
문자열을 정수로 변환하기
진수별로 문자열을 숫자로 변환하기
문자열을 실수로 변환하기
정수나 실수를 문자열로 변환하기
문자가 알파벳인지 검사하기
문자가 숫자인지 검사하기
파이널 테스트
이 장의 요점
정답

11장 구조체와 기타 데이터형

11.1 구조체의 정의와 사용
구조체의 정의
구조체 변수의 선언
구조체 멤버의 참조
다양한 구조체 변수 선언 방법
11.2 구조체에 값을 할당하는 방법
구조체 멤버가 일반 변수인 경우
구조체 멤버가 배열인 경우
구조체의 지정 초기화
복합 리터럴의 사용
구조체 변수 간의 값의 할당
11.3 구조체 배열
구조체 배열의 선언
구조체 배열 요소의 참조
구조체 배열의 초기화
11.4 구조체 포인터
11.5 함수 간의 구조체 전달
값에 의한 구조체 변수의 전달
주소에 의한 구조체 변수의 전달
구조체 배열의 전달
11.6 구조체 내의 구조체
11.7 구조체 비트 필드
11.8 링크드 리스트에 사용하는 자기 참조 구조체
동적 메모리 할당 링크드 리스트
11.9 typedef
구조체에 typedef 사용하기
11.10 union
구조체와 공용체의 혼합 사용
11.11 enum
enum 데이터 형 활용하기
11.12 구조체에 관한 추가 이슈
구조체의 메모리 정렬(Memory Alignment)
구조체 내 멤버들의 상대 위치 구하기
구조체의 메모리 정렬 조절하기
파이널 테스트
이 장의 요점
정답

12장 파일입출력

12.1 파일 입출력의 개요
스트림
입출력 버퍼(Buffer)
파일의 종류
12.2 파일 처리 절차
파일 포인터 선언
파일 열기와 스트림 생성
파일 닫기
12.3 형식이 있는 파일 입출력
형식이 있는 파일 쓰기 : fprintf()
형식이 있는 파일 읽기 : fscanf()
기존 파일에 데이터 추가하기
파일의 끝 확인하기
12.4 문자 단위 파일 입출력
문자 단위로 파일 쓰기 : fputc()
문자 단위로 파일 읽기 : fgetc()
12.5 문자열 단위 파일 입출력
문자열 단위 파일 쓰기 : fputs()
문자열 단위 파일 읽기 : fgets()
12.6 이진 파일 입출력
이진 파일 쓰기 : fwrite()
이진 파일 읽기 : fread()
12.7 랜덤 파일 입출력
12.8 파일에 구조체 저장하고 읽기
12.9 파일에 관한 추가 이슈
getc와 putc 함수
에러 처리를 위한 errno, perror(), strerror()의 사용
파이널 테스트
이 장의 요점
정답

13장 동적기억장소

13.1 메모리와 C 프로그램
13.2 데이터 영역과 스택 영역
13.3 힙 영역
13.4 동적기억장소를 관리하는 함수
malloc()과 free() 함수
구조체를 위한 동적기억장소 할당
calloc()과 realloc() 함수
13.5 동적기억장소에 관한 추가 이슈
스택 만들기
스택을 이용한 계산기 프로그램
큐 만들기
환상 큐 만들기
링크드 리스트의 개념
단일 링크드 리스트 만들기
이중 링크드 리스트 만들기
파이널 테스트
이 장의 요점
정답

14장 매크로와 전처리기

14.1 전처리기의 역할
14.2 #define 지시자
매크로 상수의 사용
매크로 함수의 사용
여러 줄에 정의하는 매크로 함수
C 표준 매크로 상수
14.3 #include 지시자
14.4 조건부 컴파일을 위한 지시자
#if, #elif, #esle, #endif의 사용
#ifdef, #ifndef, #undef의 사용
14.5 기타 지시자
14.6 매크로 연산자 #, ##
파이널 테스트
이 장의 요점
정답


리뷰

구매자 별점

0.0

점수비율
  • 5
  • 4
  • 3
  • 2
  • 1

0명이 평가함

리뷰 작성 영역

이 책을 평가해주세요!

내가 남긴 별점 0.0

별로예요

그저 그래요

보통이에요

좋아요

최고예요

별점 취소

구매자 표시 기준은 무엇인가요?

'구매자' 표시는 리디에서 유료도서 결제 후 다운로드 하시거나 리디셀렉트 도서를 다운로드하신 경우에만 표시됩니다.

무료 도서 (프로모션 등으로 무료로 전환된 도서 포함)
'구매자'로 표시되지 않습니다.
시리즈 도서 내 무료 도서
'구매자’로 표시되지 않습니다. 하지만 같은 시리즈의 유료 도서를 결제한 뒤 리뷰를 수정하거나 재등록하면 '구매자'로 표시됩니다.
영구 삭제
도서를 영구 삭제해도 ‘구매자’ 표시는 남아있습니다.
결제 취소
‘구매자’ 표시가 자동으로 사라집니다.

이 책과 함께 구매한 책


이 책과 함께 둘러본 책



본문 끝 최상단으로 돌아가기

spinner
모바일 버전