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