본문으로 바로가기

1. C언어 기본

category 프로그래밍/c언어 2017. 8. 23. 13:18

1. 프로그래밍 언어

 

컴퓨터의 프로그램을 작성하기 위한 언어

c/c++, java, python등등

 

프로그래밍 언어는 고급언어(사람)와 저급언어(기계)로 나뉜다.

                         c,c++,java          어셈블리어, 기계어

 

고급언어는 인간의 언어에 가까운 언어이기 때문에 기계(컴퓨터)에서 동작하기 위해서 변환과정이 필요하다

고급언어를 기계가 이해할 수 있는 변환과정을 컴파일이라고 하면 변환해 주는 프로그램을 컴파일러라고 한다.

 

 

2. c언어란

 

(1) 절차 지향 언어이다

 - 프로그램이 작성된 순서대로 진행되므로 이해하기 쉽다.

 

(2) 프로그램을 다른 시스템으로 이식하기 용이함

- 여러 시스템과 잘 호환되며 범용성을 가진다.

 

(3) 저급언의 특성과 고급언어의 특성 모두 가지고 있다.
- 세세한 수준까지 프로그램 제어가능

- 사람이 이해하기 쉬운 언어이기 때문에 다루기 쉽다.

 

(4) 프로그램 실행 속도가 빠르다.

 

 

3. 프로그램 작성 및 실행 순서

프로그램 코드 작성 -> 컴파일러에 의해 컴파일------------> 링커에의해 링크----------->        로더에 의해 로딩되어 실행

(텍스트문서.c)            A.obj  (기계어파일)                         A.exe

                             오브잭트 파일생성                   오브젝트파일에서 실행파일 생성

- 컴파일러 : 인간이 만든 프로그램을 기계가 이해할 수 있도록 기계어로 변환하는 변환기

- 기계어 : 기계가 이해하는 2진숫자(0과 1로) 작성된 언어

 

4. c언어 프로그래밍 환경 구축하기

-c언어 프로그래밍 개발을 위한 통합 개발 환경 설치

  ex) viusal studio, Dev-c, Eclipe등등


- C컴파일러 준비하기

- 간단한 프로그래 만들어 실행하여 컴파일 및 실행해 보고 정상적으로 작동하는지 확인



5. 누가 만들었나?

 - 미국 AT&T사의 벨(Bell)연구소의 연구원들이 만듦.




hello.c를 입력하게 되면 링커에 의해 hello.obj라는 목적파일이 생성하게 된다.



hello.exe 실행파일을 입력한다.

마침내 Hello World!라는 문장이 나타난다.



https://msdn.microsoft.com/ko-kr/library/bb384838.aspx 여기를 참조하시면 됩니다.



프로그램 문법


1.# 2.include 3.<stdio.h>  -----> 출력을 수행하는 함수(printf 함수)를 사용하기 위한 "주문"을 쓴것이다.

C:\Program Files\Dev-Cpp\MinGW64\lib\gcc\x86_64-w64-mingw32\4.9.2\include\ssp  ---> dev C++를 설치하게 되면 

이 위치에 출력, 입력을 하기위한 함수라이브러리가 존재한다는 것을 알수 있다. 

이부분은 stdio.h 파일을 인클루드한다고 읽는다.

1. 주어: 전처리기는

2. 동사: 포함한다.

3. 목적어 : stdio.h를 


출력형태, 이름 , 입력형태 

4.int   2 main   1(void)

{시작           --> 프로그램은 여기서부터 시작

3. 함수의 기능

           printf("Hello World!");  printf함수는 문자열을 출력하기 위한 함수

   return 0;

}종료


입력을 받아서 메인함수를 통해 함수의 기능을 수행하고 Int형태로 출력하자


int main(void){         main(void)부분은 main함수라고 하고 {}부분을 블록이라고 합니다.

}

int main(void){         

명령문;   읽기 편하도록 Tav으로 인텐트한다. 들여쓰기

명령문;

명령문;

}

printf("hello");  뒤에 세미콜론(;)를 붙어야한다. main함수에서 맨 처음 나오는 명령문입니다. 순서대로 실행된다.

return 0; 프로그램 정상적으로 종료 되었다.


c언어는 main함수 뿐만아니라 여러가지 함수로 구성되어 있다.


예제1) 구구단 프로그램 만들기


for문 규칙

for(초기문; 조건문; 증감문)

{

 반복할 명령어;

}


#include <stdio.h>


int main(void)

{

int i, j;

for (i = 0; i <= 9; i++)  ----> 처음에 i 변수를 1로 선언하게 되면 2단이 된다. 왜냐하면
        i++은 증감연산자로써, i=i+1이기 때문에 1+1=2가 되어버린다. 따라서 for문의 초기문의 i변수는 0이어야 한다.

        현재 i=0이고 조건문 i<=9를 비교하게 되는데 9는 0보다 작기 때문에 참이므로 for문 블록{}안에 있는것을 실행하게 된다. 

{

printf("%d단\n", i+1);  처음에 i변수가 0이므로 0+1=1이되어 1단이라고 표기하게 된다.

for (j = 0; j <= 9; j++) --> for문안에 for문이 있는것을 이중반복문이라고 한다. 여기에서 다시 j변수가 0이므로 다시 조건문 J<=9와 비교하게 된다. 9보다 작으므로 참이다. 그러므로 for문 안에 있는 명령어가 실행되게 된다.


printf("%d × %d = %2d\n", i+1, j+1, (i+1)*(j+1));

                                           2d는 두자리 수 를 나타낸다. 0+1, 0+1 , (0+1)*(0+1);

                                           1*1=1이 되고  다시 i변수가 0에서 1이되어 증가하게 되어 이렇게 반복하게 된다.

                                           인수가 여려개 있을 때는 콤마(,)로 구분한다.

}

return 0;

}




c언어 프로그램 규칙

1. 명령은 위에서부터 순서대로 쓴다.

2. 하나의 명령 끝에는 반드시 ';'를 붙인다.



3. 스페이스 공백도 인식하기 때문에 붙여서 쓴다.

i n t m a i n ( v o i d) 틀림

int main(void)


4.프로그램 가독성을 높이기 위해 적절하게 tab, 줄바꿈(\n)을 이용한다.

5. 예약어를 다른 목적으로 이용불가


if, for, int, long, return, void, char, while 등등 이있다.

6. 대문자와 소문자를 구분한다

int Main(VOID) --- 오류

int main(void) 맞음


7. 변수명이나 함수명에는 대소문자, 숫자를 이용하여 자유롭게 붙일 수 있다. 


8. 주석문사용

//부터 그 줄의 끝까지는 주석문이된다. /* ~ */ 


9. 반드시 main()블록을 쓴다. 



예제2) 함수 printf()를 이용하여 다음을 출력하는 프로그램 작성하기


* * * * * * * * * * * * * * *

*                              *

*                              *

*                              *

*                              *



#include <stdio.h>

int main(void)

{

printf("* * * * * * * * * * * * * * *\n");

printf("*\t\t\t    *\n");

printf("*\t\t\t    *\n");

printf("*\t\t\t    *\n");

printf("*\t\t\t    *\n");

printf("* * * * * * * * * * * * * * *\n");


return 0;

}


\t는 tab과 같은기능, \n 행개행이다.

'프로그래밍 > c언어' 카테고리의 다른 글

if문,for문,while문,do while문 , switch문, break, continue문  (1183) 2017.11.06
3. 연산자  (1190) 2017.09.22
2.데이터형과 입출력  (523) 2017.08.26