본문 바로가기

IT/C Programming

1. Hello C 출력하기(C의 기초 설명)

C 프로그래밍 언어는 웨스턴 일렉트릭사와 AT&T에서 공동 출발한 벨 연구소에서 개발된, 컴퓨터에서 프로그램의 기능을 세세하게 정의해주는 컴퓨터와의 소통 언어입니다. 처음에 만들어진 언어는 유닉스 운영 체제에서 사용하기 위해 BCPL이 개조된 B 언어 라고 합니다. 켄 톰슨이 처음 개발했으며, 이후 데니스 리치가 이것을 개선하여 지금 우리가 배우는 컴퓨터 언어의 가장 기초 C를 탄생시켰습니다.

그리고 이 C언어는 수많은 운영 체제의 프로그램과 커널에 적용되었습니다.

C++은 C에서 객체 지향형 언어로 발전된 것으로, 조금 더 상위의 단계라고 할 수 있습니다.


컴퓨터는 우리가 하는 일상적인 말을 이해하지 못합니다. 0과 1, 즉 이진수의 논리로만 이해가 가능하기 때문에 이 이진수의 집합을 일정한 규칙에 따라 규정하고 모아서 컴퓨터와 사람 사이에 소통이 가능한 중간적인 언어를 만들었는데 이것이 C 프로그래밍 언어입니다. (C++ JAVA JSP API등 마찬가지)




첫 시작에서 흔히 볼 수 있는 예제 파일.



/*C를 처음 시작하는 사람들이 볼 수 있는 간단한 예제입니다.*/


#include <stdio.h>


int main(void) 

{

printf("Hello C! \n"); //화면에 Hello C 를 출력합니다.

return 0;

}



결과는?

다음과 같이 출력됩니다.





여기서 각 줄을 분석해 봅니다.


/*        (내용)       */


주석의 처음과 끝을 지정하는 명령어입니다. 실제로 컴파일할 때에는 프로그램에 포함되지 않으며,

원래 소스 파일에서만 프로그램에 대해 부가적인 설명을 하고 싶을 때에 사용합니다.

시작과 처음 지정만 해주면, 줄이 바뀌거나 하는 문제에도 아무 문제없이 주석을 써 넣고, 프로그램에

오류를 주지 않을 수 있습니다. 프로그램에 대한 설명이 길어지는 경우 이 표시를 사용합니다.


#include <stdio.h>


stdio라는 헤더 파일을 불러옵니다. 이 파일에는 C에 사용되는 모든 명령어에 대한 정보가 들어 있습니다. 구체적으로는 표준 라이브러리 함수의 매크로 정의, 상수, 여러 형태의 입출력 함수가 포함된

파일입니다. 이것을 먼저 불러와야 printf(),scanf(),int,double과 같은 함수가 사용이 가능합니다.


int main(void)


함수의 반환값을 정수형(int)으로, C언어의 동작을 가능하게 하는 main함수를 불러옵니다.

메인함수가 인자값을 가지지 않게 void로 정의해주는데, 만약 void가 아닌 다른 값을 가지게 된다면

메인 함수에 문제가 생겨서 종료하게 되므로 일부러 void로 설정해 두는 것입니다.

http://itguru.tistory.com/89 에서는 void의 사용에 대해 좀 더 자세히 다루고 있습니다.


{}


int 등으로 정의된 하나의 함수가 내부에 가지는 작업 공간입니다. 저 중괄호 사이에

printf(),scanf(),int,double 와 같은 명령어를 집어넣어 여러 가지 프로그램을 만들 수 있습니다.

또는 for나 if, while 조건문에서 조건 또는 특정 조건이 만족되었을 때 실행할 부가적인 프로그램을 지정할 수 있습니다. 한 가지 확실한 것은, 메인 함수가 있으므로 처음과 끝에는 프로그램의 시작과 끝을 알리기 위해 반드시 한 개씩 존재합니다.


printf("Hello C! \n");


printf() 함수는 () 안의 값을 출력하라 라는 명령어입니다. 형식은 ("실제로 표시되는내용") 이고, 프로그램 내에서 계산한 내용을 표시하고 싶은 경우 %d, %f, %lf 같은 정수형태를 집어넣으면서 순서대로 거기에 해당하는 변수를 대응시킵니다.

예시로 15를 표현하고싶다면 int a=3 , b=5 , c; 로 선언한 뒤에 c=a*b; , printf ("%d \n",c)

와 같이 입력하거나 int c=15; , printf ("%d \n",c);와 같이 입력하는 방법이 있습니다.

%d는 정수형으로, 정수가 아닌 값을 받을 수 없습니다. 그리고 콤마로 분리된 자료를 맨 앞에서부터 읽으므로 위의 함수형태가 표시된 부분에 C의 값이 출력되게 됩니다.


//


주석을 추가하는 명령어입니다. 저 표시는 /*   */와 동일한 기능을 하지만, 한 가지 차이점은

한 줄에만 적용되고 줄바꿈 시 다시 주석표시를 해야 프로그램에 포함되어 오류가 생기는 일이

일어나지 않습니다. 주석 추가 문자의 오른쪽에 글자를 적으면 대부분 컴파일러에서는 초록색으로

표시하며, 색이 다른 경우가 있더라도 기능에는 전혀 영향이 없습니다.


return 0;


메인함수가 void가 아닌 다른 값을 가지게 된다면 메인 함수에 문제가 생겨서 종료하게 된다고 했습니다. 이것도 그와 마찬가지의 원리입니다. 프로그램이 여러 번의 입출력과 계산을 거치고 나면 마지막에 특정한 수가 남으면서 프로그램이 종료되는 경우가 종종 있는데, main()함수는 이런 수가 남은 채로 종료하게 되면 오류를 일으킵니다. 그래서, 마지막에 남는 모든 입출력 값을 0으로 초기화하여 프로그램이 정상적으로 종료될 수  있도록 해 주는 명령어입니다.


;


명령어의 끝을 알리는 문자로, 세미콜론을 사용합니다. #include나 int main(void)같은 것들을 제외하면 명령어를 구분하기 위해 반드시 필요하며, 빠질 경우 컴파일링이 안 되는 문제가 발생합니다(명령어를 섞어서 인식하므로 아예 명령어를 인식하지 못 하는 것).




C언어를 배우는게 조금은 재밌어지는 것 같습니다.

열심히 공부해서 프로그램을 마음대로 짤 수 있으면 좋겠네요.