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

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 ±×to0.

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

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

chap 5: Trees

OCaml

Microsoft Word - FunctionCall

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

슬라이드 1

untitled

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

PowerPoint 프레젠테이션

PART

Part Part

£01¦4Àå-2

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

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

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

(Microsoft Word - \301\337\260\243\260\355\273\347.docx)

제4장 기본 의미구조 (Basic Semantics)

OCaml ífl—로그랟밓

Microsoft PowerPoint - a10.ppt [호환 모드]

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.

untitled

untitled

chap01_time_complexity.key

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}. 그리

<32332D322D303120B9E6BFB5BCAE20C0CCB5BFC1D6312D32302E687770>

Chapter 4. LISTS

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

Poison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3

Frama-C/JESSIS 사용법 소개

<4D F736F F D20C3A520BCD2B0B32DC0CCB7B2B0C5B8E9B3AAB6FBBFD6B0E1C8A5C7DFBEEE322E646F63>

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

BMP 파일 처리

Chapter ...

5.스택(강의자료).key

A Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning

SIGPLwinterschool2012

2002년 2학기 자료구조

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

11강-힙정렬.ppt

10주차.key

adfasdfasfdasfasfadf

03_queue

강의 개요

TOPOLOGY-WEEK 6 & 7 KI-HEON YUN 1. Quotient space( 상공간 ) X 가위상공간이고 Y 가집합이며 f : X Y 가전사함수일때, X 의위상을사용하여 Y 에위상을정의할수있는방법은? Definition 1.1. X 가위상공간, f : X

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

11장 포인터

예제 1.1 ( 관계연산자 ) >> A=1:9, B=9-A A = B = >> tf = A>4 % 4 보다큰 A 의원소들을찾을경우 tf = >> tf = (A==B) % A

Microsoft PowerPoint - chap06-2pointer.ppt

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

목차 BUG DEQUEUE 의 WAIT TIME 이 1 초미만인경우, 설정한시간만큼대기하지않는문제가있습니다... 3 BUG [qp-select-pvo] group by 표현식에있는컬럼을참조하는집합연산이존재하지않으면결괏값오류가발생할수있습니다... 4

<C3D6C0E7C3B528BAB8B5B5C0DAB7E1292D322E687770>

2015 경제ㆍ재정수첩

Microsoft PowerPoint - PL_03-04.pptx

untitled

1

Microsoft PowerPoint 세션.ppt

Chapter 4. LISTS


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

Chapter #01 Subject

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

대학교육151호-합침

chap 5: Trees

Microsoft PowerPoint - Chap5 [호환 모드]

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

API 매뉴얼

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


목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2

6주차.key

동강바 반과람 자물과 를고구 꿈기름 꾸같 다이 소 중 한 風 02 letter from CEO... 이용재 한국투자밸류자산운용 대표이사 인사말 雲 Part 1 우리는 동반자, 더불어 함께 02 Life Partner 1... 함께 구르는 돌 소설가 조정래 시인 김초혜

?

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

1. auto_ptr 다음프로그램의문제점은무엇인가? void func(void) int *p = new int; cout << " 양수입력 : "; cin >> *p; if (*p <= 0) cout << " 양수를입력해야합니다 " << endl; return; 동적할

WISHBONE System-on-Chip Interconnection Architecture for Portable IP Cores

Data structure: Assignment 1 Seung-Hoon Na October 1, Assignment 1 Binary search 주어진 정렬된 입력 파일이 있다고 가정하자. 단, 파일내의 숫자는 공백으로 구 분, file내에 숫자들은

Microsoft Word - KSR2014S042

hlogin2

Microsoft PowerPoint - chap03-변수와데이터형.pptx

JVM 메모리구조

PowerPoint Template

<B9CEC1D6C1A4C3A5BFACB1B8BFF82DBBE7B6F7B0FAC1A4C3A5BABDC8A328C6EDC1FD292E687770>

Microsoft Word - PLC제어응용-2차시.doc

Lab 3. 실습문제 (Single linked list)_해답.hwp

<BFB9BCFAB0E6BFB5C1F6BFF8BCBEC5CD5F BFB9BCFAB0E6BFB520C4C1BCB3C6C FB3BBC1F628C3D6C1BEBBF6BAAFC8AF292E706466>

MySQL-.. 1


