chapter 05 프로그래밍 - infosec.jejunu.ac.krinfosec.jejunu.ac.kr/lecture/2014-1/ch-05.pdf ·...
TRANSCRIPT
![Page 2: CHAPTER 05 프로그래밍 - infosec.jejunu.ac.krinfosec.jejunu.ac.kr/lecture/2014-1/ch-05.pdf · }프로그래밍언어(programming language) 기계어와자연언어의중간형태로고안된언어](https://reader030.vdocuments.mx/reader030/viewer/2022041216/5e049bdbd774cf41b95ded06/html5/thumbnails/2.jpg)
프로그래밍이란
프로그래밍 언어
프로그램 구현 기법
프로그램 실행 과정
프로그래밍 절차
C로 작성한 프로그램 예
차례
2
![Page 3: CHAPTER 05 프로그래밍 - infosec.jejunu.ac.krinfosec.jejunu.ac.kr/lecture/2014-1/ch-05.pdf · }프로그래밍언어(programming language) 기계어와자연언어의중간형태로고안된언어](https://reader030.vdocuments.mx/reader030/viewer/2022041216/5e049bdbd774cf41b95ded06/html5/thumbnails/3.jpg)
3
SECTION 01 프로그래밍이란
![Page 4: CHAPTER 05 프로그래밍 - infosec.jejunu.ac.krinfosec.jejunu.ac.kr/lecture/2014-1/ch-05.pdf · }프로그래밍언어(programming language) 기계어와자연언어의중간형태로고안된언어](https://reader030.vdocuments.mx/reader030/viewer/2022041216/5e049bdbd774cf41b95ded06/html5/thumbnails/4.jpg)
프로그램(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) 기계어와자연언어의중간형태로고안된언어](https://reader030.vdocuments.mx/reader030/viewer/2022041216/5e049bdbd774cf41b95ded06/html5/thumbnails/5.jpg)
5
SECTION 02 프로그래밍 언어
![Page 6: CHAPTER 05 프로그래밍 - infosec.jejunu.ac.krinfosec.jejunu.ac.kr/lecture/2014-1/ch-05.pdf · }프로그래밍언어(programming language) 기계어와자연언어의중간형태로고안된언어](https://reader030.vdocuments.mx/reader030/viewer/2022041216/5e049bdbd774cf41b95ded06/html5/thumbnails/6.jpg)
프로그래밍 언어(programming language)
기계어와 자연 언어의 중간 형태로 고안된 언어
컴퓨터가 읽을 수 있고 사람이 읽을 수 있는 형식으로 계산
을 서술하기 위한 표기 체계
작성된 프로그램을 기계어로 번역해주는 프로그램 필요
02 프로그래밍 언어
6
![Page 7: CHAPTER 05 프로그래밍 - infosec.jejunu.ac.krinfosec.jejunu.ac.kr/lecture/2014-1/ch-05.pdf · }프로그래밍언어(programming language) 기계어와자연언어의중간형태로고안된언어](https://reader030.vdocuments.mx/reader030/viewer/2022041216/5e049bdbd774cf41b95ded06/html5/thumbnails/7.jpg)
저급 언어(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) 기계어와자연언어의중간형태로고안된언어](https://reader030.vdocuments.mx/reader030/viewer/2022041216/5e049bdbd774cf41b95ded06/html5/thumbnails/8.jpg)
2.2 프로그래밍 언어의 세대 구분
8
![Page 9: CHAPTER 05 프로그래밍 - infosec.jejunu.ac.krinfosec.jejunu.ac.kr/lecture/2014-1/ch-05.pdf · }프로그래밍언어(programming language) 기계어와자연언어의중간형태로고안된언어](https://reader030.vdocuments.mx/reader030/viewer/2022041216/5e049bdbd774cf41b95ded06/html5/thumbnails/9.jpg)
포트란(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) 기계어와자연언어의중간형태로고안된언어](https://reader030.vdocuments.mx/reader030/viewer/2022041216/5e049bdbd774cf41b95ded06/html5/thumbnails/10.jpg)
코볼(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) 기계어와자연언어의중간형태로고안된언어](https://reader030.vdocuments.mx/reader030/viewer/2022041216/5e049bdbd774cf41b95ded06/html5/thumbnails/11.jpg)
베이직(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) 기계어와자연언어의중간형태로고안된언어](https://reader030.vdocuments.mx/reader030/viewer/2022041216/5e049bdbd774cf41b95ded06/html5/thumbnails/12.jpg)
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) 기계어와자연언어의중간형태로고안된언어](https://reader030.vdocuments.mx/reader030/viewer/2022041216/5e049bdbd774cf41b95ded06/html5/thumbnails/13.jpg)
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) 기계어와자연언어의중간형태로고안된언어](https://reader030.vdocuments.mx/reader030/viewer/2022041216/5e049bdbd774cf41b95ded06/html5/thumbnails/14.jpg)
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) 기계어와자연언어의중간형태로고안된언어](https://reader030.vdocuments.mx/reader030/viewer/2022041216/5e049bdbd774cf41b95ded06/html5/thumbnails/15.jpg)
15
SECTION 03 프로그램 구현 기법
![Page 16: CHAPTER 05 프로그래밍 - infosec.jejunu.ac.krinfosec.jejunu.ac.kr/lecture/2014-1/ch-05.pdf · }프로그래밍언어(programming language) 기계어와자연언어의중간형태로고안된언어](https://reader030.vdocuments.mx/reader030/viewer/2022041216/5e049bdbd774cf41b95ded06/html5/thumbnails/16.jpg)
번역 기법(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) 기계어와자연언어의중간형태로고안된언어](https://reader030.vdocuments.mx/reader030/viewer/2022041216/5e049bdbd774cf41b95ded06/html5/thumbnails/17.jpg)
인터프리터(interpreter)베이직과 같은 고급 언어로 작성된 원시 프로그램을 명령문단위로 하나씩 읽어서 기계어로 번역한 후에 바로 실행되도록 함
3.2 인터프리터 기법
17
![Page 18: CHAPTER 05 프로그래밍 - infosec.jejunu.ac.krinfosec.jejunu.ac.kr/lecture/2014-1/ch-05.pdf · }프로그래밍언어(programming language) 기계어와자연언어의중간형태로고안된언어](https://reader030.vdocuments.mx/reader030/viewer/2022041216/5e049bdbd774cf41b95ded06/html5/thumbnails/18.jpg)
하이브리드(hybrid) 기법번역 기법과 인터프리터 기법 모두를 사용하는 기법
(예) 네트워크를 통한 Java 프로그램 실행 과정
3.3 하이브리드 기법
18
![Page 19: CHAPTER 05 프로그래밍 - infosec.jejunu.ac.krinfosec.jejunu.ac.kr/lecture/2014-1/ch-05.pdf · }프로그래밍언어(programming language) 기계어와자연언어의중간형태로고안된언어](https://reader030.vdocuments.mx/reader030/viewer/2022041216/5e049bdbd774cf41b95ded06/html5/thumbnails/19.jpg)
19
SECTION 04 프로그램 실행 과정
![Page 20: CHAPTER 05 프로그래밍 - infosec.jejunu.ac.krinfosec.jejunu.ac.kr/lecture/2014-1/ch-05.pdf · }프로그래밍언어(programming language) 기계어와자연언어의중간형태로고안된언어](https://reader030.vdocuments.mx/reader030/viewer/2022041216/5e049bdbd774cf41b95ded06/html5/thumbnails/20.jpg)
04 프로그램 실행 과정
20
![Page 21: CHAPTER 05 프로그래밍 - infosec.jejunu.ac.krinfosec.jejunu.ac.kr/lecture/2014-1/ch-05.pdf · }프로그래밍언어(programming language) 기계어와자연언어의중간형태로고안된언어](https://reader030.vdocuments.mx/reader030/viewer/2022041216/5e049bdbd774cf41b95ded06/html5/thumbnails/21.jpg)
코딩(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) 기계어와자연언어의중간형태로고안된언어](https://reader030.vdocuments.mx/reader030/viewer/2022041216/5e049bdbd774cf41b95ded06/html5/thumbnails/22.jpg)
목적 파일(object file) 생성
4.2 컴파일
22
![Page 23: CHAPTER 05 프로그래밍 - infosec.jejunu.ac.krinfosec.jejunu.ac.kr/lecture/2014-1/ch-05.pdf · }프로그래밍언어(programming language) 기계어와자연언어의중간형태로고안된언어](https://reader030.vdocuments.mx/reader030/viewer/2022041216/5e049bdbd774cf41b95ded06/html5/thumbnails/23.jpg)
링크따로 작성되거나 컴파일된 파일들을 모아 실행 가능한 하나의 단위로 만들어진 프로그램으로 연결하는 과정
실행 파일(executable file) 생성
4.3 링크
23
![Page 24: CHAPTER 05 프로그래밍 - infosec.jejunu.ac.krinfosec.jejunu.ac.kr/lecture/2014-1/ch-05.pdf · }프로그래밍언어(programming language) 기계어와자연언어의중간형태로고안된언어](https://reader030.vdocuments.mx/reader030/viewer/2022041216/5e049bdbd774cf41b95ded06/html5/thumbnails/24.jpg)
실행 결과 확인
4.4 실행 결과
24
![Page 25: CHAPTER 05 프로그래밍 - infosec.jejunu.ac.krinfosec.jejunu.ac.kr/lecture/2014-1/ch-05.pdf · }프로그래밍언어(programming language) 기계어와자연언어의중간형태로고안된언어](https://reader030.vdocuments.mx/reader030/viewer/2022041216/5e049bdbd774cf41b95ded06/html5/thumbnails/25.jpg)
25
SECTION 05 프로그래밍 절차
![Page 26: CHAPTER 05 프로그래밍 - infosec.jejunu.ac.krinfosec.jejunu.ac.kr/lecture/2014-1/ch-05.pdf · }프로그래밍언어(programming language) 기계어와자연언어의중간형태로고안된언어](https://reader030.vdocuments.mx/reader030/viewer/2022041216/5e049bdbd774cf41b95ded06/html5/thumbnails/26.jpg)
05 프로그래밍 절차
26
![Page 27: CHAPTER 05 프로그래밍 - infosec.jejunu.ac.krinfosec.jejunu.ac.kr/lecture/2014-1/ch-05.pdf · }프로그래밍언어(programming language) 기계어와자연언어의중간형태로고안된언어](https://reader030.vdocuments.mx/reader030/viewer/2022041216/5e049bdbd774cf41b95ded06/html5/thumbnails/27.jpg)
해결해야 할 문제를 정확하게 이해하는 단계
프로그램 사용자 파악
컴퓨터로 처리 가능한지의 여부 결정
입 출력 데이터의 내용과 형식 등 결정
5.1 문제 분석
27
![Page 28: CHAPTER 05 프로그래밍 - infosec.jejunu.ac.krinfosec.jejunu.ac.kr/lecture/2014-1/ch-05.pdf · }프로그래밍언어(programming language) 기계어와자연언어의중간형태로고안된언어](https://reader030.vdocuments.mx/reader030/viewer/2022041216/5e049bdbd774cf41b95ded06/html5/thumbnails/28.jpg)
알고리즘(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) 기계어와자연언어의중간형태로고안된언어](https://reader030.vdocuments.mx/reader030/viewer/2022041216/5e049bdbd774cf41b95ded06/html5/thumbnails/29.jpg)
구조적 프로그래밍(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) 기계어와자연언어의중간형태로고안된언어](https://reader030.vdocuments.mx/reader030/viewer/2022041216/5e049bdbd774cf41b95ded06/html5/thumbnails/30.jpg)
설계된 알고리즘에 따라 적합한 프로그래밍 언어를
선택하여 코딩(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) 기계어와자연언어의중간형태로고안된언어](https://reader030.vdocuments.mx/reader030/viewer/2022041216/5e049bdbd774cf41b95ded06/html5/thumbnails/31.jpg)
프로그램의 문서화(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) 기계어와자연언어의중간형태로고안된언어](https://reader030.vdocuments.mx/reader030/viewer/2022041216/5e049bdbd774cf41b95ded06/html5/thumbnails/32.jpg)
32
SECTION 06 C로 작성한 프로그램 예
![Page 33: CHAPTER 05 프로그래밍 - infosec.jejunu.ac.krinfosec.jejunu.ac.kr/lecture/2014-1/ch-05.pdf · }프로그래밍언어(programming language) 기계어와자연언어의중간형태로고안된언어](https://reader030.vdocuments.mx/reader030/viewer/2022041216/5e049bdbd774cf41b95ded06/html5/thumbnails/33.jpg)
프로그램
출력 결과
6.1 세 과목의 점수를 출력하는 프로그램
33
![Page 34: CHAPTER 05 프로그래밍 - infosec.jejunu.ac.krinfosec.jejunu.ac.kr/lecture/2014-1/ch-05.pdf · }프로그래밍언어(programming language) 기계어와자연언어의중간형태로고안된언어](https://reader030.vdocuments.mx/reader030/viewer/2022041216/5e049bdbd774cf41b95ded06/html5/thumbnails/34.jpg)
프로그램
출력 결과
6.2 세 과목의 점수를 입력받고 총점을 출력하는 프로그램
34
![Page 35: CHAPTER 05 프로그래밍 - infosec.jejunu.ac.krinfosec.jejunu.ac.kr/lecture/2014-1/ch-05.pdf · }프로그래밍언어(programming language) 기계어와자연언어의중간형태로고안된언어](https://reader030.vdocuments.mx/reader030/viewer/2022041216/5e049bdbd774cf41b95ded06/html5/thumbnails/35.jpg)
프로그램
출력 결과
6.3 세 학생의 점수를 입력받고 총점을 출력하는 프로그램
35
![Page 36: CHAPTER 05 프로그래밍 - infosec.jejunu.ac.krinfosec.jejunu.ac.kr/lecture/2014-1/ch-05.pdf · }프로그래밍언어(programming language) 기계어와자연언어의중간형태로고안된언어](https://reader030.vdocuments.mx/reader030/viewer/2022041216/5e049bdbd774cf41b95ded06/html5/thumbnails/36.jpg)
The End