홈 > 부모님 > 부모님 > 소설,일반 > 컴퓨터,모바일
따라하며 배우는 C 언어 이미지

따라하며 배우는 C 언어
생능 | 부모님 | 2025.11.26
  • 판매가
  • 33,000원
  • S포인트
  • 990P (3% 적립)
  • 상세정보
  • 21.5x27.5 | 1.415Kg | 524p
  • ISBN
  • 9791194630401
  • 배송비
  • 2만원 이상 구매시 무료배송 (제주 5만원 이상) ?
    배송비 안내
    전집 구매시
    주문하신 상품의 전집이 있는 경우 무료배송입니다.(전집 구매 또는 전집 + 단품 구매 시)
    단품(단행본, DVD, 음반, 완구) 구매시
    2만원 이상 구매시 무료배송이며, 2만원 미만일 경우 2,000원의 배송비가 부과됩니다.(제주도는 5만원이상 무료배송)
    무료배송으로 표기된 상품
    무료배송으로 표기된 상품일 경우 구매금액과 무관하게 무료 배송입니다.(도서, 산간지역 및 제주도는 제외)
  • 출고일
  • 품절된 상품입니다.
  • ★★★★★
  • 0/5
리뷰 0
리뷰쓰기

구매문의 및 도서상담은 031-944-3966(매장)으로 문의해주세요.
매장전집은 전화 혹은 매장방문만 구입 가능합니다.

  • 도서 소개
  • 출판사 리뷰
  • 작가 소개
  • 목차
  • 회원 리뷰

  도서 소개

C 언어는 오랜 역사를 가진 프로그래밍 언어이며, 아직까지도 매우 중요한 프로그래밍 언어다. C 언어의 본질과 철학, 그리고 효율적이고 안전한 프로그래밍 기법을 단계적으로 익힐 수 있도록 구성한 교재다. 초보자에게는 C 언어의 문법과 기본 개념을 명확히 다루고, 숙련자에게는 포인터, 메모리 관리, 동적 할당, 구조체 등 심화 주제를 실제 예제 중심으로 탐구할 수 있게 하였다.

  출판사 리뷰

30년 전 필자는 MS-DOS라는 컴퓨터 환경에서 C라는 특이한 이름의 프로그래밍 언어를 처음 접한 바 있다. 이 프로그래밍 언어는 간결하면서도 강력한 문법, 손쉬운 하드웨어 제어 기능을 갖추고 있으며, 포인터 변수라는 기존 프로그래밍 언어에 없던 매력적인 개념을 가지고 있었다. 시간이 흘러 초급 프로그래머 시절 저자를 매료시켰던 C 언어를 널리 알리기 위한 책을 집필하게 되어 감개가 무량하다.
세계 최초의 고급 프로그래밍 언어인 포트란(FORTRAN)이 1950년대 말에 만들어진 이후 지금까지 수없이 많은 프로그래밍 언어가 만들어졌다. 이렇게 다양한 프로그래밍 언어들 중에서 C 언어만큼 널리 보급되고 사용된 프로그래밍 언어는 드물 것이다. 또한 오늘날 다양한 개발 환경에서 사용되는 자바, 파이썬, C++, C# 등의 프로그래밍 언어들 역시 C 언어로부터 영향을 받았다는 점도 분명하다.
인공지능 기술이 시대의 화두로 떠오르면서 이를 위한 제반 기술들이 개발자 커뮤니티의 큰 관심을 받고 있는 시대의 전환점에서도 C 언어는 여전히 프로그래밍 입문자를 위한 핵심 언어임이 분명하다. 그 이유는 C 언어가 시스템 수준의 프로그래밍에 적합한 저수준 접근을 제공하면서도, 메모리 제어와 실행 성능 측면에서 타 언어에 비해 탁월한 장점을 지니고 있기 때문이다. 특히 인공지능을 구현하기 위한 대규모 병렬처리의 핵심 기술인 엔비디아사의 CUDA라는 라이브러리는 C/C++ 언어를 기반으로 구현되었다. 이 사실은 C 언어가 단순히 오래된 언어가 아니라, 오늘날의 인공지능, 임베디드, 그리고 고성능 컴퓨팅의 근간이 되는 언어임을 명확히 보여준다. 실제로 많은 최신 프로그래밍 언어들이 C의 문법 구조를 계승하고 있으며, 운영체제, 컴파일러, 디바이스 드라이버, 마이크로컨트롤러 프로그램 등 핵심 시스템 영역은 여전히 C 언어로 구현되고 있다.
C 언어는 오랜 역사를 가진 프로그래밍 언어이며, 아직까지도 매우 중요한 프로그래밍 언어이지만 많은 개발자들이 이 언어에 대해 “배우기 어렵다”, “보안에 취약하다”라는 선입견을 가지고 있다. 이 책은 이러한 오해를 가진 독자들을 위하여 C 언어의 본질과 철학, 그리고 효율적이고 안전한 프로그래밍 기법을 단계적으로 익힐 수 있도록 구성하였다. 이 책은 초보자에게는 C 언어의 문법과 기본 개념을 명확히 다루고, 숙련자에게는 포인터, 메모리 관리, 동적 할당, 구조체 등 심화 주제를 실제 예제 중심으로 탐구할 수 있게 하였다.

