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 |