본문 바로가기

* 컴퓨터 언어 (Computer Language)/C, C++

02.C언어의 기초




Section01.C언어의 특징


C언어는 1970년대 초 Bell 연구소에서 UNIX 라는 새로운 운영체제를 만들기 위한 언어로 개발
1.범용적인 프로그래밍 언어
2.소문자를 사용하여 프로그래밍할 수 있다.
3.대소문자를 구분하며, 표현이 간결하다.
4.구조적 프로그래밍과 시스템 프로그래밍에 적합한 언어
5.다양한 연산자를 사용
6.포인터를 이용하여 저수준의 언어처럼 메모리를 직접 제어할 수 있다.
7.다양한 데이터형을 사용한다.
8.함수로 구성되어 모듈화가 가능하다.
9.프리프로세서를 사용한다.
10.입출력기능이 없이 입출력을 위한 외부 함수를 사용한다.
11.특수문자를 사용할 수 있다.
12.프로토타입을 선언할 수 있다.
13.이식성이 좋으며, 하향식 프로그래밍 기법에 적합하다.


Section02.C언어 프로그램의 작성과 실행방법


원시 프로그램의 작성:원시 프로그램은 텍스트 형식의 파일로서, 메모장과 같은 텍스트 편집기를 이용하여 작성한 후 텍스트 형식으로 저장한다. 파일을 저장할 때 확장자는 반드시 ".C"와 같이 "C"라는 확장자를 붙여주어야 한다. 
목적 프로그램으로 번역:작성된 텍스트 형식의 파일을 컴파일러를 이용하여 번역하여 기계어 형식의 목적 프로그램으로 번역한다.Turbo-C등으로 번역하면 목적 프로그램으로 번역 된 후 파일에".obj" 라는 확장자가 자동으로 붙는다.
실행 파일의 생성:컴파일러에 의하여 번역된 목적 프로그램은 링키지 에디터에 의하여 라이브로리, 서브 프로그램 등과 연계하여 재배열된 후 실행 파일로 만들어진다. 이렇게 만들어진 실행 파일은 일반적인 실행 파일과 마찬가지로 ".exe"라는 확장자를 자동으로 붙여준다.
실행 파일의 실행:프로그램의 작성 -> 원시 프로그램 -> 실행 프로그램 -> 결과


Section03.C언어의 기본 구조


main() 함수


main()
{
    printf("대한민국");
}
C언어로 작성된 간단한 프로그램으로 "대한민국"이라는 문자열을 화면에 보여준다.

Section04.표준 입출력 함수


표준 출력 함수
printf("나타내고자하는 메시지, 형식 지정 문자",데이터 또는 변수);

main()
{   int i=10;
    chat a= 'Y';
    printf("a에 들어있는 값은 %c이고,i에 들어있는 값은 %d이다.",a,i);
}
%c는 출혁할 내용이 문자형이라는 것을 알려주고, %d는 정수형이라는 것을 알려준다.

앞에서 작성한 프로그램을 다음과 같이 변경해보자.
main()
{
   int i=10;
  char a='Y';
   printf("a에 들어있는 값은 %c이고,",a);
   printf("i에 들어있는 값은 %d이다.",i);
}

동일한 결과를 얻을 수 있다.

C언어에서는 줄바꿀때 기호를 "\n"은 "\n"라고 표현한다.
main()
{
        int i=10;
        char a= 'Y';
        printf("a에 들어있는 값은 %c이고,\n",a);
        printf("i에 들어있는 값은 %d이다.",i);
}
위 프로그램을 실행하면 줄이 바뀌어 출력이 된다.