이 책의 구성과 특징

이 책은 13개의 장으로 구성되어 있으며, 각 장마다 두 페이지씩 펼쳐 읽고, 이해하기 쉬운 절(節)을 통해 C 언어의 핵심 개념을 전달한다. 또한, “직접 코딩하며 이해하기”를 원칙으로 하여, 여러 가지 실제 사례를 기반으로 한 LAB 문제와 적절한 도전문제를 배치하였다. 이러한 문제 풀이를 하나하나 수행하다 보면 학습자들이 단순한 문법 암기를 넘어 프로그래밍적 사고력을 기를 수 있을 것이다. 또한, 학습자는 이 책의 코드를 직접 작성하고 실행해보면서 C 언어가 가지는 구조적 사고의 힘과 논리적 사고의 정수를 체득하게 될 것이다.
이러한 목표에 따라 집필된 이 책은 다음과 같은 특징을 가진다.
C 언어의 문법에 대한 설명과 함께 이러한 문법의 개념에 대해서 상세히 설명한다.
C 언어를 입문하는 독자들을 위한 친절하고 상세한 설명과 많은 예시 그림이 있다.
각 장은 핵심 주제에 맞는 짧은 절로 나뉘어져 있어 간결하게 핵심을 파악할 수 있다.
독자들이 이해한 내용을 스스로 연습하고 확인해 볼 수 있는 많은 LAB과 도전문제들이 있다.
핵심 정리를 통해서 각 장의 내용을 정리하고 익힐 수 있도록 하였다.
주관식 문제와 심화문제, 프로그래밍 문제를 통해 스스로 문제 해결을 할 수 있는 기회를 제공한다.

  작가 소개

지은이 : 박동규
1993年 부산대학교 전자계산학과 이학사1996年 부산대학교 전자계산학과 이학석사1999年 부산대학교 전자계산학과 이학박사2002年~현재 창원대학교 정보통신공학과 교수2007年 미국 카네기멜론대학교(CMU) 방문교수2012年 미국 텍사스A&M대학교 방문교수2021年 부산대학교 컴퓨터 및 정보통신 연구소 방문교수창원대학교 정보전산원장, 창원시 스마트모바일 앱센터장, IEEE Busan Section 의장 역임“널널한 교수의 코딩 클래스” 유튜브 채널 운영 중

  목차

Chapter 01 C 언어를 시작하자
1.1 프로그래밍과 C 언어
1.2 기계어와 어셈블리어, 고급 언어
1.3 소프트웨어 개발의 단계를 알아보자
1.4 코딩과 소프트웨어 개발 단계를 알아보자
1.5 C 언어와 이식성을 알아보자
1.6 여러 종류의 통합 개발 환경을 알아보자
1.7 웹 환경에서 C 언어를 사용해보자
1.8 비주얼 스튜디오를 설치하고 새 프로젝트를 만들자
1.9 hello world를 출력하자
1.10 오류 메시지를 이해하자
LAB 1-1 자기 소개 글을 완성하자
LAB 1-2 간단한 연산을 하자
1.11 main 함수와 출력문 그리고 주요 구성 요소
1.12 세미콜론과 중괄호는 어떤 의미인가
1.13 주석문의 쓰임새를 살펴보자
핵심 정리
주관식 문제
심화문제
프로그래밍 문제

