전기실험회로 2 (C언어)
강의 (1)
우석대학교 에너지전기공학과
이우금 교수
Ch 1. 프로그래밍의 개념 1-1. 프로그램 컴퓨터의 구성 컴퓨터 = 하드웨어 + 소프트웨어 (프로그램) 컴퓨터를 범용적으로 만드는 것이 바로 프로그램. 프로그램 왜 컴퓨터에서는 일반 가전제품처럼 바로 작동하지 않고, 불편하게 사용자가 프로그램을 설치하게 되어 있을까? 1-1. 프로그램 컴퓨터를 범용적인 기계로 만들기 위해서
컴퓨터의 정의 컴퓨터는 단순히 계산만 하는 기계가 아니다. 컴퓨터는 프로그램 (명령어들의 리스트)에 따라 데이터를 처리하는 기계. 계산기와 컴퓨터의 차이 계산기: 정해진 기능인 계산만을 수행함. 컴퓨터: 프로그램이라는 개념을 도입하여 계산뿐 아니라 다양한 기능을 수행함. 프로그램이란? 컴퓨터가 특정한 작업을 수행하도록 설계된 명령어들의 리스트 프로그램은 우리가 하고자 하는 작업을 컴퓨터에게 전달하여 주는 역할을 함. 프로그램은 컴퓨터를 통해 특정한 작업을 하기 위한 작업지시서. 프로그램 안에는 명령어가 들어 있음. 컴퓨터는 지능을 가지고 있지 않으므로 컴퓨터가 알아들을 수 있는 언어 (즉, 기계어)로 아주 자세하고 구체적으로 일을 지시해야 함. 1-1. 프로그램
1-2. 프로그래밍 언어 컴퓨터가 이해하는 언어 프로그램은 컴퓨터에게 작업을 지시하는 문서. 그러면, 어떤 언어를 사용해야 지시된 내용을 이해 할 수 있을까? 사람의 언어인 한국 또는 영어 등으로 작업을 기술한다면 컴퓨터는 이해 못함. 기계어: 컴퓨터가 알아들을 수 있는 단 하나의 언어. • 기계어는 0과 1로 구성되어 있는‘001101110001’과 같은 2진수 • 컴퓨터는 모든 것을 0과 1로 표현하고, 0과 1에 의하여 내부 스위치 회로들이 ON/OFF 상태로 변경되면서 작업을 한다. 인간이 기계어를 직접 사용한다면? 기계어를 사용할 수는 있으나 2진수로 프로그램을 작성해야 하므로 매우 불편함. 기계어 보다 좀 더 편리한 언어의 개발이 필요함 프로그래밍 언어 1-2. 프로그래밍 언어
프로그래밍 언어 기계어와 인간이 사용하는 언어의 중간쯤 위치함. 인간이 프로그래밍 언어로 프로그램을 작성하면, 컴파일러 라는 통역 담당 소프트웨어가 프로그램을 기계어로 변환함. 컴파일러: 프로그래밍 언어를 기계어로 통역. 1-2. 프로그래밍 언어
프로그래밍 언어의 분류 기계어: 컴퓨터가 바로 이해 할 수 있는 단 하나의 언어. 어셈블리어: 기계어가 인간이 사용하기에 너무 힘들고 오류발생이 많아 개발한 언어. • CPU의 명령어들을 이진수(기계어)가 아닌 영어의 약자인 기호로 표기 • 기계어보다는 더 높은 수준에서 프로그램 작성 가능 (어셈블리어 예시) • 어셈블러(assembler): 기호를 이진수로 변환하는 프로그램 • 어셈블리 언어 또한 간단한 작업에도 많은 명령어가 사용되어 아직도 사용하기 번잡한 언어. 좀더 높은 수준에서 작업할 수 있는 언어가 절실히 필요함. 고급언어: 특정 컴퓨터의 구조나 프로세서에 무관하게, 독립적으로 프로그램을 작성할 수 있는 언어 • 고급언어의 종류: C, C++, JAVA, FORTRAN, PASCAL
(고급언어 예시)
• 컴파일러: 고급 언어 문장을 기계어로 변환하는 프로그램
1-2. 프로그래밍 언어
MOV AX, MIDSCORE MOV CX, FINALSCORE ADD AX CX
MOV TOTALSCORE, AX
프로그래밍 언어의 분류 저급언어 고급언어 1-2. 프로그래밍 언어 • 기계어 • 어셈블리어
1-3. C언어
C언어의 역사
1970년대 초 AT&T의 Dennis Ritchie 에 의하여 개발 UNIX 운영 체제 개발에 필요해서 만들어짐 처음부터 전문가용 언어로 출발 C언어의 특징 장점 • 간결하다. • 효율적이다. • C언어는 하드웨어를 직접 제어하는 하는 저수준의 프로그래밍 및 고수준의 프로그래밍도 가능. • C언어는 이식성이 뛰어나다. 단점 • 초보자가 배우기가 어렵다. 1-3. C언어
1-4. 알고리즘 알고리즘 이란? 컴퓨터를 이용하여 문제를 풀기 위해 컴퓨터가 수행해야 할 단계적 절차를 기술한 것. 알고리즘은 요리법(recipe)에 비유됨. (예시) 1부터 10까지의 합을 구하는 알고리즘 (3가지 방법) 알고리즘1) 1부터 10까지 직접 하나씩 더한다. 알고리즘2) 두수의 합이 11이 되도록 숫자를 그룹핑하여 그룹의 수 5와 11을 곱한다.
(1 + 10) = 11
(2 + 9) = 11
3 + 8 = 11 5 × 11 = 55
(4 + 7) = 11
(5 + 6) = 11
알고리즘3) 공식을 이용하여 계산 10 1-4. 알고리즘1-4. 알고리즘 알고리즘의 기술 프로그래머는 프로그래밍 전에 문제를 어떻게 해결할 것인가(알고리즘)를 충분히 생각해야 함. 알고리즘을 기술하는 데는 다음과 같이 3가지 방법이 있음. • 영어나 국어 등의 자연어 (natural language) • 순서도 (flowchart) • 의사코드 (pseudo-code) 순서도 (flowchart) 입문단계에서 가장 많이 사용되는 방법으로 흐름도라고도 함. 프로그램에서의 논리 순서 또는 작업순서를 그림으로 표현하는 방법. 1-4. 알고리즘 - 수행의 시작/종료 - 처리 - 판단 - 연결자(흐름도가 너무 커서 한 페이지에 나타낼 수 없을 때, 어디로 가라는 표시 - 입출력
순서도 예시 프린터 고장을 처리하기 위한 순서도 1-4. 알고리즘 - 수행의 시작/종료 - 처리 - 판단 - 연결자 - 입출력
알고리즘 만드는 방법 주어진 문제를 한번에 해결하려고 하지 말고, 더 작은 크기의 문제로 분해한다. 분해된 여러 개의 문제가 충분히 작아질 때까지 계속해서 분해한다. 예시) 집안을 청소하는 알고리즘 1-4. 알고리즘 (1) 방을 청소한다. (2) 거실을 청소한다. (3) 부엌을 청소한다. (1) 환기를 시킨다. (2) 물건들을 정리한다. (3) 진공 청소기를 돌린다. (4) 걸레질을 한다. (1) … (2) … (3) … (1) … (2) … (3) … (4) … (1) … (2) … (3) … (1) … (2) …
(예제) 3개의 숫자 중 최대값 찾기 알고리즘 2개의 숫자 중 최대값 찾기는 매우 쉬움. 두 숫자를 비교해서 큰 것을 찾으면 됨.
3개의 숫자 (A, B, C) 중 최대값을 찾기 위한 알고리즘. (step1) A와 B를 비교해서, A가 B보다 크면
A와 C를 비교해서, 큰 수가 최대값 (step2) A와 B를 비교해서, B가 A보다 크면 B와 C를 비교해서, 큰 수가 최대값 3개의 숫자 (A, B, C) 중 최대값을 찾기 위한 알고리즘의 흐름도. 1-4. 알고리즘 - 시작/종료 - 처리 - 판단 - 연결자 - 입출력