또한 인용 부호 안에 특수 문자를 넣을 경우에는 반드시 앞에 '\'기호를 붙여주어야 한다.
ex) 인용 부호(")나 '%'기호, '\'기호 등을 출력하고자 할 경우에는 다음과 같이 해당 문자의 앞에 '\'기호를 붙여준다.

main()
{
  printf("특수 문자 출력 연습\n");
  printf("인용 부호(\")를 출력할 때에는 \" 앞에 \\를 붙여 준다.\n");
  printf("퍼센트 기호(\%)를 출력할 때에는 앞에 \\를 붙여 준다.");
}

입출력을 위한 형식 지정 문자
%d:정수 변환
%f:실수 변환
%c:문자 변환
%s:문자열 변환
%x:16진 변환

제어 문자열의 종류
\n:커서를 다음 행의 선두로 이동
\f:커서를 다음 탭의 선두로 이동
\b:커서를 한 칸 앞으로 이동

표준 입력 함수
scanf("형식 지정 문자",&변수);

-문자열의 경우에는 '&' 기호를 붙이기 않는다.
Scanf("%c",&a) 문자의 경우
Scanf("%s",a)  문자열의 경우

main()
{
  int i;
  char c;
  printf("정수와 문자를 콤마(,)로 구분하여 입력하세요\n");
  scanf("%d,%c",&i,&c);
  printf("\n입력된 정수는 %d이고, 문자는 %c입니다.",i,c);
}

Section05.변수


변수의 정의:변수라는 것은 어떤 연산을 처리하기 위하여 필요한 값을 넣어두기 위한 방의 이름이다.

헝가리안 표기법

 접두어  데이터형
 c char 
 by  BYTE(unsigned integer)
 n  short
 l  int
 x,y  int(x좌표와 y좌표에서 사용)
 cx,cy  int(x 또는 y 길이로 사용, c는 count의 의미)
 b 또는 f  BOOL(int), f는 flag의 의미
 w  WORD(unsigned short)
 l  LONG(long)
 dw  DWORD(unsigned Short)
 fn  function(함수)
 s  string(문자열)
 sz  바이트 0으로 종료되는 문자열(string terminated by 0 byte)
 h  handle
 p  pointer

Section06.데이터형과 변수의 선언


정수형 자료
정수형 자료는 소수점이 없는 숫자로서, 일반적으로 16비트(2Byte)의 자리를 할당하는 int형을 사용한다.
그러나 정수의 크기가 클 경우에는 32비트(4Byte)의 자리가 할당되는 long형을 사용한다.
또한 부호가 있는 수와 부호가 없는 수로 할당할 수 있으며, 부호가 있는 수의 경우에는 최상위 비트를 부호 비트로 사용한다.
정수형 자료의 타입과 할당되는 비트 수가 있다.

정수형의 데이터 타입

 데이터 타입 할당되는 비트 수  값의 표현 범위 
 int  16  -2의 15승 ~2의15승-1(-32768~+32767)
 unsigned int  16  0~2의16승-1(0~65535)
 long  32  -2의31승~2의31승-1
(-2147483648~+2147483647)
 unsigned long  32 0~2의32승-1(0~4294967295) 




실수형 자료

[부호][10진수].[소수점 이하 숫자]E[지수부의 부호][지수]
ex)12.345->0.12345E+2
1234.567->0.1234567E+4
0.0012->0.12E-2
0.0000123->0.123E-4

실수형의 데이터 타입
 데이터 타입 할당되는 비트 수 값의 표현 범위 
 float  32   +-3.4E-38~+-3.4E+38 
 double 64  +-1.7E-308~+-1.7E+308
 long double 80   +-3.4E-4916~+-1.1E+4932

float로 선언한 경우와 double로 선언한 경우에 똑같은 숫자를 대입하였으나, 실행한 결과 float의 경우에 정확한 값이 나오지 않는 것을 알 수 있다. 즉, float형의 자료 범위를 넘을 경우에 정확한 값이 저장되지 않는다. 그러나 double형으로 선언한 경우에는 정확한 값을 처리할 수 있다.


문자형 자료

