PowerPoint 프레젠테이션

Download Report

Transcript PowerPoint 프레젠테이션

I am Computer
8장 프로그래밍 언어
8.1 프로그램이란?
8.2 프로그램 언어의 역사
8.3 프로그램 설계 절차
8.4 프로그래밍 언어의 구성요소
8.5 프로그래밍 언어
I am Computer
8장 프로그래밍 언어
8.1 프로그램이란?
프로그램이란?
수식이나 작업을 컴퓨터에 알맞도록 정리해서 순
서를 정하고 컴퓨터 특유의 명령코드로 고쳐 쓰는
작업을 총칭
코딩(coding) : 컴퓨터의 명령 코드를 쓰는 작업
I am Computer
프로그램이란
윈도우 기반의 프로그램들의 예
exe(execution) 파일
실행파일로서 프로세서에게 명령을 전달
dll(dynamic link library) 파일
exe 파일의 한 다른 실행중인 프로그램에 의해 조
정됨
ini(initialization) 파일
윈도우의 크기나 시작 위치, 배경 색, 사용자 이름
과 같은 설정 정보를 포함
hlp(Help) 파일
help 파일은 색인되거나 연결된 형식의 정보 보유
I am Computer
프로그램이란
I am Computer
8장 프로그래밍 언어
8.2 프로그램 언어의 역사
각 세대별 언어
언어구현기법에 의한 분류
방법론에 의한 분류
프로그램 언어의 역사
제 1세대 언어
 1945년 : 기계어
제 2세대 언어
 1950년대 중반 : 어셈블리어
제 3세대 언어
 1960년대 초기 : 상위 수준 언어
제 4세대 언어
 1970년대 초기 : 고상위 수준 언어
제 5세대 언어
 1980년대 초기 : 자연 언어
I am Computer
각 세대별 언어
제 1세대 언어
기계어(machine code)
컴퓨터가 이해하는 숫자 1과 0으로만 표현된 1세대
언어
I am Computer
각 세대별 언어
제 2세대 언어
어셈블리어(assembly)
어셈블리어는 보다 나은 프로그래밍 환경을 제공
하고자 고안된 2세대 언어로서 기계어로 표현할
때의 복잡성을 없애기 위해 숫자가 아닌 기호를 사
용
 어셈블러(assembler)
 어셈블러에 의해 기계어로 번역할 수 있는 프로그램 언
어를 어셈블리어라고 함
I am Computer
각 세대별 언어
제 3세대 언어
상위 수준 언어(high level language)
일반적인 언어에 가깝게 수준을 높여 사용하기 쉽
게 만든 언어
컴파일러(compiler)
고급언어로 쓰여진 프로그램이 컴퓨터에서 수행될
수 있도록컴퓨터가 직접 이해할 수 있는 언어로 바
꾸어 주는 역할
I am Computer
각 세대별 언어
제 3세대 언어
원시 프로그램(source code)
 컴파일을 하기 위하여 입력되는 프로그램
목적 프로그램(object code)
 번역되어 출력되는 프로그램
I am Computer
각 세대별 언어
제 3세대 언어
크로스 컴파일러(cross-compiler)
 원시 프로그램을 컴파일러가 수행되고 있는 컴퓨터의
기계어로 번역하는 것이 아니라, 다른 기종에 맞는 기계
어로 번역하는 컴파일러
인터프리터(interpreter)
 중간 언어를 입력으로 받아 목적 언어로 변환하지 않고
직접 수행하는 프로그램
I am Computer
각 세대별 언어
제 4세대 언어
고상위 수준 언어(very high level language)
언어라기보다는 일종의 범용 프로그램 패키지라고
할 수 있음
기업 등의 전자자료 처리시스템(EDPS:electronic
data processing system)이 큰 규모로 복잡해지고, 경
영환경이 급속히 변해 감에 따라, 이에 대응하기 위
한 시스템 유지나 신규 개발이 대량화되어, 시스템
개발의 생산성 향상을 목적으로 만들어짐
I am Computer
각 세대별 언어
제 5 세대 언어
자연 언어(natural language)
인간의 언어와 비슷한 형태를 지닌 언어
보다 사람과 컴퓨터간의 자연스러운 연결을 유도
하는 형태
I am Computer
각 세대별 언어
언어 구현 기법에 의한 분류
 컴파일러
 기계어로 번역하여 기계어 프로그램을 만들어 실행시키
