• 검색 결과가 없습니다.

제 1 장 프로그래밍의 개념

N/A
N/A
Protected

Academic year: 2021

Share "제 1 장 프로그래밍의 개념"

Copied!
39
0
0

로드 중.... (전체 텍스트 보기)

전체 글

(1)

쉽게 풀어쓴 C 언어 Express 쉽게 풀어쓴 C 언어 Express

C Express

제 1 장 프로그래밍의 개념

(2)

컴퓨터 프로그래밍 기초

컴퓨터란 ?

Q)

컴퓨터 (computer) 는 무엇인가 ?

A)

컴퓨터는 기본적으로 계산 (compute) 하는 기계

Q)

컴퓨터를 이용하여 데이터를 처리하려면 반드시 데이터가 숫자 형태이어야 한다 . 왜 ?

A)

컴퓨터는 숫자 계산을 하기 때문에 데이터는 숫자 로 표시되어야 한다 .

2

(3)

컴퓨터의 계산 능력

Q)

컴퓨터가 계산을 빠르게 할 수 있는 이유는 ?

A)

전자 회로를 이용하여 계산을 하기 때문이다 .

Q)

전자 회로를 이용하여 계산을 하려면 어떤 진법을 사용 ?

A)

이진수를 사용하여야 한다 . 이진수가 전자 회로로

나타내기가 가장 쉽기 때문이다 .

(4)

컴퓨터 프로그래밍 기초

이진수

Q)

이진수는 십진수와 무엇이 다른가 ?

A)

이진수는 0 과 1 로만 구성되어 있다 .

Q)

십진수를 이진수로 바꾸려면 ?

A)

십진수를 이진수로 바꾸려면 십진수를 2 로 나누고 나 머지를 기록하는 작업을 몫이 0 이 될 때까지 되풀이하 면 된다 .

4

(5)

비트와 바이트

Q)

비트 (bit) 란 무엇인가 ?

A)

이진수의 하나의 자리수를 의미한다 .

바이너리 디지트 (binary digit) 의 약자이다 .

Q)

바이트 (byte) 란 무엇인가 ?

A) 8

개의 비트를 모은 것을 바이트라고 한다 .

Q)

워드 (word) 란 무엇인가 ?

A)

바이트가 4 개 모인 것 .

시스템에 따라서 정의가 달라질 수도 있다 .

(6)

컴퓨터 프로그래밍 기초

비트의 표현

Q)

비트는 컴퓨터 내부에서 구체적으로 어떻게 표현되는가 ?

A)

이진수의 0 은 열린 스위치로 , 이진수의 1 은 닫친 스 위치로 표현된다 .

6

(7)

컴퓨터의 구성 요소

Q)

컴퓨터의 구성 요소를 크게 2 가지로 분류하면 ?

A)

컴퓨터는 기본적으로 하드웨어와 소프트웨어로 구분

(8)

컴퓨터 프로그래밍 기초

하드웨어

Q)

하드웨어는 어떻게 분류할 수 있는가 ?

8

(9)

소프트웨어

Q)

소프트웨어는 어떻게 분류할 수 있는가 ?

소프트웨어 소프트웨어

시스템 소프트웨어 시스템 소프트웨어

응용 소프트웨어 응용 소프트웨어

: 운영체제 , 컴파일러 , 어셈블 러 , 링커 , 로더 , 프로그래밍 도 구 등

: 워드 프로세서 , 스프레드 쉬트 , 그래픽 프로그램 , 미디어 재생기 등

(10)

컴퓨터 프로그래밍 기초

프로그램

Q) 왜 컴퓨터에서는 가전제품처럼 프로그램 설치 없이 바로 동 작되도록 하지 않고 불편하게 사용자가 프로그램을 설치하게 하였을까 ?

A) 컴퓨터를 범용적인 기계로 만들기 위해서이다 . 컴퓨터 는 프로그램만 바꾸어주면 다양한 작업을 할 수 있다 .

10

(11)

기계어

Q) 컴퓨터가 이해할 수 있는 언어는 어떤 것인가 ?

A) 컴퓨터가 알아듣는 언어는 한가지이다 . 즉 0 과 1 로 구성되어 있는 “ 001101110001010...” 과 같은 기계 어이다 .

A) 컴퓨터는 모든 것을 0 과 1 로 표현하고 0 과 1 에 의하여 내부 스위 치 회로들이 ON/OFF 상태로 변경되면서 작 업을 한다 .