C언어에는 문자형 자료를 저장하기 위한 데이터형으로 char형을 사용한다.
char형은 8비트(1Byte)의 자리를 할당하는 것으로 하나의 문자만을 저장할 수 있다.
하나의 문자는 작은 따옴표('')로 묶어 주어야 한다.
C언어에서는 하나의 문자가 아닌 여러 개의 문자, 즉 문자열을 저장하기 위한 문자열 데이터형이 없고, 나중에 배울 배열이나 포인터를 이용한다. 문자열은 인용 부호("")로 묶어주어야 한다.

main()
{
      char a,b,*c;                    
      a=  'H';
      b=   'i';
      c= "Hello!";
      printf("%c%c %s" ,a,b,c,);
}

하나의 문자를 저장하기 위하여 변수 'a'와 'b', 그리고 문자열을 저장하기 위하여 변수 'c'앞에 포인터(*)를 붙인 후 문자형으로 선언한다.
문자형 변수에 문자 하나를 대입하여 초기화시킨다. 문자는 작은 따옴표('')로 묶어주었다.
문자열 변수에 문자열을 대입하여 초기화시킨다. 문자열은 인용 부호("")로 묶어주었다.
'%c'는 문자형으로 출력하라는 의미이고, '%s'는 문자열형으로 출력하라는 의미이다.


기호상수

#define 상수명 값

#difine PI 3.141592
main()
{
   printf("%If" ,PI);
}

위 프로그램을 실행하면 "PI"가 아닌 PI 의 값(3.141592)이 출력되는 것을 알 수 있다.


형식 지정 문자

printf() 함수나 scanf() 함수에서는 출력할 값이나, 입력할 값에 대한 형식을 지정하기 위한 문자를 사용한다.
이러한 문자를 정리하면 다음 표와 같다.

형식지정 문자의 종류와 기능
 형식 지정 문자 기능 
 %d  10진수 정수를 의미한다.
 %u  부호 없는 10진수를 의미한다.
 %o  부호 없는 8진수를 의미한다.(영문 소문자 o)
 %x  부호 없는 16진수를 의미한다. 영문자를 소문자로 나타낸다.
 %X  부호 없는 16진수를 의미한다.영문자를 대문자로 나타낸다.
 %c  단일 문자를 의미한다.
 %s  문자열을 의미한다.
 %e  부동소수점의 지수형을 의미한다.
 %f  부동소수점의 소수형((실수형)을 의미한다.

printf()함수를 이용하여 출력할 때 위와 같은 형식 지정 문자에 다음과 같은 포맷 옵션을 지정하면 보다 다양한 모양으로
출력 할 수 있다.

%[-][전체 자릿수][.][소수점 이하 자릿수]형식 지정 문자

- : 내용을 왼쪽에서부터 출력
전체 자릿수 : 출력할 값이 차지할 정수 부분의 자릿수를 의미한다.

main()
{
  float i= 12345;
  double j=123.4567;
  char a='A';
  char *b="대한민국";
  printf("\n%f%If%c %s\n",i,j,a,b);
  printf("\n%10.3f%10.4IF %10c%20s\n",i,j,a,b);
  printf("\n%10.3f%10.4IF %-10c%-20s\n\n",i,j,a,b);
}

첫번째 printf() 함수의 경우에 포맷 옵션을 주지 않아 변수의 선언된 데이터형에 따른 크기로 출력
두번째 포맷 옵션에 따라 지정된 자리수로 출력
세번째 문자형과 문자열형에 - 옵션을 지정함으로써 왼쪽부터 출력된 것이다.


참고문헌:C뿌려라!C언어 입문



상세보기






'* 컴퓨터 언어 (Computer Language) > C, C++' 카테고리의 다른 글

C언어 입출력  (0) 2012.03.16
수식과 연산자  (0) 2011.12.22
01.프로그래밍의 기초  (0) 2011.11.17
C 뿌려라!  (0) 2011.11.17