윈도우즈프로그래밍(1)

<4D F736F F F696E74202D B3E22032C7D0B1E220C0A9B5B5BFECB0D4C0D3C7C1B7CEB1D7B7A1B9D620C1A638B0AD202D20C7C1B7B9C0D320BCD3B5B5C0C720C1B6C0FD>

JUNIT 실습및발표

C# Programming Guide - Types

유니티 변수-함수.key

제 1 절 복습 \usepackage{ g r a p h i c x }... \ i n c l u d e g r a p h i c s [ width =0.9\ textwidth ] { b e a r. j p g } (a) includegraphics 사용의일반적인유형

untitled

Transcription:

SNU 4190.210 프로그래밍 원리 (Principles of Programming) Part III Prof. Kwangkeun Yi

차례 1 값중심 vs 물건중심프로그래밍 (applicative vs imperative programming) 2 프로그램의이해 : 환경과메모리 (environment & memory)

다음 1 값중심 vs 물건중심프로그래밍 (applicative vs imperative programming) 2 프로그램의이해 : 환경과메모리 (environment & memory)

값중심 vs 물건중심프로그래밍 (applicative vs imperative programming) 양쪽프로그래밍방식에능숙해야 값 : 변하지않는다 (value, immutable)

값중심 vs 물건중심프로그래밍 (applicative vs imperative programming) 양쪽프로그래밍방식에능숙해야 값 : 변하지않는다 (value, immutable) (+ 2 1) 는 3을의미 ; 2가변해서 3이되는것이아님.

값중심 vs 물건중심프로그래밍 (applicative vs imperative programming) 양쪽프로그래밍방식에능숙해야 값 : 변하지않는다 (value, immutable) (+ 2 1) 는 3을의미 ; 2가변해서 3이되는것이아님. (add-element 1 S) 는 S {1} 인집합을의미. S에 1 이첨가된, 변화된 S를의미하지않음.

값중심 vs 물건중심프로그래밍 (applicative vs imperative programming) 양쪽프로그래밍방식에능숙해야 값 : 변하지않는다 (value, immutable) (+ 2 1) 는 3을의미 ; 2가변해서 3이되는것이아님. (add-element 1 S) 는 S {1} 인집합을의미. S에 1 이첨가된, 변화된 S를의미하지않음. 지금까지의프로그래밍방식 ( 상위의. 수리논술방식 )

값중심 vs 물건중심프로그래밍 (applicative vs imperative programming) 물건 : 상태가변한다 (state, mutable)

값중심 vs 물건중심프로그래밍 (applicative vs imperative programming) 물건 : 상태가변한다 (state, mutable) (add-element S 1) 는집합 S가변해서 1 이첨가된새로운집합이됨.

값중심 vs 물건중심프로그래밍 (applicative vs imperative programming) 물건 : 상태가변한다 (state, mutable) (add-element S 1) 는집합 S가변해서 1 이첨가된새로운집합이됨. 물건의상태를변화시키는, 이런프로그램이필요한경우도많다. ( 예 : 1-데이타 n-구현을돕던 함수 테이블 )

값중심 vs 물건중심프로그래밍 (applicative vs imperative programming) 물건 : 상태가변한다 (state, mutable) (add-element S 1) 는집합 S가변해서 1 이첨가된 새로운집합이됨. 물건의상태를변화시키는, 이런프로그램이필요한 경우도많다. ( 예 : 1-데이타 n-구현을돕던 함수 테이블 ) 변하므로, 순서가중요.

값중심 vs 물건중심프로그래밍 (applicative vs imperative programming) 물건 : 상태가변한다 (state, mutable) (add-element S 1) 는집합 S가변해서 1 이첨가된 새로운집합이됨. 물건의상태를변화시키는, 이런프로그램이필요한 경우도많다. ( 예 : 1-데이타 n-구현을돕던 함수 테이블 ) 변하므로, 순서가중요. 물건의상태를변화시키는명령형프로그래밍방식

값중심 vs 물건중심프로그래밍 (applicative vs imperative programming) 예 : (append l r) 함수 값중심 (value, immutable): l 과 r 은변하지않음. (define (append l r) (cond ((null? l) r) ((null? r) l) (else (cons (car l) (append (cdr l) r))) )) 물건중심 (state, mutable): l 이변해서 l@r 이됨. (define (append l r) (cond ((null? ((null? r) l) l) (begin (change l r) l)) (else (begin (change (cdr l) (append (cdr l) r)) l)) ))