는 방법
 컴파일러, 어셈블러, 링키지 에디터, 로더등
 예) Fortran, Algol, PL/I, Pascal, Cobol, C, Ada ......
I am Computer
언어 구현 기법에 의한 분류
언어 구현 기법에 의한 분류
 인터프리터 기법(Lisp, Snobol4, APL, Prolog)
 고급 언어로 된 프로그램을 자료로 읽어 들여서 기계어
수행과 동일한 알고리즘으로 그 프로그램의 각 문장을
명령문단위로 번역하고 실행
I am Computer
언어 구현 기법에 의한 분류
구현 기법에 따른 비교
장점
컴파일러 기법
인터프리터 기법
I am Computer
전체 실행시간 면
에서 매우 효율적
기억장소 필요
없음
단점
큰 기억장치 요구
번역하는 시간을
매우 많이 요구할
수 있슴.
언어 구현 기법에 의한 분류
프로그래밍 방법론에 따른 분류
초창기 : 문제 해결을 위해 사용자가 기계의 특성을
파악
후기 : 인간의 특성에 맞추어 기계가 문제를 해결해
주는 프로그래밍 환경
I am Computer
방법론에 의한 분류
프로그래밍 방법론
 명령형 방법론
 프로그래밍이 쓰여진 순서대로 실행되는 방법
 예) FORTRAN, BASIC, C등
 절차형 방법론
 문제 해결을 위해 어떤 절차가 필요한가? 보다 무엇이 문
제인가?에 초점을 맞추는 방법론
 예) GPSS, Prolog 등
I am Computer
방법론에 의한 분류
프로그래밍 방법론
 함수형 방법론
 프로그램은 입력 값에 대한 출력 값을 유도하는 함수
 예) LISP, ML, Scheme 등
객체지향형 방법론 (OOP)
 프로그램의 구성요소를 수동적이 아닌 능동적 객체
(object)로 간주
 예)비주얼 베이직, 델파이, C++, 자바 등
I am Computer
방법론에 의한 분류
I am Computer
8장 프로그래밍 언어
8.3 프로그램 설계 절차
프로그래밍 언어의 설계 원칙
프로그래밍 방법
프로그램 설계 절차
설계 기준
 초기 : 실행의 효율성(프로그램의 실행속도),
판독성(프로그램의 읽기 능력)
 60년대 : 추상화 기법, 규칙과 제한의 최소화를
이용하여 복잡성을 제어
 70년대 : 4세대에서는 프로그램의 간결성, 추상화
를 염두
 80년대 : 논리, 수학적 개념을 도입하여 더욱 발전
I am Computer
프로그램 설계 절차
프로그래밍 언어의 설계원칙
프로그래밍 언어의 개념이 분명하고 단순해야 하
며, 일관성이 있어야 하며 구문(syntax)이 분명해야
한다
프로그램 검증이 용이하여 수정이나 갱신이 편해
야 하고 적절한 프로그램 작성환경이 갖추어져 있
어야 한다
프로그램이 호환성이 있어야 하며 효율적이어야
한다
I am Computer
프로그램 설계 절차
문제해결을 위한 프로그래밍 방법
 플로우 차트(flow chart)
프로그램의 문장의 실행 순서를 프로그램 제어 흐
름이라 하며 이를 도식적으로 나타낸 것
의사코드(pseudo code)
프로그래밍 코드처럼 보이는 텍스트 형태의 코드,
세세한 부분과 구문을 모두 포함하고 있지는 않다
I am Computer
프로그램 설계 절차
세 개의 숫자를 더하여 평균을 출력하
는 의사코드와 플로우차트
 의사코드
 컴퓨터에 세 개의 숫자
를 입력하라
 세 수를 더하고 그 합을
3으로 나누어 평균을 계
산하라
 평균값을 출력하라
I am Computer
프로그램 설계 절차
알고리즘
 컴퓨터에서의 알고리즘은 어떤 문제의 해결을 위
해 컴퓨터가 사용 가능한 정확한 방법
 명확성 : 각 연산들은 명확한 의미를 가져야 한다
 효율성 : 각 연산은 원칙적으로 일정한 시간 내에 사람이
