"C 언어"의 두 판 사이의 차이
(→특징) |
(→메인 함수) |
||
84번째 줄: | 84번째 줄: | ||
C 언어는 절차지향 언어로 main 함수 하나만을 호출하여 main 함수가 끝날 때 까지 실행한다. | C 언어는 절차지향 언어로 main 함수 하나만을 호출하여 main 함수가 끝날 때 까지 실행한다. | ||
만약 main 함수에서 다른 함수를 호출하는 경우 해당 경로를 따라가서 해당 함수를 실행 후 다시 메인 함수로 돌아온다. | 만약 main 함수에서 다른 함수를 호출하는 경우 해당 경로를 따라가서 해당 함수를 실행 후 다시 메인 함수로 돌아온다. | ||
+ | main 함수는 1개의 프로그램에는 단 하나만 존재 할 수 있다. 또한 반드시 하나는 존재해야 한다. | ||
=== 헤더 파일의 선언 === | === 헤더 파일의 선언 === |
2019년 7월 22일 (월) 16:28 판
C 또는 C 언어는 1972년 데니스 리치(Dennis Ritchie)가 미국 AT&T의 벨 연구소 시절에 개발한 범용 프로그래밍 언어이다. 기존의 A 언어와 B 언어를 개량하여 만들었다. 빠른 처리 속도가 필요한 시스템 제어 분야에 많이 사용한다. 비트 조작 등 세밀한 기술이 가능하다는 특징이 있으며, 미니컴퓨터용 운영체제인 유닉스의 대부분은 C언어로 기술되어 있다. C 언어를 변형하여, C++, C#, 비주얼 C++, 엠에프씨(MFC), 프로씨(Pro-C), 오브젝티브-C, 스위프트, 러스트 등 다양한 프로그래밍 언어가 만들어졌다.
목차
역사
알골(ALGOL) -> BCPL -> B 언어의 개발 과정으로 인해 C언어를 개발하였다. 1963년 ALGOL60 보다 더 다양한 용도로 확장하기 위해 CPL 언어를 케임브리지 대학교의 수학 연구소와 런던 대학교의 컴퓨터 공학부에서 공동 개발하였다. 이후 1967년 마틴 리차드는 CPL을 더욱 단순화 시킨 BCPL(Basic CPL)을 개발하였고, 1969년 경 BCPL이 미국으로 넘어와서 켄 톰슨에 의해 B언어를 개발하였다. 여기까지를 C언어의 조상격 프로그래밍 언어로 보고 있다. [1]
등장 배경
- 켄 톰슨(Ken Thompseon)이 벨 연구소에서 MULTICS 운영체제를 개조하여 유닉스를 만들던 중 기계마다 운영체계를 제작 하다시피 하여 만드는 애로사항을 해결하고자 이식성이 좋고, 호환성이 좋은 언어로 제작하여야겠다는 필요성을 가졌다.
- 이때 데니스 리치(Dennis Ritchie)가 B 언어를 개조하여 1972년 C 언어를 제작하고, 이를 이용하여 유닉스를 다시 만들게 된다.
- 사용자가 늘어남에 따라 매뉴얼이나 지속적인 작업이 이루어지지 않아 초기에 개발회사나 사용회사별로 C 언어가 혼란을 겪게 된다.
- 미국 ANSI협회에서 ANSI-C를 규정하고 이때부터 ANSI-C를 표준으로 각 회사들이 개성있게 제작을 시작한다.
- 이후 1982년 C++이 개발되며 더욱 성장하게 된다.
제작 과정
- 1958년 : 프로그래밍 언어의 이론과 개념의 등장
- 1960년 : 국제정보처리학회연합(IFIP)에서 알골을 제작
- 1966년 : 케임브리지 대학교에서 마틴 리처드(Martin Richards)가 BCPL을 설계
- 1970년 : 톰프슨(Kenneth L. Thompson)이 BCPL을 개량하여 B 언어를 제작
- 1972년 : 데니스 리치(Dennis Ritchie)에 의해 C 언어가 개발[1]
특징
C 언어의 특징
- 이식성이 뛰어나다.
- C 언어는 다른 프로그래밍 언어보다 높은 호환성을 가지고 있고 C 언어의 표준함수로만 작성된 프로그램은 어떤 기종의 컴퓨터에서도 정상적으로 컴파일되고 실행될 수 있다.
- 양면성 기능을 가지는 언어이다.
- C 언어는 High Level Language와 Low Level Language의 특징을 동시에 가진다. 즉, 저수준과 고수준의 제어가 모두 가능한 언어이다.
- 다양한 연산자를 가지는 언어이다.
- 다양한 연사자를 가지고 있기 때문에 원하는 방식대로 다양한 프로그래밍이 가능하다.
- 다양성을 가진다.
- C 언어는 과학 계산용 프로그램뿐만 아니라 FA(공장 자동화), OA(사무 자동화), GUI(Graphic User interface), 시스템 프로그램(System program), 응용 프로그램(Application Program)과 같이 다양한 분야에서 사용할 수 있도록 설계된 효율적인 프로그램 언어이다.
- 모듈러 프로그래밍 언어이다.
- C언어는 함수 기반의 언어이다. 프로그램의 시작인 main 함수와 다양한 여러 함수를 사용하여 간단하게 프로그래밍이 가능하다.
- Free Format 코딩형식을 가지는 언어이다.
- 새로운 자료형(struct)을 정의하여 사용할 수 있으므로 형식이 자유롭다.
- 전처리기를 사용하는 언어이다.
- 컴파일(실행) 전 사전적으로 확인이 가능한 기능을 가짐으로써 전체적인 흐름 분석을 하기 용이하다.
- 포인터를 사용하는 언어이다.
- 메모리를 직접 제어할 수 있어 위험도가 높지만 디테일한 코딩이 가능하다. 포인터의 사용은 C언어에서만 가능하다.
- 절차 지향적 특징을 지니고 있다.[2]
C 언어의 단점
- 유닉스를 기술하기 위한 언어로서 개발되었기 때문에 유닉스가 가진 약점을 그대로 가지고 있다.
- 자료형의 검사기능이 미약하다.
- 혼합연산의 경우 연산 우선순위에 따라 자동 계산되므로 연산 우선순위를 모르면 잘못된 계산 결과를 얻을 수 있다.
- 프로그램을 모듈화하지 않으면 이해하기 어려운 프로그램이 되는 경우가 많다.[2]
다른 컴퓨터 언어와 비교
C 언어와 C++
C언어는 절차지향적 언어(Procedural)이고, C++은 객체지향적 언어(Multi Paradigm)이다. 하지만 엄밀히 따지면 C++은 멀티패러다임 언어이며 객체지향과 절차지향 모두 구현이 가능하다. C를 한단계 확장시킨 언어이다. C는 절차적 언어이기 때문에 순차적 수행이 되도록 하는 것이 중요하다. 하지만 C++은 추상적인 개념을 통해서 구성을 한 후 그것들을 조합하는 방식으로 만들어 진다. 즉, C는 하향식 접근방식으로 코딩을 하지만 C++은 상향식 접근방식으로 코딩하는 것을 선호하는 언어이다. C++은 물론 하향식 접근방식으로도 코딩이 가능하다. [3]
C 언어와 자바
자바 또한 객체지향 언어로 개발된지 오래 지났음에도 불구하고 여전히 소프트웨어 개발의 주축이다. 기계와 근접한 위치에서 실행되거나 하드웨어를 직접 다루는 경우 C 언어는 컴파일 시 바로 기계코드로 컴파일이 되어 프로세스에 의해 직접 실행된다. 따라서 중간 코드인 바이트 코드로 컴파일되며 인터프리터가 바이트 코드를 기계코드로 다시 변환하는 자바의 경우 제한된 메모리를 최적으로 사용해야 하는 프로그램에는 C 언어가 유용하다. [4]
활용 분야
- C 언어는 까다롭고 다루기 어렵지만, 빠른 연산이 필요한 곳에서 높은 효율을 발휘한다. 게임처럼 용량이 높으면서도 연산과 속도가 빨라야 하는 분야에서는 C와 C++을 활용하는 것이 일반적이다.
- 컴퓨터를 사용하는 과정을 단순하게 만들고 한눈에 보기 쉽게 만들어주는 운영체제 및 시스템을 구축하는 분야에도 C언어는 주력으로 사용된다.
- 모바일 프로그래밍의 대표주자는 JAVA이다. 안드로이드의 경우는 JAVA를 주력언어로 사용중이지만 IOS(iPhone OS)에서는 C언어를 사용한다. [5]
기초 문법
메인 함수
C 언어는 절차지향 언어로 main 함수 하나만을 호출하여 main 함수가 끝날 때 까지 실행한다. 만약 main 함수에서 다른 함수를 호출하는 경우 해당 경로를 따라가서 해당 함수를 실행 후 다시 메인 함수로 돌아온다. main 함수는 1개의 프로그램에는 단 하나만 존재 할 수 있다. 또한 반드시 하나는 존재해야 한다.
헤더 파일의 선언
헤더 파일은 헤더 파일 내부에 있는 함수를 사용하겠다고 미리 알려주는 역할을 한다.
#include <stdio.h> int main(void) { printf("Hello, C"); return 0; }
이 문장은 printf( ); 함수를 이용해 Hello, C 라는 문장을 출력하고자 하는 것이다. 이때 맨 위에 작성된 #include <stdio.h> 를 헤더 파일 부분이라고 하는데, 이 부분을 작성하지 않으면 main 함수는 printf가 무엇인지 모르기 때문에 에러가 발생한다.
헤더 파일의 종류
헤더 파일의 분류는 크게 표준 라이브러리 헤더 파일과 사용자 정의 헤더 파일로 나눌 수 있다.
- 표준 라이브러리 헤더 파일
- 표준 라이브러리 헤더 파일은 개발 프로그램의 내부에 미리 선언되어있어 가져와 사용기만 하면 된다.
- 해당 헤더 파일의 예로는 stdlib.h , stdio.h , math.h, string.h , time.h 등 다양한 헤더 파일이 있다.
- 표준 라이브러리 헤더 파일은 개발 프로그램의 내부에 미리 선언되어있어 가져와 사용기만 하면 된다.
- 사용자 정의 헤더 파일
- 사용자 정의 헤더 파일은 사용자가 직접 헤더 파일을 정의 하는 것을 의미한다.
세미콜론( ; )
세미콜론을 안 붙이게 되면 컴파일 에러가 발생한다. 따라서 한 문장이 끝나면 세미콜론( ; )을 쓰는 것으로 마친다.
- 예외의 경우
- if, for, while 문의 경우 해당 문장에는 세미콜론을 쓰지 않는다. (do while의 경우 while 문이지만 세미콜론을 붙인다.)
개발도구
- 비주얼 스튜디오
- C 언어 개발 도구로 가장 유명하며 마이크로소프트에서 개발, 2년마다 새로운 버전이 개발되고 있다.
- dev C++[6]
- 무료 오픈소스 개발도구이며 비주얼 스튜디오보다 설치가 간단하다.
- Code::Blocks[6]
- ideone 웹페이지 개발[6]
- 웹페이지에서 다운로드 없이 개발할 수 있는 장점이 있다.
각주
- ↑ 1.0 1.1 1.2 luckey, 〈C언어의 유래와 역사〉, 《티스토리》, 2009-03-19
- ↑ 2.0 2.1 gloss62, 〈[강좌 01 C언어 개요]〉, 《네이버 카페》, 2009-08-26
- ↑ JJOREG, 〈C++ 과 C의 차이점〉, 《티스토리》, 2014-06-25
- ↑ Serdar Yegulalp, 〈C 프로그래밍 언어가 여전히 최고인 이유 : 개발언어 일대일 비교〉, 《아이티월드》, 2018-06-22
- ↑ IT용쌤, 〈C언어 프로그래밍 기초부터 활용하는 분야〉, 《네이버 블로그》,2018-01-30
- ↑ 6.0 6.1 6.2 magnetah, 〈재미 삼아 코딩 <C언어> 프로그램 개발도구에 대하여 : 통합 개발 환경 종류〉, 《네이버 블로그》, 2018-04-19
같이 보기