75
2017년도 2학기 컴퓨터공학 입문 4강: 프로그래밍 언어 상지대학교 컴퓨터공학과 고광만 http ://compiler.sangji.ac.kr [email protected]

4강 프로그래밍언어compiler.sangji.ac.kr/lecture/ce/2017/lecture04.pdf · 2019. 2. 14. · 마스터마스터제목스타일제목편집 스타일편집 4강:프로그래밍언어,

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 4강 프로그래밍언어compiler.sangji.ac.kr/lecture/ce/2017/lecture04.pdf · 2019. 2. 14. · 마스터마스터제목스타일제목편집 스타일편집 4강:프로그래밍언어,

2017년도 2학기 컴퓨터공학 입문

4강: 프로그래밍 언어

상지대학교 컴퓨터공학과고 광 만

http://[email protected]

Page 2: 4강 프로그래밍언어compiler.sangji.ac.kr/lecture/ce/2017/lecture04.pdf · 2019. 2. 14. · 마스터마스터제목스타일제목편집 스타일편집 4강:프로그래밍언어,

마스터 제목 스타일 편집마스터제목스타일편집

Page 3: 4강 프로그래밍언어compiler.sangji.ac.kr/lecture/ce/2017/lecture04.pdf · 2019. 2. 14. · 마스터마스터제목스타일제목편집 스타일편집 4강:프로그래밍언어,

마스터 제목 스타일 편집마스터제목스타일편집

34강 :프로그래밍언어, [email protected]

프로그래밍 언어

프로그래밍 언어• 인간이 컴퓨터와 의사 소통할 수 있도록 컴퓨터에 내리는 명령으로

프로그램을 처리하도록 기술한 언어를 말함

Page 4: 4강 프로그래밍언어compiler.sangji.ac.kr/lecture/ce/2017/lecture04.pdf · 2019. 2. 14. · 마스터마스터제목스타일제목편집 스타일편집 4강:프로그래밍언어,

마스터 제목 스타일 편집마스터제목스타일편집

44강 :프로그래밍언어, [email protected]

저급 언어• 컴퓨터 내부 표현에 가까운 언어로 기계어와 어셈블리어로 구분

• 기계어 : 0과 1로 된 2진수

• 어셈블리어 : 기계어 명령을 알기 쉬운 기호로 표시한 것

고급 언어• 일상 언어에서 사용하는 표현을 그대로 가져다 쓸 수 있음

• 사용자가 기억 장소의 주소를 일일이 기억할 필요가 없음

• 하나의 명령어로 다수의 연산을 실행

Page 5: 4강 프로그래밍언어compiler.sangji.ac.kr/lecture/ce/2017/lecture04.pdf · 2019. 2. 14. · 마스터마스터제목스타일제목편집 스타일편집 4강:프로그래밍언어,

마스터 제목 스타일 편집마스터제목스타일편집

54강 :프로그래밍언어, [email protected]

대표적인 고급 언어• C, 포트란, 코볼, 파스칼, C++, 자바, 스몰토크 등

고급 언어로 작성한 프로그램을 실행하는 과정

Page 6: 4강 프로그래밍언어compiler.sangji.ac.kr/lecture/ce/2017/lecture04.pdf · 2019. 2. 14. · 마스터마스터제목스타일제목편집 스타일편집 4강:프로그래밍언어,

마스터 제목 스타일 편집마스터제목스타일편집

64강 :프로그래밍언어, [email protected]

1950년대 언어• 포트란 개발 → 프로그래밍 언어 발전의 이정표가 됨

1960년대 언어• 과학기술용으로 개발된 포트란을 더욱 발전시킨 고급 언어와 사무처

리용 고급 언어 출현

• 대표적인 사무처리용 언어 ‘코볼’

1970년대 언어• C언어와 파스칼이 개발됨

Page 7: 4강 프로그래밍언어compiler.sangji.ac.kr/lecture/ce/2017/lecture04.pdf · 2019. 2. 14. · 마스터마스터제목스타일제목편집 스타일편집 4강:프로그래밍언어,

마스터 제목 스타일 편집마스터제목스타일편집

74강 :프로그래밍언어, [email protected]

1980년대 언어• 단말 시스템을 이용한 분산 처리 개념이 확산

• 학생들과 컴퓨터 초보자에게 적합한 교육용 언어가 요구 → 베이직언어 등장

1990년대 언어• 1990년대에는 객체 지향 언어가 본격적으로 등장

• C++, 자바, 비주얼 베이직 등의 객체 지향 언어가 새로 등장

Page 8: 4강 프로그래밍언어compiler.sangji.ac.kr/lecture/ce/2017/lecture04.pdf · 2019. 2. 14. · 마스터마스터제목스타일제목편집 스타일편집 4강:프로그래밍언어,

마스터 제목 스타일 편집마스터제목스타일편집

84강 :프로그래밍언어, [email protected]

2000년대 이후 언어• 파워빌더, 델파이, 각종 쿼리 전용 언어 등 소위 4세대라 불리는 언어

등장

• 소프트웨어 컴포넌트 기술 발전

• 객체 지향 기술과 웹의 결합을 통해 다양한 정보를 제공하는 기법도발전

• 최근에는 5세대 언어라 불리는 인공지능 기능을 이용해 자연 언어로직접 처리하는 기법에 대한 연구가 진행됨

Page 9: 4강 프로그래밍언어compiler.sangji.ac.kr/lecture/ce/2017/lecture04.pdf · 2019. 2. 14. · 마스터마스터제목스타일제목편집 스타일편집 4강:프로그래밍언어,

