SNU =10100 =minusby by1000 ÇÁto0.03exÇÁto0.03exÇÁ=10100 =minusby by1000 ·Îto0.03ex·Îto0.03ex·Î=10100 =minusby by1000 ±×to0.

Similar documents
SNU =10100 =minusby by1000 ÇÁto0.03exÇÁto0.03exÇÁ=10100 =minusby by1000 ·Îto0.03ex·Îto0.03ex·Î=10100 =minusby by1000 ±×to0.

SNU =10100 =minusby by1000 ÇÁto0.03exÇÁto0.03exÇÁ=10100 =minusby by1000 ·Îto0.03ex·Îto0.03ex·Î=10100 =minusby by1000

SNU =10100 =minusby by1000 ÇÁto0.03exÇÁto0.03exÇÁ=10100 =minusby by1000 ·Îto0.03ex·Îto0.03ex·Î=10100 =minusby by1000 ±×to0.

SNU =10100 =minusby by1000 ÇÁto0.03exÇÁto0.03exÇÁ=10100 =minusby by1000 ·Îto0.03ex·Îto0.03ex·Î=10100 =minusby by1000

SNU =10100 =minusby by1000 ÇÁto0.03exÇÁto0.03exÇÁ=10100 =minusby by1000 ·Îto0.03ex·Îto0.03ex·Î=10100 =minusby by1000 ±×to0.03ex±×to0.03ex±×=10100 =minusby by1000 ·¡to0.03ex·¡to0.03ex·¡=10100 =minusby by1000 ¹Öto0.03ex¹Öto0.03ex¹Ö =10100 =minusby by1000 ¿øto0.03ex¿øto0.03ex¿ø=10100 =minusby by1000 ¸®to0.03ex¸®to0.03ex¸®(Principles of Programming) Part I

Homework 3 SNU , 2011 가을이광근 Program Due: 10/10, 24:00 Essay Due: 10/12, 15:30 이번숙제의목적은 : 수업시간에살펴본, 상식적인명령형언어의정확한정의를이해하고그실행기를구현해보기. 상식적인수준에서디자인

HW5 Exercise 1 (60pts) M interpreter with a simple type system M. M. M.., M (simple type system). M, M. M., M.

Microsoft PowerPoint - ch10 - 이진트리, AVL 트리, 트리 응용 pm0600

OCaml

Exercise (10pts) k-친수 일반적으로 k진수(k > 1)는 다음과 같이 표현한다. d0 dn 여기서 di {0,, k 1}. 그리고 d0 dn 은 크기가 d0 k dn k n 인 정수를 표현한다. 이것을 살짝 확장해서 k친수 를 다음과 같이 정의

Homework 2 SNU , Fall 2015 Kwangkeun Yi due: 9/30, 24:00 Exercise 1 (10pts) k- 친수 일반적으로 k 진수 (k > 1) 는다음과같이표현한다. d 0 d n 여기서 d i {0,, k 1}. 그리

SIGPLwinterschool2012

Homework 1 SNU , Fall 2012 Kwangkeun Yi Due: 9/14, 24:00 Exercise 1 리스트합 큰순서대로 (descending order) 나열된정수리스트두개를받아서하나의 순서리스트로만드는함수 merge: int lis

chap 5: Trees

PowerPoint 프레젠테이션

Inhalt01_Teil1

slide2

2002년 2학기 자료구조

chap 5: Trees

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100

EA0015: 컴파일러

+국듣-해설(001~69p)

< B5BFBEC6BDC3BEC6BBE E687770>

<B0ADC8ADC7D0C6C428C3D6C1BE292E687770>

설계란 무엇인가?

Microsoft PowerPoint - Chap5 [호환 모드]

컴파일러

15강 판소리계 소설 심청전 다음 글을 읽고 물음에 답하시오. [1106월 평가원] 1)심청이 수궁에 머물 적에 옥황상제의 명이니 거행이 오죽 하랴. 2) 사해 용왕이 다 각기 시녀를 보내어 아침저녁으로 문 안하고, 번갈아 당번을 서서 문안하고 호위하며, 금수능라 비

1-1Çؼ³

4.18.국가직 9급_전산직_컴퓨터일반_손경희_ver.1.hwp

