프로그램 개발과 -...

27
프로그램 개발과 언어

Upload: others

Post on 10-Sep-2019

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 프로그램 개발과 - elearning.kocw.netelearning.kocw.net/contents4/document/lec/2013/Mokwon/Seoyongho/3.pdf · 문서, 게임, 그래픽 등 다양한 용도에 사용 ... 클라이언트/서버

프로그램 개발과 언어

Page 2: 프로그램 개발과 - elearning.kocw.netelearning.kocw.net/contents4/document/lec/2013/Mokwon/Seoyongho/3.pdf · 문서, 게임, 그래픽 등 다양한 용도에 사용 ... 클라이언트/서버

차례

프로그래밍의 개념 및 구조

저수준 언어와 고수준 언어

프로그래밍 언어의 종류 및 특성

프로그램 개발 과정

프로그램 번역과 실행

학습 정리

Page 3: 프로그램 개발과 - elearning.kocw.netelearning.kocw.net/contents4/document/lec/2013/Mokwon/Seoyongho/3.pdf · 문서, 게임, 그래픽 등 다양한 용도에 사용 ... 클라이언트/서버

프로그래밍의 개념 및 구조

컴퓨터 프로그램이란?

컴퓨터가 처리할 일들을 순서에 맞게 계획해 놓은 것

프로그램 언어의 요건

프로그래밍 언어의 개념이 단순 명료하고 통일성을 가져야 함

프로그래밍 언어의 구조가 체계적이어야 함

응용문제에 자연스럽게 적용할 수 있어야 함

확장성이 있어야 함

효율적이어야 함

외부적인 지원이 가능해야 함

Page 4: 프로그램 개발과 - elearning.kocw.netelearning.kocw.net/contents4/document/lec/2013/Mokwon/Seoyongho/3.pdf · 문서, 게임, 그래픽 등 다양한 용도에 사용 ... 클라이언트/서버

Understanding of Computers

프로그래밍의 개념 및 구조 (1)

프로그램 언어의 선정 기준

프로그래머가 그 언어를 이해하고 사용할 수 있어야 함

어느 컴퓨터에나 쉽게 설치될 수 있어야 함

프로그래밍의 효율성이 고려되어야 함

응용 목적에 맞아야 함

프로그래머 개인의 선호에 맞아야 함

Page 5: 프로그램 개발과 - elearning.kocw.netelearning.kocw.net/contents4/document/lec/2013/Mokwon/Seoyongho/3.pdf · 문서, 게임, 그래픽 등 다양한 용도에 사용 ... 클라이언트/서버

저수준 언어

저수준 언어란?

컴퓨터 개발 초기에 사용되었던 프로그래밍 언어

주로 시스템 프로그래밍에 사용

기계어

초창기 컴퓨터 프로그래밍

컴퓨터의 전기적 회로에 의해 직접적으로

해석되어 실행되는 언어

어셈블리어

기계어의 명령들을 알기 쉬운 기호로

표시하여 사용한 것

< 어셈블리어 >

Page 6: 프로그램 개발과 - elearning.kocw.netelearning.kocw.net/contents4/document/lec/2013/Mokwon/Seoyongho/3.pdf · 문서, 게임, 그래픽 등 다양한 용도에 사용 ... 클라이언트/서버

고수준 언어

고수준 언어?

실행되기 전에 기계어로 변환되어야 함

컴파일러나 인터프리터를 이용해서 처리가 이루어져야 함

절차지향 언어

전통적인 프로그래밍 논리를 사용하여 프로그래밍 문제 해결

순차적으로 명령이 실행

절차지향 언어의 예

FORTRAN, COBOL, PASCAL, C, BASIC

객체지향 언어

객체, 클래스, 상속이라는 개념을 기본으로 함

객체지향 언어의 예

Smaltalk, C++

< Smaltalk의 개발환경 >

Page 7: 프로그램 개발과 - elearning.kocw.netelearning.kocw.net/contents4/document/lec/2013/Mokwon/Seoyongho/3.pdf · 문서, 게임, 그래픽 등 다양한 용도에 사용 ... 클라이언트/서버

