You are on page 1of 34

CHAPTER

01
1.1 소프트웨어와 하드웨어

1 소프트웨어란?

• 컴퓨터는 크게 하드웨어(hardware) 와 소프트웨어(software)로 구성.


• 소프트웨어는 하드웨어를 제어하여 기능을 수행하도록 하는 명령을 모아 놓은 것.
1.1 소프트웨어와 하드웨어

• 레시피는 요리의 핵심 - 같은 재료라 할지라도, 어떻게 조리하느냐에 따라 결과는 달라진다.

• 소프트웨어는 정해진 절차에 따라 하드웨어를 사용하여 데이터를 처리.


• mp3 데이터를 mp3 프로그램이 처리하면 음악이 된다.
• 요리의 레시피에 해당하는 것이 소프트웨어이며 컴퓨터 작업의 핵심.
1.1 소프트웨어와 하드웨어

• 소프트웨어는 응용 프로그램과 시스템 소프트웨어(system software)로 나뉜다.


• 컴퓨터 전체를 관리하고 운영하는 소프트웨어를 운영체제 (Operating System) 라 부른다.
• 약자로OS라 쓴다.
1.1 소프트웨어와 하드웨어

2 하드웨어란?

• 초기 컴퓨터에는 CPU와 주기억장치(Main Memory)뿐 이었다.


• 키보드, 모니터, 마우스와 같은 장치들은 컴퓨터가 탄생한 후 한참이 지나서야 개발.
• CPU와 메모리는 컴퓨터를 구성하는 ‘필수장치’라 부르고,그 외의 장치들은 ‘주변장치’라 부른다.
1.1 소프트웨어와 하드웨어

• 컴퓨터에서 주방장 역할을 담당하는 부분이 CPU


• CPU의 가장 중요한 일은 메모리에 있는 프로그램을 실행하는 것 이다.
• 메모리 는 컴퓨터에서 유일한 작업 공간이다.
• 요리에 필요한 재료들은 창고에 보관되지만, 재료의 손질과 조리 작업은 작업대에서 이루어진다.
• 메모리에 있는 프로그램과 데이터는 전원이 꺼지면 사라진다. 전원이 꺼진 이후에도 프로그램과 데이터를
보관하기 위해 하드 디스크나 USB와 같은 ‘보조 저장장치’를 사용한다.
1.1 소프트웨어와 하드웨어

폰 노이만 구조의 가장 큰 특징은 프로그램과 데이터는


메모리에 올라와야지만 실행된다는 것이다
1.1 소프트웨어와 하드웨어

3 컴퓨터란?

• 컴퓨터란 프로그래밍이 가능한 기계.


• 내비게이션, 전자사전, 스마트 시계, 스마트 TV 등에 탑재된 컴퓨터를 임베디드 시스템
(embedded system) 이라 부른다.
1.1 소프트웨어와 하드웨어

4 프로그래밍이란?

• 컴퓨터에게 작업을 시키려면 구체적으로 설명해야 한다.


• 컴퓨터에게 알려줄 작업을 하나로 모으면 컴퓨터 프로그램 (program) 이 된다.
• 프로그램에는 컴퓨터에게 지시할 명령들과 명령의 결과를 받는 방법들이 모여 있다.
• 프로그래밍(programming) 이란 프로그램을 만드는 작업.
1.1 소프트웨어와 하드웨어

• 컴퓨터는 단순하기 때문에 문법에 벗어나는 코드는 전혀 이해하지 못한다는 것이다.


• C언어의 경우, 문장 끝에는 언제나 세미콜론(;)을 붙여야 한다.
1.2 C언어와 컴파일러

1 C언어의 특징
• 컴퓨터가 이해할 수 있는 언어는 기계어(machine language) 뿐이다.
• 기계어를 사람들이 이해할 수 있는 문자 형태로 바꾼 것이 어셈블리어(assembly language)다.
• 기계어에 가까운 프로그래밍 언어를 저급 언어(low level language)라 부른다.

• 저급 언어와 달리 if나 for와 같이 일반인들이 이해할 수 있는 단어를 사용하여 만든 언어를 고급 언어


(high level language) 라 부른다. 기계어와 어셈블리어를 제외한 대부분의 언어가 고급 언어이다.
• 고급 언어로 만든 프로그램은 기계어로 바꿔야지만 컴퓨터에서 실행할 수 있다.
• 고급 언어 중 가장 많이 알려진 언어가 C언어이다.
1.2 C언어와 컴파일러

C언어의 장점
❯ 효율적인 언어
❯ 강력한 언어
❯ 확장성이 좋은 언어
❯ 간결한 문법 구조

C언어의 단점
❯ 난이도가 있는 코드
❯ 숙련이 필요한 코드
1.2 C언어와 컴파일러

3 컴파일러란?

• 컴퓨터는 기계어만 인식하기 때문에 C언어를 사용하여 만든 코드는 컴퓨터가 이해할 수 없다.
• 고급 언어를 기계어로 번역하는 과정을 컴파일(compile)이라 부른다.
• 컴파일을 담당하는 프로그램을 컴파일러(compiler) 라 부른다.
• 컴파일러는 소스코드를 번역하여 기계어로 이루어진 실행파일을 만든다. 이 실행파일을 실행함으로써
컴퓨터가 작업을 시작한다.
• C언어, C++, 자바와 같은 대부분의 고급 언어가 컴파일러 방식을 사용한다.
1.2 C언어와 컴파일러

• 인터프리터 방식은 소스코드를 한 번에 한 문장씩 번역하여 실행한다.