Chapter 02 변수와 입출력문 이해하기
2.1 C 프로그램의 구성 요소
2.2 자료값을 저장하는 곳: 변수
2.3 bool 형과 32비트 64비트 컴퓨터
2.4 식별자를 알아보자
2.5 정수 리터럴과 실수 리터럴을 알아보자
2.6 문자 리터럴과 문자열 리터럴을 알아보자
2.7 변수의 선언과 할당 연산자
LAB 2-1 세 수의 합과 평균을 출력하자
LAB 2-2 자신의 키와 나이를 출력하자
2.8 매크로를 알아보자
2.9 변수에 저장되는 자료값의 크기와 unsigned 명령
2.10 오버플로와 상수
2.11 상수형 자료값과 숫자 리터럴 접미사
2.12 printf() 함수와 출력 포매터
2.13 printf() 함수와 출력 포매터의 고급 기능
2.14 사용자의 키보드 입력을 받는 scanf() 함수
2.15 scanf() 함수의 실사용 예시[고급]
LAB 2-3 사용자로부터 실수를 입력받아 연산을 하자
LAB 2-4 간단한 변수를 만들고 연산을 하자
핵심 정리
주관식 문제
심화문제
프로그래밍 문제

Chapter 03 연산자를 살펴보자
3.1 수식과 연산자
3.2 다양한 연산자를 알아보자
3.3 산술 연산자를 알아보자
LAB 3-1 체질량 지수를 구하자
3.4 증감 연산자와 모호성을 알아보자
3.5 관계 연산자를 알아보자
3.6 논리 연산자 AND, OR, NOT을 알아보자
LAB 3-2 윤년을 구해보자
LAB 3-3 논리 AND 연산자를 사용하자
3.7 비트 단위 연산자
3.8 비트 이동 연산자와 비트 제거
3.9 sizeof 연산자와 형변환
3.10 복합 할당 연산자를 알아보자
3.11 연산자 사이에도 먼저 처리하는 것이 있다
핵심 정리
주관식 문제
심화문제
프로그래밍 문제

Chapter 04 조건문을 알아보자
4.1 프로그램의 기본 제어 구조를 알아보자
4.2 조건이 맞을 때만 실행되는 if 문
4.3 배타적 조건을 처리하기 위한 if-else 문
LAB 4-1 윤년을 출력하자
LAB 4-2 비밀번호를 확인하자
4.4 삼항 연산자 : ?
4.5 연속적인 조건 검사를 하자
LAB 4-3 상대적 지방 질량 지수를 계산하자
4.6 switch-case 문 알아보기
4.7 switch-case 문과 다음으로 넘어가기
LAB 4-4 각 달의 일수를 출력하자
LAB 4-5 RFM 지수를 간단하게 구하자
4.8 어떤 코딩이 좋은 코딩인가: goto 문
4.9 좋은 코딩 스타일이란 무엇인가
4.10 다양한 코딩 스타일을 알아보자[고급]
핵심 정리
주관식 문제
심화문제
프로그래밍 문제

Chapter 05 반복문으로 일처리를 빠르게 하자
5.1 흐름 제어와 반복적인 구조
5.2 for 반복문의 기초 문법과 사용법
5.3 루프 제어 변수의 선언과 초기화
5.4 while 반복문과 for 반복문
5.5 do-while 반복문을 알아보자
LAB 5-1 세 수의 합과 평균을 출력하자
LAB 5-2 네 자리 이하 숫자의 자리수를 각각 출력하자
5.6 반복문 초기화와 누적 연산
5.7 break와 continue
5.8 무한히 반복되는 문장
LAB 5-3 임의의 자리수를 가진 정수의 자리수를 각각 출력하자
LAB 5-4 약수 구하기
5.9 중첩된 반복문에 대하여 알아보자
5.10 상향식 문제 해결 기법을 알아보자
LAB 5-5 소수를 출력하자
핵심 정리
주관식 문제
심화문제
프로그래밍 문제