프로그래밍 언어의 종류 및 특성 (1)

기계어 (Machine Language)

컴퓨터가 직접 실행할 수 있는 프로그래밍 언어

컴퓨터의 기본적인 동작을 지시하는데 사용

연속된 1과 0으로 코드화

어셈블리 언어(Assembly Language)

기계어 명령들과 1:1로 일치

간략 기억 기호라 불리는 쉽게 이해될 수 있는 약어를 이용

Page 8: 프로그램 개발과 - elearning.kocw.netelearning.kocw.net/contents4/document/lec/2013/Mokwon/Seoyongho/3.pdf · 문서, 게임, 그래픽 등 다양한 용도에 사용 ... 클라이언트/서버

프로그래밍 언어의 종류 및 특성 (2)

프로시저 지향 언어

업무용 언어

COBOL, RPG

과학용 언어

FORTRAN, APL

다목적용 언어

BASIC, PASCAL, C, PL/I, Ada

그 밖의 프로시저-지향 언어

ALGOL, LISP, Prolog, Modula-2

문제 지향 언어

제 4세대 언어

Page 9: 프로그램 개발과 - elearning.kocw.netelearning.kocw.net/contents4/document/lec/2013/Mokwon/Seoyongho/3.pdf · 문서, 게임, 그래픽 등 다양한 용도에 사용 ... 클라이언트/서버

업무용 언어 (1)

코볼

지금까지도 널리 사용되는 언어

명령어들이 영어와 비슷한 구조임

장점

프로그램 논리 문법이 영어 회화와 비슷한 구어체 문장 형태로 기술할 수 있는 것

언어 자체에서 데이터 파일의 조작에 관한 기능을 제공

사무 처리 프로그램을 작성하는데 편리

단점

프로그램이 길어 구성이 간결하지 못 함

구성이 매우 복잡

크기가 크고 수행 속도가 느림

RDBMS(Relational DataBase Management

System)의 응용에 취약

Page 10: 프로그램 개발과 - elearning.kocw.netelearning.kocw.net/contents4/document/lec/2013/Mokwon/Seoyongho/3.pdf · 문서, 게임, 그래픽 등 다양한 용도에 사용 ... 클라이언트/서버

업무용 언어 (2)

RPG(Report Program Generator: 보고서 생성 프로그램)

대중화된 문제를 해결하기 위한 언어

간단한 입출력 파일 처리에 효과적

장점

일반적인 업무용 보고서를 쉽게 제작

사용 언어가 배우기 쉬움

단점

알고리즘 처리에서 상대적 제한이 존재

논리가 고정되어 논리와 맞지 않는 보고서는 프로그래밍하기가 어려움

Page 11: 프로그램 개발과 - elearning.kocw.netelearning.kocw.net/contents4/document/lec/2013/Mokwon/Seoyongho/3.pdf · 문서, 게임, 그래픽 등 다양한 용도에 사용 ... 클라이언트/서버

과학용 언어

포트란(FORTRAN)

현재까지도 과학, 수학, 공학 계산을 수행하는데 널리 사용

장점

효율적인 컴파일이 가능

수학 계산이 편리

단점

구조적인 프로그램 구현이 어려움

문자열 처리기능이 미약

유지보수가 거의 불가능할 정도로 비효율적임

APL(A Programming Language)

융통성이 있음

연산을 간략하게 표현 가능

확장된 연산자들과 자료 구조를 사용

대화식 단말기에서 교육, 연구 목적으로 이용

< Fortran 프로그램의 예 >

Page 12: 프로그램 개발과 - elearning.kocw.netelearning.kocw.net/contents4/document/lec/2013/Mokwon/Seoyongho/3.pdf · 문서, 게임, 그래픽 등 다양한 용도에 사용 ... 클라이언트/서버

다목적용 언어 (1)

베이직(BASIC)

교육용 프로그래밍 언어

매우 간단하여 배우기 쉽고 사용하기 쉬움