연필로 할 수 있어야 한다
 입력 : 외부 입력자료가 있을 수 있다
 출력 : 하나 이상의 결과가 나온다
 종결성 : 유한 번의 연산 후에는 반드시 끝나야 한다
I am Computer
프로그램 설계 절차
프로그램 설계 절차





프로그램의 필요사항 확인
프로그램 디자인
프로그램 코딩
프로그램 테스트
프로그램 유지
I am Computer
프로그램 설계 절차
프로그램 디자인
I am Computer
프로그램 설계 절차
I am Computer
8장 프로그래밍 언어
8.4 프로그래밍 언어의 구성 요소
 변수, 상수, 리터럴
수식 및 제어문
프로그램 문장의 구성 요소
선언(declarative)문
 프로그램에서 사용될 데이터들을 정의
명령(imperative)문
 문제 해결을 위한 프로그램의 알고리즘을 기술
주석(comments)문
 프로그램의 실행과는 상관이 없으나 후의 프로그램의
수정이나 관리를 위해 프로그램에 대한 해설을 기록
I am Computer
프로그래밍 언어의 구성 요소
변수, 상수, 리터럴
변수(variable)
 프로그램 실행 중 변화하는 값을 저장
상수(constant)
 프로그램 실행 중 변하지 않는 고정된 값을 저장
리터럴(literal)
 변수나 상수를 이용하지 않고 직접적으로 쓰인 값
 예) 변수 X 에 2 를 더하는 식 : X + 2
I am Computer
프로그래밍 언어의 구성 요소
자료형
 자료형이란 프로그램의 구성원이 될 수 있는 자료들의 집합
 수치형
 연산 속도가 매우 빠르다
 논리형
 참/거짓(true/false)으로 구분된다.
 문자형
 문자열 자료형으로 문자열 분해, 조립 연산 방법도 제공
 포인터 자료형
 포인터란 어떤 객체에 대한 참조를 의미
 구조 자료형
 배열과 레코드형이있다
I am Computer
프로그래밍 언어의 구성 요소
언어별 자료형 선언
I am Computer
프로그래밍 언어의 구성 요소
수식 및 제어문 구문 정의
 선언문
 프로그램이 실행될 때 사용될 자료의 속성을 언어의 번
역기에 알려주는 프로그램
수식
 계산되어야 할 수식을 기술하는 것으로 상수나 변수 같
은 피연산자들과 연산자들 그리고 사용 가능한 함수 호
출로 이루어진다.
I am Computer
프로그래밍 언어의 구성 요소
C의 연산자
I am Computer
프로그래밍 언어의 구성 요소
제어문
프로그램의 실행순서를 조정하는 명령어들을 제어문
이라 한다
조건문
조건식을 주어 조건결과에 따라 프로그램 실행 순
서를 결정하는 명령어
I am Computer
제어문
if 문
조건에 따라 then이나 else 다음의 지점으로 이동시
킨다
 예) 주전자에 물이 있으면 물을 마시고 없으면 주전자에
물을 떠온다
I am Computer
제어문
case 문
여러 가지 결과가 나올 수 있는 조건문일 때 사용
요일별로 다른 카드를
출력하는 예
I am Computer
제어문
반복문
반복문은 탈출 조건(exit condition)을 만날 때까지
문장을 반복적으로 수행하는 문장