마스터 제목 스타일 편집마스터제목스타일편집

94강 :프로그래밍언어, [email protected]

Page 10: 4강 프로그래밍언어compiler.sangji.ac.kr/lecture/ce/2017/lecture04.pdf · 2019. 2. 14. · 마스터마스터제목스타일제목편집 스타일편집 4강:프로그래밍언어,

마스터 제목 스타일 편집마스터제목스타일편집

104강 :프로그래밍언어, [email protected]

가장 많이 사용되는 언어는?

Page 11: 4강 프로그래밍언어compiler.sangji.ac.kr/lecture/ce/2017/lecture04.pdf · 2019. 2. 14. · 마스터마스터제목스타일제목편집 스타일편집 4강:프로그래밍언어,

마스터 제목 스타일 편집마스터제목스타일편집

114강 :프로그래밍언어, [email protected]

코볼

Page 12: 4강 프로그래밍언어compiler.sangji.ac.kr/lecture/ce/2017/lecture04.pdf · 2019. 2. 14. · 마스터마스터제목스타일제목편집 스타일편집 4강:프로그래밍언어,

마스터 제목 스타일 편집마스터제목스타일편집

124강 :프로그래밍언어, [email protected]

파스칼

복합문 begin-end, 조건문 if-then-else, 반복문 while-do와 같은 제어

구조가 있어 구조적 프로그래밍에 적합procedure squareroots

(input,output)

var

x : real;

begin

repeat

read(x);

if x ≥ 0

then write(sqrt(x))

else write (‘argument error’)

until x = 0

end

Page 13: 4강 프로그래밍언어compiler.sangji.ac.kr/lecture/ce/2017/lecture04.pdf · 2019. 2. 14. · 마스터마스터제목스타일제목편집 스타일편집 4강:프로그래밍언어,

마스터 제목 스타일 편집마스터제목스타일편집

134강 :프로그래밍언어, [email protected]

비주얼 베이직

Page 14: 4강 프로그래밍언어compiler.sangji.ac.kr/lecture/ce/2017/lecture04.pdf · 2019. 2. 14. · 마스터마스터제목스타일제목편집 스타일편집 4강:프로그래밍언어,

마스터 제목 스타일 편집마스터제목스타일편집

144강 :프로그래밍언어, [email protected]

