본문 바로가기

6. 컴퓨터 공학 공부

[61] C언어 01차시 프로그래밍의 개념

1. 프로그래밍 언어

가. 용어 정리

1) 프로그래밍 언어

프로그램을 만들기 위해 사용하는 언어

2) 프로그래밍

프로그램을 만드는 작업(비슷한 말: 코딩)

3) 프로그래머

프로그램을 만드는 사람

4) 프로그램

특정한 작업을 수행하도록 설계된 명령어들의 리스트

 

나. 컴퓨터 개요

1) 컴퓨터

데이터입력하고 처리(연산, 제어)하고 필요에 따라 저장하고 결과를 출력해주는 전자장치

모든 정보를 0, 1로 코드화(디지털)시켜 연산 처리

명령어들의 리스트(프로그램)에 따라 데이터를 처리하는 기계

2) 컴퓨터 구성

하드웨어: 컴퓨터의 기계적인 장치

소프트웨어: 하드웨어의 동작을 제어하고 지시하는 모든 종류의 프로그램

 

다. 프로그램의 역사

1) 프로그래밍이 가능한 최초의 기계

해석 기관(Analytical Engine)

찰스 배비지가 고안

https://ko.wikipedia.org/wiki/해석기관

 

해석기관 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 해석기관(解析機關, 영어: Analytical Engine,해석 엔진)은 영국의 수학 교수 찰스 배비지가 고안한 기계적 범용 컴퓨터의 설계이다. 1837년에 처음으로 발표되었으며

ko.wikipedia.org

2) 최초의 프로그래머

에이다 러브레이스(Ada Lovelace)

세계 최초의 프로그래머

해석 기관을 위한 프로그램을 개발

https://ko.wikipedia.org/wiki/에이다_러브레이스

 

에이다 러브레이스 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 에이다 러브레이스Ada Lovelace 출생 1815년 12월 10일(1815-12-10)영국 런던 사망 1852년 11월 27일 (37세)영국 런던 매릴번 국적 영국 배우자 윌리엄 킹-노엘 초대 러브레

ko.wikipedia.org

3) 초기 컴퓨터의 프로그램

ENIAC의 프로그램

스위치에 의하여 기억되었고 프로그램을 변경할 때마다 많은 스위치들을 처음부터 다시 연결

https://ko.wikipedia.org/wiki/에니악

 

에니악 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 에니악 전자식 숫자 적분 및 계산기(Electronic Numerical Integrator And Computer; ENIAC, 에니악)는 1943년에서 3년에 걸쳐서 1946년 2월 14일에 펜실베이니아 대학의 모클리와

ko.wikipedia.org

4) 프로그램 내장 방식

1945년 폰 노이만 제안

컴퓨터에 기억장치를 설치하고, 프로그램과 데이터를 함께 기억장치에 저장했다가, 프로그램에 포함된 명령에 따라 자동으로 작업을 처리하는 방식

5) 최초의 실용적인 프로그램 내장 방식의 컴퓨터

에드박(EDVAC)

1948년 최초의 이진수를 사용한 프로그램 내장 컴퓨터

https://ko.wikipedia.org/wiki/에드박

 

에드박 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전.

ko.wikipedia.org

 

라. 프로그래밍 언어의 분류

1) 기계어(Machine Language)

0과 1로 이루어진 언어

하드웨어(CPU)에 종속

https://ko.wikipedia.org/wiki/기계어

 

기계어 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. WDC 65816 단일 기판 컴퓨터의 기계어 모니터가 코드의 역어셈블리된 모습 및 프로세서 레지스터, 메모리 덤프를 보여주고 있다. 기계어(機械語)는 CPU가 직접 해

ko.wikipedia.org

2) 어셈블리어(Assembly Language)

니모닉 기호를 사용

기호와 CPU의 명령어가 일대일 대응

어셈블러를 통해 기계어로 변환

https://ko.wikipedia.org/wiki/어셈블리어

 

어셈블리어 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 어셈블리어(영어: assembly language) 또는 어셈블러 언어(assembler language)[1]는 기계어와 일대일 대응이 되는 컴퓨터 프로그래밍의 저급 언어이다. 컴퓨터 구조에 따

ko.wikipedia.org

3) 고급 언어(High-Level Language)

특정한 컴퓨터의 구조나 프로세서에 무관하게 독립적으로 프로그램을 작성할 수 있는 언어