do-while문
while문
repeat문
for문 등
I am Computer
반복문
for 문
특정 횟수만큼 문장을 반복 수행하는 문장
for (식 1; 식 2; 식 3)
명령문 1;
I am Computer
반복문
for 문의 예
1부터 10까지 더하는 프로그램
I am Computer
반복문
while 문
처음 시작할 때 탈출 조건문을 가지고 시작하며 조
건식이 참인 동안 루프를 반복하는 반복문
I am Computer
반복문
while 문의 예
0부터 10까지 세는 프로그램
I am Computer
반복문
do-while 문
while문의 변형으로 반복여부를 판단하는 조건식
을 while문 다음에 명시하여, 조건이 참인 동안
(while) 루프 범위를 반복
do
명령문 1;
while (식 1);
I am Computer
반복문
goto 문
지정된 위치로 제어를 바꾸며 분기될 문의 앞에는
레이블(label)을 명시
again: i=i+1;
:
goto again;
Label : 명령문
명령문
.
.
I am Computer
Goto lable
GOTO문
주석문(comment)
다른 프로그래머나 차후에 수정을 위해 프로그램
에 대한 해설을 코드의 중간에 삽입하여 설명을 달
아 놓는 것
C, C++, Java
/* This is a comment */
Ada, FORTRAN
- - this is a comment
I am Computer
주석문
프로시저(procedure)
프로시저란 각각의 독립적인 프로그램 기본 단위
(subprogram)로 주어진 문제를 해결하기 위하여 수
행되는 일련의 작업 순서 및 과정을 가지고 있슴
선언문과 실행문으로 구성
I am Computer
프로그래밍 언어의 구성 요소
함수, 기능(function)
함수란 미리 정의된 특정 작업을 수행하기 위해 기
록된 수행 절차라 할 수 있는 특수한 형태의 부 프
로그램
스프레드시트에서 함수의 예
sum(x,y,z)
I am Computer
프로그래밍 언어의 구성 요소
서브루틴(subroutine)
하나의 프로그램을 구성하는 독립적인 루틴
프로그램이 처음 실행될 때 시작되는 주 프로그램
루틴으로부터 호출되어 작업을 수행하는 독립적인
함수와 프로시저를 지칭
I am Computer
프로그래밍 언어의 구성 요소
I am Computer
8장 프로그래밍 언어
8.5 프로그래밍언어
구조적 프로그래밍
객체지향형 프로그래밍
프로그래밍 언어의 종류
구조적 프로그래밍
(structured programming)
1960년대 말 E.W.다이크스트라가 주창한 프로그램
작성 기법
종전의 프로그램 작성 방법의 문제를 사전에 방지
하기 위하여, 프로그램을 작성할 때에는 가급적 순
서에 컴퓨터 프로그램을 여러 갈래로 분기하여 복
잡하게 하지 않고, 순서대로, 선택적으로 반복 문장
을 사용하는 제어구조만을 사용하는 프로그램
I am Computer
구조적 프로그래밍
구조적 프로그래밍 기법
기술된 순서에 따라 순차적으로 실행하도록 하고
주어진 조건에 따라 둘 중 어느 하나를 선택하여 실
행
 순서 구조 : 위에서 아래로, 왼쪽에서 아래로
 선택 구조 : if-then-else 구조
 반복 구조 : do-while 구조, do-until 구조
I am Computer
구조적 프로그래밍
객체지향형 언어
(object-oriented programming)
1960년 중엽에 유행한 시뮬레이션 언어인
SIMURA에서 유래
모든 데이터를 객체(object)로 취급하며, 이 객체에
는 클래스(class)의 개념이 있어서 상위와 하위의
관계가 있다
객체 중심으로 프로그램을 기술하여 소프트웨어의
확장을 쉽게 하고 부분적인 수정만으로 기존 소프
트웨어를 재사용 할 수 있다
소프트웨어의 유지 보수 비용을 줄이고 프로그래
머의 생산성을 향상시키는 장점이 있다
I am Computer
객체지향형 언어
객체지향형 언어-용어
객체(object)
 객체란 단순히 자료를 표현하는 변수만을 가지는 것이
아니라 그 객체가 무엇을 할 수 있는가를 정의한 함수로
구성
I am Computer
객체지향형 언어
객체지향형 언어-용어
클래스(class)
 각 객체가 어떠한 구조를 갖고 있으며, 그 객체가 받아들
이는 메시지는 어떠한 것이 있는가, 또한 그 객체가 메시
지를 받았을 때 어떤 방식으로 처리될 것인가등의 내용
을 기술
I am Computer
객체지향형 언어
객체지향형 언어-용어
추상자료형(abstract data type)
 추상자료형은 처리되는 자료형과 처리 연산을 한 묶음
으로 표현
상속(inheritance)
 각 클래스의 속성은 상속받아 공유
다형성(polymorphism)
 하나의 함수 이름이나 연산자를 여러 목적으로 사용 가