구조적인 프로그램을 구현하기 어렵움

수행 속도가 느림

파스칼(PASCAL)

다양한 제어 구조와 데이터 타입을 가지고 있음

교육과 연구에서 널리 사용되며, 실무적인 요도로도 많이 사용

Page 13: 프로그램 개발과 - elearning.kocw.netelearning.kocw.net/contents4/document/lec/2013/Mokwon/Seoyongho/3.pdf · 문서, 게임, 그래픽 등 다양한 용도에 사용 ... 클라이언트/서버

다목적용 언어 (2)

C

간결함과 저수준의 기능을 살리면서 고도의 추상적인 기법 사용 가능

문서, 게임, 그래픽 등 다양한 용도에 사용 가능

우수한 이식성을 가짐

유연한 제어 구조와 구조화된 언어로 인해 공동 프로그래밍 작업 가능

문법이 간결해 복잡한 수식을 간결하게 표현 가능

현재에도 널리 사용 됨

PL/I

포트란과 같이 현존하는 언어들의 많은 문제점을 보강

Ada

미국 국방성에서 개발

현존 언어의 장점을 모두 모은 언어

Page 14: 프로그램 개발과 - elearning.kocw.netelearning.kocw.net/contents4/document/lec/2013/Mokwon/Seoyongho/3.pdf · 문서, 게임, 그래픽 등 다양한 용도에 사용 ... 클라이언트/서버

다목적용 언어 (3)

ALGOL

과학용 언어

논리를 표현하기 위해 좀 더 구조적인 방식을 사용

LISP

숫자보다 기호 처리에 더 좋은 리스트-프로세싱(List Processing) 언어

인공지능 분야에서 많이 사용

Prolog

사실 사이의 관계를 처리

전문가 시스템을 개발하는데 사용

Modula-2

프로그램 안의 모듈들을 결합할 수 있는 일반적인 언어

Page 15: 프로그램 개발과 - elearning.kocw.netelearning.kocw.net/contents4/document/lec/2013/Mokwon/Seoyongho/3.pdf · 문서, 게임, 그래픽 등 다양한 용도에 사용 ... 클라이언트/서버

문제 지향 언어

특수한 응용 분야나 문제들을 해결하기 위해 설계

문제 지향 언어의 특징

자세한 프로그래밍을 요구하지 않음

수행절차과정이나 수학이 포함된 것보다 입력과 원하는 출력을 더 강조

문제 지향 언어의 종류

시뮬레이션의 GPSS,SLAM

프로그램이 언어 머신 툴의 APT

빌딩과 다리의 압력점을 분석하는 COGO

교재 p. 135 참고

Page 16: 프로그램 개발과 - elearning.kocw.netelearning.kocw.net/contents4/document/lec/2013/Mokwon/Seoyongho/3.pdf · 문서, 게임, 그래픽 등 다양한 용도에 사용 ... 클라이언트/서버

제 4세대 언어 (1)

프로덕션 지향 4GLs

컴퓨터 전문가의 프로그래밍과 대형 컴퓨터를 이용한 정보 시스템 개발을 위해 설계

컴퓨터 제작 회사의 데이터베이스 관리 시스템 소프트웨어와 함께 구성

프로덕션 지향 4GLs의 종류

ADR’s Ideal, Software AG’s Natural 2., Cincom’s Mantis 등

사용자 지향 4GLs (1)

Power Builder

클라이언트/서버 환경을 지원

다양한 데이터베이스 지원 – Sybase, Oracle, MS SQL Server 등

객체 지향 환경에 기반한 개발이 가능

OOP 개념의 Event Driven 방식

분산 시스템 하에서 프로그래밍이 가능

OLE(Object Linking and Embedding)를 지원

다양한 플랫폼을 지원 – Windows 3.x, 95, NT 및 Intel/Alpha System 등

Page 17: 프로그램 개발과 - elearning.kocw.netelearning.kocw.net/contents4/document/lec/2013/Mokwon/Seoyongho/3.pdf · 문서, 게임, 그래픽 등 다양한 용도에 사용 ... 클라이언트/서버

