C언어

C언어의 개요

연어참치 2021. 3. 27. 15:13

C언어의 정의

C언어는 프로그래밍 언어

*프로그래밍 언어:사람과 컴파일러(Compiler)가 이해할 수 있도록 약속된 형태의 언어(사람과 컴퓨터의 대화에 사용되는 의사소통 수단)

*컴파일러:프로그래밍 언어로 작성된 프로그램을 컴퓨터가 이해할 수 있도록 기계어로 변역해주는 번역기

 

실제로 컴파일러와 컴퓨터 사이에 어셈블러라는 통역가가 하나 더 있어서 컴파일러가 번역한 기계어에 가까운 어셈블리 코드를 기계어(0,1의 바이너리 코드)로 변환하는 작업이 추가된다.
*어셈블러(assembler):기호로 표현된 어셈블리 코드를 기계어로 번역하는 번역기

*인터프리터(interpreter):소스 프로그램을 한 번에 기계어로 번환시키는 컴파일러와는 달리 프로그램을 한 단계씩 기계어로 해석하여 실행하는 '언어처리 프로그램'

 

 

C언어의 특징

논리적이며 구조적인 시스템이 프로그래밍 언어이다.

하드웨어 제어가 가능하다.

프로그램 이식성이 높다.

간략한 문법 표현으로 함축적인 프로그램 작성이 용이하다.

저급 언어 특성을 가진 고급 언어이다.

 

 

C프로그램의 작성 및 준비

⇨에디터와 컴파일러가 필요하다.

*에디터(Editer):소스 코드(Source code:C프로그램 안에 있는 명령어들)를 보다 쉽게 작성하여 기억장치에 저장할 수 있도록 도와주는 도구

*컴파일러(Compiler):에디터를 사용하여 작성한 소스 코드를 컴퓨터가 이해할 수 있는 기계어로 바꿔주는 번역 소프트웨어

 

 

프로그램 개발 단계

 

프로그램 목적 정의    ⟶ 요구 분석과 시스템 분석을 통하여 프로그램이 가져야 할 기능 정의

            ⬇︎

    프로그램 설계       ⟶ 분석된 기능을 처리할 수 있도록 프로그램 구조를 설계

            ⬇︎

   소스 코드 작성       ⟶ 작성된 프로그램 설계를 기반으로 에디터를 사용하여 작성

            ⬇︎

    컴파일 / 링킹        ⟶ 소스 코드를 실행 가능한 코드로 변환하고 문법 검사

            ⬇︎

   프로그램 실행        ⟶ 프로그램 실행

            ⬇︎

   테스트와 디버깅     ⟶ 에러를 검사하고 디버깅

            ⬇︎

       유지 보수          ⟶ 사용 중 발생되는 에러나 추가적인 변경 사항을 처리

 

 

 

C프로그램의 완성 과정

C언어로 작성된 프로그램은 크게 코딩(coding),컴파일(compile),링킹(linking)이라는 3단계의 변환 과정을 거쳐 완성된다.

1. 코딩 단계는 주어진 문제에 대한 설계를 바탕으로 소스 코드를 작성하여 소스 파일(source file)을 생성하는 과정이다.

 - .c 라는 확장자를 가진 파일 이름으로 저장되고 이를 소스 파일이라고 한다.

2. 컴파일 단계는 소스 파일이 목적 파일로 변환하는 과정이다.

-목적 파일은 .obj라는 확장자를 갖는 파일)

3. 링킹 단계는 목적 파일을 실행 파일로 변환하는 과정이다.

-링킹 과정은 컴파일된 목적 파일들을 라이브러리 파일과 연결하여 실행 파일을 만들어 내며, 이 때 사용되는 도구가 링커(linker).

-컴파일러는 대부분 링커 기능까지 제공하여 컴파일할 때 자동적으로 처리된다.

-확장자는 .exe 

 

 

 