https://ko.wikipedia.org/wiki/고급_프로그래밍_언어

 

고급 프로그래밍 언어 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 고급 프로그래밍 언어 또는 하이 레벨 프로그래밍 언어(high-level programming language)란 사람이 이해하기 쉽게 작성된 프로그래밍 언어로서, 저급 프로그래밍 언어

ko.wikipedia.org

컴파일러: 고급 언어 문장을 기계어로 변환하는 프로그램

https://ko.wikipedia.org/wiki/컴파일러

 

컴파일러 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 컴파일은 여기로 연결됩니다. 일본의 기업에 대해서는 컴파일 (기업) 문서를 참고하십시오. 일반적인 다중 언어, 다중 대상 컴파일러의 동작 모습. 컴파일러(com

ko.wikipedia.org

인터프리터: 고급 언어 문장을 한 단계씩 번역하여 바로 실행해주는 프로그램

https://ko.wikipedia.org/wiki/인터프리터

 

인터프리터 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 인터프리터(interpreter, 문화어: 해석기)는 프로그래밍 언어의 소스 코드를 바로 실행하는 컴퓨터 프로그램 또는 환경을 말한다. 원시 코드를 기계어로 번역하는

ko.wikipedia.org

링커: 목적 파일을 실행 프로그램으로 병합하는 프로그램

https://ko.wikipedia.org/wiki/링커_(컴퓨팅)

 

링커 (컴퓨팅) - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. GNU 프로젝트의 구현물에 대해서는 GNU 링커 문서를 참고하십시오. 링크 과정을 간단히 나타낸 그림. 목적 파일과 정적 라이브러리가 새로운 라이브러리나 실행

ko.wikipedia.org

 

2. 알고리즘(Algorithm)

가. 알고리즘의 개념

1) 문제를 해결하는 절차(방법)

2) 알고리즘 기술 방법

자연어(natural language): 사람들이 사용하는 언어

1. 변수 n과 sum에 0을 저장
2. 변수 n을 1만큼 증가시킴
3. sum에 n을 더하여 저장
4. n이 10보다 작으면 2번을 실행
5. sum을 출력

순서도(flowchart): 논리 순서 또는 작업 순서를 그림으로 표현

 

https://ko.wikipedia.org/wiki/순서도

 

순서도 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 제 기능을 하지 않는 전구를 다루기 위한 단순 순서도. C 언어의 for 루프 순서도 순서도(영어: flowchart)는 워크플로 혹은 프로세스를 보여주는 다이어그램의 한

ko.wikipedia.org

의사 코드(pseudo-code): 일반적인 언어로 코드를 흉내 내 알고리즘을 써놓은 코드

output : sum
n <- 0, sum <- 0
do {
    n++
    sum <- sum + n
} while ( n < 10 )

https://ko.wikipedia.org/wiki/의사코드

 

의사코드 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 의사코드(슈도코드, pseudocode[1])는 프로그램을 작성할 때 각 모듈이 작동하는 논리를 표현하기 위한 언어이다. 특정 프로그래밍 언어의 문법에 따라 쓰인 것이

ko.wikipedia.org

3. C 언어의 특징

가) C 언어

1972년 Dennis Ritchie에 의하여 개발

UNIX 운영 체제 개발에 필요해서 만들어짐

전문가용 언어로 출발

https://ko.wikipedia.org/wiki/C_(프로그래밍_언어)

 

C (프로그래밍 언어) - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. C패러다임명령형 프로그래밍 (절차적 프로그래밍), 구조적 프로그래밍설계자데니스 리치개발자데니스 리치, 벨 연구소발표일1972년최근 버전C17최근 버전 출시

ko.wikipedia.org

https://ko.wikipedia.org/wiki/ANSI_C

 

ANSI C - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. ANSI C, ISO C, 표준 C(Standard C)는 미국 국립 표준 협회(ANSI)와 국제 표준화 기구(ISO)가 출판한 C 프로그래밍 언어의 이후 표준들을 가리킨다. 역사적으로 이 이름들

ko.wikipedia.org

나) C 언어의 특징

간결하다.

효율적이다.

하드웨어를 직접 제어하는 저수준의 프로그래밍도 가능하고 고수준의 프로그래밍도 가능하다.

이식성이 뛰어나다.

초보자가 배우기 어렵다.