제 4세대 언어 (2)

사용자 지향 4GLs (2)

Visual Basic

많은 사람들이 부담 없이 접근 할 수 있는 베이직 구문을 사용

OOP 개념의 Event Driven 방식

Windows 3.1, 95 환경하에서 동작 – MS사의 모든 제품과 호환을 이룸

OLE를 지원

자체 ‘Jet 데이터 베이스 엔지’, ‘DAO(Data Access Object)’,

‘RDO(Remote Data Access Object)’ 기능이 있어 데이터 베이스관련 프로그래밍이 쉬움

Page 18: 프로그램 개발과 - elearning.kocw.netelearning.kocw.net/contents4/document/lec/2013/Mokwon/Seoyongho/3.pdf · 문서, 게임, 그래픽 등 다양한 용도에 사용 ... 클라이언트/서버

프로그래밍 기법

프로그래밍 절차

문제 분석

입출력 설계

입력 설계

출력 설계

순서도

프로그램 코딩 및 입력

번역 및 착오 검색

프로그램의 실행

문서화

교재 p. 138 참고

Page 19: 프로그램 개발과 - elearning.kocw.netelearning.kocw.net/contents4/document/lec/2013/Mokwon/Seoyongho/3.pdf · 문서, 게임, 그래픽 등 다양한 용도에 사용 ... 클라이언트/서버

프로그램의 설계와 구현 (1)

입출력 설계

입출력 시 고려 사항

입력 데이터의 종류와 양을 표현

구체적인 데이터 항목, 데이터의 크기와 성격을 표현

입력 매체를 결정하여 일정한 양식의 용지에 표현

자료 항목을 코드화 함

출력 설계는 이용 목적에 맞는 적절한 출력 매체를 선정

문자 외에 그림, 동영상, 음성 등을 출력 할 수 있도록 고려

Page 20: 프로그램 개발과 - elearning.kocw.netelearning.kocw.net/contents4/document/lec/2013/Mokwon/Seoyongho/3.pdf · 문서, 게임, 그래픽 등 다양한 용도에 사용 ... 클라이언트/서버

프로그램의 설계와 구현 (2)

순서도 작성

그림으로 간단 명료하게 표현

일 순서와 정보의 흐름을 전체적으로 용이하게 파악 가능

순서도 작성 방법

국제 표준화 기구에서 정한 표준 기호 사용

논리적인 흐름의 방향은 위→아래, 왼쪽 →오른쪽 서로 교차되지 않도록 함

간단 명료하게 작성

큰 줄거리에서 점차 구체적으로 작성

논리적인 흐름이 복잡하고 어려울 때에는 여러 단계로 구분하여 작성

순서도 기호 내부에 처리할 내용을 간단한 기술

순서도 기호

국제 표준화 기구에서 정한 것

Page 21: 프로그램 개발과 - elearning.kocw.netelearning.kocw.net/contents4/document/lec/2013/Mokwon/Seoyongho/3.pdf · 문서, 게임, 그래픽 등 다양한 용도에 사용 ... 클라이언트/서버

프로그램의 설계와 구현 (3)

프로그램의 구현

프로그램의 코딩 및 입력

적절한 프로그래밍 언어를 선택하여 프로그램 명령문들을 기술하는 과정

일정한 양식의 코딩 용지에 정해진 문법에 따라 정확하게 기술

컴퓨터의 키보드를 이용하여 저자 매체에 수록

프로그램의 실행과 디버깅

컴파일러와 같은 번역 프로그램에 의해 목적 프로그램을 만듬

오류 발생이 검출 할 수 있음

단위 검사

– 모듈에 대한 무결성 검증

통합 검사

– 모듈간의 데이터 전송 과정에서 무결성을 검증하는 것

Page 22: 프로그램 개발과 - elearning.kocw.netelearning.kocw.net/contents4/document/lec/2013/Mokwon/Seoyongho/3.pdf · 문서, 게임, 그래픽 등 다양한 용도에 사용 ... 클라이언트/서버