능
I am Computer
객체지향형 언어
C
벨 연구소에서 1971년경부터 리치(D.M.Ritchie) 등
에 의해서 설계 개발된 시스템 기술용의 프로그래
밍 언어
UNIX 오퍼레이팅 시스템의 기술에 사용할 것을 목
적으로 설계한 언어로 UNIX OS의 대부분이 이 언
어로 개발
컴퓨터의 구조에 밀착한 기초 기술이 가능한 것과
간결한 표기가 될 수 있는 것 등이 특징
I am Computer
프로그래밍 언어의 종류
C++
C 언어의 기능을 확장하여 만든 객체 지향형 프로
그래밍 언어로서 AT&T사 벨 연구소의 B.
Stroustrup이 1983년 발표
C 언어 사양을 완전히 만족한 확장 버전으로 설계
된 C++의 처리계는 C의 프리프로세서로 개발되기
도 하지만 C++ 컴파일러도 있다
I am Computer
프로그래밍 언어의 종류
베이직(Basic)
컴퓨터용 고급 프로그래밍 언어로 1960년대 말 미
국 다트머스대학교의 켐니 교수가 개발하여 주로
퍼스널컴퓨터에 채용되고 있음
간단한 영어의 어구를 기반으로 한 명령이 쓰이고
있으므로 쉽게 배울 수 있음
I am Computer
프로그래밍 언어의 종류
포트란(Fortran)
1954년 IBM 704에서 과학적인 계산을 하기 위해
시작된 컴퓨터 프로그램 언어로 수식(Formular) 변
환기(Translator)의 약자임
알골과 함께 과학 계산용으로 주로 사용되는 언어
I am Computer
프로그래밍 언어의 종류
코볼(Cobol)
사무 처리를 위한 컴퓨터 프로그래밍 언어로
common business oriented language의 약어이다. 사
무처리용으로 만들어진 언어로 미국 국방부를 중
심으로 결성된 프로그램 언어로서 그룹
CODASYL(Conference on Data system Language)에
의해 1960년 처음으로 제정
일상 영어회화와 비슷한 구어체 문장 형태로 기술
할 수 있도록 설계되어 사용되고 있슴
I am Computer
프로그래밍 언어의 종류
파스칼(Pascal)
컴퓨터 프로그래밍 언어의 한 가지로 프랑스의 수
학자인 파스칼(Blaise Pascal)의 이름에서 따온 프로
그램 언어의 이름이다. 1969년 스위스 취리히공과
대학교의 니클라우스 비르트(Niklaus Wirth) 교수가
개발
블록 구조와 유용성이 큰 제어문 등의 기능을 도입
하고 자료의 구조화와 입출력 기능을 보완
I am Computer
프로그래밍 언어의 종류
에이다(Ada)
파스칼 언어에서 처음으로 사용된 구조적 개념을
기반으로 하여 만들어진 범용의 프로그래밍 언어
강력하고 정교한 기능 보유
어떤 프로그램이라도 기술할 수 있도록 하였기 때
문에 언어의 사양은 대규모로 되어 있슴
I am Computer
프로그래밍 언어의 종류
비주얼 베이직(Visual Basic)
미국 마이크로소프트에서 개발한 일반 응용 프로
그램 개발 언어이면서 동시에 데이터베이스 프로
그래밍까지 가능한 VCL(visual component library)
개발도구
비쥬얼베이직은 객체지향형 언이이며 윈도우나 버
튼을 양식(form)에 배치해 감으로써 그래픽 사용자
인터페이스(GUI)를 구사하는 프로그램을 매우 쉽
게 개발할 수 있는 것이 특징
I am Computer
프로그래밍 언어의 종류
비주얼 베이직의 구성요소
I am Computer
프로그래밍 언어의 종류
비주얼베이직의 구성요소
 프로젝트 탐색창
비주얼 베이직에서 실행되고 있는 프로젝트의 폼 구성을
볼 수 있게 해주는 창
 폼 디자인 창
프로그래밍 과정중 비주얼 프로그래밍 과정을 담당하는 폼
디자인 창
 도구 상자
도구 상자의 모든 도구는 비주얼 베이직에서 객체로 표현
 속성창
도구상자에서 선택된 도구들의 성격을 결정
 코드 입력창
실제 프로그램밍을 위한 명령문들을 코딩하는 창
I am Computer
프로그래밍 언어의 종류
VC++(Visual C++)
마이크로소프트의 윈도우즈용 프로그래밍을 위한
개발도구
모든 프로그램을 C++의 클래스를 이용
비주얼 한 환경에서 각종 도구 모음등을 이용하여
편리하게 윈도우용 프로그램을 개발할 수 있는 환
경을 제공
I am Computer
프로그래밍 언어의 종류
VC의 프로젝트 선택 창
I am Computer
프로그래밍 언어의 종류