프로그래밍을 하기 위해서는 다양한 언어가 사용된다. 그중에서도 이 책은 C 언어를 통해 프로그래밍 개발에 접근한다. C 언어는 일반 사용자용 응용 프로그램부터 시작하여 운영체제 같은 시스템 소프트웨어, 하드웨어를 다루는 임베디드 시스템 개발까지 사용되며, 컴퓨터 과학 및 소프트웨어 엔지니어링 분야에서 널리 사용된다. C 언어의 기본 개념부터 고급 기능까지 포괄적으로 다루어 보며, 다양하게 구성되어 있는 코드를 통해 프로그래밍의 첫 단계를 차근차근 시작해 보자!
Contents
〈종이책과 온라인PDF의 목차를 순서대로 표기한 버전〉
ㆍ 목차 상 PDF로 표시되어 있는 부분은 온라인으로 제공됩니다.
머리말
강의 계획서
1장 | 첫 번째 C 프로그램 작성 및 실행
1 .1 컴퓨터 하드웨어
1.2 운영체제
1.3 프로그래밍이란?
1.4 프로그래밍 과정
1.5 프로그래밍 언어
1.6 C 언어
C 언어의 탄생
ANSI C
C99와 이후 버전
C 언어의 영향을 받은 언어
이 책에서 다루는 C 언어
C 언어의 특징과 장단점
1.7 첫 번째 C 언어 프로그램 작성
명령문
코드 블록
띄어쓰기와 들여쓰기
주석
최소한의 C 코드
첫 번째 C 코드 작성
1.8 프로그래밍 개발 환경 구축
C 프로그래밍 과정
통합 개발 환경
개발 도구 설치
1.9 연습 문제
2장 | 자료형, 변수, 상수, printf() 함수
2.1 자료형
자료형의 필요성
자료형의 의미와 목적
컴퓨터에서 문자 처리
상수의 개념과 표현 방법
기본 자료형
2.2 변수
변수의 세 가지 용도
변수 이름 짓는 방법
2.3 변수 선언, 대입문, 초기화
변수 선언의 의미
변수 선언 방법
변수 초기화와 대입문
변수 선언과 초기화
주소 연산자로 알아내는 변수의 메모리 주소
2.4 표준 출력 함수 printf( )
문자열 출력
서식에 맞춘 값 출력
2.5 형 변환
자동 형 변환 또는 암시적 형 변환
명시적 형 변환
2.6 typedef - 자료형 재정의
2.7 심볼릭 상수
상수 변수
2.8 열거형 - enum 자료형
열거형 선언 방법
열거형의 장단점
2.9 연습 문제
3장 | 전처리기, 연산자, 표준 입출력 함수
3.1 전처리기
전처리기 코드 작성 방법
외부 파일 삽입 기능 - #include
매크로 확장 기능 - #define
3.2 연산자
피연산자, 우선순위, 결합 순서
부호 연산자
산술 연산자
비트 연산자
증감 연산자
복합 대입 연산자
순차 연산자
3.3 표준 입출력 함수
사용자로부터 입력받기
서식 지정자를 이용해서 입력받기
입력 버퍼
scanf( ) 함수로 두 개 이상 값을 입력받는 프로그램
"%c"와 " %c"의 차이 - 서식 문자열의 공백 문자
서식을 지정해서 값 읽기
3.4 다른 표준 입출력 함수
문자 단위 입출력 함수
문자 출력 함수
문자열 출력 함수
3.5 연습 문제
4장 | 조건문
4 .1 제어 흐름
4.2 조건 표현식
관계 연산자
논리 연산자
단축 평가
4.3 조건문
if 문
if-else 문
잘못 자리 잡은 else(dangling else) 문제
if-else if-else 문
4.4 중첩 조건문
4.5 조건 연산자
4.6 switch 문
4.7 연습 문제
5장 | 반복문
5 .1 반복/종료 조건
5.2 while 문
정수의 약수를 출력하는 프로그램
사용자로부터 알파벳을 입력받을 때까지 지속적으로 입력받는 프로그램
5.3 do-while 문
정수의 약수를 출력하는 프로그램
사용자로부터 알파벳을 입력받을 때까지 지속적으로 입력받는 프로그램
5.4 for 반복문
for 반복문에서 여러 개 변수 사용 - 콤마 연산자
for, while 반복문
정수의 약수를 출력하는 프로그램
사용자로부터 알파벳을 입력받을 때까지 지속적으로 입력받는 프로그램
5.5 break와 continue
break 문
약수를 최대 네 개까지 출력하는 프로그램
continue 문
약수 중에서 홀수만 출력하는 프로그램
5.6 연습 문제
6장 | 함수
6.1 함수
여러 부품을 조합해서 만드는 C 프로그램
함수의 사용 목적
6.2 함수 정의, 호출, 실행
함수 코드 실행 후 반환하는 값
함수 호출
함수의 매개변수에 인자 전달
다시 살펴보는 main( ) 함수
입력으로 전달된 양의 정수가 소수인지 확인하는 함수
n1~n2 사이의 정수 중 소수를 출력하는 함수
6.3 변수의 유효 범위와 생존 기간
지역변수
전역변수
전역변수와 지역변수의 이름 충돌과 유효 범위
코드 블록과 for 문 유효 범위
정적 지역변수
typedef와 유효 범위
다시 살펴보는 const 변수
6.4 함수 선언
6.5 표준 C 라이브러리 헤더 파일
6.6 메모리 구조
6.7 재귀 호출
재귀적 알고리즘
재귀 함수의 동작 원리
반복문과 재귀 호출
6.8 매크로 함수
매크로 함수의 장단점
6.9 연습 문제
7장 | 배열
7.1 배열의 필요성과 개념
배열의 필요성
배열의 개념
7.2 1차원 배열
배열 선언
배열 사용
인덱스 범위
sizeof( ) 연산자와 배열
배열 초기화
배열과 대입 연산
7.3 함수와 배열
함수에 배열 요소 전달
함수에 배열 전달
함수에 배열 크기 함께 전달
함수에서 전달받은 배열 수정
함수에서 매개변수 배열 변경 방지
매개변수를 이용한 배열 선언
사용자로부터 문자를 입력받고 출력하는 프로그램
약수를 생성해서 출력하는 프로그램
7.4 다차원 배열
2차원 배열
2차원 배열의 선언과 메모리 구조
2차원 배열 사용
2차원 배열 초기화
함수에 2차원 배열 전달
함수에 다차원 배열의 부분 배열 전달
3차원 배열
7.5 C 언어의 다차원 배열
7.6 연습 문제
8장 | 포인터 1
8.1 포인터와 필요성
8.2 포인터 자료형 변수 사용
포인터 자료형 변수 선언 방법
NULL 포인터
포인터 자료형의 크기
포인터 변수 사용과 간접 참조 연산자(*)
포인터 변수의 자료형(TYPE) 지정
포인터와 주소 연산자
포인터 형 변환 3
정수를 메모리에 저장한 후 바이트 단위로 출력하는 프로그램
어려운 포인터 변수 선언
포인터 변수 선언 방법 정리
포인터 변수로 연산하는 프로그램
8.3 포인터 연산
8.4 포인터와 배열
배열 이름은 배열의 시작 주소
포인터 변수와 배열
포인터 연산으로 배열 요소 접근
포인터 변수와 증감 또는 복합 연산자로 배열 접근
배열 인덱스 연산자 [ ]
포인터 연산자의 우선순위
배열 = = 포인터?
8.5 함수와 포인터
함수에 포인터 인자 전달
포인터 매개변수를 사용해서 함수 외부 변숫값 변경
포인터 매개변수로 함수에 큰 데이터 효율적 전달
함수에 배열 전달
함수에서 포인터 반환
2차 방정식의 해를 구하는 함수를 구현하고 사용하는 프로그램
8.6 상수 포인터
8.7 함수 포인터
8.8 void 포인터 자료형
void 포인터와 함수 포인터를 함께 사용하는 프로그램
8.9 연습 문제
9장 | 문자열, 포인터 2
9.1 문자열 선언과 초기화
문자 배열 형태로 선언되는 문자열
포인터 변수로 선언되는 문자열
문자열 변경
문자열과 대입 연산
문자열과 메모리 구조
9.2 문자열과 포인터
문자열 출력
9.3 문자열 입출력
키보드로 문자열 입력받기
문자열에서 입력받기
서식에 맞춰 문자열에 출력
9.4 문자열 배열
2차원 문자 배열로 문자열 배열 구현
포인터로 문자열 배열 구현
9.5 포인터 배열
함수 포인터 배열
9.6 포인터의 포인터
9.7 문자열과 숫자의 변환
9.8 문자열 함수
문자열 복사
문자열 길이 확인
문자열 연결
문자열 비교
문자열 잘라내기
기타 문자열 함수
간단한 scanf( ) 함수 구현
9.9 메모리 관련 함수
일정한 값으로 메모리 공간 채우기
다른 메모리 공간과 메모리 공간의 비교
다른 메모리 공간에 메모리 공간 복사
메모리 영역에서 특정 값 찾기
9.10 문자 관련 함수
9.11 명령행 인자
9.12 연습 문제
10장 | 구조체, 공용체
10.1 구조체의 필요성과 정의
10.2 구조체 선언
구조체 선언과 정의
재귀적 선언
구조체 변수 초기화
구조체 선언/정의와 유효 범위
10.3 구조체 사용
멤버 접근 및 사용
구조체 대입
구조체 비교
10.4 구조체와 포인터
10.5 구조체 배열
구조체 배열 선언
구조체 배열 초기화
구조체 배열에 포인터로 접근
10.6 함수와 구조체
10.7 중첩된 구조체
중첩된 구조체 선언
중첩된 구조체 초기화
중첩된 구조체의 멤버에 접근
10.8 구조체 크기
10.9 연습 문제
10.10 시간 관련 함수 PDF
현재 시각을 알아보는 함수
시간을 자세하게 알아보는 함수
mktime( )으로 정수 시간 구성
문자열 형식으로 생성하는 시간 정보
기타 시간 관련 함수
10.11 공용체 PDF
공용체의 필요성
공용체 선언
공용체 사용
공용체 멤버 변수 표시 붙이기
공용체와 함수
공용체와 포인터
10.12 비트 필드 PDF
11장 | C 프로그램의 메모리 구조와 동적 메모리 할당
11.1 C 프로그램의 메모리 구조 복습 및 힙 영역
동적 할당의 필요성
11.2 동적 메모리 할당과 반환(해제)
동적 할당 함수 사용
정수 n개를 입력받고 합과 평균을 구하는 프로그램
합과 평균 구하는 프로그램을 함수로 나눈 프로그램
11.3 간단한 주소록 프로그램
PhoneNumber 구조체를 요소로 포함하는 배열
PhoneNumber*를 요소로 포함하는 배열
11.4 연습 문제
11.5 리스트로 구현하는 전화번호 목록 PDF
재귀적 선언
리스트 기본 연산
12장 | 파일 입출력 PDF
12.1 파일과 스트림
파일
스트림
12.2 파일 입출력
파일 열기
파일 포인터
텍스트와 바이너리 스트림의 입출력
파일 닫기
텍스트 파일 입출력
파일 복사 프로그램 작성
파일의 끝 또는 입출력 오류 확인
문자 단위 입출력
파일 복사 프로그램 작성
블록 단위 바이너리 입출력
블록 단위로 파일 복사
구조체 쓰고 읽기
12.3 임의 접근
파일 크기 확인
갱신 모드(r+)로 파일 데이터 삽입
텍스트 파일에서 fseek( )과 ftell( ) 사용
12.4 stdin, stdout, stderr과 리디렉션
12.5 기타 파일 관련 함수
12.6 연습 문제
13장 | 모듈화 프로그래밍과 전처리기 PDF
13.1 모듈화 프로그래밍
코드를 여러 개 파일로 나누어야 하는 이유
분할 컴파일과 링크
해시값을 구하는 프로그램
파일 분할
여러 파일 컴파일 및 빌드
빌드 경고 또는 오류
함수 원형과 헤더 파일
헤더 파일 include 방법
외부 변수 사용
한 번만 포함하는 헤더 파일
헤더 파일 작성 및 사용 방법 정리
static 변수와 함수
13.2 조건부 컴파일
전처리 조건문
#undef 140
#ifdef ... #endif와 #ifndef ... #endif
13.3 기타 전처리기 기능
미리 정의된 매크로 상수
#error 사용법
#line 사용법
# 연산자
## 연산자
#pragma 지시어
13.4 연습 문제
3장 | 실습 문제 PDF
실습 문제 1
실습 문제 2
4장 | 실습 문제 PDF
실습 문제 1
실습 문제 2
5장 | 실습 문제 PDF
실습 문제 1
실습 문제 2
6장 | 실습 문제 PDF
실습 문제 1
실습 문제 2
7장 | 실습 문제 PDF
실습 문제 1
실습 문제 2
8장 | 실습 문제 PDF
실습 문제 1
실습 문제 2
9장 | 실습 문제 PDF
실습 문제 1
실습 문제 2
10장 | 실습 문제 PDF
실습 문제 1
실습 문제 2
11장 | 실습 문제 PDF
실습 문제 1
실습 문제 2
12장 | 실습 문제 PDF
실습 문제 1
실습 문제 2
13장 | 실습 문제 PDF
실습 문제 1
실습 문제 2
부록 1 아스키 코드 PDF
부록 2 통합 개발 환경 설치 PDF
부록 3 비주얼 스튜디오 디버거 사용법 PDF
부록 4 가변 인자 사용 PDF
ㆍ실습 문제 1은 각 장에서 배운 내용을 응용하는 문제를 해결하는 방법으로 자세히 설명합니다.
ㆍ실습 문제 2는 스스로 해결하는 방법으로 진행됩니다.
Author
조용주,임좌상
미국 일리노이주립대학(어바나-샴페인) 컴퓨터과학과에서 학사, 일리노이주립대학(시카고) 전기, 전자 및 컴퓨터과학과에서 석사, 컴퓨터 과학과에서 박사학위를 취득하였다. 2004년부터 상명대학교 융합공과대학 SW융합학부 컴퓨터과학전공에서 재직 중이며 다양한 프로그래밍 교과목, 프로그래밍 언어론, 디자인 패턴 등을 가르치고 있다. 저서로는 『프로그래밍 입문을 위한 파이썬의 정석』 등이 있다.
미국 일리노이주립대학(어바나-샴페인) 컴퓨터과학과에서 학사, 일리노이주립대학(시카고) 전기, 전자 및 컴퓨터과학과에서 석사, 컴퓨터 과학과에서 박사학위를 취득하였다. 2004년부터 상명대학교 융합공과대학 SW융합학부 컴퓨터과학전공에서 재직 중이며 다양한 프로그래밍 교과목, 프로그래밍 언어론, 디자인 패턴 등을 가르치고 있다. 저서로는 『프로그래밍 입문을 위한 파이썬의 정석』 등이 있다.