Microsoft Word - FunctionCall

며 오스본을 중심으로 한 작은 정부, 시장 개혁정책을 밀고 나갔다. 이에 대응 하여 노동당은 보수당과 극명히 반대되는 정강 정책을 내세웠다. 영국의 정치 상황은 새누리당과 더불어 민주당, 국민의당이 서로 경제 민주화 와 무차별적 복지공약을 앞세우며 표를 구걸하기 위한

C++-¿Ïº®Çؼ³10Àå

Orcad Capture 9.x

1수준

슬라이드 제목 없음

기본자료형만으로이루어진인자를받아서함수를결과값으로반환하는고차함수 기본자료형과함수를인자와결과값에모두이용하는고차함수 다음절에서는여러가지예를통해서고차함수가어떤경우에유용한지를설명한다. 2 고차함수의 예??장에서대상체만바뀌고중간과정은동일한계산이반복될때함수를이용하면전체연산식을간 단

Part Part

½ºÅ丮ÅÚ¸µ3_³»Áö

272*406OSAKAÃÖÁ¾-¼öÁ¤b64ٽÚ

PART

£01¦4Àå-2

C# Programming Guide - Types

Structure and Interpretation of Computer Programs: Assignment 3 Seung-Hoon Na October 4, George (아래 3개의 문제에 대한 구현이 모두 포함된 george.rkt파일을 제출하시오.

PowerPoint 프레젠테이션

DocsPin_Korean.pages

PowerPoint 프레젠테이션

제 1 장 기본 개념

PowerPoint 프레젠테이션

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures

Chapter 4. LISTS

λx.x (λz.λx.x z) (λx.x)(λz.(λx.x)z) (λz.(λx.x) z) Call-by Name. Normal Order. (λz.z)

Chap 6: Graphs

C 언어 프로그래밊 과제 풀이

adfasdfasfdasfasfadf

Chap 6: Graphs

Application TI-89 / Voyage TM 200 PLT application. application, application. APPLICATIONS :, N. 1. O application. 2. application : D C application,. a

06장.리스트

zb 2) 짜내어 목민관을 살찌운다. 그러니 백성이 과연 목민관을 위해 있는 것일까? 아니다. 그건 아니다. 목민관이 백성 을 위해 있는 것이다. 이정 - ( ᄀ ) - ( ᄂ ) - 국군 - 방백 - 황왕 (나) 옛날에야 백성이 있었을 뿐이지, 무슨 목민관이 있 었던

Microsoft Word - [2017SMA][T8]OOPT_Stage_2040 ver2.docx

7장

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

17장 클래스와 메소드

Modern Javascript

11강-힙정렬.ppt

A4 용지총 4 페이지를넘기지말것. 반드시컴퓨터로출력해서제출. 10/28( 월 ) 수업시간에제출. No delay acceptable. Exercise 2 (40pts) SM5 K--( 교재 4.3) 프로그램들을가상기계 (abstract machine) 인 SM5에서실


ThisJava ..

untitled

OCaml ífl—로그랟밓

SNU =10100 =minusby by1000 ÄÄto0.03exÄÄto0.03exÄÄ=10100 =minusby by1000 Ç»to0.03exÇ»to0.03exÇ»=10100 =minusby by1000 ÅÍto0.0

비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2

<4D F736F F D20C3A520BCD2B0B32DC0CCB7B2B0C5B8E9B3AAB6FBBFD6B0E1C8A5C7DFBEEE322E646F63>

chap01_time_complexity.key

chap8.PDF

zb 2) zb3) 나 위 시와 보기의 공통적인 표현 방법이 아닌 것은? 뻐꾹새야 뻐꾹새야 뻐꾹뻐꾹 울어 주면 < 보기> 고개를 넘어서 마을로 뻐꾹새야 뻐꾹새야 뻐꾹뻐꾹 울어 주면 밭을 매는 우리 엄마 허리 허리 덜 아프고 ᄂ밭을 매는 우리 엄마 허리 허리 덜 아프고

Chapter 4. LISTS

1

쉽게 풀어쓴 C 프로그래밊

2005년 6월 고1 전국연합학력평가

중간코드생성