(12)

컴퓨터 프로그래밍 기초

프로그래밍 언어의 필요성

Q) 그렇다면 인간이 기계어를 사용하면 어떤가 ?

• 기계어를 사용할 수는 있으나 이진수로 프로그램을 작 성하여야 하기 때문에 아주 불편하다 .

• 프로그래밍 언어는 자연어와 기계어 중간쯤에 위치

• 컴파일러가 프로그래밍 언어를 기계어로 통역

12

(13)

프로그램의 역할

Q) 컴퓨터에서 프로그램이 하는 일은 무엇인가 ?

A) 프로그램이란 우리가 하고자 하는 작업을 컴퓨터에게 전달하여 주는 역할을 한다 .

(14)

컴퓨터 프로그래밍 기초

작업을 지시하는 방법

Q)

컴퓨터에게 적당히 작업을 시킬 수 있을까 ?

A)

상식이나 지능이 없기 때문에 아주 자세하고 구체적으 로 일을 지시하여야 한다 .

14

(15)

프로그래밍 언어의 분류

·

기계어 (machine language)

·

어셈블리어 (assembly language)

·

고급 언어 (high-level language)

기계어 어셈블리어 고급언어

컴퓨터 인간

(16)

컴퓨터 프로그래밍 기초

기계어

·

특정 컴퓨터의 명령어 (instruction) 를 이진수로 표시한 것

·

0 과 1 로 구성

·

하드웨어에 종속

00001111 10111111 01000101 11111000 00001111 10111111 01001101 11111000 00000011 10100001

01100110 10001001 01000101 11111010

16

(17)

어셈블리어

·

CPU 의 명령어들을 이진수가 아닌 영어의 약자인 기호로 표기

·

기계어보다는 더 높은 수준에서 프로그램을 작성하는 것을 가능

·

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

·

어셈블러 (assembler): 기호를 이진수로 변환하는 프로그램

MOV AX, MIDSCORE MOV CX, FINALSCORE ADD AX CX

MOV TOTALSCORE, AX

(18)

컴퓨터 프로그래밍 기초

고급언어

·

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

·

C, C++, JAVA, FORTRAN, PASCAL

·

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

TotalScore = MidScore + FinalScore;

18

(19)

C

·

1970 년대 초 AT&T 의

Dennis Ritchie

에 의하여 개발

·

B 언어  C 언어

·

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

·

처음부터 전문가용 언어로 출발

Ken Thomson

과 Dennis

Ritchie

가 클린턴 대통령으로

부터 National Medal of

(20)

컴퓨터 프로그래밍 기초

C 언어의 특징

·

간결하다 .

·

효율적이다 .

·

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

·

 C 언어는 이식성이 뛰어나다 .

·

초보자가 배우기가 어렵다 .

20

(21)

C 언어의 특징

(22)

컴퓨터 프로그래밍 기초

C 언어의 미래

Q)

앞으로도 C 언어는 사용될 것인가 ?

C

언어는 C++ 와 JAVA 의 공통적인 부분이다 .

엠베디드 시스템에서는 C 언어가 많이 사용된다 .

사실 , 스마트폰 시스템 S/W 도 C 언어로 되어 있 다 .

엠베디드 시스템 : 엠베디드 시스템이란 특수 목적의 시스 템으로 컴퓨터가 장치 안에

MP3

플레이어 , 핸드폰등이 여기에 속한다 .

22

(23)

알고리즘

Q)

오븐의 사용법만 배우고 음식 재 료만 있으면 누구나 요리가 가능한 가 ?

A)

요리법을 알아야 한다 .

·

프로그램이 요리와 같다면 알 고리즘은 요리법에 해당한다 .

·

알고리즘 (algorithm): 문제를 해결하는 절차 ( 방법 )

(24)

컴퓨터 프로그래밍 기초

1 부터 10 까지의 합을 구하는 알고리 즘

24

(25)

알고리즘의 기술

1.

영어와 국어와 같은 자연어

2.

순서도 (flowchart)

3.

의사 코드 (pseudo-code)

·

예제 : 숫자들의 리스트에서 최대값을 구하는 문제

컴퓨터앞에 바로 앉지말 고 알고리즘 을 구상하여 야 합니다.

12 26

35 최대값

(26)

컴퓨터 프로그래밍 기초

자연어

