36
CHAPTER 05 프로그래밍 IC & EPL 2013. 4 박남제 [email protected]

CHAPTER 05 프로그래밍 - infosec.jejunu.ac.krinfosec.jejunu.ac.kr/lecture/2014-1/ch-05.pdf · }프로그래밍언어(programming language) 기계어와자연언어의중간형태로고안된언어

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: CHAPTER 05 프로그래밍 - infosec.jejunu.ac.krinfosec.jejunu.ac.kr/lecture/2014-1/ch-05.pdf · }프로그래밍언어(programming language) 기계어와자연언어의중간형태로고안된언어

CHAPTER 05 프로그래밍

IC & EPL

2013. 4

박 남 제

[email protected]

Page 2: CHAPTER 05 프로그래밍 - infosec.jejunu.ac.krinfosec.jejunu.ac.kr/lecture/2014-1/ch-05.pdf · }프로그래밍언어(programming language) 기계어와자연언어의중간형태로고안된언어

프로그래밍이란

프로그래밍 언어

프로그램 구현 기법

프로그램 실행 과정

프로그래밍 절차

C로 작성한 프로그램 예

차례

2

Page 3: CHAPTER 05 프로그래밍 - infosec.jejunu.ac.krinfosec.jejunu.ac.kr/lecture/2014-1/ch-05.pdf · }프로그래밍언어(programming language) 기계어와자연언어의중간형태로고안된언어

3

SECTION 01 프로그래밍이란

Page 4: CHAPTER 05 프로그래밍 - infosec.jejunu.ac.krinfosec.jejunu.ac.kr/lecture/2014-1/ch-05.pdf · }프로그래밍언어(programming language) 기계어와자연언어의중간형태로고안된언어

프로그램(program)

사전적 의미: 지시 사항들이 나열된 순서

컴퓨터 프로그램(computer program)

컴퓨터에게 주어지는 일련의 명령문들

프로그래밍 언어(programming language)

프로그래밍(programming)

컴퓨터를 효율적으로 사용할 수 있도록 프로그램을 만드는

과정

01 프로그래밍이란

4

Page 5: CHAPTER 05 프로그래밍 - infosec.jejunu.ac.krinfosec.jejunu.ac.kr/lecture/2014-1/ch-05.pdf · }프로그래밍언어(programming language) 기계어와자연언어의중간형태로고안된언어

5

SECTION 02 프로그래밍 언어

Page 6: CHAPTER 05 프로그래밍 - infosec.jejunu.ac.krinfosec.jejunu.ac.kr/lecture/2014-1/ch-05.pdf · }프로그래밍언어(programming language) 기계어와자연언어의중간형태로고안된언어

프로그래밍 언어(programming language)

기계어와 자연 언어의 중간 형태로 고안된 언어

컴퓨터가 읽을 수 있고 사람이 읽을 수 있는 형식으로 계산

을 서술하기 위한 표기 체계

작성된 프로그램을 기계어로 번역해주는 프로그램 필요

02 프로그래밍 언어

6

Page 7: CHAPTER 05 프로그래밍 - infosec.jejunu.ac.krinfosec.jejunu.ac.kr/lecture/2014-1/ch-05.pdf · }프로그래밍언어(programming language) 기계어와자연언어의중간형태로고안된언어

저급 언어(low-level language)하드웨어에 의존적인 언어

기계어(machine language)

컴퓨터가 직접 이해할 수 있는 언어(0과 1의 이진수)

어셈블리어(assembly language)

기계어의 명령문을 기호로 나타낸 언어

어셈블러(assembler)를 이용하여 기계어로 번역함

고급 언어(high-level language) 사람 중심

C, C++, Java 등

컴파일러(compiler)를 이용하여 기계어로 번역함

2.1 프로그래밍 언어의 분류

7

Page 8: CHAPTER 05 프로그래밍 - infosec.jejunu.ac.krinfosec.jejunu.ac.kr/lecture/2014-1/ch-05.pdf · }프로그래밍언어(programming language) 기계어와자연언어의중간형태로고안된언어

2.2 프로그래밍 언어의 세대 구분

