프로그램 개발과 -...
TRANSCRIPT
프로그램 개발과 언어
차례
프로그래밍의 개념 및 구조
저수준 언어와 고수준 언어
프로그래밍 언어의 종류 및 특성
프로그램 개발 과정
프로그램 번역과 실행
학습 정리
프로그래밍의 개념 및 구조
컴퓨터 프로그램이란?
컴퓨터가 처리할 일들을 순서에 맞게 계획해 놓은 것
프로그램 언어의 요건
프로그래밍 언어의 개념이 단순 명료하고 통일성을 가져야 함
프로그래밍 언어의 구조가 체계적이어야 함
응용문제에 자연스럽게 적용할 수 있어야 함
확장성이 있어야 함
효율적이어야 함
외부적인 지원이 가능해야 함
Understanding of Computers
프로그래밍의 개념 및 구조 (1)
프로그램 언어의 선정 기준
프로그래머가 그 언어를 이해하고 사용할 수 있어야 함
어느 컴퓨터에나 쉽게 설치될 수 있어야 함
프로그래밍의 효율성이 고려되어야 함
응용 목적에 맞아야 함
프로그래머 개인의 선호에 맞아야 함
저수준 언어
저수준 언어란?
컴퓨터 개발 초기에 사용되었던 프로그래밍 언어
주로 시스템 프로그래밍에 사용
기계어
초창기 컴퓨터 프로그래밍
컴퓨터의 전기적 회로에 의해 직접적으로
해석되어 실행되는 언어
어셈블리어
기계어의 명령들을 알기 쉬운 기호로
표시하여 사용한 것
< 어셈블리어 >
고수준 언어
고수준 언어?
실행되기 전에 기계어로 변환되어야 함
컴파일러나 인터프리터를 이용해서 처리가 이루어져야 함
절차지향 언어
전통적인 프로그래밍 논리를 사용하여 프로그래밍 문제 해결
순차적으로 명령이 실행
절차지향 언어의 예
FORTRAN, COBOL, PASCAL, C, BASIC
객체지향 언어
객체, 클래스, 상속이라는 개념을 기본으로 함
객체지향 언어의 예
Smaltalk, C++
< Smaltalk의 개발환경 >
프로그래밍 언어의 종류 및 특성 (1)
기계어 (Machine Language)
컴퓨터가 직접 실행할 수 있는 프로그래밍 언어
컴퓨터의 기본적인 동작을 지시하는데 사용
연속된 1과 0으로 코드화
어셈블리 언어(Assembly Language)
기계어 명령들과 1:1로 일치
간략 기억 기호라 불리는 쉽게 이해될 수 있는 약어를 이용
프로그래밍 언어의 종류 및 특성 (2)
프로시저 지향 언어
업무용 언어
COBOL, RPG
과학용 언어
FORTRAN, APL
다목적용 언어
BASIC, PASCAL, C, PL/I, Ada
그 밖의 프로시저-지향 언어
ALGOL, LISP, Prolog, Modula-2
문제 지향 언어
제 4세대 언어
업무용 언어 (1)
코볼
지금까지도 널리 사용되는 언어
명령어들이 영어와 비슷한 구조임
장점
프로그램 논리 문법이 영어 회화와 비슷한 구어체 문장 형태로 기술할 수 있는 것
언어 자체에서 데이터 파일의 조작에 관한 기능을 제공
사무 처리 프로그램을 작성하는데 편리
단점
프로그램이 길어 구성이 간결하지 못 함
구성이 매우 복잡
크기가 크고 수행 속도가 느림
RDBMS(Relational DataBase Management
System)의 응용에 취약
업무용 언어 (2)
RPG(Report Program Generator: 보고서 생성 프로그램)
대중화된 문제를 해결하기 위한 언어
간단한 입출력 파일 처리에 효과적
장점
일반적인 업무용 보고서를 쉽게 제작
사용 언어가 배우기 쉬움
단점
알고리즘 처리에서 상대적 제한이 존재
논리가 고정되어 논리와 맞지 않는 보고서는 프로그래밍하기가 어려움
과학용 언어
포트란(FORTRAN)
현재까지도 과학, 수학, 공학 계산을 수행하는데 널리 사용
장점
효율적인 컴파일이 가능
수학 계산이 편리
단점
구조적인 프로그램 구현이 어려움
문자열 처리기능이 미약
유지보수가 거의 불가능할 정도로 비효율적임
APL(A Programming Language)
융통성이 있음
연산을 간략하게 표현 가능
확장된 연산자들과 자료 구조를 사용
대화식 단말기에서 교육, 연구 목적으로 이용
< Fortran 프로그램의 예 >
다목적용 언어 (1)
베이직(BASIC)
교육용 프로그래밍 언어
매우 간단하여 배우기 쉽고 사용하기 쉬움
구조적인 프로그램을 구현하기 어렵움
수행 속도가 느림
파스칼(PASCAL)
다양한 제어 구조와 데이터 타입을 가지고 있음
교육과 연구에서 널리 사용되며, 실무적인 요도로도 많이 사용
다목적용 언어 (2)
C
간결함과 저수준의 기능을 살리면서 고도의 추상적인 기법 사용 가능
문서, 게임, 그래픽 등 다양한 용도에 사용 가능
우수한 이식성을 가짐
유연한 제어 구조와 구조화된 언어로 인해 공동 프로그래밍 작업 가능
문법이 간결해 복잡한 수식을 간결하게 표현 가능
현재에도 널리 사용 됨
PL/I
포트란과 같이 현존하는 언어들의 많은 문제점을 보강
Ada
미국 국방성에서 개발
현존 언어의 장점을 모두 모은 언어
다목적용 언어 (3)
ALGOL
과학용 언어
논리를 표현하기 위해 좀 더 구조적인 방식을 사용
LISP
숫자보다 기호 처리에 더 좋은 리스트-프로세싱(List Processing) 언어
인공지능 분야에서 많이 사용
Prolog
사실 사이의 관계를 처리
전문가 시스템을 개발하는데 사용
Modula-2
프로그램 안의 모듈들을 결합할 수 있는 일반적인 언어
문제 지향 언어
특수한 응용 분야나 문제들을 해결하기 위해 설계
문제 지향 언어의 특징
자세한 프로그래밍을 요구하지 않음
수행절차과정이나 수학이 포함된 것보다 입력과 원하는 출력을 더 강조
문제 지향 언어의 종류
시뮬레이션의 GPSS,SLAM
프로그램이 언어 머신 툴의 APT
빌딩과 다리의 압력점을 분석하는 COGO
교재 p. 135 참고
제 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 등
제 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)’ 기능이 있어 데이터 베이스관련 프로그래밍이 쉬움
프로그래밍 기법
프로그래밍 절차
문제 분석
입출력 설계
입력 설계
출력 설계
순서도
프로그램 코딩 및 입력
번역 및 착오 검색
프로그램의 실행
문서화
교재 p. 138 참고
프로그램의 설계와 구현 (1)
입출력 설계
입출력 시 고려 사항
입력 데이터의 종류와 양을 표현
구체적인 데이터 항목, 데이터의 크기와 성격을 표현
입력 매체를 결정하여 일정한 양식의 용지에 표현
자료 항목을 코드화 함
출력 설계는 이용 목적에 맞는 적절한 출력 매체를 선정
문자 외에 그림, 동영상, 음성 등을 출력 할 수 있도록 고려
프로그램의 설계와 구현 (2)
순서도 작성
그림으로 간단 명료하게 표현
일 순서와 정보의 흐름을 전체적으로 용이하게 파악 가능
순서도 작성 방법
국제 표준화 기구에서 정한 표준 기호 사용
논리적인 흐름의 방향은 위→아래, 왼쪽 →오른쪽 서로 교차되지 않도록 함
간단 명료하게 작성
큰 줄거리에서 점차 구체적으로 작성
논리적인 흐름이 복잡하고 어려울 때에는 여러 단계로 구분하여 작성
순서도 기호 내부에 처리할 내용을 간단한 기술
순서도 기호
국제 표준화 기구에서 정한 것
프로그램의 설계와 구현 (3)
프로그램의 구현
프로그램의 코딩 및 입력
적절한 프로그래밍 언어를 선택하여 프로그램 명령문들을 기술하는 과정
일정한 양식의 코딩 용지에 정해진 문법에 따라 정확하게 기술
컴퓨터의 키보드를 이용하여 저자 매체에 수록
프로그램의 실행과 디버깅
컴파일러와 같은 번역 프로그램에 의해 목적 프로그램을 만듬
오류 발생이 검출 할 수 있음
단위 검사
– 모듈에 대한 무결성 검증
통합 검사
– 모듈간의 데이터 전송 과정에서 무결성을 검증하는 것
프로그램의 개발 방법 (1)
하향식 프로그래밍 방법
전체적인 부분으로부터 시작하여 점진적으로 상세한 루틴부분으로 프로그래밍 하는 방식
구조적 프로그래밍
프로그램의 흐름이 복잡해지는 것을 방지
작은 규모로 조직화
세 가지 논리 구조로만 구성
교재 p. 142 참고
프로그램의 개발 방법 (2)
객체지향 프로그래밍
프로시저가 주체가 되고 자료가 객체가 됨
프로시저의 호출, 자료 전달, 프로시저의 실행으로 문제를 해결
행위자 이론에 이론적 배경을 둠
객체
속성과 기능의 결합체
캡슐화, 자료 추상화를 지원
클래스
자료형 이론의 한 도구
상속
특수화, 일반화
프로그램의 개발 방법 (3)
모듈화 프로그래밍
모듈
특정 작업을 수행하기 위해 작성된 명령의 집단
하나의 제한된 기능을 갖는 최하위 수준의 프로그램 단위
모듈이 가져야 할 조건
한 개의 입구와 한 개의 출구를 가지며, 지정된 기능을 수행하고 그 자체적으로도 완비되어야 함
다른 모듈과 독립적이어야 함
프로그램 작성자가 읽고 수정하기 힘들지 않아야 함
비주얼 프로그래밍
시각적인 표현, 재사용 가능성, 상대적으로 고드화하기 쉬운 프로그램을
만드는 개념
Windows 타입의 메뉴, 버튼, 그래픽을 이용하는 객체지향 개념
Visual Basic, Visual C++, CANTATA, Delphi 등
프로그램 번역과 실행
어셈블러
컴파일러
인터프리터
학습 정리
컴퓨터 프로그램
컴퓨터가 처리할 이들을 순서에 맞게 계획해 놓은 것
저수준 언어
컴퓨터 사용자의 관점보다 컴퓨터의 관점에서 볼 때 사용이 편리한 언어
일상 생활에 사용하는 자연어보다 수준이 낮은 언어
기계어와 어셈블리 언어가 존재
고수준 언어
자연어에 가까워 사용자가 쓰기에 편리한 프로그래밍 언어
어느 특정한 컴퓨터의 구조에 의존하지 않음
C, FORTRAN, BASIC, COBOL, ALGOL, PASCAL 등
학습 정리
프로그램 작성
좁은 의미
프로그래밍 언어로 명령문을 기술하는 작업
넓은 의미
문제 분석과 프로그램의 설계 및 프로그램의 번역과 실행과정을 거쳐 결과를
얻기까지의 전 과정
프로그램 번역과 실행
어셈블러
컴파일러
인터프리터