언어 자료구조 알고리즘/C 언어 문법

2. 프로그램 구성 요소

언제나휴일 2009. 8. 19. 05:47
반응형
프로그램 구성 요소

  

다루는 내용

    - C언어와 프로그래밍

    - C언어 구성 요소

    - 이 책속의 프로젝트 파일구성

 

 

1. C언어와 프로그래밍

  컴퓨터 프로그램은 컴퓨터로 하여금 특정 목적을 수행할 수 있는 일련의 이진 코드를 말한다. 이러한 컴퓨터 프로그램을 작성하기 위해서 목적에 따라 많은 언어들과 이들을 이진 코드로 만들어 지는 컴파일러들이 있다. 

 

 그 중에 C언어는 Unix라는 O/S를 만드는 과정에 탄생한 언어답게 시스템 프로그래밍에 많이 사용되고 있다.  또한, C언어의 문법은 30~40여가지의 예약어와 30~40여가지의 연산자로 구성된 문법이 간결하다.  하지만, 간결한 문법을 적용해 프로그래밍을 하는데에는 창조적인 고통을 따르게 한다. 

 

 하지만 전산 역사가 발전하면서 프로그래밍 과정에서 공통적인 요소들이 자주 반복되고 규모가 커지면서 개발 비용의 대부분이 코딩에 들어가는 비용보다는 유지보수 비용이 더욱 더 많이 들어가는 형태가 되어 가고 있다.  이러한 과정에서 Java나 C++, C#같이 많은 문법적인 요소를 갖고 있는 OOP(Objective Oriented Programming-객체 지향 프로그래밍)언어들이 태동하게 되었다.  물론, H/W의 비약적인 발전이 있었기에 프로그램 수행 속도와 메모리의 효율성에 대한 많은 고민을 줄이고 높은 신뢰성을 추구하는데 고민을 투자할 수 있게 되었다. 

 

 이러함에 불구하고 C언어는 여전히 신뢰성뿐만 아니라 프로그램 수행 속도와 메모리의 효율성이 필요로하는 시스템 프로그래밍에 사용이 되고 있다.  또한, 많은 교육 장소에서 기본적인 프로그래밍을 가르키기 위해 C언어를 먼저 선택을 하고 OOP언어나 Script언어를 교육하고 있는 실정이다. 

 

 본인도 다년간 강의를 하면서 C언어를 먼저 교육을 함으로써 프로그래밍 언어의 기본 요소를 익히고 어느 정도의 창조의 고통을 느끼고 난 후에 OOP언어를 가르키고 있다.  이러한 교육은 C언어 프로그래밍을 익히는 것 뿐만 아니라 OOP언어를 익힘에 있어서도 Object에 관련된 문법과 프로그래밍 방법을 익히는 데에 도움이 된다고 느끼고 있다.

 

 본 책에서는 많은 부분에서 C언어를 익히고 나서 OOP언어를 익히는데 도움이 될 수 있는 방향으로 기술해 나가려고 한다.

 

2. C언어 구성 요소

 프로그래밍 언어에는 프로그램이 해야 할 일과 이들을 수행하면서 필요한 데이터에 관련된 문법 요소들이 있게 마련이다.  C언어의 구성 요소도 크게 해야 할 일에 관련된 문법과 데이터에 관련된 문법, 컴파일 과정 이전에 컴파일러에 의해 소스를 재구성하기 위한 문법 요소로 이루어져 있다.

 

C언어 구성 요소

- 데이터와 관련된 문법

    형식(type)

    변수 

-해야할 기능에 관련된 문법

    연산자 

    제어문

    함수 

-소스를 재구성하기 위한 문법     

    전처리기 구문 

 

 

3. C프로젝트 구성 요소

 C언어로 프로그래밍을 할 때 프로젝트에는 추상적인 요소를 정의하거나 자원을 명시하기 위한 헤더파일(.h)과 구체적인 기능과 자원을 선언하기 위한 소스파일(.c)로 나누어져 있다.  C컴파일러가 컴파일을 하는 단위는 소스파일이며 컴파일을 수행했을 때 각 소스파일에 맞는 목적파일(.obj)이 만들어 짐을 확인할 수가 있다. 

 

C프로젝트 구성 요소

-헤더파일(.h): 추상적인 자원

  사용자 정의 형식을 정의하는 구문  

사용자 정의 형식

구조체

하나의 자료에 여러 멤버로 구성

공용체

하나의 자료에 여러 멤버 중 하나만 사용

열거형

값으로 올 수 있는 요소를 정의 
 *열거형은 C언어에서 내부적으로 int형으로 취급한다.

 

   전역 자원에 대한 명시 : 전역 변수, 전역 함수

   전처리 구문  : #으로 시작하는 구문

-소스파일(.c):추상적인 자원 + 구체적인 자원

  헤더파일에 작성할 수 있는 모든 요소

  함수 정의 구문

  변수 선언 구문

 

4. 이 책에서의 프로젝트 구성

 

구성 패턴

 

- 사용자 정의 형식 기준으로 프로젝트를 구성한다.

- 소스파일과 헤더파일은 1:1 매핑한다.

- 다른 프로젝트에 사용 가능한 일반적인 요소는 별도로 작성한다.(ehlib)

  

 

 

편집된 소스 build과정

 

 

compile과정에서는 다른 소스파일에 있는 자원에 대한 가상 주소로 매핑을 하여 컴파일 한다.

link과정에서 실제 자원이 있는 주소로 매핑을 한다. 

 

☞용어 정리

type에 대한 번역을 형식으로 표현하고 있으니 혼돈하지 마시기 바랍니다.

이와 같이 쓰는 이유는 MSDN에 한글 메뉴얼에서 형식이라는 용어를 사용을 하고 있어 익숙해 지는 것이 Visaul Studio 환경에서 학습을 하는데 도움이 될 것이라는 소견에서 쓰는 것입니다.

 

반응형