C 언어의 정의, 역사, 특징
C언어는 프로그래밍 언어이다.
프로그래밍 언어는 "사람과 컴파일러(compiler)가 이해할 수 있도록 약속된 형태의 언어"
ex) 기계어, 어셈블리어, C, C++, C#, JAVA, PHP 등
컴파일러
프로그래밍 언어로 작성된 프로그램을 컴퓨터가 이해할 수 있도록 기계어로 번역해 주는 번역기
- 어셈블러(assembler): 기호로 표현된 어셈블리 코드를 기계어로 번역하는 번역기
- 인터프리터(interpreter): 소스 프로그램을 한번에 기계어로 변환시키는 컴파일러와는 달리 프로그램을 한 단계씩 기계어로 해석하여 실행하는 ‘언어처리 프로그램’
C언어의 역사 및 특징
C 언어의 역사
- Denis Ritchie(1972년)
- UNIX 운영체제 구현에 사용할 목적으로 개발
컴퓨터 기종간 호환성을 가진 고급이면서, 하드웨어를 제어할 수 있는 새로운 언어가 필요 - 어셈블리 언어로 된 UNIX 운영체제가 거의 C 언어로 대체
C언어의 특징
- 프로그램 이식성이 높다.
- 간단한 문법표현으로 함축적인 프로그램 작성이 용이하다.
- 저급언어 특성을 가진 고급언어이다.
C 프로그램의 작성 및 준비
프로그램 개발 단계
에디터와 컴파일러
- 에디터 : 소스코드를 작성하여 저장할 수 있도록 도와주는 도구
- C 컴파일러 : Turbo C/C++, Dev-C++, Visual C++, GCC, …
C 프로그램의 완성 과정
- 코딩(coding) 단계
주어진 문제에 대한 설계를 바탕으로 소스코드(source code)를 작성하여 소스파일(source file)을 생성하는 과정
- 컴파일(compile) 단계
소스파일이 목적파일(object file)로 변환되는 과정 - 링킹(linking) 단계
목적파일을 실행파일(execution file)로 변환하는 과정
C 프로그램의 완성 과정
C 프로그램의 작성과 실행 예
Dev-C++ 컴파일러
- 소스코드 작성
- 저장(소스파일 생성)
- 컴파일
실행 탭 -> 컴파일 (컴파일과 동시에 링킹이 되어서 실행 파일이 생성됨) - 실행 결과
실행 탭 -> 실행
Visual Studio 컴파일러
- 작업공간 마련
새 프로젝트 생성 - 소스파일 생성
- 솔루션 빌드
빌드 탭 -> 솔루션 빌드
컴파일 성공, 실패 확인 - 실행파일 실행
디버그 -> 디버그하지 않고 시작 누르면 cmd 창으로 실행 결과가 뜸
C 프로그램의 구성
C 프로그램의 기본 구조
- C 프로그램은 반드시 하나 이상의 함수를 포함해야 한다.
- main( )함수가 반드시 존재해야 한다.
- 함수의 시작과 끝을 알리는 중괄호 { }를 사용해야 한다.
- 중괄호 안에는 변수선언문, 치환문, 연산문, 함수 등의 명령을 기입한다.
- 선행처리기(preprocessor)를 제외하고 문장의 끝에는 세미콜론( ; )을 붙인다.
C 프로그램의 구성 요소
- 예약어 : int, char, if, for, …
- 명칭 : 변수, 배열, 함수, … 등의 이름
- 상수 : 값이 불변인 자료
- 연산자 : =, -, *, /, ++, …
- 설명문 : 프로그램에 대한 주석
예약어(reserved word)
사전에 컴파일러가 알고 있는 단어
- 자료형 관련 예약어 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, …
명칭(identifier)
- 영문자와 숫자의 조합으로 만든다.
- 명칭의 첫 문자는 영문자나 밑줄( _ )이어야 한다.
- 대소문자를 구분한다.
- 특수문자를 사용해서는 안 된다.(단, 밑줄( _ ) 사용가능)
- 문자 사이에 공백이 있어서는 안 된다.
- 예약어를 사용할 수 없다.
- 영문자 대문자와 소문자는 서로 구별하여 사용
- 명칭의 길이는 컴파일러에 따라 차이가 있다. (일반적으로 32자까지 인식가능)
에러와 경고
에러(error)
- C 언어의 문법상 잘못된 경우 에러 메시지를 출력
즉, C 언어의 문법에 맞지 않는 형식의 사용이나 반드시 필요한 지정이 빠진 경우 등에서 발생 - 에러 메시지를 확인하여 반드시 수정하여야 한다.
경고(warning)
- 경고는 일단 컴파일은 가능한 경미한 실수를 했을 때 발생
- 현재는 큰 문제가 없지만 이식성에 불리하다거나, C 언어 문법에서 권장하지 않는 방법으로 소스 프로그램을 작성했을 때도 발생
- 경고 메시지의 내용을 파악하여 타당한 지적이라면 수정하고, 그렇지 않다면 무시하여도 상관없다.
- 경고를 무시하여도 실행파일을 생성하여 실행 할 수 있는 경우가 많다.
이번 강의를 통해서 C언어가 컴파일 언어라는 점을 알게 됐다.
그렇다면 자바는 컴파일 언어일까, 인터프리터 언어일까? 컴파일 과정이 있으니 당연히 컴파일 언어일 것이라고 생각했는데 자바 코드도 한 줄씩 실행이 된다고 했던 강의 내용이 생각나 헷갈려서 구글링을 해봤다.
결론적으로 자바는 컴파일 언어 + 인터프리터 언어의 장점을 합친 하이브리드 언어라고 한다.
자바 컴파일러에 의해 자바 바이트 코드로 한 번에 번역이 되고, 이 바이트 코드를 JVM이 한 줄씩 실행한다고 한다.
자료출처: 방통대 C프로그래밍 강의 자료
'공부 > C프로그래밍' 카테고리의 다른 글
2. 자료형과 선행처리기 (1) | 2024.02.28 |
---|