공부하자/C언어

C언어 문법 공부 1장 [C 프로그램의 기본적인 구조]

YoBot 2016. 11. 19. 04:56

4. C 프로그램의 기본적인 구조


이정도 알았으면 이제 C언어 프로그램의 문법적인 구조를 살펴보기로 합시다.

이제부터 정말 C의 문법에 대한 공부를 들어갈탠데, 이번에 나올 C 프로그램은 기본적인 구조만 이해하시면 된검니다.

세부적인 부분은 모르셔도 됩니다.

기본적인 구조를 알고 계셔야 다음 강좌의 이해가 쉽기 때문이죠. 


(1) 자유로운 형식

C언어는 다른 언어들과는 달리 형식이 메우 자유롭습니다.

우선 예제 소스 하나를 보며 공부해보도록 하죠. 

/* 파일 이름 : C1-1.C

프로그램 내용 : 화면에 메시지를 출력하는 프로그램. */

#include <stdio.h>

void main()

{

printf("This is a first program.");


이 소스는 아주 간단한 소스 입니다.

하지만 C를 처음 대하시는 분 이라면 아주 생소하게 느껴질 것 입니다.

이 소스 내용은 아직은 이해하지 못하셔도 되니까 검먹지 마시고 잘 봐주세요.

하여튼 그건 그렇고

아까 그 소스(C1-1.C)와 다음에 나오는 소스를 비교해 보세요. 


/* 파일 이름 : C1-2.C

프로그램 내용 : 화면에 메시지를 출력하는 프로그램. */

#include <stdio.h>

void main(){printf("This is a first program.");} 


이 소스들을 비교해 보세요.

주시해서 봐야 할 곳은 void...); }부분 입니다.

두 소스중 어떤 것이 보기가 쉽죠???

당연히 첫번째 소스가 더 읽기 쉬울 것 입니다.

하지만 이 두 소스는 완전히 똑같은 기능을 수행합니다.

결과를 봐볼까요???

두 개를 컴파일해서 C1-1.EXE, C1-2.EXE를 만들고 실행하면.. 

C:\>C1-1.EXE

This is a first program.

C:\>C1-2.EXE

This is a first program.


똑같은 소스 이지만, 두번째 소스는 첫번째 소스를 한줄에 다 써 버린 것 입니다.

하지만 컴파일러는 똑같은 내용으로 인식하게 되죠.

여기서 말하고자 하는 것은 C언어 프로그램은 자유로운 형식을 같는다는 것 입니다.

즉 여러줄에 써야 할 것을 한줄에 써 버려도 상관 없다는 것이죠.

또한 이 말은 한줄에 써야 할 것을 여러줄에 쓸 수도 있다는 말 입니다.

더 정확히 말하자면 C언어 에서는 공백을 인식하지 않습니다.

즉 공백이 많이 있어도 그건 없는거나 마찬가지 이죠.

그러므로 첫번째 소스도 실제로 컴파일러에서는 두번째 소스처럼 인식하게 되는 것 입니다.

하지만 공백 없이 한 줄에 다 써 버리면 읽기가 힘들어 지므로, 되도록 보기 쉽게 공백을 두고 쓰는 것이 좋습니다. 


(2) 대소문자 구별

C언어는 대문자와 소문자를 구별한다는 것을 기억해 두시기 바랍니다.

예를들어 Basic에서 화면에 메시지를 출력하는 명령어인 PRINT는 print라고 써도 상관 없고 Print, prinT, pRint등으로 써도 모두 같은 것으로 인식합니다.

아지만 C에선 그렇지 않습니다.

베이직의 PRINT의 기능을 하는 것으로 아까 예제 소스에서 나온 것 인데.. C에서는 printf라는 것이 있습니다.

그런데 이걸 Printf, pRintf, PRINTF등등.. 이렇게 써서는 절데 안됩니다.

모두 다른 것으로 인식하기 때문에 반드시 printf로 써 주어야 하죠.

보통 C에서는 거의 다 소문자로 되어 있어요.

그리고 C언어가 지원하는 기본 어휘 그러니까.. 베이직에서는 PRINT, INPUT, DIM등등의 명령어들과 같은 역할을 하는 기본적 어휘를 키워드(예약어)라고 하는데, 이것들도 모두 소문자로 되어 있죠. 


(3) 주석 (설명문)

주석문은 프로그램과는 아무 상관이 없어 없는것과 마찬가지 이지만, 프로그램의 내용을 설명하기위해 쓰는 글 입니다.

C에서 주석문을 쓰는 것은 간단합니다.

설명하는 글 앞에는 /*를 붙이고 뒤에는 */를 붙이면 되는 것 입니다.


예를들어.. 

/* 주석문 입니다 */ 

이렇게 하면 주석문이 됩니다.

즉 없는 거나 마찬가지인 글이 되는 것이죠.

예제 소스를 하나 들어 보죠. 

/* 파일 이름 : C1-3.C

프로그램 내용 : 주석문을 설명하기 위한 프로그램. */

void main()

{

int a, b, c; /* 정수 변수 a, b, c를 선언 */ 

a=10; /* a에 10을 넣는다. */

b=20; /* b에 20을 넣는다. */

c=a+b; /* c에 a와 b를 더하여 넣는다. */

여기서 /* */로 묵인 것은 모두 주석문 입니다.

즉 /* */로 묵인 것은 없어도 상관 없습니다.

그리고 주석문은 여러줄이 되어도 상관 없습니다. 


/* 주석문 입니다..

이것두 주석문 입니다.. */ 

이렇게 써도 상관 없다는 것 입니다.

C에서는 한줄에 쓸 것을 여러줄에 써두 된 다고 배웠는데, 위와 같이 주석문을 쓴 것두 

/* 주석문 입니다.. 이것두 주석문 입니다.. */ 

이렇게 써야 할 것을 위와 같이 쓴 것 뿐이라고 생각하시면 이해가 되실 것 입니다.

주석문을 쓰는 이유는 프로그램에 대한 설명을 써 둠으로써 읽기 쉽게 하고 오류를 찾아네거나 수정하는 작업을 쉽게 하기 위해서 입니다.

물론 간단한 프로그램의 경우 특별히 주석 없이도 충분히 읽을수가 있지만, 정말로 복잡한 프로그램에선 주석문이 큰 도움을 줄수 있죠.

주석문을 쓸 때는 공백을 최대한 이용하는 것이 좋습니다.

공백을 잘 이용하여 최대한 보기 쉽게 해야 하죠.

주석문이 필요한 이유가 프로그램을 읽기 쉽게 해서 오류를 찾거나 수정을 하는 일이 쉬워지게 하기 위해서 인데, 주석문을 보기 어렵게 쓰면 않되겠죠?

예를 들어 봅시다. 위에 나왔던 소스와 다음 소스를 비교해 보세요. 


/* 파일 이름 : C1-4.C

프로그램 내용 : 주석문을 설명하기 위한 프로그램. */

void main()

{

int a, b, c; /* 정수 변수

a, b, c를 선언 */

a=10; /* a에

10을 넣는다. */

b=20; /* b에 20을 넣는다. */

c=a+b; /* c에 a와 b를

더하여 넣는다. */ 

C1-4.C는 주석때문에 보기가 더 힘들어 졌죠?

주석문을 이렇게 써서는 절데로 안됩니다.

이것으로 이번 강좌는 마치도록 하겠습니다.

이번 강좌에는 별 이상한 얘기들만 많이 한것 같군요.

다음 강좌부터는 본격적인 C프로그래밍에 들어가도록 하죠.