02.C언어의 기초

* 컴퓨터 언어 (Computer Language)/C/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
02.C언어의 기초  (7) 2011.11.19
01.프로그래밍의 기초  (0) 2011.11.17
C 뿌려라!  (0) 2011.11.17
BlogIcon Lessa 2011.12.20 16:58 신고 URL EDIT REPLY
어? 박정민교수님 책이넼ㅋㅋㅋㅋㅋ헐
BlogIcon Twodragon | 2011.12.20 17:34 신고 URL EDIT
그냥 C언어 관련 책 넣은거예요ㅋ
BlogIcon Lessa | 2011.12.24 13:11 신고 URL EDIT
ㅋㅋㅋ놀랫어 우리교수님일줄은
BlogIcon Twodragon | 2011.12.24 20:39 신고 URL EDIT
와우.. 저 책 많이 유명한데 엄청난교수님이네요ㅋ
BlogIcon Lessa | 2011.12.28 17:28 신고 URL EDIT
그런가? 아무튼 잘가르치심

개인적으로 팬이야 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
BlogIcon ㅁㅁ 2015.04.30 09:27 URL EDIT REPLY
잠시만 써볼게요
오타났다 2015.04.30 11:53 URL EDIT REPLY

#include<stdio.h>
#include<math.h>
#define PI 3.141592654 //파이상수
int main()
{
int i, j;//i,j 반복문을 위한 변수, count는 간격을 계산하기 위한 변수
int count;
for (i = 0; i <= 360; i += 15)//각도를 15도씩 올리면서 반복
{
printf("%d", i);
double a = i;
count = 15 + 15 * sin(a * (PI / 180));//15을 기점으로 간격값 계산
for (j = 0; j < count; j++)//간격 프린트 반복문
{
printf(" ";);
}
printf("*\n";);//줄바꾸기

}


}

Name
Password
Homepage
Secret