2008년 7월 8일 화요일

C 프로그램의 기초 Part.3


세번째.


이건 예전에 제가 싸이월드 페이퍼에 작성했던 글입니다.

개인적으로 공부하고자 올린 거지만 다른 분들도 보시고 혹 부족한 점이

있으면 말씀해 주세요 :)




1) 프로그램의 구조 및 설명

2) 변수의 종류





1) 프로그램의 구조



우선 예를 들어 프로그램 하나를 봅시다.


#include <stdio.h>

 

void main(void){

 

int a; //변수 선언

 

a=10; //변수에 값 지정

 

printf("a는 %d입니다.", a); //출력

 

}

 

여기서


1) #include <stdio.h>


전처리기라고 불립니다.


사실 printf, scanf(기본 입출력 함수의 종류 나중에 쓰여요)라고 선언해봐야

컴퓨터는 무슨소린지 모른답니다. 한마디로 깡통이죠  

그렇기에 프로그래머들이 미리 이 무언가를 만들어

저희가 printf 라고 하면 출력이라는 명령을 한다고

컴퓨터에 전해주는 뭔가가 있어야 하죠 그 무언가가 바로 stdio.h, 즉

헤더 파일이라는 파일입니다. Standard Input Output 의 약자에 Header 가 붙은거죠


이 헤더파일에는 저희가 printf를 적으면 출력을 뜻한다고 컴퓨터에

직접적으로 전해지는 실제 언어들이 적혀있습니다.


저 #include <stdio.h>를 직역하면

포함한다. <표준입출력.h> 잖아요? ㅋ 저 stdio.h 는 진짜 파일 이름이랍니다 ㅋ


저걸 미리 처리해놓는 것이 바로 전처리기

#include 의 역활입니다.


이 전처리기는 종류가 좀더 많은데요 우선 천천히 알아가도록 하고


또! 저기 적은 내용이 이해가 안가시더라도 걱정하지 마세요

우선은 저게 무엇인지 이름만 알아두셔도 충분하답니다.



2) void main(void){ ...... }


메인함수입니다.( { ...... } 포함입니다.)

여기서 1장에 말한 것 처럼 여러가지의 함수로 구성이 되는데

이 함수의 기본 모테(母胎)가 바로 main() 함수 입니다.


저 {...} 사이에 들어가는게 앞으로 죽어라 우리가 공부할 것들입니다 ㅋㅋ


또한 ()안의 void 는 안적어도 무방합니다 즉


void main()  =  void main(void)


입니다.



자 여기서 함수의 구조에 대해 잠깐 설명을 하면

(프로그램의 구조가 아닙니다! 함수의 구조!)


우선 그럼 저 구성을 먼저 보도록 하죠


우선 저 원형은 바로

 

void main(void) 입니다.

---- ----(----)

  1      2     3 


1 : 리턴형입니다.


간단히 설명하자면 이 C는 여러가지 형식이 있습니다.

이 함수가 실행된 뒤, 그 결과값을 어떤 형식으로 이 함수를 호출한 프로그램에

전달해 줄 것인지 결정하는 인자 입니다. 예를 들어

이 함수가 끝난 뒤 정수 1이 전달될지 실수 1.0이 전달될지 결정하는 겁니다.

(나름 중요한 의미를 띄고 있습니다..^^;)



2 : 이름입니다.


저건 메인함수지만, 실제로 프로그램은 여러 개의 함수로 구성이 됩니다.

사람에게도 똘똘이 철수 영희 라는 이름이 있듯이

이 함수에게도 이름이 있고 이 함수 이름이 계속 쓰이게 됩니다.


3 : 여기에 매개변수 리스트를 적습니다~!


매개변수 리스트란 다른 함수에서 값을 가져올때 사용되는

변수...(맞나요? 틀리면 지적해주세요~ ^^;;)입니다!

뭐 예를 들어


int add(int x, int y)


이런식으로 쓰입니다~


int란 이 함수의 결과 값을 정수형으로 보내주겠다는 말이고


add는 이 함수의 이름입니다 앞으로 add 라는 이름을 지니게 됩니다.


int x, int y 는 다른 함수에서 가져오는 2개의 값을 지정해주는 겁니다.

(지금 당장 모르셔도 됩니다~ 처음엔 거의 안써요 ^^)



헉헉....



3) {..... } 안의 int a;


바로 변수 입니다.