Microsoft PowerPoint 웹 연동 기술.pptx

6주차.key

Microsoft PowerPoint - semantics


untitled

슬라이드 1

Chap 6: Graphs

<33C6E4C0CCC1F620C1A63139C8A320B8F1C2F72E687770>

금오공대 컴퓨터공학전공 강의자료

유니티 변수-함수.key

구조체정의 자료형 (data types) 기본자료형 (primitive data types) : char, int, float 등과같이 C 언어에서제공하는자료형. 사용자정의자료형 (user-defined data types) : 다양한자료형을묶어서목적에따라새로운자료형을

레이아웃 1

intro

Microsoft PowerPoint - PL_03-04.pptx


Microsoft PowerPoint - ch07 - 포인터 pm0415

학습목표 함수프로시저, 서브프로시저의의미를안다. 매개변수전달방식을학습한다. 함수를이용한프로그래밍한다. 2

Transcription:

프로그래밍 원리 (Principles of Programming) Part II Prof. Kwangkeun Yi 차례 1 데이타구현하기 (data implementation) 2 데이터속구현감추기 (data abstraction) 3 여러구현동시지원하기 (multiple implemenations) 4 각계층별로속구현감추기 (data abstraction hierarchy)

다음 1 데이타구현하기 (data implementation) 2 데이터속구현감추기 (data abstraction) 3 여러구현동시지원하기 (multiple implemenations) 4 각계층별로속구현감추기 (data abstraction hierarchy) 데이타구현하기 (data implementation) 새로운타입의데이타 / 값구현하기 기억하는가 : 타입들 (types) τ ::= ι primitive type τ τ pair(product) type τ + τ or(sum) type τ τ ftn type, single param τ τ τ ftn type, multi params any type t user-defined type s name τ t user-defined type s name, with param ι ::= int real bool string symbol unit 새로운타입 (t 혹은 τ t) 의데이타구현해야

새로운데이타타입 기본으로제공되는타입들 int, real, bool, string, symbol, unit 이아닌 소프트웨어마다새로운타입의데이타 / 값이필요 예 ) 짝, 집합, 리스트, 가지, 나무, 숲, 땅, 감정, 관계, 지식, 자동차, 목록표, 하늘, 바람, 원자, 분자, 세포, 뉴런, 책, 색깔, 종이, 건물, 층, 벽, 기둥, 사람, 테란, 젤-나가, 저그, 프로토스, 등등 새로운데이타타입구현하기 기억하는가 : 모든프로그래밍언어에는각타입마다그타입의값을만드는식과사용하는식을구성하는방법이제공된다. 구현할새로운타입의데이터 / 값에대해서도 만드는 (introduction, construction) 방법과 사용하는 (elimination, use) 방법을함수로구현해서사용하면된다.

새로운데이타타입구현하기 새로운타입을 τ 라고하면 만들기함수들의타입은 τ 사용하기함수들의타입은 τ 예 ) 짝 (pair) τ τ 만들기 pair : τ τ τ τ 사용하기 그함수들의구현 : l : τ τ τ r : τ τ τ (define pair cons) (define l car) (define r cdr)

예 ) 리스트 (list) τ list 만들기 empty : τ list link : τ τ list τ list 사용하기 is-empty? : τ list bool fst : τ list τ rest : τ list τ list 그함수들의구현 : (define empty ()) (define is-empty? null?) (define link pair) (define fst l) (define rest r) 예 ) 두갈래가지구조 (binary tree) τ bintree 만들기 leaf : τ τ bintree node-l : τ τ bintree τ bintree node-r : τ τ bintree τ bintree node-lr : τ τ bintree τ bintree τ bintree 사용하기 node-val : τ bintree τ is-leaf? : τ bintree bool is-ltree? : τ bintree bool is-rtree? : τ bintree bool is-lrtree? : τ bintree bool l-subtree : τ bintree τ bintree r-subtree : τ bintree τ bintree 그함수들의구현 : (define (leaf x) (pair leaf x)) (define (node-l x t) (pair r (pair x t))) (define (node-r x t) (pair l (pair x t)))...