·

자연어 (natural language) 는 인간이 사용하는 언어

·

단어들을 명백하게 정의해야 한다 .

 1. 리스트의 첫 번째 숫자가 가장 크다고 가정하자 . 

 2. 리스트의 남아있는 숫자들이 하나씩 조사하여 현재의 최대값보다

크면 노트에 적는다 . 

 3. 모든 숫자들을 전부 조사된 후에 노트에 가장 나중에 적힌 숫자가 최

대값이 된다 . 

26

(27)

순서도

·

프로그램에서의 논리순 서 또는 작업순서 등을 그래픽으로 표현하기 위 한 형식

·

알고리즘이 복잡하면 기 술하기가 힘들어진다 .

(28)

컴퓨터 프로그래밍 기초

의사 코드

·

자연어보다는 더 체계적이고 프로그래밍 언어보다는 덜 엄격한 언 어로서 알고리즘의 표현에 주로 사용되는 코드

알고리즘 GetLargest 

입력 :  숫자들의 리스트 L 출력 :  리스트에서 가장 큰 값

  largest ←L[0]

  for each n in L do      if n > largest  then        largest ← n 

  return largest 

알고리즘 GetLargest 

입력 :  숫자들의 리스트 L 출력 :  리스트에서 가장 큰 값

  largest ←L[0]

  for each n in L do      if n > largest  then        largest ← n 

  return largest 

28

(29)

알고리즘을 만드는 방법

문제를 한 번에 해결하려고 하지 말고 더 작은 크기의 문제들로 분해한다 . 문제가 충분히 작아질 때까지 계속해서 분해한다 .

문제를 한 번에 해결하려고 하지 말고 더 작은 크기의 문제들로 분해한다 . 문제가 충분히 작아질 때까지 계속해서 분해한다 .

( 예 )  주어진 정수 k 가 소수 (prime) 인가 아닌가를 판별하는 알고리즘을 만들어보자 . 

문제 : 주어진 정수 k 가 소수인지를 판별하라 문제 : 주어진 정수 k 가 소수인지를 판별하라

STEP 1: 정수 k 의 약수 의 개수를 구한다 . STEP 1: 정수 k 의 약수 의 개수를 구한다 .

STEP 1-1: 정수 k 를 1 로 나누어서 떨어지면 약 수의 개수를 증가

STEP 1-1: 정수 k 를 1 로 나누어서 떨어지면 약 수의 개수를 증가

STEP 1-2: 정수 k 를 2 로 나누어서 떨어지면 약 수의 개수를 증가

STEP 1-2: 정수 k 를 2 로 나누어서 떨어지면 약 수의 개수를 증가

STEP 1-k: 정수 k 를 k 로 나누어서 떨어지면 약 수의 개수를 증가

STEP 1-k: 정수 k 를 k 로 나누어서 떨어지면 약 수의 개수를 증가

...

(30)

컴퓨터 프로그래밍 기초

프로그램 개발 과정

규모가 큰 프 로그래밍은 절차를 따라 야 합니다 .

요구사항분석 요구사항분석

알고리즘의 개발 알고리즘의 개발

코딩코딩

컴파일과 링크 컴파일과 링크

실행과 디버깅 실행과 디버깅

유지보수유지보수

30

(31)

요구 사항 분석

·

프로그래머는 사용자들의 요구사항을 만족시키기 위하여 프로그램 을 작성

·

( 예 ) 3 년 이상 근무한 직원들의 리스트 출력

·

정규직만 or 계약직 포함

·

기준이 되는 날짜가 오늘 ?

·

요구 사항 명세서 : 사용자의 요구 조건을 만족하도록 소프트웨어가 갖는 기능 및 제약 조건 , 성능 목표 등을 포함

요구 사항을 정리하였습니 다. 이 정도면

될까요?

가계부 프로그 램이 필요합니

다.

(32)

컴퓨터 프로그래밍 기초

알고리즘의 개발

·

핵심적인 부분

·

어떤 단계를 밟아서 어떤 순서로 작업을 처리할 것인지를 설계

·

순서도와 의사 코드를 도구로 사용

·

알고리즘은 프로그래밍 언어와는 무관

·

알고리즘은 원하는 결과를 얻기 위하여 밟아야 하는 단계에 집중적 으로 초점을 맞추는 것

프로그램을 작 성하기 전에 먼 저 알고리즘을 구상합니다.