값중심 vs 물건중심프로그래밍 (applicative vs imperative programming) 프로그래밍언어들은대개 두가지방식을모두구사할수있는방안을제공 단, 기본으로지원하는방식이있고, 원한다면다른방식도가능 Scheme: 값중심 > 물건중심 ML: 값중심 > 물건중심 Java: 물건중심 > 값중심 C: 물건중심 > 값중심 따라서, 데이타속구현에서두방식중하나를 선택해야

값중심 vs 물건중심프로그래밍 (applicative vs imperative programming) 데이타속구현을두방식중하나로선택. 겉 (interface) 으로드러나는기획의차이 empty : stk vs unit stk push : stk elmt stk vs stk elmt unit is-empty? : stk bool vs stk bool pop : stk elmt stk vs stk elmt

값중심 vs 물건중심프로그래밍 (applicative vs imperative programming) 데이타속구현을두방식중하나로선택. 속구현의차이

값중심 vs 물건중심프로그래밍 (applicative vs imperative programming) 데이타속구현을두방식중하나로선택. 속구현의차이 applicative style (define empty ()) (define (push s x) (cons x s)) (define is-empty? null?) (define (pop s) (if (is-empty? s) (error) s))

값중심 vs 물건중심프로그래밍 (applicative vs imperative programming) 데이타속구현을두방식중하나로선택. 속구현의차이 applicative style (define empty ()) (define (push s x) (cons x s)) (define is-empty? null?) (define (pop s) (if (is-empty? s) (error) s)) imperative style (define empty (cons 0 0)) (define (push s x) (let ((cell (cons x nil))) (begin (set-cdr! cell (cdr s)) (set-cdr! s cell)) )) (define (is-empty? s) (= 0 (cdr s))) (define (pop s) (if (is-empty? s) (error) (let ((top (cadr s))) (begin (set-cdr! s (cddr s)) (cons top s)) )))

값중심프로그래밍 (applicative programming) 원 리 값은변하지않는것 함수는값을받아새로운값을만든다 값들은변하지않으므로최대한공유하도록구현될수있다 See: 기계에서구현되는 (append l r), (add-element S 1) ( 예 : S = {0, 2, 3, 4, 5, 6})

물건중심프로그래밍 (imperative programming) 원리 물건은그상태가변하는것 함수는물건을받아기존의물건을변화시킬수있다 물건은변하므로공유하도록구현되면혼동스러울수있다 See: 기계에서구현되는 (append l r), (add-element S 8) 변하는중간에사용되므로, 순서가중요

값중심과물건중심구현의비용비교 S = {0, 2, 3, 4, 5, 6} 구현 : 이진탐색가지구조 (binary search tree) 다음함수의구현 : (add-element S 9)

값중심과물건중심구현의비용비교 다음함수의구현 : (add-element S 9)

값중심과물건중심구현의비용비교 다음함수의구현 : (add-element S 9) 변화시키면서 (imperative style)

값중심과물건중심구현의비용비교 다음함수의구현 : (add-element S 9) 변화시키면서 (imperative style) 변화없이 (applicative style)

값중심과물건중심구현의비용비교 원소를넣는경우 변화된새것만유지하면되는경우 time space imperative O(log N) O(1) applicative O(log N) O(1) 옛것과새것모두유지해야하는경우 time space imperative O(N) O(N) applicative O(log N) O(log N)

다음 1 값중심 vs 물건중심프로그래밍 (applicative vs imperative programming) 2 프로그램의이해 : 환경과메모리 (environment & memory)

환경과메모리 (environment & memory) 프로그램실행을이해하는데필요한두개의실체

환경과메모리 (environment & memory) 프로그램실행을이해하는데필요한두개의실체 환경 : 프로그램에서정의된이름들과그대상의목록표 환경은여럿 : 프로그램의어디를실행하냐에따라다른환경이사용됨 유효범위에따라변화하는이름의대상을파악하는데필요