8

Page 9: CHAPTER 05 프로그래밍 - infosec.jejunu.ac.krinfosec.jejunu.ac.kr/lecture/2014-1/ch-05.pdf · }프로그래밍언어(programming language) 기계어와자연언어의중간형태로고안된언어

포트란(FORTRAN, FORmula TRANslation)1950년대 중반에 개발된 세계 최초의 고급 언어

삼각함수, 지수함수 등과 같은 기초적인 수학 함수들을 그대로 사용할 수 있는 언어

2.3 주요 프로그래밍 언어 (1/6)

9

Page 10: CHAPTER 05 프로그래밍 - infosec.jejunu.ac.krinfosec.jejunu.ac.kr/lecture/2014-1/ch-05.pdf · }프로그래밍언어(programming language) 기계어와자연언어의중간형태로고안된언어

코볼(COBOL, COmmon Business Oriented Language)

1960년에 개발된 사무 처리용 언어

네 개의 디비전(division)으로 구성

식별부(identification division)

표지부(environment division)

데이터부(data division)

절차부(procedure division)

2.3 주요 프로그래밍 언어 (2/6)

10

Page 11: CHAPTER 05 프로그래밍 - infosec.jejunu.ac.krinfosec.jejunu.ac.kr/lecture/2014-1/ch-05.pdf · }프로그래밍언어(programming language) 기계어와자연언어의중간형태로고안된언어

베이직(BASIC, Beginner’s All-purpose Symbolic Instruction Code)

1960년대 중반에 개발된 언어

배우기 쉽고 개인용 컴퓨터에서 사용하기 쉬움

2.3 주요 프로그래밍 언어 (3/6)

11

Page 12: CHAPTER 05 프로그래밍 - infosec.jejunu.ac.krinfosec.jejunu.ac.kr/lecture/2014-1/ch-05.pdf · }프로그래밍언어(programming language) 기계어와자연언어의중간형태로고안된언어

CCPL, BCPL, B를 기본으로 하여 1970년대에 만들어진 언어

다양한 종류의 컴퓨터에 이식 가능

2.3 주요 프로그래밍 언어 (4/6)

12

Page 13: CHAPTER 05 프로그래밍 - infosec.jejunu.ac.krinfosec.jejunu.ac.kr/lecture/2014-1/ch-05.pdf · }프로그래밍언어(programming language) 기계어와자연언어의중간형태로고안된언어

C++1980년대 중반에 C의 특성을 개선하고 객체 지향 프로그래밍(OOP, Object Oriented Programing)을 지원할 수 있도록 확장하는 방향으로 개발된 언어

2.3 주요 프로그래밍 언어 (5/6)

13

Page 14: CHAPTER 05 프로그래밍 - infosec.jejunu.ac.krinfosec.jejunu.ac.kr/lecture/2014-1/ch-05.pdf · }프로그래밍언어(programming language) 기계어와자연언어의중간형태로고안된언어

Java선(Sun)사는 오크(Oak) 언어를 인터넷에서 각광을 받고 있는 WWW에 적용하여 Java라는 이름으로 바꾸어 개발

방대한 양의 API(Application Programming Interface)를 보유함

2.3 주요 프로그래밍 언어 (6/6)

14

Page 15: CHAPTER 05 프로그래밍 - infosec.jejunu.ac.krinfosec.jejunu.ac.kr/lecture/2014-1/ch-05.pdf · }프로그래밍언어(programming language) 기계어와자연언어의중간형태로고안된언어

15

SECTION 03 프로그램 구현 기법

Page 16: CHAPTER 05 프로그래밍 - infosec.jejunu.ac.krinfosec.jejunu.ac.kr/lecture/2014-1/ch-05.pdf · }프로그래밍언어(programming language) 기계어와자연언어의중간형태로고안된언어

번역 기법(translation)원시 프로그램을 컴퓨터가 이해할 수 있는 기계어로 번역하여 목적 프로그램(object program)으로 만드는 방법

어셈블러(assembler)

컴파일러(compiler)

3.1 번역 기법

16

