이미 소장하고 있다면 판매해 보세요.
|
첫째마당
C 언어 프로그래밍 개요 01장 프로그래머와 프로그램 환영 프로그래머와 프로그램 프로그램에는 규칙이 있다 프로그래밍 언어 프로그래밍 언어는 인공적으로 만든 말 프로그래밍 언어의 세대 구분 프로그래머 시스템 시스템 분석가와 시스템 설계자 소프트웨어 공학과 문서 소스 프로그램과 목적 프로그램 컴파일러, 인터프리터, 링커 실행 프로그램의 종류와 구현 수단 어떤 언어를 사용할 것인가 예제와 연습문제 02장 C 언어를 배워야 하는 이유 C 언어를 배운다는 것 C 언어를 배워야 하는 이유 C 언어는 경제적이다 C 언어는 시스템 프로그래밍에 강하다 C 언어는 자료를 조작하기가 좋다 구조적인 프로그래밍이 가능하다 함수 단위로 쪼개서 만든다 C 언어가 가진 약점 C 언어의 개발 역사 예제와 연습 문제 둘째마당 C 언어 문법 통찰하기 03장 함수와 변수 그리고 주석 main( ) 함수 변수 변수는 사용하기 전에 선언한다 변수와 함수의 이름 짓기 관용적으로 사용하는 변수 이름 규칙 지금까지 배운 요령으로 프로그램 수정하기 가독성과 주석 예제와 연습 문제 04장 상수와 자료 그리고 연산 대입과 연산 상수 처리에 강한 선행 처리 지시자 상수의 개념 숫자 상수 문자, 문자열, 기호 상수 지금까지 배운 내용을 정리하자 printf( ) 함수를 통해 배우는 다양한 상수와 변수 처리 셋째마당 프로그램의 제작과 작성 05장 프로그램 제작 과정 프로그램 제작 과정 훑어 보기 소스 코드 작성에서 실행 파일 생성까지 예제와 연습 문제 넷째마당 정보의 처리 06장 연산 연산 산술 연산자 : 계산의 천재 관계 연산자 : 너와 나, 그리고 우리 논리 연산자 : 이것이냐, 저것이냐 증감 연산자 : 하나씩 더하고 뺀다 비트 연산자 : 모래알도 계산한다 대입 연산자 : 이것은 네 것, 저것은 내 것 조건 연산자 : 결혼도 조건에 맞추어서 쉼표 연산자 : 우리 사이 좀 띄워 줘! 계량 연산자 : 키를 재자 유형 변환 연산자 : 순간적인 크기 변화 주소 연산자와 간접 연산자 예제와 연습문제 종합 실습 문제 07장 조건과 제어 조건과 제어 개념 잡기 if 문 : 만약 ……이라면 ……한다 switch-case 문 : 케이스별로 for 문 : ……인 동안만 while 문 : ……인가 확인부터 하고 ……을 한다 do-while 문 : ……부터 하고 ……인가 확인 분기문 : break, continue, goto 예제와 연습 문제 종합 실습 문제 다섯째마당 프로그램 추상화 08장 선행 처리 선행 처리의 개념 잡기 #include는 외부 파일을 원문에 추가해 준다 #define으로 복잡한 상수를 간단한 기호로 대치한다 선행 처리 지시자를 이용하면 조건에 따라 컴파일을 할 수 있다 예제와 연습 문제 종합 실습 문제 09장 함수 함수의 개념 잡기 함수를 만들어야 하는 이유 본격적으로 함수를 만들자 인수를 미리 정해 놓은 것이 원형이다 원형을 선언하면 함수를 쓸 수 있다 실제 함수는 main 아래에서 정의한다 함수의 인수는 잘 전달되어야 한다 예제와 연습 문제 종합 실습 문제 10장 라이브러리 라이브러리 개념 잡기 표준 라이브러리 표준 입출력 함수 : 라이브러리의 개념을 익힌다 예제와 연습 문제 종합 실습 문제 여섯째마당 자료의 저장과 조작 11장 변수 변수에는 사용 범위가 있다 변수의 사용 범위를 더 세분화한 것이 부류이다 레지스터 변수 자동 변수 정적 변수 외부 변수 예제와 연습 문제 종합 실습 문제 12장 배열 배열의 개념 C 언어에서 배열 만들기 C 언어에서 배열 지정하기 배열에 초기 값을 대입할 수 있다 예제와 연습 문제 종합 실습 문제 13장 포인터 포인터 개념 잡기 포인터 사용하기 포인터를 사용할 때의 이점 배열과 포인터 포인터 배열 예제와 연습 문제 종합 실습 문제 일곱째마당 사용자 정의 자료유형 14장 구조체 구조체 개념 잡기 구조형 사용하기 구조체 배열 중첩된 구조 구조 변수를 함수의 인수로 사용하기 구조 변수에 대한 포인터 비트 구조형 예제와 연습 문제 종합 실습 문제 15장 공용체 공용체의 개념 잡기 예제와 연습 문제 종합 실습 문제 16장 열거체 열거체의 이해 예제와 연습 문제 종합 실습 문제 17장 파일 파일 처리 개념 잡기 C 언어에서 파일을 처리하기 전에 알아둘 것 파일을 열고 닫자 파일 처리에 사용되는 함수들 예제와 연습 문제 종합 실습 문제 아스키(ASCII) 문자 코드표 찾아보기 예제 목차 06장 1 사칙 연산과 나머지 연산 2 연산자의 우선순위 3 관계 연산자의 사용 예 4 관계 연산자의 우선순위 5 논리 연산자의 사용 예 6 논리 연산자가 조건문에 사용된 예 7 증감 연산자의 사용 예 8 증감 연산자의 다양한 사용 예 9 비트 논리 부정(not) 10 비트 논리곱 (AND) 11 비트 배타적 논리합(XOR) 12 비트 논리합(OR) 13 비트 이동 연산자의 사용 예 14 대입 연산자의 사용 예 15 복합 대입 연산자의 사용 예 16 복합 대입 연산자의 또 다른 사용 예 17 조건 연산자의 사용 예 18 조건 연산자의 또 다른 사용 예 19 앞의 예제를 더 간단하게 변환한 프로그램 20 쉼표 연산자의 사용 예 21 여러 가지 기본 자료유형을 출력 22 float과 double의 정밀도 비교 23 계량 연산자의 사용 예 24 계량 연산자의 또 다른 사용 예 25 계량 연산자로 배열과 포인터의 크기 알아내기 26 변환 연산자의 사용 예 27 변환 연산자의 또 다른 예 28 주소 연산자의 사용 예 29 주소 연산자와 간접 연산자의 사용 예 07장 1 if 문의 사용 예 2 if-else 문의 사용 예 3 if-else if-else 문의 예 4 switch-case 문의 사용 예 5 간단한 for 문의 사용 예 6 for 문을 잘못 사용하여 반복 처리되지 않는 경우 7 for 문으로 10에서 1까지 출력 8 for 문으로 만든 무한 반복 루프 구조 9 중첩된 for 문으로 구구단을 출력 10 while 문으로 1에서 10까지 출력 11 while 문으로 만든 무한 루프 구조 12 while 문 안에서 break 문을 사용하는 예 13 간단한 do-while 문의 사용 예 14 break 문의 사용 예 15 continue 문의 사용 예 16 중첩된 for 문과 continue 문의 사용 예 17 goto 문의 사용 예 08장 1 #include의 사용 예 2 자신만의 헤더 파일을 만드는 법 3 #define의 사용 예 4 매개변수를 사용한 #define의 사용 예 5 매개 변수를 사용하는 또 다른 방법 6 매개 변수를 문자로 대신 사용한 #define의 사용 예 7 #undef로 기호 상수를 해제하는 예 09장 1 상향식 함수를 만들어 두 수를 더하는 예 2 하향식 함수를 만들어 두 수를 더하는 예 3 인수를 배열로 전달하는 예 4 문자열을 함수로 전달하는 예 10장 1 getchar( ) 함수를 사용하기 2 gets( ), puts( ) 함수의 사용 예 3 숫자 상수를 사용하는 프로그램 4 제어 문자열 \n을 사용하지 않는 경우 5 제어 문자열 \n을 사용하는 경우 6 제어 문자열을 10진 아스키코드로 출력하는 예 7 변환 문자열을 사용한 프로그램 8 오른쪽과 왼쪽으로 정렬하여 출력 9 변환 문자열 %c를 사용하기 10 변환 문자열 %s를 사용하는 프로그램 11 소수를 자릿수에 맞추어 출력 12 변환 문자열 %c를 사용하는 예 13 printf( ) 함수로 자릿수 지정하기 14 10진수를 8진수, 16진수로 출력하는 예 15 printf( ) 함수에서 지수형 자료를 출력하는 예 16 scanf( ) 함수로 정수를 받아들이는 예 17 scanf( ) 함수로 실수형 자료를 입력하는 예 18 scanf( ) 함수로 자료를 입력할 때 주의할 점 11장 1 지역 변수와 전역 변수의 차이점 2 전역 변수의 적용 범위 3 블록 내의 자동 변수의 사용 예 4 for 문 내의 자동 변수의 사용 예 5 for 문 내의 정적 변수의 사용 예 6 레지스터 변수의 사용 예 12장 1 배열을 사용할 때와 사용하지 않을 때의 차이점 2 배열에 값을 대입하는 예를 통해 첨자를 이해한다 3 배열의 초기화 4 실수나 지수 데이터를 배열에 저장하는 예 5 문자열 배열을 초기화하는 예 13장 1 포인터 변수의 증감 2 포인터 변수에 데이터를 저장시키는 방법 3 문자열을 포인터로 처리하는 예 4 2차원 배열을 포인터로 처리하여 출력 5 함수의 인수로 포인터 변수를 사용하는 예 14장 1 간단한 구조형 2 구조형 요소를 배열로 만드는 예 3 구조 변수가 여러 개인 경우 4 한 구조형의 내용을 다른 구조형에 복사하는 예 5 구조체 배열의 사용 예 6 구조형 포인터의 사용 예 15장 1 공용형 변수의 요소에 초기 값 배정하기 16장 1 간단한 열거형의 사용 예 2 나열한 이름에 정수값을 부여하는 예 17장 1 파일을 여는 간단한 예 2 두 개의 파일을 동시에 여는 예 3 텍스트 파일을 열어 문자를 읽는 예 4 알파벳 대문자를 파일에 저장하기 5 파일을 그대로 복사하는 프로그램 6 fgets( ) 함수를 이용해 문자열 단위로 읽는다 7 fputs( ) 함수로 문자열을 파일에 저장하기 8 fscanf( ), fprintf( )로 파일 구조를 읽고 쓰는 예 |
|
최신 프로그래밍 언어들이 많이 나타나 사용되고 있지만, 여전히 C 언어는 산업계 곳곳에서 사용되고 있습니다. 모의실험, 그래프 작성, 기계/전기/전자 제어 등의 다방면에서 C 언어가 능력을 발휘하고 있습니다.
C++ 컴파일러를 이용해 C 언어를 컴파일해서 사용할 수 있습니다. 만약 큰 프로그램을 작성해야 하는 대규모 프로젝트가 아니고, 작고 간단한 프로그램을 작성하려고 한다면 때로는 C++ 언어보다도 C 언어를 사용하는 것이 효율적일 수 있습니다. 독자가 만약 초보 프로그래머라면 이 책을 통해 프로그래머의 세계로 들어가게 되기를 바랍니다. 그래서 C 언어를 디딤돌 삼아서 C++ 등의 발전된 언어를 쉽게 이해하는 단계로 도약하게 되기를 바랍니다. C 언어는 다른 프로그래밍 언어들이 가지고 있는 특징들의 공통분모를 가지고 있습니다. 그래서 C 언어를 익혀두면 C++, Perl, Python, PHP, Java, Java Script, C# 등의 언어를 이해하기가 쉽습니다. 이 책의 특징을 살펴보면 다음과 같습니다. 첫째, 본문 내용을 일곱 마당, 17장으로 세분화하여 한 학기 교재로 쓰기에 적합하게 하였습니다. 둘째, 실제적인 프로그래밍 문제를 다루는 6장부터 17장까지에 이르는 각 장마다 예제보다 난이도가 조금 더 높은 종합 실습 문제를 두 개씩 실어 그 장을 제대로 소화하였는지 점검해 볼 수 있게 하였습니다. 셋째, 각 장마다 제시되었던 예제들에 대한 목차를 정리하여 언제든 예제를 검색하여 참고할 수 있도록 배려하였습니다. 넷째, 모든 프로그램의 코드를 최신 표준에 맞게 고쳤습니다. 대표적으로 오래 전의 C 프로그램 작성 관행에 따라 main() {}과 같이 함수를 모호하게 기술하였던 것을, int main(void) {……}와 같은 꼴로 반환 자료 유형과 인수의 자료 유형을 명료하게 제시하였습니다. 다섯째, DEV C++이라는 통합 개발 환경에서 컴파일하는 방법에 대한 설명을 넣었습니다. 실제적으로 지금은 거의 모두가 통합 개발 환경을 사용한다는 점에서 적절하다고 생각합니다. 이 책을 집필하는 과정에서 도움을 주신 많은 분들께 감사드립니다. 초보 프로그래머였던 시절을 떠올려 봅니다. 어디부터 시작해야 할지, 어떻게 공부해야 할지 막막하던 시절이었습니다. 프로그램 작성하는 법을 익히기 위해 다른 사람이 만든 프로그램을 출력해서 수십 번 반복해서 보고, 플로차트를 수십 번 그려보던 시절이 생각납니다. 그때에 C 프로그램의 문법과 사용 예를 체계적으로 가르쳐주는 책이 있었다면 좋았을 것이라는 생각을 합니다. 그래서 이 책을 저술하였습니다. 초보였던 시절의 기억을 떠올리면서, 초보 프로그래머에게 알맞은 방식으로 책의 내용을 구성해야 한다고 생각했습니다. 그래서 다른 책들처럼 처음부터 프로그램 작성법을 설명하는 방식을 버렸습니다. 기초를 충분히 다질 수 있도록 쉬운 것부터 단계적으로 설명해 나가는 방식을 택하기로 하였습니다. 즉, 충분한 선행 학습이 이루어질 수 있도록 하기로 한 것입니다. 그래서 이 책에서는 프로그래머의 위치를 확인하는 일부터 벌입니다. 첫째 마당에서는 프로그램이 무엇이고, 프로그래머가 하는 일은 무엇이고, 왜 C 언어를 배워야 하는지를 알려 줍니다. 사실 이 책의 설명으로도 부족하기는 하지만 일단은 첫째 마당에서 설명한 내용을 발판으로 삼기를 바랍니다. 그 다음으로 둘째 마당에서는 C 언어의 전반적인 사항을 비유를 들어가며 설명합니다. 둘째 마당은 넷째 마당부터 일곱째 마당까지에서 다루는 내용을 간단하고 알기 쉽게 압축해 놓은 것이라고 보면 됩니다. 초보 프로그래머라면 둘째 마당이 나머지 장에 대한 '선행 학습' 과정이 될 수 있습니다. 어느 정도 C 언어에 익숙한 사람이라면 둘째 마당을 건너뛰어도 됩니다. 소스 프로그램을 작성한다고 하여도 그것을 실제로 실행되는 프로그램으로 변환하지 않으면 무슨 소용이 있겠습니까? 그래서 셋째 마당에서는 소스 프로그램을 컴파일을 하여 실행 가능한 프로그램으로 변환하는 방법에 대해서 설명합니다. 둘째 마당에서 C 언어의 개요를 익혔기 때문에 셋째 마당에서 실제 실행 가능한 프로그램을 만드는 것이 어렵지 않고 재미있을 것입니다. 사실 첫째 마당부터 셋째 마당까지는 C 언어 학습을 위한 예비 훈련 과정이라고 볼 수 있습니다. 그런 이유로 분량도 그다지 많지 않습니다. 마당으로 따지면 세 개나 되지만, 이 세 마당의 분량은 전체의 사분의 일 수준입니다. 사실 넷째 마당부터 일곱째 마당까지가 본격적인 훈련 과정이라고 할 수 있습니다. 넷째 마당부터 일곱째 마당까지는 C 언어를 사용하여 프로그램을 작성하는 프로그래머가 필수적으로 알아야 할 내용들을 쉬운 것부터 차례로 다루어 두었습니다. 그리고 각 장의 설명이 끝나면 많은 예제와 그것에 대한 해설을 제시하여 실제적인 학습이 이루어지도록 배려하였습니다. 이 책을 100% 넘게 학습하는 요령 처음에는 책을 통째로 읽으십시오. 통독하라는 말입니다. 이렇게 통째로 읽기를 서너 차례 하십시오. 이때에는 빠른 속도로, 소설 책 읽듯이 읽어도 좋습니다. 즉, 정독하지 않아도 된다는 말입니다. 이해되지 않는 부분이 있다면 이해하려고 애쓰지 말고 그냥 넘어가십시오. 그리고 다시 읽어보십시오. 그리고 그 다음부터는 '절대로' 눈으로 읽지 마십시오. 소스 코드 하나하나를 완전히 체득할 때까지 종이에 옮겨 적어 보십시오. 만약 플로차트를 그릴 수만 있다면 예제로 제시한 모든 프로그램의 플로차트를 그려보십시오. 그리고 소스 코드 하나하나를 컴퓨터에 입력하여 컴파일을 하고 실행해 보십시오. 실행한 다음에 다시 소스 코드를 분석해 보십시오. 예제 소스 코드와 유사한 소스 코드를 만들어 보십시오. 또한 반드시 각 장의 연습 문제들을 직접 풀어 보십시오. 남에게 도움을 받을 생각을 해서도 안 됩니다. 아무리 해도 프로그램이 작성되지 않는다면 차라리 머릿속에 묵혀 두고 잊어버리십시오. 이럴 때는 풀 수 있는 문제만 푸십시오. 그러다가 어느 날 문득 자신이 그렇게 어렵다고 여기던 문제를 풀 수 있다는 것을 알게 되는 날이 옵니다. 실력이 전혀 늘지 않는다고 느껴질 때에도 문제를 풀어 나간다면 실력이 뚝 뛰어 오르는 날이 옵니다. 이럴 때 풀리지 않던 문제들을 다시 풀어보면 신기하게 잘 풀릴 것입니다. 이런 요령은 제가 경험한 것이기도 하지만 대부분의 프로그래머들이 추천하는 방법입니다. 프로그래머들은 경험적으로 이런 요령을 체득하지만 이런 요령을 학문적으로 풀이하는 사람도 있습니다. 즉, 이것은 제가 헛된 상상으로 주장하는 바가 아니라 프로그래머들이 스스로 모르모트가 되어 입증한 일반 이론이라는 것입니다. 여기서 알려준 대로 따라하면 독자는 이 책을 산 것에 대해서 후회하지 않을 것입니다. 하지만 그대로 따라하지 않은 독자는 반드시 다음과 같은 말을 내뱉게 될 것입니다. '괜히 샀다!' '나는 아무리 공부해도 안 돼!' '내게는 너무 어려워!' 모든 실패한 프로그래머들이 공통적으로 내뱉는 말입니다. 성공한 프로그래머가 되려면, 반드시 연습하고 연습해야 합니다. 하나의 소스 코드를 백 번은 분석할 다짐을 하며 공부하기 바랍니다 |