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
프로그래밍 언어의 종류