예 ) 두갈래가지구조 (binary tree) τ bintree 만들기 empty : τ bintree node : τ τ bintree τ bintree τ bintree 사용하기 node-val : τ bintree τ is-empty? : τ bintree bool l-subtree : τ bintree τ bintree r-subtree : τ bintree τ bintree 그함수들의구현 : (define empty empty) (define (node x lt rt) (pair x (pair lt rt))) (define (node-val t)...) (define (is-empty? t)...)... 예 ) 일반가지구조 (tree) τ tree 만들기 empty : τ tree node : τ (τ tree) list τ tree 사용하기 node-val : τ tree τ is-empty? : τ tree bool num-subtrees : τ tree int nth-subtree : τ tree int τ tree 그함수들의구현 : (define empty empty) (define (node x trees) (pair x trees) (define (node-val t)...) (define (is-empty? t)...) (define (nth-subtree t n)...)

데이타타입구현이슈들 하나의테이타타입에대해서 여러버전가능 : 만들기 / 사용하기함수들의기획 leaf, node-l, node-r, node-lr node-val, is-leaf?, is-rtree?, is-ltree?, is-lrtree? l-subtree, r-subtree 9 8 >= >< >; v.s. >: empty, node node-val, is-empty? l-subtree, r-subtree 여러버전가능 : 만들기 / 사용하기함수들의구현 (define empty A) (define node B) (define node-val C) (define l-subtree D) (define r-subtree E) (define empty ㄱ ) (define node ㄴ ) v.s. (define node-val ㄷ ) (define l-subtree ㄹ ) (define r-subtree ㅁ ) 데이타타입기획과구현원리 새로운데이타타입의구현은만들기 (introduction) 함수와사용하기 (elimination) 함수들을정의하면된다. 이때, 만들기 / 사용하기함수들의기획은드러내고구현은감추어서, 외부에서는기획이드러낸 (interface, 겉 ) 내용만이용해서프로그램을작성하도록한다. 기획을작성하는언어 : 이름, 타입, 하는일}{{}}{{} 프로그래밍언어자연어, 수학 기획 (interface) 과구현 (implementation) 은독립적으로 : 데이터속구현감추기 (data abstraction)

다음 1 데이타구현하기 (data implementation) 2 데이터속구현감추기 (data abstraction) 3 여러구현동시지원하기 (multiple implemenations) 4 각계층별로속구현감추기 (data abstraction hierarchy) 데이타속구현감추기 (data abstraction) 분리 : 외부와데이타구현의속내용 외부에알릴것. 변하지말것. (interface) 만들기 / 사용하기함수들의기획 : 이름, 타입, 하는일 외부에서는만들기 / 사용하기함수들만이용하기 외부에알리지말것. 변해도될것. (implementation) 만들기 / 사용하기함수들의구현 장점 : 외부는데이터구현과무관 데이타구현변경과외부사용코드변경이독립됨 데이타구현과외부사용프로그래밍동시진행가능

예 ) 짝 τ τ 기획 (interface) pair : τ τ τ τ l : τ τ τ r : τ τ τ 구현은기획에맞기만하면다양하게가능 안1: cons, car, cdr 안2: lambda 외부사용 (define (leaf x) (pair leaf x)) (define (node-l x t) (pair r (pair x t))) (define (node-r x t) (pair l (pair x t))) (define (l-subtree t) (if (equal (l t) l) (r (r t)))) (define (r-subtree t) (if (equal (l t) r) (r (r t)))) 예 ) 두갈래가지구조 (tree) τ bintree 기획 (interface) empty : τ bintree node : τ τ bintree τ bintree τ bintree node-val : τ bintree τ is-empty? : τ bintree bool l-subtree : τ bintree τ bintree r-subtree : τ bintree τ bintree 외부사용 (node 10 (node 8 (node 5 empty empty) (node 9 empty empty)) empty) (node 1 empty (node 2 empty (node 3 empty empty))) (define (traverse t) (if (is-empty? t) () (begin (print (node-val t)) (traverse (l-subtree t)) (traverse (r-subtree t))) ))