Chapter 06 함수를 활용하자
6.1 짜임새 있는 기능을 구현하기 위한 도구: 함수
6.2 간단한 함수부터 복잡한 함수까지
6.3 함수의 매개변수와 인자를 자세히 알아보자
6.4 함수의 반환값을 알아보자
6.5 함수의 정의와 헤더 파일
6.6 변수는 언제 만들어지고 사라지는가
6.7 전역 변수와 이름 충돌을 알아보자
6.8 자동 변수와 정적 변수를 알아보자
LAB 6-1 소수를 판별하는 함수를 만들자
6.9 변수와 외부 연결을 알아보자
6.10 값 전달 방식의 호출
6.11 주소 전달 방식의 호출
6.12 가변 인자를 가지는 함수
6.13 수학 관련 함수를 사용하자
6.14 난수 관련 함수를 알아보자
6.15 시간 함수와 난수 함수를 사용하자
LAB 6-2 특정 범위 내에서 중복되지 않는 난수를 만들자
6.16 재귀 함수를 사용하여 문제를 해결하자[고급]
핵심 정리
주관식 문제
심화문제
프로그래밍 문제

Chapter 07 배열을 알아보자
7.1 배열의 기초
7.2 배열의 원소에 접근하는 숫자: 인덱스
7.3 배열의 크기를 알아내고 복사하기
7.4 배열 원소들의 평균과 최빈값을 구하자
7.5 배열을 비교하자
7.6 배열을 이어 붙여보자
7.7 배열 원소를 함수에서 조작하자
7.8 가변 길이 배열을 알아보자
LAB 7-1 배열의 최대 최소값을 구하자
7.9 배열은 함수에 무엇을 전달하는가
LAB 7-2 배열 원소의 순서를 뒤집도록 하자
LAB 7-3 배열을 오른쪽으로 K번 회전시키자
7.10 순차 탐색과 메모리의 효율적 활용
7.11 빠르게 원하는 값을 찾는 이진 탐색 함수
LAB 7-4 정렬된 배열에서 원소를 찾자
7.12 정렬을 알아보자
7.13 선택 정렬을 알아보자[고급]
7.14 일차원 배열과 다차원 배열을 알아보자[고급]
7.15 2차원 배열과 3차원 배열을 알아보자
7.16 3차원 배열의 연산을 알아보자
핵심 정리
주관식 문제
심화문제
프로그래밍 문제

Chapter 08 포인터 속으로 들어가기
8.1 메모리와 메모리 주소 그리고 포인터
8.2 주소 연산자와 포인터 변수
8.3 포인터와 역참조 그리고 증감 연산
8.4 배열과 포인터는 어떤 관계인가
LAB 8-1 포인터를 사용하여 변수값을 두 배로 만들자
LAB 8-2 포인터 변수의 크기를 알아보자
8.5 포인터의 다양한 연산
8.6 값 전달과 참조 전달을 알아보자
8.7 함수의 매개변수로 전달되는 배열을 참조하자
LAB 8-3 포인터를 사용하여 문자열의 길이를 구하자
LAB 8-4 포인터를 사용하여 최대값을 찾자
8.8 포인터 사용 시의 주의사항
8.9 사용자로부터 문자열을 입력받는 방법
8.10 atoi() 함수와 strtol() 함수를 알아보자
8.11 main() 함수의 인자를 알아보자[고급]
핵심 정리
주관식 문제
심화문제
프로그래밍 문제

Chapter 09 포인터를 깊이 알아보자
9.1 이중 포인터는 포인터의 포인터이다
9.2 단일 포인터의 한계를 극복하는 이중 포인터
9.3 포인터 배열과 배열 포인터의 차이점
9.4 포인터 배열과 배열 포인터을 비교하자
LAB 9-1 배열 포인터를 사용하여 연산을 하자
9.5 문자열 배열과 문자열 포인터 배열을 알아보자
9.6 함수 포인터를 알아보자
9.7 함수 포인터의 쓰임새를 알아보자
9.8 함수 포인터의 배열
9.9 다차원 배열을 포인터로 접근하는 방법
9.10 다차원 배열의 이용 방법
9.11 다차원 배열의 전체 원소에 접근하는 여러 가지 방법
9.12 const 키워드와 void 포인터
9.13 void 포인터의 형 변환과 증가 연산
9.14 함수 포인터와 퀵 정렬을 알아보자
LAB 9-2 사용자로부터 입력받은 단어들을 정렬하자
9.15 main 함수의 인수
핵심 정리
주관식 문제
심화문제
프로그래밍 문제