Page 17: CHAPTER 05 프로그래밍 - infosec.jejunu.ac.krinfosec.jejunu.ac.kr/lecture/2014-1/ch-05.pdf · }프로그래밍언어(programming language) 기계어와자연언어의중간형태로고안된언어

인터프리터(interpreter)베이직과 같은 고급 언어로 작성된 원시 프로그램을 명령문단위로 하나씩 읽어서 기계어로 번역한 후에 바로 실행되도록 함

3.2 인터프리터 기법

17

Page 18: CHAPTER 05 프로그래밍 - infosec.jejunu.ac.krinfosec.jejunu.ac.kr/lecture/2014-1/ch-05.pdf · }프로그래밍언어(programming language) 기계어와자연언어의중간형태로고안된언어

하이브리드(hybrid) 기법번역 기법과 인터프리터 기법 모두를 사용하는 기법

(예) 네트워크를 통한 Java 프로그램 실행 과정

3.3 하이브리드 기법

18

Page 19: CHAPTER 05 프로그래밍 - infosec.jejunu.ac.krinfosec.jejunu.ac.kr/lecture/2014-1/ch-05.pdf · }프로그래밍언어(programming language) 기계어와자연언어의중간형태로고안된언어

19

SECTION 04 프로그램 실행 과정

Page 20: CHAPTER 05 프로그래밍 - infosec.jejunu.ac.krinfosec.jejunu.ac.kr/lecture/2014-1/ch-05.pdf · }프로그래밍언어(programming language) 기계어와자연언어의중간형태로고안된언어

04 프로그램 실행 과정

20

Page 21: CHAPTER 05 프로그래밍 - infosec.jejunu.ac.krinfosec.jejunu.ac.kr/lecture/2014-1/ch-05.pdf · }프로그래밍언어(programming language) 기계어와자연언어의중간형태로고안된언어

코딩(coding)원시 프로그램을 작성하는 과정

문서 편집기(text editor) 사용

4.1 프로그램 작성

21

Page 22: CHAPTER 05 프로그래밍 - infosec.jejunu.ac.krinfosec.jejunu.ac.kr/lecture/2014-1/ch-05.pdf · }프로그래밍언어(programming language) 기계어와자연언어의중간형태로고안된언어

목적 파일(object file) 생성

4.2 컴파일

22

Page 23: CHAPTER 05 프로그래밍 - infosec.jejunu.ac.krinfosec.jejunu.ac.kr/lecture/2014-1/ch-05.pdf · }프로그래밍언어(programming language) 기계어와자연언어의중간형태로고안된언어

링크따로 작성되거나 컴파일된 파일들을 모아 실행 가능한 하나의 단위로 만들어진 프로그램으로 연결하는 과정

실행 파일(executable file) 생성

4.3 링크

23

Page 24: CHAPTER 05 프로그래밍 - infosec.jejunu.ac.krinfosec.jejunu.ac.kr/lecture/2014-1/ch-05.pdf · }프로그래밍언어(programming language) 기계어와자연언어의중간형태로고안된언어

실행 결과 확인

4.4 실행 결과

24

Page 25: CHAPTER 05 프로그래밍 - infosec.jejunu.ac.krinfosec.jejunu.ac.kr/lecture/2014-1/ch-05.pdf · }프로그래밍언어(programming language) 기계어와자연언어의중간형태로고안된언어

25

SECTION 05 프로그래밍 절차

Page 26: CHAPTER 05 프로그래밍 - infosec.jejunu.ac.krinfosec.jejunu.ac.kr/lecture/2014-1/ch-05.pdf · }프로그래밍언어(programming language) 기계어와자연언어의중간형태로고안된언어

05 프로그래밍 절차

26

Page 27: CHAPTER 05 프로그래밍 - infosec.jejunu.ac.krinfosec.jejunu.ac.kr/lecture/2014-1/ch-05.pdf · }프로그래밍언어(programming language) 기계어와자연언어의중간형태로고안된언어

해결해야 할 문제를 정확하게 이해하는 단계

프로그램 사용자 파악

컴퓨터로 처리 가능한지의 여부 결정

입 출력 데이터의 내용과 형식 등 결정