C언어 계열(C, C++, C#)

Page 15: 4강 프로그래밍언어compiler.sangji.ac.kr/lecture/ce/2017/lecture04.pdf · 2019. 2. 14. · 마스터마스터제목스타일제목편집 스타일편집 4강:프로그래밍언어,

마스터 제목 스타일 편집마스터제목스타일편집

154강 :프로그래밍언어, [email protected]

자바• C++의 강력함을 제공하면서도 규모는 더 작고 안전성은 강화된 언

• 웹 환경에 적합하다는 것이 큰 장점

• 월드 와이드 웹의 보급 확대와 보조를 맞춰 발전

Page 16: 4강 프로그래밍언어compiler.sangji.ac.kr/lecture/ce/2017/lecture04.pdf · 2019. 2. 14. · 마스터마스터제목스타일제목편집 스타일편집 4강:프로그래밍언어,

마스터 제목 스타일 편집마스터제목스타일편집

164강 :프로그래밍언어, [email protected]

Java 장점 : Write Once, Run Anywhere

하드웨어

운영체제

Native

ApplicationVirtual Machine

Application

가상기계

Page 17: 4강 프로그래밍언어compiler.sangji.ac.kr/lecture/ce/2017/lecture04.pdf · 2019. 2. 14. · 마스터마스터제목스타일제목편집 스타일편집 4강:프로그래밍언어,

마스터 제목 스타일 편집마스터제목스타일편집

2.1 사용자 요구 사항 분석과 프로그램 설계

사용자 요구 사항 분석

사용자의 필요를 파악하고 프로그램을 통해 해결할 문제가 무엇인지

확인하는 단계

프로그램 설계

실제 코딩을 시작할 때 사용할 논리를 프로그래머가 대략 그려내는 단

알고리즘 설계라고도 함

Page 18: 4강 프로그래밍언어compiler.sangji.ac.kr/lecture/ce/2017/lecture04.pdf · 2019. 2. 14. · 마스터마스터제목스타일제목편집 스타일편집 4강:프로그래밍언어,

마스터 제목 스타일 편집마스터제목스타일편집

184강 :프로그래밍언어, [email protected]

알고리즘의 특성

알고리즘 명령을 수행하면 유한한 횟수를 거친 후 종료해야 한다.

알고리즘의 각 단계와 명령은 명확하게 정의되어야 한다.

알고리즘은 데이터 입력이 0 또는 그 이상이어야 한다.

알고리즘은 한 가지 이상의 결과를 출력한다.

알고리즘은 효과적이어야 한다. 이는 유한한 시간 내에 정확히 수

행할 수 있을 정도로 단순해야 함을 의미한다.

Page 19: 4강 프로그래밍언어compiler.sangji.ac.kr/lecture/ce/2017/lecture04.pdf · 2019. 2. 14. · 마스터마스터제목스타일제목편집 스타일편집 4강:프로그래밍언어,

마스터 제목 스타일 편집마스터제목스타일편집

2.1 사용자 요구 사항 분석과 프로그램 설계

프로그램 설계 프로그램 제어 흐름 유형

순차 구조 : 프로그램 코드 순서대로 실행

선택 구조 : 프로그램이 다음에 무엇을 해야 하는지를 결정하는 분기 구조

반복 구조 : 조건이 만족하지 않을 때까지 계속 반복

Page 20: 4강 프로그래밍언어compiler.sangji.ac.kr/lecture/ce/2017/lecture04.pdf · 2019. 2. 14. · 마스터마스터제목스타일제목편집 스타일편집 4강:프로그래밍언어,

마스터 제목 스타일 편집마스터제목스타일편집

2.1 사용자 요구 사항 분석과 프로그램 설계

For 문

Page 21: 4강 프로그래밍언어compiler.sangji.ac.kr/lecture/ce/2017/lecture04.pdf · 2019. 2. 14. · 마스터마스터제목스타일제목편집 스타일편집 4강:프로그래밍언어,

마스터 제목 스타일 편집마스터제목스타일편집

2.1 사용자 요구 사항 분석과 프로그램 설계

while문

Page 22: 4강 프로그래밍언어compiler.sangji.ac.kr/lecture/ce/2017/lecture04.pdf · 2019. 2. 14. · 마스터마스터제목스타일제목편집 스타일편집 4강:프로그래밍언어,

마스터 제목 스타일 편집마스터제목스타일편집

2.1 사용자 요구 사항 분석과 프로그램 설계

do-while문

Page 23: 4강 프로그래밍언어compiler.sangji.ac.kr/lecture/ce/2017/lecture04.pdf · 2019. 2. 14. · 마스터마스터제목스타일제목편집 스타일편집 4강:프로그래밍언어,

마스터 제목 스타일 편집마스터제목스타일편집

2.2 코딩 및 컴파일

컴파일러를 이용한 방식

프로그램 전체를 한번에 기계어로 번역하는 방식

C언어, 코볼, 포트란, 파스칼 등의 언어에서 사용

Page 24: 4강 프로그래밍언어compiler.sangji.ac.kr/lecture/ce/2017/lecture04.pdf · 2019. 2. 14. · 마스터마스터제목스타일제목편집 스타일편집 4강:프로그래밍언어,

마스터 제목 스타일 편집마스터제목스타일편집

2.2 코딩 및 컴파일

인터프리터를 이용한 방식

프로그램을 한 행씩 읽어 번역과 실행을 동시에 하는 방식

베이직 등의 언어에서 사용

Page 25: 4강 프로그래밍언어compiler.sangji.ac.kr/lecture/ce/2017/lecture04.pdf · 2019. 2. 14. · 마스터마스터제목스타일제목편집 스타일편집 4강:프로그래밍언어,

마스터 제목 스타일 편집마스터제목스타일편집

2.2 코딩 및 컴파일

하이브리드 방식

컴파일러와 인터프리터를 함께 이용하는 방식

리스프, 스노볼4, APL, 프롤로그, 자바 등의 언어에서 사용

Page 26: 4강 프로그래밍언어compiler.sangji.ac.kr/lecture/ce/2017/lecture04.pdf · 2019. 2. 14. · 마스터마스터제목스타일제목편집 스타일편집 4강:프로그래밍언어,

마스터 제목 스타일 편집마스터제목스타일편집

스크래치 실습

따라하기 : 스크래치로 간단한 프로그램 만들기01

02

Page 27: 4강 프로그래밍언어compiler.sangji.ac.kr/lecture/ce/2017/lecture04.pdf · 2019. 2. 14. · 마스터마스터제목스타일제목편집 스타일편집 4강:프로그래밍언어,

마스터 제목 스타일 편집마스터제목스타일편집

5.2 스크래치 실습

따라하기 : 스크래치로 간단한 프로그램 만들기

03

Page 28: 4강 프로그래밍언어compiler.sangji.ac.kr/lecture/ce/2017/lecture04.pdf · 2019. 2. 14. · 마스터마스터제목스타일제목편집 스타일편집 4강:프로그래밍언어,

마스터 제목 스타일 편집마스터제목스타일편집

5.2 스크래치 실습

따라하기 : 스크래치로 간단한 프로그램 만들기

04

Page 29: 4강 프로그래밍언어compiler.sangji.ac.kr/lecture/ce/2017/lecture04.pdf · 2019. 2. 14. · 마스터마스터제목스타일제목편집 스타일편집 4강:프로그래밍언어,

마스터 제목 스타일 편집마스터제목스타일편집

5.2 스크래치 실습

따라하기 : 스크래치로 간단한 프로그램 만들기05

06

Page 30: 4강 프로그래밍언어compiler.sangji.ac.kr/lecture/ce/2017/lecture04.pdf · 2019. 2. 14. · 마스터마스터제목스타일제목편집 스타일편집 4강:프로그래밍언어,

마스터 제목 스타일 편집마스터제목스타일편집

5.2 스크래치 실습

따라하기 : 스크래치로 간단한 프로그램 만들기07

08

Page 31: 4강 프로그래밍언어compiler.sangji.ac.kr/lecture/ce/2017/lecture04.pdf · 2019. 2. 14. · 마스터마스터제목스타일제목편집 스타일편집 4강:프로그래밍언어,

마스터 제목 스타일 편집마스터제목스타일편집

5.2 스크래치 실습

따라하기 : 스크래치로 간단한 프로그램 만들기

09

Page 32: 4강 프로그래밍언어compiler.sangji.ac.kr/lecture/ce/2017/lecture04.pdf · 2019. 2. 14. · 마스터마스터제목스타일제목편집 스타일편집 4강:프로그래밍언어,

마스터 제목 스타일 편집마스터제목스타일편집

324강 :프로그래밍언어, [email protected]

프로그래밍 언어 개요

프로그래밍 언어의 필요성• 사람이 컴퓨터에게 지시할 명령어를 기술하기 위함

Page 33: 4강 프로그래밍언어compiler.sangji.ac.kr/lecture/ce/2017/lecture04.pdf · 2019. 2. 14. · 마스터마스터제목스타일제목편집 스타일편집 4강:프로그래밍언어,

마스터 제목 스타일 편집마스터제목스타일편집

334강 :프로그래밍언어, [email protected]

저급 언어• 기계어

☞ 기계어란 0과 1로 표현

☞ 컴퓨터가 직접 이해할수 있는 유일한 언어

☞ 연산 코드(Operation Code)와피연산자(Operand)로 구성

☞ 프로그래밍하기가 상당히 어려움

• 어셈블리어

☞ 복잡한 기계어를 간략하게 기호화(symbolize)함

☞ 기계어의 연산코드와 피연산자를 프로그래머가 이해하기 쉬운 기호형태로 일대일 대응시킨 언어

• 연산 코드를 기호화한 것을 니모닉(mnemonic)이라고 부르며,

• 연산 코드의 예로 LDA(LoaD Address), ADD(ADD), STA(SToreAddress) 등이 사용

☞ 하드웨어 장치에 대한 강력한 통제 가능

Page 34: 4강 프로그래밍언어compiler.sangji.ac.kr/lecture/ce/2017/lecture04.pdf · 2019. 2. 14. · 마스터마스터제목스타일제목편집 스타일편집 4강:프로그래밍언어,

마스터 제목 스타일 편집마스터제목스타일편집

344강 :프로그래밍언어, [email protected]

저급언어와 고급언어

Low, high level language• 컴퓨터가 이해하기 쉬운 언어를 저급 언어라 하고 인간이 이해하기

쉽고 친근한 언어를 고급 언어

저급 언어(Low Level Language)• 컴퓨터의 주기억장치, 레지스터, 마이크로프로세서, 입출력 포트 등

의 하드웨어를 직접 통제 가능

• 저급 언어를 사용하기 위해서는 하드웨어에 대한 충분한 지식이 요구됨

• 고급 언어(High Level Language)에 비하여 언어 자체가 어렵기 때문에 전문가라 하더라도 프로그램의 생산성이 낮음

• 1950년 중반부터 인간의 자연 언어와 비슷한 포트란, 코볼, 베이직등의 고급 언어가 개발되어 프로그램 개발에 사용

Page 35: 4강 프로그래밍언어compiler.sangji.ac.kr/lecture/ce/2017/lecture04.pdf · 2019. 2. 14. · 마스터마스터제목스타일제목편집 스타일편집 4강:프로그래밍언어,

마스터 제목 스타일 편집마스터제목스타일편집

354강 :프로그래밍언어, [email protected]

Page 36: 4강 프로그래밍언어compiler.sangji.ac.kr/lecture/ce/2017/lecture04.pdf · 2019. 2. 14. · 마스터마스터제목스타일제목편집 스타일편집 4강:프로그래밍언어,

마스터 제목 스타일 편집마스터제목스타일편집

364강 :프로그래밍언어, [email protected]

프로그래밍 언어의 세대별 분류

프로그래밍 언어의 세대별 분류

Page 37: 4강 프로그래밍언어compiler.sangji.ac.kr/lecture/ce/2017/lecture04.pdf · 2019. 2. 14. · 마스터마스터제목스타일제목편집 스타일편집 4강:프로그래밍언어,

마스터 제목 스타일 편집마스터제목스타일편집

374강 :프로그래밍언어, [email protected]

4세대 5세대의 주요 언어

데이터베이스 질의 언어(query language)• 비절차적 중심 언어

• 프로그래머가 원하는 결과를 얻기 위해서 하나 하나의 절차를 따를필요가 없다는 의미

비주얼 프로그래밍 언어(Visual Programming Language)• 비주얼 베이직

• 델파이

블록 프로그래밍• 코드 없는 정해진 블록으로 코딩

• 진보된 비주얼 프로그래밍 언어

• MIT에서 개발한 스크래치

Page 38: 4강 프로그래밍언어compiler.sangji.ac.kr/lecture/ce/2017/lecture04.pdf · 2019. 2. 14. · 마스터마스터제목스타일제목편집 스타일편집 4강:프로그래밍언어,

마스터 제목 스타일 편집마스터제목스타일편집

Page 39: 4강 프로그래밍언어compiler.sangji.ac.kr/lecture/ce/2017/lecture04.pdf · 2019. 2. 14. · 마스터마스터제목스타일제목편집 스타일편집 4강:프로그래밍언어,

마스터 제목 스타일 편집마스터제목스타일편집

394강 :프로그래밍언어, [email protected]

프로그램 개발 환경

편집기(Editor) • 프로그램 명령어인 프로그래밍 언어의 내용을 편집

컴파일러• 개발 도구에서 가장 중요한 것은 작성한 고급 프로그래밍 언어를

컴퓨터가 이해할 수 있는 기계어로 변환

디버거• 작성된 프로그램에서 발생하는 프로그램 오류를 쉽게 찾아 수정

할 수 있도록 도와주는 프로그램

링커• 여러 목적 파일을 하나의 실행 파일로 만들어 주는 기능

Page 40: 4강 프로그래밍언어compiler.sangji.ac.kr/lecture/ce/2017/lecture04.pdf · 2019. 2. 14. · 마스터마스터제목스타일제목편집 스타일편집 4강:프로그래밍언어,

마스터 제목 스타일 편집마스터제목스타일편집

404강 :프로그래밍언어, [email protected]

Page 41: 4강 프로그래밍언어compiler.sangji.ac.kr/lecture/ce/2017/lecture04.pdf · 2019. 2. 14. · 마스터마스터제목스타일제목편집 스타일편집 4강:프로그래밍언어,

마스터 제목 스타일 편집마스터제목스타일편집

414강 :프로그래밍언어, [email protected]

통합개발환경: Integrated Development Environments

• 프로그램을 개발하는데 필요한 컴파일러, 디버거, 링커, 에디터 등을 통합적으로 제공하는 개발 환경을 통합개발환경

• 마이크로소프트 사의 ‘비주얼 C++’(Visual C++)

• 비주얼 스튜디오 익스프레스(Microsoft Visual Studio Express) 버전

☞ 무료 배포(www.microsoft.com/ko-kr/download)하는 제품

Page 42: 4강 프로그래밍언어compiler.sangji.ac.kr/lecture/ce/2017/lecture04.pdf · 2019. 2. 14. · 마스터마스터제목스타일제목편집 스타일편집 4강:프로그래밍언어,

마스터 제목 스타일 편집마스터제목스타일편집

424강 :프로그래밍언어, [email protected]

프로그램 구현과정: 소스 작성과 컴파일

소스 작성• 프로그램 언어를 이용하여 원하는 작업을 기술한 내용을 소스 코드

(source code) 또는 간단히 코드(code)라 함

Page 43: 4강 프로그래밍언어compiler.sangji.ac.kr/lecture/ce/2017/lecture04.pdf · 2019. 2. 14. · 마스터마스터제목스타일제목편집 스타일편집 4강:프로그래밍언어,

마스터 제목 스타일 편집마스터제목스타일편집

434강 :프로그래밍언어, [email protected]

컴파일• 소스(source) 파일(원시 파일)을 목적 파일(Object file)로 변환 과정

• 컴파일러

☞ 컴파일을 해주는 프로그램

Page 44: 4강 프로그래밍언어compiler.sangji.ac.kr/lecture/ce/2017/lecture04.pdf · 2019. 2. 14. · 마스터마스터제목스타일제목편집 스타일편집 4강:프로그래밍언어,

마스터 제목 스타일 편집마스터제목스타일편집

444강 :프로그래밍언어, [email protected]

프로그램 구현과정: 링크와 실행

어셈블러• 어셈블리 언어의 프로그램을 기계어로 변환

Page 45: 4강 프로그래밍언어compiler.sangji.ac.kr/lecture/ce/2017/lecture04.pdf · 2019. 2. 14. · 마스터마스터제목스타일제목편집 스타일편집 4강:프로그래밍언어,

마스터 제목 스타일 편집마스터제목스타일편집

454강 :프로그래밍언어, [email protected]

링크와 링커• 목적 파일을 실행 가능한 실행 파일(Eexecute File)로 만들어 주는

프로그램:

• 링크, 또는 링킹

• 여러 개의 프로그램 각각을 컴파일하여 목적 파일을 만들게 되는데, 링커는 이러한 여러 개의 목적 파일들을 라이브러리 함수와 연결해서 하나의 파일로 합치는 작업을 수행

실행 파일• 링킹 작업 결과 생성되는 프로그램을 실행 프로그램

(executable program)

• .exe나 .com의 확장자 파일

Page 46: 4강 프로그래밍언어compiler.sangji.ac.kr/lecture/ce/2017/lecture04.pdf · 2019. 2. 14. · 마스터마스터제목스타일제목편집 스타일편집 4강:프로그래밍언어,

마스터 제목 스타일 편집마스터제목스타일편집

464강 :프로그래밍언어, [email protected]

Page 47: 4강 프로그래밍언어compiler.sangji.ac.kr/lecture/ce/2017/lecture04.pdf · 2019. 2. 14. · 마스터마스터제목스타일제목편집 스타일편집 4강:프로그래밍언어,

마스터 제목 스타일 편집마스터제목스타일편집

474강 :프로그래밍언어, [email protected]

프로그램 구현과정: 디버깅

디버깅(debugging)과 디버거• 컴파일 에러나 실행 에러를 수정하는 과정

• 프로그램의 명령을 수행함에 있어 컴퓨터의 상태를 보여주거나 오류(또는 에러) 발생시 오류를 쉽게 찾을 수 있도록 도와주는 프로그램

• 처음부터 에러가 없는 프로그램을 작성하기란 거의 불가능

• 디버깅 과정은 매우 중요

☞ 디버깅 과정에서는 많은 경험으로 에러를 쉽게 찾아 수정

Page 48: 4강 프로그래밍언어compiler.sangji.ac.kr/lecture/ce/2017/lecture04.pdf · 2019. 2. 14. · 마스터마스터제목스타일제목편집 스타일편집 4강:프로그래밍언어,

마스터 제목 스타일 편집마스터제목스타일편집

484강 :프로그래밍언어, [email protected]

Page 49: 4강 프로그래밍언어compiler.sangji.ac.kr/lecture/ce/2017/lecture04.pdf · 2019. 2. 14. · 마스터마스터제목스타일제목편집 스타일편집 4강:프로그래밍언어,

마스터 제목 스타일 편집마스터제목스타일편집

494강 :프로그래밍언어, [email protected]

에러 또는 오류• 컴파일 (시간) 에러

• 실행 (시간) 에러

‘디버그’란 용어의 유래• 원래 버그는 나방 벌레

• 버그에 의해 컴퓨터가 오작동된 유에서 유해

Page 50: 4강 프로그래밍언어compiler.sangji.ac.kr/lecture/ce/2017/lecture04.pdf · 2019. 2. 14. · 마스터마스터제목스타일제목편집 스타일편집 4강:프로그래밍언어,

마스터 제목 스타일 편집마스터제목스타일편집

504강 :프로그래밍언어, [email protected]

컴파일러와 인터프리터

인터프리터(Interpreter)• 고급 언어를 기계어로 번역해주는 역할을 수행

• 원시 코드를 한 줄씩 읽어 들여 목적 코드로 바꾸어줌

• 컴파일러에 비해 번역 속도가 느릴 수 밖에 없지만, 프로그램 을 작성할 때 보다 융통성을 가질 수 있음.

컴파일러(Compiler)• 원시 코드 전체를 읽은 다음 이를 기계어로 번역

• 컴파일러는 한 번 컴파일한 후에는 수정이 없다면 매번 컴파일 할필요 없이 빠른 시간 내에 프로그램 실행이 가능

Page 51: 4강 프로그래밍언어compiler.sangji.ac.kr/lecture/ce/2017/lecture04.pdf · 2019. 2. 14. · 마스터마스터제목스타일제목편집 스타일편집 4강:프로그래밍언어,

마스터 제목 스타일 편집마스터제목스타일편집

514강 :프로그래밍언어, [email protected]

Page 52: 4강 프로그래밍언어compiler.sangji.ac.kr/lecture/ce/2017/lecture04.pdf · 2019. 2. 14. · 마스터마스터제목스타일제목편집 스타일편집 4강:프로그래밍언어,

마스터 제목 스타일 편집마스터제목스타일편집

524강 :프로그래밍언어, [email protected]

컴파일러와 인터프리터 중간 방식

컴파일러와 인터프리터의 특징을 모두 갖는 방식• 자바 언어와 C# 언어

• 이들 언어는 컴파일러가 존재하여 컴파일 과정이 필요

• 컴파일된 실행 파일을 실행할 때는 인터프리터 방식과 같이 인터프리터가 필요

• 모든 시스템에서 독립적인 프로그램 언어를 개발하기 위해서

Page 53: 4강 프로그래밍언어compiler.sangji.ac.kr/lecture/ce/2017/lecture04.pdf · 2019. 2. 14. · 마스터마스터제목스타일제목편집 스타일편집 4강:프로그래밍언어,

마스터 제목 스타일 편집마스터제목스타일편집

534강 :프로그래밍언어, [email protected]

Page 54: 4강 프로그래밍언어compiler.sangji.ac.kr/lecture/ce/2017/lecture04.pdf · 2019. 2. 14. · 마스터마스터제목스타일제목편집 스타일편집 4강:프로그래밍언어,

마스터 제목 스타일 편집마스터제목스타일편집

Page 55: 4강 프로그래밍언어compiler.sangji.ac.kr/lecture/ce/2017/lecture04.pdf · 2019. 2. 14. · 마스터마스터제목스타일제목편집 스타일편집 4강:프로그래밍언어,

마스터 제목 스타일 편집마스터제목스타일편집

554강 :프로그래밍언어, [email protected]

포트란(FORTRAN)

FORTRAN: FORmula TRANslating system• 과학과 공학 및 수학적 문제들을 해결하기 위해 1950년대 중반에 IBM

704 컴퓨터 시스템에 이용할 목적으로 IBM의 존 배커스(John Backus)에 의해 고안된 제 3세대 프로그래밍 언어

• 포트란은 가장 오래된 언어 중의 하나

• 언어 구조가 단순해 지금도 기술 계산 분야 등에서는 사용

Page 56: 4강 프로그래밍언어compiler.sangji.ac.kr/lecture/ce/2017/lecture04.pdf · 2019. 2. 14. · 마스터마스터제목스타일제목편집 스타일편집 4강:프로그래밍언어,

마스터 제목 스타일 편집마스터제목스타일편집

564강 :프로그래밍언어, [email protected]

코볼(COBOL)

COmmon Business Oriented Language• 코볼은 포트란에 이어 두 번째로 개발된 고급언어임

• 기업의 사무처리에 적합한 프로그래밍 언어로 개발됨

• 다른 프로그래밍 언어에 비하여 파일의 순차적인 처리 등이 효율적

• 영어 구문과 비슷한 문장구조를 갖고 있으므로 쉽게 이해할 수 있도록 프로그램 작성이 가능

Page 57: 4강 프로그래밍언어compiler.sangji.ac.kr/lecture/ce/2017/lecture04.pdf · 2019. 2. 14. · 마스터마스터제목스타일제목편집 스타일편집 4강:프로그래밍언어,

마스터 제목 스타일 편집마스터제목스타일편집

574강 :프로그래밍언어, [email protected]

베이직(BASIC)

Beginner’s All-purpose Symbolic Instruction Code• 대화형의 영어 단어를 바탕으로 약 200여 개의 명령어들로 구성된

가장 쉬운 대화형 프로그래밍 언어

• 1980년대에 개인용 컴퓨터의 출현과 함께 베이직은 기본 개발 언어로 탑재되어 범용적인 언어로 널리 사용

• 마이크로소프트는 이 베이직을 기본으로 비주얼베이직(Visual Basic)이라는 프로그램 언어를 개발

Page 58: 4강 프로그래밍언어compiler.sangji.ac.kr/lecture/ce/2017/lecture04.pdf · 2019. 2. 14. · 마스터마스터제목스타일제목편집 스타일편집 4강:프로그래밍언어,

마스터 제목 스타일 편집마스터제목스타일편집

584강 :프로그래밍언어, [email protected]

C

벨 연구소의 데니스 리치(Dennis Ritchie)가 개발• 켄 톰슨(Ken Tompson)이 개발한 B 언어에서 발전된 언어

ANSI C• 미표준화위원회(American National Standards Institute)에서 공인한 표

준 C를 지칭

특징• 하드웨어에 대한 보다 확실한 통제가 가능

• 특정 컴퓨터 기종에 의존하지 않으므로 프로그램의 이식성(portability)이높음

• 풍부한 연산자와 데이터 형(data type)을 갖고 있기 때문에 범용 프로그래밍 언어로서 널리 보급

• 응용 소프트웨어의 개발에 널리 이용

• 현재 이용되고 있는 운영체제, 컴파일러, 통합개발환경 등이 대부분 C 언어로 개발

Page 59: 4강 프로그래밍언어compiler.sangji.ac.kr/lecture/ce/2017/lecture04.pdf · 2019. 2. 14. · 마스터마스터제목스타일제목편집 스타일편집 4강:프로그래밍언어,

마스터 제목 스타일 편집마스터제목스타일편집

594강 :프로그래밍언어, [email protected]

C++

C 언어의 객체지향 버전• C++은 객체지향 프로그래밍(OOP Object-Oriented Programming)

을 지원하기 위해 C언어가 가지는 장점을 그대로 계승하면서 객체의 상속성(inheritance) 등의 개념을 추가한 효과적인 언어

Page 60: 4강 프로그래밍언어compiler.sangji.ac.kr/lecture/ce/2017/lecture04.pdf · 2019. 2. 14. · 마스터마스터제목스타일제목편집 스타일편집 4강:프로그래밍언어,

마스터 제목 스타일 편집마스터제목스타일편집

Page 61: 4강 프로그래밍언어compiler.sangji.ac.kr/lecture/ce/2017/lecture04.pdf · 2019. 2. 14. · 마스터마스터제목스타일제목편집 스타일편집 4강:프로그래밍언어,

마스터 제목 스타일 편집마스터제목스타일편집

614강 :프로그래밍언어, [email protected]

주석

주석은 프로그램을 설명하는 내용이나 기타 프로그래머가기술하고 싶은 내용을 담음

주석을 표현하는 방법으로는 행(라인) 주석 또는 여러 줄에주석을 표현할 수 있는 블록 주석 등이 있음• 행 주석

☞ //

• 블록 주석

☞ /* */

Page 62: 4강 프로그래밍언어compiler.sangji.ac.kr/lecture/ce/2017/lecture04.pdf · 2019. 2. 14. · 마스터마스터제목스타일제목편집 스타일편집 4강:프로그래밍언어,

마스터 제목 스타일 편집마스터제목스타일편집

624강 :프로그래밍언어, [email protected]

문장과 블록

문장• 프로그램 언어에서 일을 수행하는 문법상의 최소 단위인 문장

• 문장이 모여서 하나의 프로그램이 만들어짐

문장 구분• C나 자바는 문장의 끝을 ;(세미콜론)으로 표시

• 베이직 언어에서는 한 줄에 하나의 문장을 기술

블록• 여러 문장의 모임

Page 63: 4강 프로그래밍언어compiler.sangji.ac.kr/lecture/ce/2017/lecture04.pdf · 2019. 2. 14. · 마스터마스터제목스타일제목편집 스타일편집 4강:프로그래밍언어,

마스터 제목 스타일 편집마스터제목스타일편집

634강 :프로그래밍언어, [email protected]

Page 64: 4강 프로그래밍언어compiler.sangji.ac.kr/lecture/ce/2017/lecture04.pdf · 2019. 2. 14. · 마스터마스터제목스타일제목편집 스타일편집 4강:프로그래밍언어,

마스터 제목 스타일 편집마스터제목스타일편집

644강 :프로그래밍언어, [email protected]

예약어와 식별자

예약어• 프로그램 언어에서 미리 정의하여 사용하는 단어

• 자바 언어의 48개 예약어

• C 언어의 예약어

식별자• 프로그램에서 프로그래머가 직접 이름을 정의하여 사용하는 단어

• C 언어에서 식별자를 만드는 규칙

Page 65: 4강 프로그래밍언어compiler.sangji.ac.kr/lecture/ce/2017/lecture04.pdf · 2019. 2. 14. · 마스터마스터제목스타일제목편집 스타일편집 4강:프로그래밍언어,

마스터 제목 스타일 편집마스터제목스타일편집

654강 :프로그래밍언어, [email protected]

변수와 대입문

변수• 프로그램에서 임시로 자료 값을 저장할 수 있는 저장 장소

• 대부분의 언어는 이러한 변수는 반드시 사용하기 이전에 먼저 선언을 해야 함

• 이를 변수의 선언(declaration)이라 하고, 이 선언은 시스템에게 적당한 공간을 메모리에 확보하라는 의미

Page 66: 4강 프로그래밍언어compiler.sangji.ac.kr/lecture/ce/2017/lecture04.pdf · 2019. 2. 14. · 마스터마스터제목스타일제목편집 스타일편집 4강:프로그래밍언어,

마스터 제목 스타일 편집마스터제목스타일편집

664강 :프로그래밍언어, [email protected]

대입문• C 언어에서 선언된 변수에 저장 값을 수정하려면 다음과 같이 “=”

기호의 대입 연산자(assignment operator)를 이용함

Page 67: 4강 프로그래밍언어compiler.sangji.ac.kr/lecture/ce/2017/lecture04.pdf · 2019. 2. 14. · 마스터마스터제목스타일제목편집 스타일편집 4강:프로그래밍언어,

마스터 제목 스타일 편집마스터제목스타일편집

674강 :프로그래밍언어, [email protected]

자료 유형

자료 유형• 저장공간에 저장되는 자료 값의 종류를 나타내는 것

• 자료 값의 종류인 유형에 따라 저장공간인 메모리의 크기와 저장되는 값의 종류가 다름

종류• 정수형(integer type)

• 부동소수형(floating-point type)

• 논리형(boolean type)

• 문자형(character type)

Page 68: 4강 프로그래밍언어compiler.sangji.ac.kr/lecture/ce/2017/lecture04.pdf · 2019. 2. 14. · 마스터마스터제목스타일제목편집 스타일편집 4강:프로그래밍언어,

마스터 제목 스타일 편집마스터제목스타일편집

684강 :프로그래밍언어, [email protected]

자바에서 제공하는 기본 자료 유형• byte, short, int, long, float, double, boolean, char

C가 제공하는 자료 유형

Page 69: 4강 프로그래밍언어compiler.sangji.ac.kr/lecture/ce/2017/lecture04.pdf · 2019. 2. 14. · 마스터마스터제목스타일제목편집 스타일편집 4강:프로그래밍언어,

마스터 제목 스타일 편집마스터제목스타일편집

694강 :프로그래밍언어, [email protected]

제어 구조

순차 구조• 위에서 아래 순서로 문장을 실행하는 구조

선택 구조• if

• switch

반복 구조• for, while, do while

Page 70: 4강 프로그래밍언어compiler.sangji.ac.kr/lecture/ce/2017/lecture04.pdf · 2019. 2. 14. · 마스터마스터제목스타일제목편집 스타일편집 4강:프로그래밍언어,

마스터 제목 스타일 편집마스터제목스타일편집

704강 :프로그래밍언어, [email protected]

Page 71: 4강 프로그래밍언어compiler.sangji.ac.kr/lecture/ce/2017/lecture04.pdf · 2019. 2. 14. · 마스터마스터제목스타일제목편집 스타일편집 4강:프로그래밍언어,

마스터 제목 스타일 편집마스터제목스타일편집

714강 :프로그래밍언어, [email protected]

객체지향 언어

순수 객체지향 언어• 범용적인 언어로는 널리 활용되고 있지 않음

• 스몰토크, 이펠

하이브리드 객체지향 언어• C 언어를 기반으로 객체지향 개념을 도입하여 개발된 C++ 언어

• 객체지향 언어는 범용적으로 이용

☞ 자바 언어

☞ 비주얼 베이직

☞ 델파이

Page 72: 4강 프로그래밍언어compiler.sangji.ac.kr/lecture/ce/2017/lecture04.pdf · 2019. 2. 14. · 마스터마스터제목스타일제목편집 스타일편집 4강:프로그래밍언어,

마스터 제목 스타일 편집마스터제목스타일편집

724강 :프로그래밍언어, [email protected]

Page 73: 4강 프로그래밍언어compiler.sangji.ac.kr/lecture/ce/2017/lecture04.pdf · 2019. 2. 14. · 마스터마스터제목스타일제목편집 스타일편집 4강:프로그래밍언어,

마스터 제목 스타일 편집마스터제목스타일편집

734강 :프로그래밍언어, [email protected]

파이썬 개요

파이썬(python) 언어• 현재 미국의 대학에서 컴퓨터 기초과목으로 가장 많이 가르치는 프로그

래밍 중 하나

대학의 컴퓨터기초 교육에 많이 활용• 파이썬은 무료로 배포

• 간단하면서 효과적으로 객체지향을 적용할 수 있는 강력한 프로그래밍언어

인터프리터 언어• 간단한 문법구조를 가진 대화형 언어

• 동적 자료형 (dynamic typing)을 제공

• 변수를 선언하지 않고 사용

• 여러 플랫폼에서 사용되는 다양한 영역에 활용

• 프로그램을 쉽고 빠르게 개발

Page 74: 4강 프로그래밍언어compiler.sangji.ac.kr/lecture/ce/2017/lecture04.pdf · 2019. 2. 14. · 마스터마스터제목스타일제목편집 스타일편집 4강:프로그래밍언어,

마스터 제목 스타일 편집마스터제목스타일편집

744강 :프로그래밍언어, [email protected]

파이썬 설치와 실행

파이썬 재단 페이지(www.python.org)• 내려 받기(www.python.org/download)에 연결

• 인터프리터를 내려 받아 설치 가능

프롬프트(prompt)인 >>>• 명령어를 입력

• 간단히 print(a)와 같이 저장된내용을 출력

Page 75: 4강 프로그래밍언어compiler.sangji.ac.kr/lecture/ce/2017/lecture04.pdf · 2019. 2. 14. · 마스터마스터제목스타일제목편집 스타일편집 4강:프로그래밍언어,

마스터 제목 스타일 편집마스터제목스타일편집