연습 : 데이터구현하기 + 속구현감추기 대수식 (algebraic expression) 데이터 미분함수 (symbolic differentiation) diff : ae string ae 부분계산함수 (partial evaluation) eval : ae string real ae 다음 1 데이타구현하기 (data implementation) 2 데이터속구현감추기 (data abstraction) 3 여러구현동시지원하기 (multiple implemenations) 4 각계층별로속구현감추기 (data abstraction hierarchy)

여러구현동시지원 : 예 ) 복소수데이타 표면 단계 기획 (interface) make-from-real-imag : real real complex make-from-mag-angle : real real complex is-complex? : bool real : complex real imag : complex real mag : complex real angle : complex real 외부사용 add-complex : complex complex complex mul-complex : complex complex complex 여러구현동시지원 : 예 ) 복소수데이타 한가지방식만구현한경우 (define (make-from-real-imag r i)...) (define (make-from-mag-angle m a)...) (define (is-complex? x)...) (define (real x)...) (define (imag x)...) (define (mag x)...) (define (angle x)...)

여러구현동시지원 : 예 ) 복소수데이타 두가지방식의구현을같이이용하는경우 (define (make-from-real-imag r i)...) (define (make-from-mag-angle m a)...) (define (is-complex? x)...) (define (real x)...) (define (imag x)...) (define (mag x)...) (define (angle x)...) 예 ) 복소수데이타구현 A rectangular representation 기획 (interface) make-from-real-imag-rectangular : real real complex make-from-mag-angle-rectangular : real real complex is-rectangular? : complex bool real-rectangular : complex real imag-rectangular : complex real mag-rectangular : complex real angle-rectangular : complex real

예 ) 복소수데이타구현 B polar representation 기획 (interface) make-from-real-imag-polar : real real complex make-from-mag-angle-polar : real real complex is-polar? : complex bool real-polar : complex real imag-polar : complex real mag-polar : complex real angle-polar : complex real 여러구현방식을지원할때의원리 데이터속구현감추기 (data abstraction) 원리를유지한다. 즉, 각구현방식마다만들기와사용하기함수를제공한다. 단, 그함수들의이름이다른구현방식과구별되게한다. 그리고, 표면 단계의만들기와사용하기함수들을아랫단계의여러구현방식들을이용해서정의한다.

새로운구현방식도사용하도록확장하려면? 같은원리로 : 그리고, 바꿀것은? 표면 단계의만들기와사용하기함수들 : make-from-real-imag,, angle, is-complex? 새로운구현방식을첨가 / 삭제하기더쉬운방법? 표면 단계의함수들모두를매번변경해주는번거로움 : (define (real x) (cond ((is-rectangular? x) (real-rectangular x)) ((is-polar? x) (real-polar x)) ((is-xyz? x) (real-xyz x)) (else (error)))) (define (angle x) (cond ((is-rectangular? x) (angle-rectangular x)) ((is-polar? x) (angle-polar x)) ((is-xyz? x) (angle-xyz x)) (else (error))))

새로운구현방식을첨가 / 삭제하기더쉬운방 법? 2차원의함수테이블사용. ( 테이블은변할수있는물건으로 ) 가로 : 함수이름태그 ( real, imag, 등등 ) 세로 : 구현방식태그 ( rectangular, polar, 등등 ) real imag rectangular real-rectangular imag-rectangular polar real-polar imag-polar xyz real-xyz imag-xyz 새로운구현방식? 해당함수들을테이블에등록 표면 의함수들은고정됨 두개의태그 ( 함수이름, 구현방식 ) 로테이블에서가져온다 (define (real x) ((lookup ftn-tbl real (rep-tag x)) x)) (define (imag x) ((lookup ftn-tbl imag (rep-tag x)) x)). 다음 1 데이타구현하기 (data implementation) 2 데이터속구현감추기 (data abstraction) 3 여러구현동시지원하기 (multiple implemenations) 4 각계층별로속구현감추기 (data abstraction hierarchy)

계층별로속구현감추기원리 여러구현방식을지원할때의원리와같다 : 데이터속구현감추기 (data abstraction) 원리를유지한다. 즉, 각구현방식마다만들기와사용하기함수를제공한다. 단, 그함수들의이름이다른구현방식과구별되게한다. 그리고, 표면 단계의만들기와사용하기함수들을아랫단계의여러구현방식들을이용해서정의한다.