Chapter 10 문자와 문자열을 다루자
10.1 문자와 문자열의 선언 방법을 알아보자
10.2 문자 자료형의 연산에 대해 알아보자
10.3 다양한 문자 입출력 함수와 버퍼
10.4 아스키 코드와 문자 입력
10.5 string.h 헤더 파일과 문자열의 길이를 구하기
10.6 사전식 순서에 따른 문자열의 비교
10.7 사전식 순서 정렬의 의미
10.8 문자열의 토큰화
10.9 문자열을 분석하는 함수들
LAB 10-1 수식의 피연산자만을 출력하자
LAB 10-2 문장을 대문자로 고치자
LAB 10-3 문장을 분석하자
10.10 strcpy로 문자열 복사하기
10.11 strcat과 strstr 함수
LAB 10-4 문자를 사전 순서로 정렬하자
LAB 10-5 2진수를 입력받아 10진수, 8진수, 16진수로 출력하자
핵심 정리
주관식 문제
심화문제
프로그래밍 문제

Chapter 11 구조체를 살펴보자
11.1 자료형의 종류와 구조체를 알아보자
11.2 구조체 멤버에 접근하기
11.3 구조체 멤버의 초기화와 복사, 구조체 배열의 사용법
LAB 11-1 자동차의 형식을 저장하는 구조체
LAB 11-2 학생의 정보를 구조체로 처리하자
11.4 자료형을 다시 정의하는 typedef
11.5 typedef의 여러 가지 유용한 용도
LAB 11-3 학생의 정보를 typedef로 정의하자
11.6 함수 포인터와 구조체 정렬을 알아보자
11.7 enum을 이용한 나열형 정의하기
11.8 공용체 기능 알아보기
11.9 FILE 구조체를 알아보자
11.10 전처리기와 헤더 파일을 알아보자
11.11 전처리기의 고급 기능과 헤더 파일의 사용법
11.12 전처리기의 고급 기능과 컴파일 과정의 이해
핵심 정리
주관식 문제
심화문제
프로그래밍 문제

Chapter 12 동적 메모리 할당을 알아보자
12.1 배열과 메모리 할당에 대하여 알아보자
12.2 힙 메모리를 알아보자
12.3 동적 할당 메모리에 접근하기
LAB 12-1 사용자로부터 정수를 입력받아 최대 최소값을 구하자
12.4 calloc과 realloc을 알아보자
12.5 함수 내부에서 동적으로 할당한 메모리를 사용하자
12.6 typedef로 포인터 변수를 재정의하자
12.7 가변 크기 행의 배열을 만들자
12.8 연결 리스트를 알아보자
12.9 간단한 연결 리스트를 만들자
핵심 정리
주관식 문제
심화문제
프로그래밍 문제

Chapter 13 파일을 처리하자
13.1 파일과 스트림을 알아보자
13.2 표준 입력 스트림으로부터 문자와 문자열 입력을 처리하자
13.3 텍스트 파일을 만들어 보자
13.4 파일을 만들고 읽어오는 다양한 접근 모드
13.5 파일과 버퍼를 알아보자
LAB 13-1 숫자를 저장하자
LAB 13-2 임의의 숫자를 저장하자
13.6 표준 스트림과 일반 스트림을 알아보자
13.7 문자를 하나씩 출력하고 문자열을 읽어 보자
13.8 fgets()로 문자열을 한 줄씩 읽어오자
13.9 이진 파일을 만들고 읽어보자
13.10 파일 포인터를 알아보자
13.11 파일 포인터를 이용하여 특정 위치로 이동하자
LAB 13-3 숫자를 이진 파일로 저장하자
13.12 텍스트 파일을 복사하자
13.13 이진 파일을 복사하자
핵심 정리
주관식 문제
심화문제
프로그래밍 문제

  회원리뷰

리뷰쓰기