32

(33)

코딩

·

알고리즘의 각 단계를 프로그래밍 언어를 이용하여 기술

·

어떤 프로그래밍 언어로도 가능

·

알고리즘을 프로그래밍 언어의 문법에 맞추어 기술한 것을 소스 프 로그램

(source program)

·

소스 프로그램은 주로 텍스트 에디터나 통합 개발 환경을 이용하여 작성

·

(Q) 알고리즘 개발과 코딩 중 어떤 것이 더 어려울까 ?

·

. 드디어 코

딩을 시작 합니다.

(A) 알고리즘 개발이 더 창의적인 작업이고 더 어렵다

(34)

컴퓨터 프로그래밍 기초

컴파일

·

소스 프로그램을 목적 프로그램으로 변환하는 작업

·

컴파일러가 수행

·

컴파일 오류 : 문법 오류

·

( 예 ) He go to school;

·

오류가 발생하면 소스 프로그램을 수정한 후에 다시 컴파일

They goesto school.

....

영어 한국어

번역가 문장에 오 류가 있습

니다.

34

(35)

링크

·

컴파일된 목적 프로그램을 라이브러리와 연결하여 실행 프로그램을 작성하는 것

·

라이브러리

(library):

프로그래머들이 많이 사용되는 기능을 미리 작성해 놓은 것

·

( 예 ) 입출력 기능 , 파일 처리 , 수학 함수 계산

·

링크를 수행하는 프로그램을 링커

(linker

) 라고 한다 .

Hello!

(36)

컴퓨터 프로그래밍 기초

실행 및 디버깅

·

실행 파일 : 실행 파일은 윈도우즈에서는 .exe 라는 확장자

·

실행 시간 오류 (run time error):

·

0 으로 나누는 것

·

잘못된 메모리 주소에 접근하는 것

·

논리 오류 (logical error):

·

  문법은 틀리지 않았으나 논리적으로 정확하지 않는 것

·

( 예 )

① 그릇 1 과 그릇 2 를 준비한다 .

② 그릇 1 에 밀가루 , 우유 , 계란을 넣고 잘 섞는다 .

그릇 2 를 오븐에 넣고 30 분 동안 350 도로 굽는다 .

36

(37)

디버깅

·

소스에 존재하는 오류를 잡는 것

(38)

컴퓨터 프로그래밍 기초

소프트웨어의 유지 보수

·

소프트웨어의 유지 보수가 필요한 이유

·

디버깅 후에도 버그가 남아 있을 수 있기 때문

·

소프트웨어가 개발된 다음에 사용자의 요구가 추가될 수 있기 때 문

·

유지 보수 비용이 전체 비용의 50% 이상을 차지

38

(39)

Q & A

참조

관련 문서

자유롭게 사용할 권리를 침해하는 것이다. 분배정의의 두가지 조건을 제시.. 소득재분배 반대의 철학적 기초: Robert Nozick.. 분배정의의 두가지 조건을

비교적 사람도 잘 이해할 수 있고 쉽게 기계의 언어로 변형할 수 있는 언어 컴파일러란 중간 언어로 작성된 명령을 기계의

디지털 녹음과 분석을 위한 기본적인 개념을 이해한다(표본화, 양자화, Nyquist 주파수)..2. 디지털 신호의

실험마다 나타나는 빨간 구슬의 수는 7개를 한계로 해서 그 이상 나타나는 일이 아주 드물다... • 통계적 품질관리

③특정한 컴퓨터 외에는 이용할 수 없는 프로그램을 다른 컴퓨터에 이용 할 수 있도록 하기 위하여 필요한 범위에서의 변경.. ④프로그램을 특정한 컴퓨터에 보다 효과적으로

이 연구문제의 해결방법은 2가지 즉 하나는 모집단 모두를 측정하여 평균을 구하는 방법, 다른 하나는 모집단을 대표할 학생을 뽑아서 평균을 구한

이차 개념(다른 개념에서 추상된 개념).. 수학 기초 체계와 표기를 적절한 수학적 아이디어와 관 련 짓는 능력.. 즉, 받아들이기가 관계적 이해보다 수월.. • 직관적

• 경쟁자를 이기는데 집중하지 않고, 고객과 회사를 위한 가치 도약을 이뤄 새로운 비경 쟁 시장 공간을 창출함으로써 경쟁 자체에서 벗어 난다.. •