이 책은 C 언어를 처음 학습하는 독자들이나 비전공자들도 이해하기 쉽도록 본문 내용을 친절하게 풀어 쓴 책이다. 또한 전공자들에게는 참고하기 편하고 손이 자주 닿는 C 언어 기본서로 사용할 수 있다.
문법이나 이슈에 대한 ‘Tip’과 ‘Note’를 넣어 학습에 재미를 느끼게 하며, 버전 C99에 추가된 기능까지 포함해 설명하고 있다. 본문 중간중간 스스로 학습 내용을 점검할 수 있는 ‘중간점검’, 간단한 프로그램을 완성해볼 수 있는 ‘Lab’, 각 챕터에서 배운 내용을 평가해볼 수 있는 ‘내용점검 연습’과 ‘프로그래밍 연습’으로 구성되어 있다.
강환수
서울대학교 계산통계학과에서 학사학위, 서울대학교 전산과학과에서 전산학 이학
석사(M.S.)를 취득하였다. 1998년까지 삼성 SDS의 정보기술연구소에서 선임연구
원으로 재직 중에 지식관리시스템(Knowledge Management Systems)과 그룹웨
어시스템(Groupware Systems) 개발에 프로젝트 매니저로 참여하였다.
1998년에 동양미래대학교로 자리를 옮겨 현재, 동양미래대학교 컴퓨터정보공학과와 인공지능소프트웨어학과 교수로 재직하고 있으며 서울대학교 컴퓨터공학부에서 박사를 수료하였다. 컴퓨터 관련 교육에 관심이 있어 프로그래밍 언어에 관련된 서적인 『알기 쉬운 자바(영한, 1998)』, 『비주얼 베이직 6.0 프로그래밍(글로벌, 1999)』, 『C로 배우는 프로그래밍 기초(학술정보, 2003)』, 『자바로 배우는 프로그래밍 기초(학술정보, 2005)』, 『유비쿼터스 시대의 컴퓨터 개론(학술정보, 2006)』, 『Perfect C(인피니티북스, 2007)』, 『C로 배우는 프로그래밍 기초 2판(인피니티북스, 2008)』, 『소프트웨어 중심 사회의 컴퓨터 개론(인피니티북스, 2019)』, 『파이썬으로 배우는 누구나 코딩(홍릉과학출판사, 2020)』 등을 저술하였으며 역서로는 『비주얼 베이직으로 배우는 프로그래밍 기초(학술정보, 2005)』 등이 있다.
• 서울대학교 계산통계학과 학사
• 서울대학교 전산과학전공 석사
• 서울대학교 컴퓨터공학부 박사 수료
• 전 삼성SDS 정보기술연구소 선임연구원
• 미국 인디애나 퍼듀 대학(IUPUI)에서 방문교수
• 전 동양미래대학교 산학협력처장 겸 단장
• 현 동양미래대학교 컴퓨터공학부 교수
강환일
서울대학교 전자공학과에서 학사학위를 취득하였고, 한국과학기술원(KAIST) 전기 및 전자공학과에서 공학석사를 취득하였다. 미국 위스콘신(매디슨)대학 전기 및 컴퓨터공학과에서 박사학위를 취득하였다. 현재 명지대학교 정보통신공학과에서 교수로 재직 중이며, 캐나다 토론토대학 전기공학과 및 미국 퍼듀대학교 전기공학과 방문교수를 역임하였고, 2014년에는 영국 크랜필드대학(슈리븐햄 캠퍼스) 국방분야의 단기과정을 이수하였다. 주요 연구 분야는 멀티미디어 보안 및 처리, 정보통신 응용 및 국방관련 최적화 연구와 강인제어시스템 등이다.
저서로는 『C로 배우는 프로그래밍 기초(학술정보, 2003)』, 『자바로 배우는 프로그래밍 기초(학술정보, 2005)』, 『유비쿼터스 시대의 컴퓨터 개론(학술정보, 2006)』, 『모바일 시대의 컴퓨터개론(인피니티북스, 2014)』 등이 있다.
• 서울대학교 전자공학과 학사
• 한국과학기술원(KAIST) 전기 및 전자공학과 석사
• 미국 위스콘신(매디슨)대학 전기 및 컴퓨터공학과 박사
• 캐나다 토론토대학 전기공학과 및 미국 퍼듀대학교 전기공학과 방문교수
• 영국 크랜필드대학(슈리븐햄 캠퍼스) 단기연수
• 현 명지대학교 정보통신공학과 교수
이동규
서울대학교 전자공학과에서 학사학위 및 석사학위를 취득하였고, 서울대학교 기술경영대학원에서 박사학위를 취득하였다. 삼성전자의 통신연구소 전임연구원이었으며, 삼성전자에서 근무하는 기간(1992~1998)에 교환기부가시스템의 운영체제를 개발하였으며, 현재 동양미래대학교 컴퓨터공학부에서 교수로 재직 중이다.
저서로는 『C 언어 스케치(인피니티북스, 2011)』 등이 있다.
• 서울대학교 전자공학과 학사
• 서울대학교 전자공학과 석사
• 서울대학교 기술경영대학원 박사
• 전 삼성전자 통신연구소 전임연구원
• 삼성 근무기간(1992~1998)에 교환기부가시스템 운영체제 개발
• 현 동양미래대학교 컴퓨터공학부 교수
Chapter 1 프로그래밍 언어 개요
1.1 ‘프로그램’은 무엇일까?
1.2 프로그래밍 언어의 계층과 번역
1.3 왜 C 언어를 배워야 할까?
1.4 프로그래밍의 자료 표현
1.5 소프트웨어 개발
1.6 다양한 ‘프로그래밍 언어’
내용점검 연습
Chapter 2 C 프로그래밍 첫걸음
2.1 프로그램 구현 과정과 통합개발환경
2.2 비주얼 스튜디오 설치와 C 프로그램의 첫 개발
2.3 C 프로그램 실행 과정의 이해
2.4 오류와 디버깅
내용점검 연습
프로그래밍 연습
Chapter 3 자료형과 변수
3.1 프로그래밍 기초
3.2 자료형과 변수선언
3.3 기본 자료형
LAB 문자 ‘#’과 대한민국 인구, 세계 인구의 출력
3.4 상수 표현 방법
LAB 부동소수형 최대 최소 매크로 상수 출력
내용점검 연습
프로그래밍 연습
Chapter 4 전처리와 입출력
4.1 전처리
4.2 출력함수 printf()
LAB 정수와 실수, 문자와 문자열의 출력
4.3 입력함수 scanf()
LAB 8진수 정수를 입력 받아 8진수와 10진수, 16진수로 출력
내용점검 연습
프로그래밍 연습
Chapter 5 연산자와 연산식
5.1 연산식과 다양한 연산자
LAB 연산자 /와 %를 사용한 지폐 계산 방법
5.2 관계와 논리, 조건, 비트연산자
LAB 비트 XOR 연산자 ^를 사용한 암호화와 복호화
5.3 형변환 연산자와 연산자 우선순위
LAB 섭씨 온도를 화씨 온도로 변환해 출력
내용점검 연습
프로그래밍 연습
Chapter 6 조건
6.1 제어문 개요
6.2 조건에 따른 선택 if 문
LAB 표준입력으로 받은 세 정수의 최대값을 출력
6.3 다양한 선택 switch 문
LAB 표준입력으로 받은 정수에 대응하는 열거 상수로 switch 문 활용
내용점검 연습
프로그래밍 연습
Chapter 7 반복
7.1 반복 개요와 while 문
LAB 놀이공원에서 키가 130 센티미터 이하인 정원 채우기
7.2 do while 문과 for 문
LAB 백 단위 정수의 세 개의 각 자릿수 출력
7.3 분기문
LAB 양의 정수의 소수 여부를 판단해 출력
7.4 중첩된 반복문
LAB 구구단 출력
내용점검 연습
프로그래밍 연습
Chapter 8 배열
8.1 배열 선언과 초기화
LAB 정수형(int) 배열에 표준입력으로 받은 정수를 저장하여 출력
8.2 2차원과 3차원 배열
LAB 2차원 배열에서 원소 참조 방법과 저장 값을 출력
내용점검 연습
프로그래밍 연습
Chapter 9 함수 기초
9.1 함수 정의와 호출
LAB 표준입력으로 받은 두 양의 정수로 거듭제곱을 구하는 함수 intpow()
9.2 함수의 매개변수 활용
LAB 배열의 모든 원소를 지정한 수만큼 증가시키는 함수 increment()
9.3 재귀와 라이브러리 함수
LAB 1에서 100 사이의 난수 알아 맞히기
내용점검 연습
프로그래밍 연습
Chapter 10 변수 유효범위
10.1 전역변수와 지역변수
LAB 1에서 100 사이의 난수 알아 맞히기를 두 파일로 구현
10.2 정적 변수와 레지스터 변수
LAB 지역변수와 정적 변수의 사용
10.3 메모리 영역과 변수 이용
LAB 은행계좌의 입출금 구현
내용점검 연습
프로그래밍 연습
Chapter 11 포인터 기초
11.1 포인터 변수와 선언
LAB 다양한 자료형 포인터 변수 선언에 의한 주소값 출력
11.2 간접연산자 *와 포인터 연산
LAB 포인터를 이용하여 두 수의 값을 교환하는 프로그램
11.3 포인터 형변환과 다중 포인터
LAB 표준입력으로 받은 두 실수의 덧셈을 포인터 변수를 사용해 수행하고 출력
11.4 포인터를 사용한 배열 활용
LAB 2차원 배열과 배열 포인터 활용
내용점검 연습
프로그래밍 연습
Chapter 12 문자와 문자열
12.1 문자와 문자열
LAB 한 행을 표준입력으로 받아 문자 하나하나를 그대로 출력
12.2 문자열 관련 함수
LAB 문자열을 역순으로 저장하는 함수 reverse() 구현
12.3 여러 문자열 처리
LAB 여러 문자열 처리
내용점검 연습
프로그래밍 연습
Chapter 13 구조체와 공용체
13.1 구조체와 공용체
LAB 도시의 이름과 위치를 표현하는 구조체
13.2 자료형 재정의
LAB 영화 정보를 표현하는 구조체
13.3 구조체와 공용체의 포인터와 배열
LAB 영화 정보를 표현하는 구조체의 배열
내용점검 연습
프로그래밍 연습
Chapter 14 함수와 포인터 활용
14.1 함수의 인자전달 방식
LAB 여러 정수 인자에서 최소값 찾기
14.2 포인터 전달과 반환
LAB 책 정보를 표현하는 구조체 전달
14.3 함수 포인터와 void 포인터
LAB 함수 포인터 배열의 활용
내용점검 연습
프로그래밍 연습
Chapter 15 파일 처리
15.1 파일 기초
LAB 파일 “myinfo.txt”을 열어 간단한 정보를 출력
15.2 텍스트 파일 입출력
LAB 파일의 대소문자를 서로 바꿔 다른 파일에 저장
15.3 이진 파일 입출력
LAB 학생정보를 표현하는 구조체 배열을 파일에 쓰고 파일에 저장된 학생정보를 다시 읽어 오기
15.4 파일 접근 처리
LAB 정수 배열 값을 파일에 출력한 후 다시 입력
내용점검 연습
프로그래밍 연습
Chapter 16 동적 메모리와 전처리
16.1 동적 메모리와 자기참조 구조체
LAB 직원을 위한 자기참조 구조체 구현
16.2 연결 리스트
LAB 노드 3개로 구성된 연결 리스트
16.3 전처리
LAB 다양한 자료형의 변수 내용을 서로 교환하는 매크로
내용점검 연습
프로그래밍 연습
C 언어를 학습하기에 가장 Perfect한 책!
C 언어는 개발된 이래 50년간 꾸준히 활용되고 있고 제4차 산업혁명 시대가 도래한 현재에도 가장 기본적으로 사용되고 있는 컴퓨터 언어이다. 정보기술이 발전함에 따라 새롭고 더 수준 높은 프로그래밍 언어들이 많이 생겨났는데, 그 고급 언어들의 가장 바탕이 되는 언어가 C 언어라고 할 수 있다.
기본이 되는 프로그래밍 언어인 C 언어부터 완벽(Pefect)하게 모든 내용을 이해하고 자기 것으로 만들어야 다른 언어에도 응용을 할 수 있고 더 나아가 프로그래밍 스킬도 향상시킬 수 있을 것이다. C 언어의 기초부터 마스터까지 완벽한 학습을 원한다면 이 “Perfect C” 책을 읽어보라. 이 책을 통해 학습하는 독자라면 누구라도 모국어처럼 자유자재로 C 언어를 활용할 수 있을 것이다.