• 인터프리터 방식은 한 줄씩 실행하기 때문에 전체 재료를 파악하기 어렵다.
• 또한 레시피에서 잘못된 부분이 있는지 파악하기 어렵고, 반복되는 작업을 하나로 합치기도 힘들다.
• 컴파일러는 오류를 찾고, 사용하지 않는 재료를 삭제하고, 겹치는 작업을 하나로 합쳐서 최적화된
레시피를 만든다. 이것이 컴파일러 방식을 사용하는 이유이다.
1.3 알고리즘

1 알고리즘이란?

• 알고리즘을 프로그래밍 언어로 만든 결과물이 소스코드이다.


• 프로그래밍의 전체 과정은 ‘알고리즘 - 소스코드 만들기 - 컴파일 - 실행’이다.
• 알고리즘이 잘못되면, 원하는 결과물을 얻을 수 없다.
• 프로그래밍 전체 과정에서 가장 중요한 것은 알고리즘이다.
1.3 알고리즘

2 알고리즘 표현 방법?
1.3 알고리즘

> 자연어로 만든 알고리즘


1.3 알고리즘

> 순서도
1.3 알고리즘

> 순서도로 알고리즘 표현


1.3 알고리즘

> 유사코드
• 특별한 프로그램언어에 국한되지 않은 코드
1.4 컴퓨팅 사고

1 컴퓨팅 사고란?

• 문제를 해결하기 위해 논리적이고 창의적으로 생각하는 것을 컴퓨팅 사고


(Computational Thinking) 라 부른다.
• 컴퓨팅 사고는 컴퓨터가 효과적으로 수행할 수 있도록 문제를 정의하고 그에 대한
답을 찾는 것.
1.4 컴퓨팅 사고

예1) 구내식당에서 줄서기


• 구내식당에서 한식과 분식을 팔고 있다고 가정
• 한식은 이미 만들어진 재료를 담아주기 때문에 음식이 빨리 나오는 반면에, 분식은 라면을
끓이거나 만두를 튀겨야 하기 때문에 시간이 오래 걸린다. 이러한 상황에서 사람들을 한 줄로
세우는 것은 불편하다.
• 한식을 기다리는 줄과 분식을 기다리는 줄을 분리하면 분식 때문에 한식을 기다리는 사람이
시간을 낭비하는 것을 줄일 수 있다.
1.4 컴퓨팅 사고

예2) 사과 잼 공장
• 사과 잼 공장에서 사과 잼을 만들기 위해 사과를 가는 기계가 있다고 생각해 보자.
• 모터를 돌려서 사과를 잘게 부수는 작업은 매우 빠른 속도로 이루어진다. 이런 기계에
사과를 하나 씩 옮겨서 집어넣는 것은 매우 비효율적이다.
• 기계의 속도를 맞추려면 사과를 큰 바구니에 담아서 통째로 옮겨야 한다.
• 바구니를 버퍼(buffer) 라 부른다. 버퍼란 속도가 서로 다른 장치 사이에서 속도 차이를
완화시켜주는 장치이다.
1.4 컴퓨팅 사고

예3) 대박난 맛집
• 어느 중국집이 맛집으로 소문이 나서 이른 아침부터 손님들이 줄을 서기 시작했다. 주문이
밀려들다 보니 음식을 주문하고 30분이 지나야지만 음식을 맛볼 수 있다. 이 중국집 주인은
주방장을 더 채용하고 요리를 할 수 있는 주방을 하나 더 만들었다.
• 그러고 나니 15분 정도만 기다리면 음식을 맛볼 수 있게 되었다.
• 이것이 병렬처리이다. 병렬 처리란 여러 개의 작업을 동시에 처리하는 기법이다.
1.4 컴퓨팅 사고

2 컴퓨팅 사고의 구성

• 컴퓨팅 사고는 추상화(abstraction), 분해(decomposition), 패턴 인식(pattern recognition),


알고리즘(algorithm)으로 구성된다.
1.4 컴퓨팅 사고

추상화
• 추상화란 세부사항을 제거하여 간결하게 만드는 것
• 추상화는 불필요한 것을 제거함으로써 문제의 본질을 보다 정확하게 파악할 수 있게 해준다.
1.4 컴퓨팅 사고

분해
• 분해는 복잡한 문제를 풀기 쉬운 간단한 문제로 나누는 것
• 문제를 작은 문제로 분해하면 어떤 작업을 먼저 해야 하는지, 어떤 작업을 나중에 해야
하는지를 결정할 수 있다.
1.4 컴퓨팅 사고

패턴인식
• 패턴이란 동일한 것이 반복되는 것.
• 복잡한 문제를 분해하는 과정에서 유사한 특성을 발견할 수 있다. 컴퓨팅 사고에서
패턴 인식은 문제들에 적용 가능한 패턴을 찾아내는 과정이다.
• 패턴을 찾을 수 있다면 문제를 해결하기가 매우 쉬워진다.
1.4 컴퓨팅 사고

3 알고리즘 작성

3가지 제어 구조
• 순차 구조 - 어떤 일을 처리하는데 필요한 과정을 시간적인 순서에 따라 순차적으로 나타낸 구조.
기본적으로 작업은 위에서 아래로 한 줄씩 실행. 모든 알고리즘의 기본 구조.
• 조건선택 구조 - 특정 조건을 만족하는지, 안 하는지에 따라 다음 명령을 선택적으로 실행하는 구조
• 반복 구조 - 어떤 문제를 해결하기 위해 동일한 동작을 반복적으로 실행하는 구조
1.4 컴퓨팅 사고

조건선택 구조 예
1.4 컴퓨팅 사고

조건선택 구조 유사코드
1.4 컴퓨팅 사고

반복구조 예
1.4 컴퓨팅 사고

반복구조 유사코드

You might also like