C프로그램의 구성

 

도입부                     ⟶ 프로그램 전체에 적용되는 사항을 기술함

 

void main()   {        ⟶ main() 함수는 가장 먼저 호출되는 함수로 모든 프로그램에 반드시 존재해야 함

    선언문

    치환문

    제어문

    함수호출

    ...

}

 

 

 함수()   {                ⟶ main() 함수에서 호출된 함수를 정의하는 부분임

    ...

 

}

 

 

1. 도입부

프로그램 설명

선행 처리를 위한 다른 파일 포함이나 매크로(macro)정의

프로그램 전체에 사용되는 전역변수 선언

사용자 함수 원형 선언

 

 

2. main() 함수,

   호출된 함수()  ➡ 사용자 정의 함수

(호출된 함수의 정의 부분은 main 함수에서 사용된 내용과 동일한 구조을 갖는다.)

 

c프로그램은 반드시 하나 이상의 main 함수를 포함해야 한다.

main 함수가 반드시 존재해야 한다.

함수의 시작과 끝을 알리는 중괄호({})를 사용해야 한다.

중괄호 안에는 변수 선언문,치환문,연산문,함수 등의 명령을 기입한다.

선행처리기(preprocessor)를 제외하고 문장의 끝에는 세미콜론(;)을 붙인다.

 

C프로그램의 구성 요소

예약어: int,char,if,for,…

명칭: 변수,배열,함수,… 등의 이름

상수: 값이 불변인 자료

연산자: =,-,*,/,++,…

설명문: 프로그램에 대한 주석

 

1.예약어(reserved word)

c언어에서  미리 정의되어 있는 의미 있는 단어,프로그램에서 특정한 의미를 가지고 있기 때문에 함부로 사용해서 안된다.

•자료형 관련 예약어: char, int, float, short, long, double, unsigned, union, enum, void 

•기억 관련 예약어: auto, static, extern, register

•제어 관련 예약어: if~else, for, while, do~while, switch~case, break, continue, return

•기타 예약어: main, sizeof, include,…

 

2.명칭

변수명,매크로명,자료형 이름,배열명,함수명 ➡︎ 사용자 정의 명칭(identifier)

영문자와 숫자의 조합으로 만든다.

명칭의 첫 문자는 영문자나 밑줄(_)이어야 한다.

특수문자를 사용해서는 안 된다(단, 밑줄은 사용 가능).

문자 사이에 공백이 있어서는 안 된다.

예약어를 사용할 수 없다.

영문자 대문자와 소문자는 서로 구별하여 사용한다.

 

3.상수(constant)

수치 상수, 문자 상수, 문자열 상수

 

4.연산자(operator)

5.설명문(comment)  ➡︎ 주석

•여러 줄에 걸친 설명문을 넣으려면 /*와 */를 사용한다.

•한 줄짜리 설명문을 넣으려면 보통//를 사용한다.

•프로그램의 어느 부분에도 위치할 수 있다.

•2개 이상의 라인으로 계속될 수 있다.

 

에러와 경고

소스 파일을 작성하여 컴파일하고 링킹하는 과정에서 발생하는 에러는 다음과 같이 크게 두가지로 분류

 

1.에러(error)

오자와 탈자, c언어의 문법에 맞지 않는 형식의 사용, 반드시 필요한 지정이 빠진 경우

소스 프로그램에 에러가 있는 경우는 컴파일을 계속할 수 없으므로 에러 메세지를 확인하여 수정

 

2.경고(warning)

코드의 내용이 의심스러워 보이지만 일단 컴파일이 가능한 경우에 발생

•현재는 큰 문제가 없지만 이시성에 불리하거나 c언어 문법에서 권장하지 않는 방법으로 소스 프로그램을 작성했을 때도 발생

•경고 메세지의 내용을 파악하여 타당한 지정이라면 수정,그렇지 않다면 무시해도 상관없다.