시작하면서...
처음엔 잘 모르시는 분들도 쉽게 따라 해 볼 수 있도록 튜토리얼을 만들어 볼려고 했습니다. 그런데  포스트를 계속 올리다 보니, C에 관해 질문해 오시는 분들도 많고 주위에서도 따라 해보기는 하는데 이해를 전혀 할 수 없다는 이야기를 들었습니다.

이런 이유로 프로그래밍이나 C언어에 관한 지식이 없으면 용어나 소스코드 작성 시 이해가 힘들기 때문에, 간단하게 이곳의 튜토리얼을 이해할 수 있는 정도의 C언어 강좌를 시작해 볼려고 합니다.

대상은 처음 C언어를 공부하시는 분들이며, 최대한 쉽게 설명해 보겠습니다.
 
1.1 C 언어의 역사와 특징
C는 1972년 Unix를 만들기 위해 Dennis Ritchie에 의해 만들어 졌습니다. 나온지 오래된 언어로 이 후 나온 언어들에 비해 불편한 점과 객체지향 프로그래밍을 구현하는데 어려움이 있지만, 아직까지 많이 사용되는 언어입니다.  

C는 오래된 역사와 시스템 프로그래밍과 같은 로우레벨 작업이 가능하고, 컴파일 되어 빠른 실행 파일을 작성할 수 있기 때문에 많은 플랫폼에서 사용되고 있습니다. 또한 게임 부터 각종 어플리케이션, 하드웨어 제어등 다양한 분야에서 사용됩니다.

현재 많이 쓰이는 C++, Objective-C, PHP등의 언어들이 C를 기본으로 하고 있고, C 문법은 거의 FM이라고 할수 있어 C를 기본으로 익히면 필요에 따른 프로그램 언어들을 배우기가 매우 용이 합니다.

이런 이유로 C는 처음 프로그램을 배우는 입문자에게 아직도 많이 권해 지고 있는 언어 입니다. 보다 자세한 C의 역사와 특징은 많은 곳에 언급되어 있으니 이곳에서는 이정도로 생략하겠습니다.


1.2 C 언어 공부하기
이곳에서는 간단하게 튜토리얼을 이해할 수 있을 정도의 기본적인 C 강좌를 할 것입니다. 체계적으로 C를 배우기 위해서는 관련서적을 구입하여 보실 것을 권장합니다.

1) 추천 서적

C와 관련하여 많은 서적이 있으니, 서점에서 직접 확인하여 보기 편하고 각자에게 맞는 서적을 구입하시면 됩니다. 일반적으로 많이 보는 C 관련 서적을 2개와 프로그래밍에 필요한 시스템에 관련된 기본 지식을 얻을 수 있는 책을 추천 합니다.

사용자 삽입 이미지
열혈강의 C 프로그래밍
윤성우 지음 / 프리렉

후배가 C를 배우고 싶다고 하여, 몇 년전 친구에게 요새 초보자가 보기에 괜찮은 C 서적이 뭐가 있는지 물어 보니 이 책을 추천해 주었습니다. 쉽게 설명되어 있어 C언어 공부를 시작하는 사람들이 보기에 가장 적당하다고 합니다.


사용자 삽입 이미지
C언어 프로그래밍
Brian W. Kernighan, Dennis M. Ritchie/대영사

1978년 나온 C의 바이블이라고 불리우는 The C Programming Language의 번역본 입니다. C를 배우기 위해 거의 필수적으로 봐야 할 서적이라고 할 수 있습니다. 하지만 바이블인 만큼 내용이 너무 교과서적(?)이라 위의 서적과 같이 병행하면서 보시면 좋습니다.


사용자 삽입 이미지
성공과 실패를 결정하는 1%의 프로그래밍 원리
HISAO YAZAWA(번역:예승철)/성안당

이전에 Inside the IBM PC라는 컴퓨터 시스템에 관련된 책이 있었습니다. 절판되지 않았다면 그 책을 추천했을 것이지만, 그와 비슷하고 심도는 조금 낮아진 것 같은 이 책도 적극 추천 합니다. C를 공부하기 전, 또는 공부하면서 이런 류의 책을 보시면 훨씬 이해가 쉽습니다.

위의 도서 이미지는 kangcom.com 에서 가지고 왔으며, 링크는 kangcom.com의 해당 도서로 링크되어 있습니다.


2) 보는 방법

책을 보실 때는 아래의 사항을 지키시면서 보시는게 좋습니다.

1. 백견불여일타
소스 코드는 백번 보는 것보다 직접 쳐보는 것이 더욱 효과적입니다. 책에 나오는 예제들은 무조건 직접 쳐보는 것이 좋습니다.

머리로 이해 하는 것도 중요하지만, 기본 문법과 자주 쓰이는 함수들이 습관화 되고 손에 익을 때 까지 가능한 한 많이 쳐보는 것이 좋습니다. 직접 타이핑을 하다 보면 오타가 나오고 컴파일을 위해 오류를 수정해야 하는데, 이 작업을 반복하면 반복할 수록 컴파일 전에 오류를 내는 습관을 줄일 수 있습니다.
 
2. 최소 2번이상 읽기
바이블로 여겨지는 책은 반드시 3번 정도 다시 읽어 보아야 합니다. 아는만큼 보인다고, 처음에 대충 이해를 하거나 잘 못 이해하고 넘어 갔던 부분들도 몇 번 다시 읽게 되면 작자가 설명하고자 하는 정확한 의미를 알 수 있습니다.