5.1 문제 분석

27

Page 28: CHAPTER 05 프로그래밍 - infosec.jejunu.ac.krinfosec.jejunu.ac.kr/lecture/2014-1/ch-05.pdf · }프로그래밍언어(programming language) 기계어와자연언어의중간형태로고안된언어

알고리즘(algorithm)문제를 해결하기 위한 방법과 절차

순서도(flowchart) 등을 사용하여 설계순서도(flowchart)

처리할 일의 내용과 흐름을 약속된 기호로 간결하게 나타내는 그림

5.2 알고리즘 설계 (1/2)

28

Page 29: CHAPTER 05 프로그래밍 - infosec.jejunu.ac.krinfosec.jejunu.ac.kr/lecture/2014-1/ch-05.pdf · }프로그래밍언어(programming language) 기계어와자연언어의중간형태로고안된언어

구조적 프로그래밍(structured programming)하향식 설계(top-down design) 방법, 모듈화, 제어 구조(control structure)를 사용하여 작성하는 방식

세 가지 기본적인 제어 구조

5.2 알고리즘 설계 (2/2)

29

Page 30: CHAPTER 05 프로그래밍 - infosec.jejunu.ac.krinfosec.jejunu.ac.kr/lecture/2014-1/ch-05.pdf · }프로그래밍언어(programming language) 기계어와자연언어의중간형태로고안된언어

설계된 알고리즘에 따라 적합한 프로그래밍 언어를

선택하여 코딩(coding) 함

컴파일 과정을 거치면서 구문 오류(syntax error)가

발생하면 수정하고 다시 컴파일 과정을 반복함

모의 실행을 통해 논리 오류(logical error)를 수정함

5.3 프로그램 구현

30

Page 31: CHAPTER 05 프로그래밍 - infosec.jejunu.ac.krinfosec.jejunu.ac.kr/lecture/2014-1/ch-05.pdf · }프로그래밍언어(programming language) 기계어와자연언어의중간형태로고안된언어

프로그램의 문서화(program documentation)

하드웨어와 소프트웨어의 요구 사항, 입 출력과 프로그램

파일 관리 등 프로그램 운영에 필요한 모든 사항을 문서로

정리하여 기록하는 작업

유지 보수(maintenance)

프로그램을 항상 오류가 없는 상태, 최신의 상태로 유지하

기 위한 활동

5.4 프로그램 문서화 및 유지 보수

31

Page 32: CHAPTER 05 프로그래밍 - infosec.jejunu.ac.krinfosec.jejunu.ac.kr/lecture/2014-1/ch-05.pdf · }프로그래밍언어(programming language) 기계어와자연언어의중간형태로고안된언어

32

SECTION 06 C로 작성한 프로그램 예

Page 33: CHAPTER 05 프로그래밍 - infosec.jejunu.ac.krinfosec.jejunu.ac.kr/lecture/2014-1/ch-05.pdf · }프로그래밍언어(programming language) 기계어와자연언어의중간형태로고안된언어

프로그램

출력 결과

6.1 세 과목의 점수를 출력하는 프로그램

33

Page 34: CHAPTER 05 프로그래밍 - infosec.jejunu.ac.krinfosec.jejunu.ac.kr/lecture/2014-1/ch-05.pdf · }프로그래밍언어(programming language) 기계어와자연언어의중간형태로고안된언어

프로그램

출력 결과

6.2 세 과목의 점수를 입력받고 총점을 출력하는 프로그램

34

Page 35: CHAPTER 05 프로그래밍 - infosec.jejunu.ac.krinfosec.jejunu.ac.kr/lecture/2014-1/ch-05.pdf · }프로그래밍언어(programming language) 기계어와자연언어의중간형태로고안된언어

프로그램

출력 결과

6.3 세 학생의 점수를 입력받고 총점을 출력하는 프로그램

35

Page 36: CHAPTER 05 프로그래밍 - infosec.jejunu.ac.krinfosec.jejunu.ac.kr/lecture/2014-1/ch-05.pdf · }프로그래밍언어(programming language) 기계어와자연언어의중간형태로고안된언어

The End