프로그램의 개발 방법 (1)

하향식 프로그래밍 방법

전체적인 부분으로부터 시작하여 점진적으로 상세한 루틴부분으로 프로그래밍 하는 방식

구조적 프로그래밍

프로그램의 흐름이 복잡해지는 것을 방지

작은 규모로 조직화

세 가지 논리 구조로만 구성

교재 p. 142 참고

Page 23: 프로그램 개발과 - elearning.kocw.netelearning.kocw.net/contents4/document/lec/2013/Mokwon/Seoyongho/3.pdf · 문서, 게임, 그래픽 등 다양한 용도에 사용 ... 클라이언트/서버

프로그램의 개발 방법 (2)

객체지향 프로그래밍

프로시저가 주체가 되고 자료가 객체가 됨

프로시저의 호출, 자료 전달, 프로시저의 실행으로 문제를 해결

행위자 이론에 이론적 배경을 둠

객체

속성과 기능의 결합체

캡슐화, 자료 추상화를 지원

클래스

자료형 이론의 한 도구

상속

특수화, 일반화

Page 24: 프로그램 개발과 - elearning.kocw.netelearning.kocw.net/contents4/document/lec/2013/Mokwon/Seoyongho/3.pdf · 문서, 게임, 그래픽 등 다양한 용도에 사용 ... 클라이언트/서버

프로그램의 개발 방법 (3)

모듈화 프로그래밍

모듈

특정 작업을 수행하기 위해 작성된 명령의 집단

하나의 제한된 기능을 갖는 최하위 수준의 프로그램 단위

모듈이 가져야 할 조건

한 개의 입구와 한 개의 출구를 가지며, 지정된 기능을 수행하고 그 자체적으로도 완비되어야 함

다른 모듈과 독립적이어야 함

프로그램 작성자가 읽고 수정하기 힘들지 않아야 함

비주얼 프로그래밍

시각적인 표현, 재사용 가능성, 상대적으로 고드화하기 쉬운 프로그램을

만드는 개념

Windows 타입의 메뉴, 버튼, 그래픽을 이용하는 객체지향 개념

Visual Basic, Visual C++, CANTATA, Delphi 등

Page 25: 프로그램 개발과 - elearning.kocw.netelearning.kocw.net/contents4/document/lec/2013/Mokwon/Seoyongho/3.pdf · 문서, 게임, 그래픽 등 다양한 용도에 사용 ... 클라이언트/서버

프로그램 번역과 실행

어셈블러

컴파일러

인터프리터

Page 26: 프로그램 개발과 - elearning.kocw.netelearning.kocw.net/contents4/document/lec/2013/Mokwon/Seoyongho/3.pdf · 문서, 게임, 그래픽 등 다양한 용도에 사용 ... 클라이언트/서버

학습 정리

컴퓨터 프로그램

컴퓨터가 처리할 이들을 순서에 맞게 계획해 놓은 것

저수준 언어

컴퓨터 사용자의 관점보다 컴퓨터의 관점에서 볼 때 사용이 편리한 언어

일상 생활에 사용하는 자연어보다 수준이 낮은 언어

기계어와 어셈블리 언어가 존재

고수준 언어

자연어에 가까워 사용자가 쓰기에 편리한 프로그래밍 언어

어느 특정한 컴퓨터의 구조에 의존하지 않음

C, FORTRAN, BASIC, COBOL, ALGOL, PASCAL 등

Page 27: 프로그램 개발과 - elearning.kocw.netelearning.kocw.net/contents4/document/lec/2013/Mokwon/Seoyongho/3.pdf · 문서, 게임, 그래픽 등 다양한 용도에 사용 ... 클라이언트/서버

학습 정리

프로그램 작성

좁은 의미

프로그래밍 언어로 명령문을 기술하는 작업

넓은 의미

문제 분석과 프로그램의 설계 및 프로그램의 번역과 실행과정을 거쳐 결과를

얻기까지의 전 과정

프로그램 번역과 실행

어셈블러

컴파일러

인터프리터