3. 꼼꼼하게 읽기
모든 책이 마찬가지 겠지만 대충 아는 것 같다고 그냥 넘겨 보면  안됩니다. 한 줄이지만 중요한 내용이 나올 수도 있고, 아는 내용이더라도 복습하는 의미로 꼼꼼하게 책을 읽는 것이 좋습니다. 빨리 책을 끝내는 것 보다 최대한 이해하도록 하고, 소스 코드 같은 경우에는 변경해 가면서 응용해 보는 것이 좋습니다. 


1.3 C 컴파일 환경 만들기
C 뿐만 아니라 다른 언어도 책만 보는 것 보다, 직접 타이핑을 해보고 컴파일을 하는 것이 더욱 이해가 용이합니다. C 코드를 테스트 해 볼수 있는 환경을 만들기 위하여, 맥/리눅스/윈도우에서 필요한 툴들을 알아보겠습니다.

1. Mac OS X

맥 OSX에서는 GCC, VI를 이용하여 C 소스코드를 작성하고 컴파일 할 수 있습니다. 간편하게 XCode를 이용할 수도 있습니다. Xcode는 이곳의 튜토리얼 1.1 Xcode 구하기에서 다운로드 및 설치에 대해 참고하실 수 있습니다.

Xcode를 이용하는 방법은 다음과 같습니다. 메뉴에서 File/New Project를 클릭합니다. 아래와 같이 Command Line Utility 항목에서 Standard Tool을 선택 하고 Next를 클릭한 후, 적당한 프로젝트명을 입력합니다.
사용자 삽입 이미지

위의 작업이 완료되면 Xcode에서 main.c를 열고 아래와 같이 책이나 이곳에 나오는 C 코드를 입력하고 테스트 해 보실 수 있습니다.
사용자 삽입 이미지

Xcode이외에 직접 gcc를 이용할 수 있습니다. 아래 2. Linux의 내용은 맥 OS X에서도 똑같이 적용이 가능합니다.


2. Linux

리눅스에는 GCC라는 C/C++ 컴파일러가 있습니다. 어떻게 보면 IDE (프로그램 통합 개발 환경)없이 리눅스 프롬프트 모드에서 직접 컴파일러나 링커를 실행 시키고 make를 이용하는 가장 원초적인 환경에서 작업 하는 것이 기본적인 이해에 좋습니다.

Linux(unix)는 C와 밀접한 관계에 있으므로, 대부분 C 컴파일러와 개발툴들이 포함되어 있습니다. 만약 사용하는 리눅스에 gcc가 설치되어 있지 않을 경우에는, 사용하는 리눅스 패키지에 있는 설치 툴들을 이용해 gcc 또는 developement, build 등으로 되어 있는 패키지를 인스톨 하시거나, 직접 다운로드 받아 설치하셔야 합니다.

에디터로는 vi, emacs등을 사용하실 수 있습니다. 아래는 맥의 BSD 유닉스 환경(아래의 모습은 리눅스와 완전 동일 합니다.)에서  hello, world를 편집하고 컴파일, 실행해 본 화면입니다.
사용자 삽입 이미지

사용자 삽입 이미지


3. MS Windows

윈도우즈 환경에선 대표적인 Visual C++이나 VS 2005가 있지만, 무료이고 용량도 작은 DEV-C++ 공개 컴파일러를 추천합니다.

VC의 경우에는 초보자가 공부를 위해 사용하기에 환경이 지나치게 복잡하고, 책들의 예제와는 다른 환경이나 메시지가 나올 수 있습니다. 예를 들면 strcpy 함수를 사용하면 strcpy_s로 사용하라고 경고 메시지를 내보냅니다. (경고는 끌 수 있습니다)

MS측에선 C 런타임 라이브러리의 안정성을 높이기 위해서 만들었다고는 하지만, 혼돈이 있을 수 있습니다. C언어 공부를 위해선 Dev-C++을 사용하는 것이 더 좋습니다. Dev-C++는  http://www.bloodshed.net/dev/devcpp.html 에서 다운 받으실 수 있습니다.

테스트를 위해선 설치를 하고 실행시킨 후, 메뉴에서 파일/새로만들기/프로젝트를 클릭합니다. 새로운 프로젝트에서 Console Application을 선택하고, 적당한 프로젝트 명을 입력하고 C를 선택한 후에 확인 버튼을 클릭합니다.
사용자 삽입 이미지

아래는 편집 화면이고 컴파일 후에 실행하여 결과를 확인할 수 있습니다.
사용자 삽입 이미지

위와 같이 소스를 작성 하면 컴파일 후 실행하면, 프롬프트 창이 너무 빨리 사라져 결과를 알 수 없습니다. 원래 main.c는 return 0; 위에 system("PAUSE"); 라는 라인이 자동으로 추가되어 있었는데, 이곳에서는 소스를 똑같이 보이기 위해 삭제했습니다.

실제 사용시에는 system("PAUSE"); 라인 위에 소스를 입력하시면, 결과를 확인할 수 있습니다.
이상 C를 공부하는데 필요한 내용과 어플리케이션에 관해 알아 보았습니다. 다음 장에서는 C 프로그램을 위한 기본적인 내용과 용어에 관해 설명하겠습니다.

'프로그래밍 강좌 > C 언어 기초' 카테고리의 다른 글

6. 제어문  (0) 2007.06.14
5. 연산자  (0) 2007.06.13
4. 변수  (2) 2007.06.12
3. C 기초문법  (0) 2007.06.05
2. 소스코드, 컴파일, 링크  (6) 2007.06.04
AND