앞의 int는 변수형을 의미합니다.


뒤에 계속 하겠지만 변수형도 여러가지가 있습니다.

잘 선택해서 사용해야 해요


a는 변수 이름입니다.

이건 그냥 사용자 입맛에 맞도록 잘 결정해서 사용하시면 됩니다.


이 변수는 한번에 여러개도 지정이 가능합니다. 예를 들어


int a, b, c, d, e, f; 이런식으로 ,(쉼표)로 구분해서 사용하시면 됩니다.


그리고 마지막엔 언제나 ;(세미콜론)을 붙여주는 거, 잊지마세요!



4) a=10;


변수에 값을 지정하는 문구입니다.

이제 a는 10이라는 값을 지니게 되었군요


//

여기서 포인트!

 

굳이

int a;

a= 10;

 

이라고 적을 필요는 없습니다.

그냥

 

int a=10; 이라고 적어도 상관은 없어요~

//




5) printf("a는 %d 입니다", a);


출력함수입니다. (이 출력함수에 대해서는 좀있다 다시 다루도록 하겠습니다.)



자 그럼 위의 내용은 다 해석했네요;;;;



그러나 아직 많이 설명 안한 부분이 있는데

가장 큰 것으로 저 함수 { 2)번 } 부분입니다.

사실 함수 부분은 매우 중요합니다.

 

나중에 외부함수를 할때 좀더 자세히 다루도록 하죠!!!!



2) 변수의 종류


변수의 종류로는 우선


C의 자료형은 크게


void         스칼라형          포인터형           혼합형



4가지가 있습니다.


이 중 void는 아무 속성을 가지지 않은 것으로

이 함수가 다른 함수에게 아무런 값도 전달해 주지 않을때 사용됩니다!

(의미만 기억해 두세요!)


스칼라는 또다시

 

 

 

이런 식으로 나뉜답니다..(그림이 허접해서 죄송해요! ㅋㅋ)

 

int 는 정수형입니다.

즉 2, 3, 4, 5 라는 정수만 사용하며

31비트까지. 즉 -2^31 ~ 2^31-1 까지 정수를 사용합니다.

 

float, double 은 실수형입니다.

즉 1.0, 2.0 이라는 실수만 사용하며 각 OS마다 표현가능한 수가 다릅니다~

 

char는 문자형으로 문자값을 지닙니다.

각 문자마다 1바이트를 가지고 아스키코드를 사용합니다.

 

그리고 각 변수 앞엔 unsigned, short, long을 붙일수 있는데

unsigned는 다음 강의인 숫자에 자세히 다룰내용이고

short, long은 IBM 컴퓨터에선 아무 영향을 못 끼칩니다~ 때문에 생략! ㅋ

(long은 그 변수의 2배 바이트, 2배수 사용,

short는 그 변수보다 작은 바이트 작은수 사용입니다.)

 

 

포인터 형은 바로 " * " 저 별의 힘입니다..ㅋㅋ

 

포인터와 혼합형은 나중에 정말 빡씨게 배웁니다! 우선 스칼라로만 만족합시다! ㅋㅋ

 

 

근데 이 변수는 왜 나누느냐...어떻게 쓰이느냐....

이게 궁금하실텐데요

 

이 변수는 사용하는 바이트가 다릅니다~

사실 1~2개의 변수를 사용하는게 아니라 수백, 수천개의 변수를 사용하는

대형 프로그램은 이런 변수하나하나로 크기에 영향을 받는다고 합니다.

그래서~ 이 변수를 사용하는 겁니다..ㅋㅋ

 

따라서 그 바이트를 열거 해보면

 

 

int : 2 바이트

float : 4바이트

double : 8바이트

char : 1바이트 (영어 한문자)

 

여담으로 저는 int : 인트, float : 플로트, double : 더블 char : 캐릭터 형으로 읽습니다.

다른 분들은 어캐 읽으셧나요? ^^ ㅋ

 

 

자 이번주는 여기까지......

너무 느리죠? ㅠㅠ

 

다음엔 좀더 빠르게 진행해보도록 하겠습니다.

 

아참! 이제 다음엔 각 진수와 바이트에 대해 공부할 생각이니까요~

슬슬 책을 한권 구입하셔서 하는 것도 좋을 것 같습니다

추천은 나중에~ 천천히..ㅋㅋ

댓글 없음:

댓글 쓰기