환경과메모리 (environment & memory) 프로그램실행을이해하는데필요한두개의실체 환경 : 프로그램에서정의된이름들과그대상의목록표 환경은여럿 : 프로그램의어디를실행하냐에따라다른환경이사용됨 유효범위에따라변화하는이름의대상을파악하는데필요 메모리 : 이름이지칭하는그대상 ( 값이나물건 ) 을 구현하는공간 메모리는하나 : 메모리는프로그램시작때부터 끝날때까지하나 실행중에변화하는물건을이해하는데필요. 구현된 공간에서물건들이변화.

환경과메모리 (environment & memory)

환경 (environment) 환경은이름들이무엇을지칭하는지를알려주는 테이블 이름과그대상의쌍 (binding) 들의테이블 모든프로그램식의실행은주어진환경아래에서진행된다 환경은프로그램식을바라보는안경 (+ x y) 의실행결과는? 다른환경에서다른실행결과를냄

환경 (environment) 관리 환경만들기 : 이름이지어지면 환경참조하기 : 이름이나타나면 환경폐기하기 : 유효범위가끝나면

새로운환경이도입되는경우 이름짓는경우 (binding, declaration, definition) 식에서이름짓기 E ::= 예전것들 (let ((x E) + ) E) x의정의 (letrec ((x E) + ) E) x의재귀정의 (E E) 함수호출시함수인자가 프로그램에서이름짓기 P ::= E 계산식 (define x E) E 이름정의후계산식

메모리의물건을변화시키는경우 변화시키는명령문 (mutation, imperative operations) Scheme: set!, set-car!, set-cdr! OCaml: 지정문 (:=) Java, C, C++ 등 : 모든지정문 (=)

함수와환경 함수 = 함수텍스트정의와함수가정의될때의환경

함수와환경 함수 = 함수텍스트정의와함수가정의될때의환경 (let ((y 1)) (let ((udd (lambda (x) (+ x y)))) (let ((y 10)) (udd 8))))

환경모델이해하기

환경모델이해하기 (define x 1)

환경모델이해하기 (define x 1) (set! x (+ x 1))

환경모델이해하기 (define x 1) (set! x (+ x 1)) (* (let ((x (+ x 2))) (+ x 3)) x)

환경모델이해하기 (define x 1) (set! x (+ x 1)) (* (let ((x (+ x 2))) (+ x 3)) x) (define f (lambda (n) (+ n x)))

환경모델이해하기 (define x 1) (set! x (+ x 1)) (* (let ((x (+ x 2))) (+ x 3)) x) (define f (lambda (n) (+ n x))) (f 10)

환경모델이해하기 (define x 1) (set! x (+ x 1)) (* (let ((x (+ x 2))) (+ x 3)) x) (define f (lambda (n) (+ n x))) (f 10) (let ((x 100)) (f 10))

환경모델이해하기 (define (make-counter n) (lambda () (begin (set! n (+ n 1)) n) )) (define tic1 (make-counter 0))

환경모델이해하기 (define (make-counter n) (lambda () (begin (set! n (+ n 1)) n) )) (define tic1 (make-counter 0)) (tic1) (tic1)

환경모델이해하기 (define (make-counter n) (lambda () (begin (set! n (+ n 1)) n) )) (define tic1 (make-counter 0)) (tic1) (tic1) (define tic2 (make-counter 0))

환경모델이해하기 (define (make-counter n) (lambda () (begin (set! n (+ n 1)) n) )) (define tic1 (make-counter 0)) (tic1) (tic1) (define tic2 (make-counter 0)) (tic2)

환경모델이해하기 (define (make-counter n) (lambda () (begin (set! n (+ n 1)) n) )) (define tic1 (make-counter 0)) (tic1) (tic1) (define tic2 (make-counter 0)) (tic2) (tic1)

환경모델이해하기 (define (make-withraw balance) (lambda (amount) (if (>= balance amount) (begin (set! balance (- balance amount)) balance) "insufficient fund" ))) (define withdraw (make-withdraw 100)) (withdraw 10) (withdraw 20)

환경모델로이해하기 (define empty (cons () ())) (define (push s x) (let ((cell (cons x ()))) (begin (set-cdr! cell (cdr s)) (set-cdr! s cell))

환경모델로이해하기 (define empty (cons () ())) (define (push s x) (let ((cell (cons x ()))) (begin (set-cdr! cell (cdr s)) (set-cdr! s cell)) (define stk empty) (push stk 1) (push stk 2)