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

Size: px
Start display at page:

Download "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"

Transcription

1 차례 SNU 프로그래밍원리 (Principles of Programming) Part I Prof. Kwangkeun Yi 1 프로그래밍기본부품과조합 (elements & compound) 2 이름짓기 (binding, delclaration, definition) 3 재귀와고차함수 (recursion & higher-order functions) 4 프로그램의계산복잡도 (program complexity) School of Computer Science & Engineering 5 타입으로정리하기 (types & typeful programming) 6 맞는프로그램인지확인하기 (program correctness) 다음 프로그램구성에필요한요소 1 프로그래밍기본부품과조합 (elements & compound) 2 이름짓기 (binding, delclaration, definition) 3 재귀와고차함수 (recursion & higher-order functions) 4 프로그램의계산복잡도 (program complexity) 5 타입으로정리하기 (types & typeful programming) 기본부품 (primitives) 조합하는방법 (means of constructing compound) 프로그램실행과정의이해 (rule of evaluation) 타입으로정리하는방법 (types) 속내용을감추는방법 (means of abstraction) 6 맞는프로그램인지확인하기 (program correctness)

2 기본부품의반복된조합 기본부품 (primitives) (pictures from Google search) 컴퓨터프로그램이다른점 : 만든것이실행 ( 계산 ) 된다 기본적으로제공됨. 상수 (constant) 라고도불림. type elements operators N, R 0, -1, 1.2, -1.2e2 +, *, /, =, <=, B #t, #f and, or, not, String "snow", "12@it" substr, strconcat, Symbol snow, 12@it Unit () 기본타입들 : N, R, B, String, Symbol 실행 (evaluation, semantics): -1.2e2는 , #t는참, + 는 +, snow는 snow 라는심볼, 등 식을조합하는방법 프로그램식의실행과정 P ::= E program E ::= c constant x name (if E E E) conditional (cons E E) pair (car E) selection (cdr E) selection (lambda (x ) E) function (E E ) application 재귀적 (inductive, recursive): 만들수있는식은무한히많음식안에임의의식들을맘껏조합할수있슴 조합식의실행 (semantics) 은어떻게될까? 그실행을 머릿속에그려야. 주어진프로그램식을읽고 (read) 그식을계산하고 (evaluate) 계산중에컴퓨터메모리와시간을소모계산중에입출력이있으면입출력을수행 최종계산결과가있으면화면에프린트한다 (print) 주의 : 식의실행규칙 (rule of evaluation, semantics): 명확히정의됨 프로그래머는이것을이해해야의도한프로그램을작성할수있슴 제대로실행될수없는 ( 오류있는 ) 멀쩡한식들이많음

3 식의실행규칙 (rule of evaluation, semantics) 실행규칙. 각식의종류에따라서 : c 일때 : x 일때 : (if E E E) 일때 : (cons E E) 일때 : (car E) 일때 : (cdr E) 일때 : (lambda (x ) E) 일때 : (E E ) 일때 : 주의 : 생긴게옳다고모두제대로실행되는게아님 부품식들의계산결과의타입이맞아야 이름의사용, 이름의유효범위 (scope) 프로그램식조합방식의원리 모든프로그래밍언어에는각타입마다그타입의값을만드는식과사용하는식을구성하는방법이제공된다. 이원리를확인해보면 다음 1 프로그래밍기본부품과조합 (elements & compound) 타입 τ 만드는식 사용하는식 기본타입 ι c +, *, =, and, substr, etc 곱타입 τ τ (cons E E) (car E), (cdr E) 함수타입 τ τ (lambda (x ) E) (E E ) 2 이름짓기 (binding, delclaration, definition) 3 재귀와고차함수 (recursion & higher-order functions) 4 프로그램의계산복잡도 (program complexity) 5 타입으로정리하기 (types & typeful programming) 6 맞는프로그램인지확인하기 (program correctness)

4 이름짓기 (binding, declaration, definition) 이름짓기는속내용감추기 (abstraction) 의첫스텝 : 이름을지으면지칭하는대상 ( 속내용 ) 대신에그이름을사용 이름의유효범위 (scope) 결정 프로그램텍스트에서쉽게결정됨 (lexical scoping) 이름지을수있는대상 : 프로그램에서다룰수있는모든값 이름의유효범위 (scope) 가한정됨. 따라서, 이름재사용가능 전체프로그램의모든이름을외울필요없슴 이름이필요한곳에만알려짐 이름의유효범위 (scope) 는쉽게결정됨 이런간단한유효범위는수리논술의 2000 년전통 : Theorem The intersection of all addition-closed sets is addition-closed. Proof Let S be the intersection set. of S. Because x and y are elements of... Let x and y be elements hence in S. 이름짓기 (binding, declaration, definition) 식에서이름짓기 E ::= 예전것들 (let ((x E) + ) E) x의정의 (letrec ((x E) + ) E) x의재귀정의 프로그램에서이름짓기 P ::= E 계산식 (define x E) E 이름정의후계산식 이름짓기의실행규칙 (rule of evaluation, semantics) (let ((x E E) (letrec ((x E E) (define x E) E 주의 : 생긴게옳다고모두제대로실행되는게아님 부품식들의계산결과의타입이맞아야 이름의유효범위 (scope) 환경 (environment): 이름과그대상 ( 값 ) 의목록표

5 이름의유효범위 (scope) 예 이름짓기 + 사용하기의실행과정 (semantics) 컴퓨터는프로그램식을실행할때 이름과그대상의목록표를관리 그러한목록표를환경 (environment) 이라고함 a 1 b 2 env (( a 1) ( b 2 f (lambda (x) (+ x 1 이름짓기 + 사용하기의실행과정 (semantics) 여러개한꺼번에이름짓기 : 실행의미 환경 (environment) 관리 환경만들기 : 이름이지어지면 환경참조하기 : 이름이나타나면 환경폐기하기 : 유효범위가끝나면 (let ((x 1 E 1 ) (x 2 E 2 E) (letrec ((x 1 E 1 ) (x 2 E 2 E) (define x 1 E 1 ) (define x 2 E 2 ) E

6 설탕구조 (syntactic sugar) 편리를위해서제공 ; 지금까지것들로구성가능 ; 반드시필 요는없다 : list, cond, let, define 은설탕 (list E ) = (cons ) (cond (E E ) (else E = (if ) (let ((x E E ) = ((lambda ) ) (let ((x 1 E 1 ) (x 2 E 2 E) = ((lambda ) ) (define x E) E = (letrec ) (define x E) (define y E ) E = (letrec ) (define (f x) E) = (define ) (begin E E ) = ((lambda ) ) 다음 1 프로그래밍기본부품과조합 (elements & compound) 2 이름짓기 (binding, delclaration, definition) 3 재귀와고차함수 (recursion & higher-order functions) 4 프로그램의계산복잡도 (program complexity) 5 타입으로정리하기 (types & typeful programming) 6 맞는프로그램인지확인하기 (program correctness) 재귀 (recursion): 되돌기, 같은일의반복 예 ) 재귀하고있는그림들 : 예 ) 재귀하고있는표기법 : E ::= c x (if E E E) (cons E E) 예 ) 재귀하고있는정의 : a 0 = 1, a n+1 = a n + 2 (n N) X = 1 X 재귀함수 (recursive function) 의정의 함수만재귀적으로정의가능 ( 대부분의언어 ) ( 왜?) (define fac (lambda (n) (if (= n 0) 1 (* n (fac (- n 1 임의의값을재귀적으로정의? 그값계산이무한할수있슴 (define x (+ 1 x (define K (cons 1 K (define Y (cons 1 (add1 Y)

7 재귀함수의실행과정 끝재귀 (tail recursion) 변환 (define (fac n) (if (= n 0) 1 (* n (fac (- n 1) (define (fac n) 누적됨 : 재귀호출을마치고계속해야할일들이 함수호출때호출마치고계속해야할일 (continuation) 을기억해야 현대기술은재귀호출때누적않되도록자동변환 (define (fac-aux m r) (if (= m 0) r (fac-aux (- m 1) (* m r (fac-aux n 1 끝재귀 (tail recursion) 변환 끝재귀함수 (tail-recursive ftn) 의실행과정 고차함수 (higher-order function) 함수가인자로 b 함수가결과로 n=a 현대프로그래밍에서 f(n) = f(a) + + f(b) d f(x + ɛ) f(x) f(x) = dx ɛ 할일을 ( 하고 ) 재귀호출변수로전달 재귀호출마치고할일이누적되지않음 모두지원되는 (Scala, Python, Lua, JavaScript, Clojure, Scheme, ML, C#, F# 등 ) 과거에는지원되지못했던

8 고차함수는일상에서흔하다 고차함수의쓸모 고수준으로일반화된함수를정의할수있다 함수가인자로 요리사 ( 함수 ) 는요리법 ( 함수 ) 과재료를받아서... 댄서 ( 함수 ) 는리듬있게움직이는법 ( 함수 ) 과음악을받아서... 컴퓨터 ( 함수 ) 는프로그램 ( 함수 ) 과입력을받아서... 함수가결과로 요리학교 ( 함수 ) 는요리사 ( 함수 ) 를만들어내고댄스동아리 ( 함수 ) 는댄서 ( 함수 ) 를만들어내고컴퓨터공장 ( 함수 ) 은컴퓨터를 ( 함수 ) 만들어내고 (define (sigma lower upper) (lambda (f) (define (loop n) (if (> n upper) 0 (+ (f n) (loop (+ n 1) (loop upper) (define one-to-million (sigma (one-to-million (lambda (n) (* n n) (one-to-million (lambda (n) (+ n 2) 고차함수의쓸모 다음 고수준으로일반화된함수를정의할수있다 (define (sum lower upper f) (if (> lower upper) 0 (+ (f lower) (sum (+ lower 1) upper f (define (generic-sum lower upper f larger base op inc) (if (larger lower upper) base (op (f lower) (generic-sum (inc lower) upper f larger base op inc (sum 1 10 (lambda (n) n (sum (lambda (n) (+ n 1) (generic-sum 1 10 (lambda (n) n) > -1 + (lambda (n) (+ 2 n) (generic-sum "a" "z" (lambda (n) n) order "" concat alpha-next) 1 프로그래밍기본부품과조합 (elements & compound) 2 이름짓기 (binding, delclaration, definition) 3 재귀와고차함수 (recursion & higher-order functions) 4 프로그램의계산복잡도 (program complexity) 5 타입으로정리하기 (types & typeful programming) 6 맞는프로그램인지확인하기 (program correctness)

9 계산복잡도 (complexity) 프로그램실행비용의증가정도 (order of growth) 계산비용 = 시간과메모리 증가정도 = 입력크기에대한함수로, 단 관심 : 입력이커지면결국어떻게될지 (asymptotic complexity) 계산복잡도 (complexity, order of growth) 가 Θ(f(n 이다 (n은입력의크기 ), 만일그복잡도가 f(n) 으로샌드위치될때 : 계산복잡도 (complexity) (pictures from Google search) k 1 f(n) k 2 f(n) (k 1, k 2 는 n 과무관한양의상수 ) n 2, n 2, 3 n n 은모두 Θ(n 2 ) 계산복잡도 (complexity) 다음 (fac n): 시간복잡도 Θ(n), 메모리복잡도 Θ(n). (exp b n): Θ(n) 로구현가능 Θ(log n) 로구현가능 (sat formula): Θ(2 n ) 로구현가능 Θ(poly(n 로구현가능? 누구도모름 (diophantine eqn): Θ(2 n ) 로구현가능? 누구도모름 Θ(n n ) 로구현가능? 누구도모름 1 프로그래밍기본부품과조합 (elements & compound) 2 이름짓기 (binding, delclaration, definition) 3 재귀와고차함수 (recursion & higher-order functions) 4 프로그램의계산복잡도 (program complexity) 5 타입으로정리하기 (types & typeful programming) 6 맞는프로그램인지확인하기 (program correctness)

10 타입 (type) 사용하는타입들 (types) 타입 (type) 은프로그램이계산하는값들의집합을분류해서요약하는데사용하는 언어 이다. 타입으로분류요약하는방식은대형프로그램을실수없이구성하는데효과적이다. 타입 (type) 은가이드다 프로그램의실행안전성을확인하는새로운종류의데이터값을구성하는 τ ::= ι 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 고차함수타입 타입을상상하며식을구성하기 고차함수타입예 : int int (int int) int (real real) (real real) int (int int) int int (int int) int int (int int) int (int int) int list int (int int) int list int money (year car list) c : ι x : τ (if E:B E :τ E :τ) : τ (lambda (x:τ) E:τ ) : τ τ x : τ 임을 E 를구성할때기억 (E:τ τ E :τ ) : τ (cons E:τ E :τ ) : τ τ (car E:τ τ ) : τ (cdr E:τ τ ) : τ

11 타입을상상하며식을구성하기 타입을상상하며식을구성하기 c : ι x : τ (if E:B E :τ E :τ) : τ (lambda (x:τ) E:τ ) : τ τ x : τ 임을 E 를구성할때기억 (E:τ τ E :τ ) : τ (let ((x 1 :τ 1 E 1 :τ 1 ) (x 2 :τ 2 E 2 :τ 2 E:τ) x1 : τ 1 이고 x 2 : τ 2 임을 E 를구성할때기억 (letrec ((x 1 :τ 1 E 1 :τ 1 ) (x 2 :τ 2 E 2 :τ 2 E:τ) x1 : τ 1 이고 x 2 : τ 2 임을 E 1, E 2, E 를구성할때기억 (define x 1 :τ 1 E 1 :τ 1 ) (define x 2 :τ 2 E 2 :τ 2 ) E:τ (cons E:τ E :τ ) : τ τ (car E:τ τ ) : τ (cdr E:τ τ ) : τ x1 : τ 1 이고 x 2 : τ 2 임을 E 1, E 2, E 를구성할때기억 타입으로프로그램을정리 / 검산하기 타입으로프로그램을정리 / 검산하기 (define (fac n) (if (= n 0) 1 (* n (fac (- n 1) (define (fibonacci n) (cond ((= n 0) 0) ((= n 1) 1) (else (+ (fibonacci (- n 1 (fibonacci (- n 2 (define (bar a b c) (if (= b 0) c (bar (+ a 1) (- b 1) (* a b (define (map-reduce f l op init) (reduce (map f l) op init (define (map f l) (if (null? l) () (cons (f (car l (map f (cdr l) (define (reduce l op init) (if (null? l) init (op (car l) (reduce (cdr l) op init (define (word-count pages) (map-reduce wc pages + 0 (define (make-dictionary pages) (map-reduce mw (words pages) merge ()

12 다음 맞는프로그램인지확인하기 1 프로그래밍기본부품과조합 (elements & compound) 2 이름짓기 (binding, delclaration, definition) 3 재귀와고차함수 (recursion & higher-order functions) 4 프로그램의계산복잡도 (program complexity) 5 타입으로정리하기 (types & typeful programming) 6 맞는프로그램인지확인하기 (program correctness) 프로그램을돌리기전에 (static test) 분석검증후프로그램제출 / 출시 / 탑재 다른공학분야와동일 : 기계 / 전기 / 공정 / 건축설계분석검증후제작 / 설비 / 건설 일상과동일 : 입시 / 면접, 사주 / 궁합, 클럽기도검증후실행 에서는간단한기술만 확인 : 모든입력에대해서정의되었는가? 검증해야할성질들 제대로생겼는가? 자동검증 타입에맞게실행될것인가? 직접검증 (Scheme, C, JavaScript, etc) 자동검증 (ML, Scala, Haskell, Java, Python, etc) : 모든입력에대해서정의되었는가? 직접검증, 용이 : 항상끝나는가 : 직접검증, 비교적용이 타입에맞게실행될것이확인된경우 타입에맞게실행될것이확인안된경우 데이터구현을익히고나서. 내가바라는계산을하는가 : 어려움

13 확인 : 항상끝나는가? 끝나는재귀함수인지확인하기 그렇다, 만일 : 반복될때뭔가가계속 줄어들고 그줄어듬의 끝이있다 면. 즉, 재귀함수의경우, 만일 : 재귀호출마다인자가 줄어들고 그줄어듬의 끝이있다 면. (define (fac n) (if (= n 0) 1 (* n (fac (- n 1) 음이아닌정수만입력으로받는다면, 재귀호출마다원래 n보다줄고있고 n-1, 끝이있다 ( (= n 0) 1 ). 끝나는재귀함수인지확인하기 일반방법 : 끝나는재귀함수인지확인하기 아래와같은재귀함수 f : A B 를생각하자 (w.l.o.g.) (define (fibonacci n) (cond ((= n 0) 0) ((= n 1) 1) (else (+ (fibonacci (- n 1 (fibonacci (- n 2 (define (f x) (f e 1 ) (f e 2 ) ) 재귀함수인자들의집합 A에서 원소들간의줄어드는순서 > 를찾으라, 아래와같은 : 재귀호출인자식 (e 1 와 e 2 ) 의값이원래인자 (x) 보다 > 인 ( 줄어드는 ), 그리고 집합 A에서 >-순서대로원소를줄세우면항상유한한 (finitely well-founded).

14 끝나는재귀함수인지확인하기 (define (bar a b c) (if (= b 0) c (bar (+ a 1) (- b 1) (* a b N N N 에서줄어드는순서 > 는? 그래서그 >- 순서가항상유한번에바닥에 닿는 (finitely well-founded)? 그런순서 > 는? 끝나는재귀함수인지확인하기 (define (map-reduce f l op init) (reduce (map f l) op init (define (map f l) (if (null? l) () (cons (f (car l (map f (cdr l) (define (reduce l op init) (if (null? l) init (op (car l) (reduce (cdr l) op init (define (word-count pages) (map-reduce wc pages + 0 (define (make-dictionary pages) (map-reduce mw (words pages) merge () 끝나는재귀함수인지확인하기 끝나는재귀함수인지확인하기 (define (sum lower upper f) (if (> lower upper) 0 (+ (f lower) (sum (+ lower 1) upper f (define (sigma lower upper) (lambda (f) (define (loop n) (if (> n upper) 0 (+ (f n) (loop (+ n 1) (loop upper)

15 끝나는재귀함수인지확인하기 f(ɛ, c) = f(c, c) = (c c ) f(c, c) = {ɛ} f(r 1 r 2, c) = f(r 1, c) f(r 2, c) f(r, c) = {r r r f(r, c)} f(cr 2, c) = {r 2 } f(c r 2, c) = (c c ) f(ɛr 2, c) = f(r 2, c) f((r 11 r 12 )r 2, c) = f(r 11 (r 12 r 2 ), c) f((r 11 r 12 )r 2, c) = f(r 11 r 2, c) f(r 12 r 2, c) f(r1r 2, c) = f(r 2, c) {r r1r 2 r f(r 1, c)}

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 SNU 4190.210 프로그래밍 원리 (Principles of Programming) Part III Prof. Kwangkeun Yi 차례 1 값중심 vs 물건중심프로그래밍 (applicative vs imperative programming) 2 프로그램의이해 : 환경과메모리 (environment & memory) 다음 1 값중심 vs 물건중심프로그래밍

More information

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 4190.210 프로그래밍원리 (Principles of Programming) Part II Prof. Kwangkeun Yi 다음 데이타구현하기 (data implementation) 새로운타입의데이타 / 값구현하기 기억하는가 : 타입들 (types) τ ::= ι primitive type τ τ pair(product) type τ + τ

More information

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

More information

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

HW5 Exercise 1 (60pts) M interpreter with a simple type system M. M. M.., M (simple type system). M, M. M., M. 오늘할것 5 6 HW5 Exercise 1 (60pts) M interpreter with a simple type system M. M. M.., M (simple type system). M, M. M., M. Review: 5-2 7 7 17 5 4 3 4 OR 0 2 1 2 ~20 ~40 ~60 ~80 ~100 M 언어 e ::= const constant

More information

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. 프로그래밍 원리 (Principles of Programming) Part IV Prof. Kwangkeun Yi 차례 1 안전하게프로그래밍하기 : 손수 vs 자동 2 맞는지확인하기쉽게프로그램하기 3 대형프로그래밍을위한기술 : 모듈프로그래밍 다음 1 안전하게프로그래밍하기 : 손수 vs 자동 2 맞는지확인하기쉽게프로그램하기 3 대형프로그래밍을위한기술 : 모듈프로그래밍

More information

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 SNU 4190.210 프로그래밍 원리 (Principles of Programming) Part IV Prof. Kwangkeun Yi 차례 1 안전하게프로그래밍하기 : 손수 vs 자동 2 맞는지확인하기쉽게프로그램하기 3 대형프로그래밍을위한기술 : 모듈프로그래밍 다음 1 안전하게프로그래밍하기 : 손수 vs 자동 2 맞는지확인하기쉽게프로그램하기 3 대형프로그래밍을위한기술

More information

chap x: G입력

chap x: G입력 재귀알고리즘 (Recursive Algorithms) 재귀알고리즘의특징 문제자체가재귀적일경우적합 ( 예 : 피보나치수열 ) 이해하기가용이하나, 비효율적일수있음 재귀알고리즘을작성하는방법 재귀호출을종료하는경계조건을설정 각단계마다경계조건에접근하도록알고리즘의재귀호출 재귀알고리즘의두가지예 이진검색 순열 (Permutations) 1 장. 기본개념 (Page 19) 이진검색의재귀알고리즘

More information

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

λx.x (λz.λx.x z) (λx.x)(λz.(λx.x)z) (λz.(λx.x) z) Call-by Name. Normal Order. (λz.z) λx.x (λz.λx.x z) (λx.x)(λz.(λx.x)z) (λz.(λx.x) z) Call-by Name. Normal Order. (λz.z) Simple Type System - - 1+malloc(), {x:=1,y:=2}+2,... (stuck) { } { } ADD σ,m e 1 n 1,M σ,m e 1 σ,m e 2 n 2,M + e 2 n

More information

17장 클래스와 메소드

17장 클래스와 메소드 17 장클래스와메소드 박창이 서울시립대학교통계학과 박창이 ( 서울시립대학교통계학과 ) 17 장클래스와메소드 1 / 18 학습내용 객체지향특징들객체출력 init 메소드 str 메소드연산자재정의타입기반의버전다형성 (polymorphism) 박창이 ( 서울시립대학교통계학과 ) 17 장클래스와메소드 2 / 18 객체지향특징들 객체지향프로그래밍의특징 프로그램은객체와함수정의로구성되며대부분의계산은객체에대한연산으로표현됨객체의정의는

More information

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

Exercise (10pts) k-친수 일반적으로 k진수(k > 1)는 다음과 같이 표현한다. d0 dn 여기서 di {0,, k 1}. 그리고 d0 dn 은 크기가 d0 k dn k n 인 정수를 표현한다. 이것을 살짝 확장해서 k친수 를 다음과 같이 정의 Homework SNU 4190.310, Fall 017 Kwangkeun Yi due: 9/8, 4:00 Exercise 1 (10pts) 참거짓 Propositional Logic 식들 (formula) 을다음과같이정의했습니다 : type formula = TRUE FALSE NOT of formula ANDALSO of formula * formula

More information

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

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}. 그리 Homework 2 SNU 4190.310, 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}. 그리고 d 0 d n 은크기가 d 0 k 0 + + d n k n 인정수를표현한다. 이것을살짝확장해서

More information

OCaml ífl—로그랟밓

OCaml ífl—로그랟밓 OCaml 프로그래밍 오학주 고려대학교정보대학컴퓨터학과 January 10 11, 2019 @Tezos Blockchain Camp 소개 소속 : 고려대학교정보대학컴퓨터학과 전공 : 프로그래밍언어, 소프트웨어분석, 소프트웨어보안 웹페이지 : http://prl.korea.ac.kr 강의내용 OCaml 프로그래밍 Part 1: 기초 OCaml 프로그래밍 (5

More information

chap 5: Trees

chap 5: Trees 5. Threaded Binary Tree 기본개념 n 개의노드를갖는이진트리에는 2n 개의링크가존재 2n 개의링크중에 n + 1 개의링크값은 null Null 링크를다른노드에대한포인터로대체 Threads Thread 의이용 ptr left_child = NULL 일경우, ptr left_child 를 ptr 의 inorder predecessor 를가리키도록변경

More information

OCaml

OCaml OCaml 2009.. (khheo@ropas.snu.ac.kr) 1 ML 2 ML OCaml INRIA, France SML Bell lab. & Princeton, USA nml SNU/KAIST, KOREA 3 4 (let) (* ex1.ml *) let a = 10 let add x y = x + y (* ex2.ml *) let sumofsquare

More information

<32332D322D303120B9E6BFB5BCAE20C0CCB5BFC1D6312D32302E687770>

<32332D322D303120B9E6BFB5BCAE20C0CCB5BFC1D6312D32302E687770> 방 영 석 이 동 주 최근 들어 소셜커머스가 차세대 전자상거래 모형으로 부상하고 있다 년 국내에 첫 등장한 이래 소셜커머스 시장 규모는 년 조 원에 달했고 년 조 원을 넘어섰다 온라인 쇼핑몰 혹은 이마켓플레이스 등으로 대표되는 기존의 전 자상거래 모형은 일반적으로 판매자가 상품 가격 과 거래 형태를 제안하고 구매자가 해당 거래를 선택적으로 수용하는 일방향 모형의

More information

컴파일러

컴파일러 YACC 응용예 Desktop Calculator 7/23 Lex 입력 수식문법을위한 lex 입력 : calc.l %{ #include calc.tab.h" %} %% [0-9]+ return(number) [ \t] \n return(0) \+ return('+') \* return('*'). { printf("'%c': illegal character\n",

More information

chap01_time_complexity.key

chap01_time_complexity.key 1 : (resource),,, 2 (time complexity),,, (worst-case analysis) (average-case analysis) 3 (Asymptotic) n growth rate Θ-, Ο- ( ) 4 : n data, n/2. int sample( int data[], int n ) { int k = n/2 ; return data[k]

More information

SIGPLwinterschool2012

SIGPLwinterschool2012 1994 1992 2001 2008 2002 Semantics Engineering with PLT Redex Matthias Felleisen, Robert Bruce Findler and Matthew Flatt 2009 Text David A. Schmidt EXPRESSION E ::= N ( E1 O E2 ) OPERATOR O ::=

More information

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

제4장  기본 의미구조 (Basic Semantics) 제 4 장블록및유효범위 Reading Chap. 5 숙대창병모 1 4.1 변수선언및유효범위 숙대창병모 2 변수선언과유효범위 변수선언 Declaration before Use! 대부분의언어에서변수는사용전에먼저선언해야한다. 변수의유효범위 (scope) 선언된변수가유효한 ( 사용될수있는 ) 프로그램내의범위 / 영역 변수이름뿐아니라함수등다른이름도생각해야한다. 정적유효범위

More information

설계란 무엇인가?

설계란 무엇인가? 금오공과대학교 C++ 프로그래밍 jhhwang@kumoh.ac.kr 컴퓨터공학과 황준하 6 강. 함수와배열, 포인터, 참조목차 함수와포인터 주소값의매개변수전달 주소의반환 함수와배열 배열의매개변수전달 함수와참조 참조에의한매개변수전달 참조의반환 프로그래밍연습 1 /15 6 강. 함수와배열, 포인터, 참조함수와포인터 C++ 매개변수전달방법 값에의한전달 : 변수값,

More information

4. #include <stdio.h> #include <stdlib.h> int main() { functiona(); } void functiona() { printf("hihi\n"); } warning: conflicting types for functiona

4. #include <stdio.h> #include <stdlib.h> int main() { functiona(); } void functiona() { printf(hihi\n); } warning: conflicting types for functiona 이름 : 학번 : A. True or False: 각각항목마다 True 인지 False 인지적으세요. 1. (Python:) randint 함수를사용하려면, random 모듈을 import 해야한다. 2. (Python:) '' (single quote) 는한글자를표현할때, (double quote) 는문자열을표현할때사용한다. B. 다음에러를수정하는방법을적으세요.

More information

3.2 함수의정의 Theorem 6 함수 f : X Y 와 Y W 인집합 W 에대하여 f : X W 는함수이다. Proof. f : X Y 가함수이므로 f X Y 이고, Y W 이므로 f X W 이므로 F0이만족된다. 함수의정의 F1, F2은 f : X Y 가함수이므로

3.2 함수의정의 Theorem 6 함수 f : X Y 와 Y W 인집합 W 에대하여 f : X W 는함수이다. Proof. f : X Y 가함수이므로 f X Y 이고, Y W 이므로 f X W 이므로 F0이만족된다. 함수의정의 F1, F2은 f : X Y 가함수이므로 3.2 함수의정의 Theorem 6 함수 f : X Y 와 Y W 인집합 W 에대하여 f : X W 는함수이다. Proof. f : X Y 가함수이므로 f X Y 이고, Y W 이므로 f X W 이므로 F0이만족된다. 함수의정의 F1, F2은 f : X Y 가함수이므로성립한다. Theorem 7 두함수 f : X Y 와 g : X Y 에대하여, f = g f(x)

More information

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

Homework 1 SNU , Fall 2012 Kwangkeun Yi Due: 9/14, 24:00 Exercise 1 리스트합 큰순서대로 (descending order) 나열된정수리스트두개를받아서하나의 순서리스트로만드는함수 merge: int lis Homework 1 SNU 4190.310, Fall 2012 Kwangkeun Yi Due: 9/14, 24:00 Exercise 1 리스트합 큰순서대로 (descending order) 나열된정수리스트두개를받아서하나의 순서리스트로만드는함수 merge: int list * int list -> int list 를정의하세요. 리스트에는같은정수가반복해서들어있지않습니다.

More information

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

SNU =10100 =minusby by1000 ÄÄto0.03exÄÄto0.03exÄÄ=10100 =minusby by1000 Ç»to0.03exÇ»to0.03exÇ»=10100 =minusby by1000 ÅÍto0.0 차례 SNU 046.016 컴퓨터과학이여는 세계 (Computational Civilization) Part 1 400 년의축적 2 그도구의실현 Prof. Kwangkeun Yi School of Computer Science & Engineering 3 SW, 그궁리의세계 4 응용 : 인간지능 / 본능 / 현실의확장 이전 1 400 년의축적 2 그도구의실현

More information

2002년 2학기 자료구조

2002년 2학기 자료구조 자료구조 (Data Structures) Chapter 1 Basic Concepts Overview : Data (1) Data vs Information (2) Data Linear list( 선형리스트 ) - Sequential list : - Linked list : Nonlinear list( 비선형리스트 ) - Tree : - Graph : (3)

More information

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

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures 단일연결리스트 (Singly Linked List) 신찬수 연결리스트 (linked list)? tail 서울부산수원용인 null item next 구조체복습 struct name_card { char name[20]; int date; } struct name_card a; // 구조체변수 a 선언 a.name 또는 a.date // 구조체 a의멤버접근 struct

More information

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

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100 2015-1 프로그래밍언어 9. 연결형리스트, Stack, Queue 2015 년 5 월 4 일 교수김영탁 영남대학교공과대학정보통신공학과 (Tel : +82-53-810-2497; Fax : +82-53-810-4742 http://antl.yu.ac.kr/; E-mail : ytkim@yu.ac.kr) 연결리스트 (Linked List) 연결리스트연산 Stack

More information

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

기본자료형만으로이루어진인자를받아서함수를결과값으로반환하는고차함수 기본자료형과함수를인자와결과값에모두이용하는고차함수 다음절에서는여러가지예를통해서고차함수가어떤경우에유용한지를설명한다. 2 고차함수의 예??장에서대상체만바뀌고중간과정은동일한계산이반복될때함수를이용하면전체연산식을간 단 EECS-101 전자계산입문 고차함수 박성우 2008년5월 29일 지금까지정수나부동소수와같은기본적인자료형의조합을인자로받고결과값으로반환하는 함수에대해서배웠다. 이번강의에서는함수자체를다른함수의인자로이용하거나결과값으로 이용하는 방법을 배운다. 1 고차함수의 의미 계산은무엇을어떻게처리하여결과값을얻는지설명하는것으로이루어진다. 여기서 무엇 과 결 과값 은계산의대상체로서정수나부동소수와같은기본자료형의조합으로표현하며,

More information

1

1 1 1....6 1.1...6 2. Java Architecture...7 2.1 2SDK(Software Development Kit)...8 2.2 JRE(Java Runtime Environment)...9 2.3 (Java Virtual Machine, JVM)...10 2.4 JVM...11 2.5 (runtime)jvm...12 2.5.1 2.5.2

More information

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

SNU =10100 =minusby by1000 ÄÄto0.03exÄÄto0.03exÄÄ=10100 =minusby by1000 Ç»to0.03exÇ»to0.03exÇ»=10100 =minusby by1000 ÅÍto0.0 SNU 046.016 컴퓨터과학이여는 세계 (Computational Civilization) Part III Prof. Kwangkeun Yi School of Computer Science & Engineering 차례 1 400 년의축적 2 그도구의실현 3 SW, 그궁리의세계 4 응용 : 인간지능 / 본능 / 현실의확장 이전 1 400 년의축적 2 그도구의실현

More information

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

Microsoft PowerPoint - ch10 - 이진트리, AVL 트리, 트리 응용 pm0600 균형이진탐색트리 -VL Tree delson, Velskii, Landis에의해 1962년에제안됨 VL trees are balanced n VL Tree is a binary search tree such that for every internal node v of T, the heights of the children of v can differ by at

More information

Microsoft PowerPoint - semantics

Microsoft PowerPoint - semantics 제 3 장시맨틱스 (Semantics) Reading Chap 13 숙대창병모 Sep. 2007 1 3.1 Operational Semantics 숙대창병모 Sep. 2007 2 시맨틱스의필요성 프로그램의미의정확한이해 소프트웨어의정확한명세 소프트웨어시스템에대한검증혹은추론 컴파일러혹은해석기작성의기초 숙대창병모 Sep. 2007 3 의미론의종류 Operational

More information

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

Microsoft Word - PLC제어응용-2차시.doc 과정명 PLC 제어응용차시명 2 차시. 접점명령 학습목표 1. 연산개시명령 (LOAD, LOAD NOT) 에대하여설명할수있다. 2. 직렬접속명령 (AND, AND NOT) 에대하여설명할수있다. 3. 병렬접속명령 (OR, OR NOT) 에대하여설명할수있다. 4.PLC의접점명령을가지고간단한프로그램을작성할수있다. 학습내용 1. 연산개시명령 1) 연산개시명령 (LOAD,

More information

슬라이드 1

슬라이드 1 -Part3- 제 4 장동적메모리할당과가변인 자 학습목차 4.1 동적메모리할당 4.1 동적메모리할당 4.1 동적메모리할당 배울내용 1 프로세스의메모리공간 2 동적메모리할당의필요성 4.1 동적메모리할당 (1/6) 프로세스의메모리구조 코드영역 : 프로그램실행코드, 함수들이저장되는영역 스택영역 : 매개변수, 지역변수, 중괄호 ( 블록 ) 내부에정의된변수들이저장되는영역

More information

Microsoft PowerPoint 세션.ppt

Microsoft PowerPoint 세션.ppt 웹프로그래밍 () 2006 년봄학기 문양세강원대학교컴퓨터과학과 세션변수 (Session Variable) (1/2) 쇼핑몰장바구니 장바구니에서는사용자가페이지를이동하더라도장바구니의구매물품리스트의내용을유지하고있어야함 PHP 에서사용하는일반적인변수는스크립트의수행이끝나면모두없어지기때문에페이지이동시변수의값을유지할수없음 이러한문제점을해결하기위해서 PHP 에서는세션 (session)

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Programming Languages 모듈과펑터 2016 년봄학기 손시운 (ssw5176@kangwon.ac.kr) 담당교수 : 임현승교수님 모듈 (module) 관련있는정의 ( 변수또는함수 ) 를하나로묶은패키지 예약어 module과 struct end를사용하여정의 아래는모듈의예시 ( 우선순위큐, priority queue) # module PrioQueue

More information

Frama-C/JESSIS 사용법 소개

Frama-C/JESSIS 사용법 소개 Frama-C 프로그램검증시스템소개 박종현 @ POSTECH PL Frama-C? C 프로그램대상정적분석도구 플러그인구조 JESSIE Wp Aorai Frama-C 커널 2 ROSAEC 2011 동계워크샵 @ 통영 JESSIE? Frama-C 연역검증플러그인 프로그램분석 검증조건추출 증명 Hoare 논리에기초한프로그램검증도구 사용법 $ frama-c jessie

More information

ThisJava ..

ThisJava .. 자바언어에정확한타입을추가한 ThisJava 소개 나현익, 류석영 프로그래밍언어연구실 KAIST 2014 년 1 월 14 일 나현익, 류석영 자바언어에정확한타입을추가한 ThisJava 소개 1/29 APLAS 2013 나현익, 류석영 자바 언어에 정확한 타입을 추가한 ThisJava 소개 2/29 실제로부딪힌문제 자바스크립트프로그램분석을위한요약도메인 나현익,

More information

Modern Javascript

Modern Javascript ES6 - Arrow Function Class Template String Destructuring Default, Rest, Spread let, const for..of Promises Module System Map, Set * Generator * Symbol * * https://babeljs.io/ Babel is a JavaScript compiler.

More information

C# Programming Guide - Types

C# Programming Guide - Types C# Programming Guide - Types 최도경 lifeisforu@wemade.com 이문서는 MSDN 의 Types 를요약하고보충한것입니다. http://msdn.microsoft.com/enus/library/ms173104(v=vs.100).aspx Types, Variables, and Values C# 은 type 에민감한언어이다. 모든

More information

Microsoft PowerPoint - ch07 - 포인터 pm0415

Microsoft PowerPoint - ch07 - 포인터 pm0415 2015-1 프로그래밍언어 7. 포인터 (Pointer), 동적메모리할당 2015 년 4 월 4 일 교수김영탁 영남대학교공과대학정보통신공학과 (Tel : +82-53-810-2497; Fax : +82-53-810-4742 http://antl.yu.ac.kr/; E-mail : ytkim@yu.ac.kr) Outline 포인터 (pointer) 란? 간접참조연산자

More information

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

금오공대 컴퓨터공학전공 강의자료 C 프로그래밍프로젝트 Chap 14. 포인터와함수에대한이해 2013.10.09. 오병우 컴퓨터공학과 14-1 함수의인자로배열전달 기본적인인자의전달방식 값의복사에의한전달 val 10 a 10 11 Department of Computer Engineering 2 14-1 함수의인자로배열전달 배열의함수인자전달방식 배열이름 ( 배열주소, 포인터 ) 에의한전달 #include

More information

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 (   ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각 JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( http://java.sun.com/javase/6/docs/api ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각선의길이를계산하는메소드들을작성하라. 직사각형의가로와세로의길이는주어진다. 대각선의길이는 Math클래스의적절한메소드를이용하여구하라.

More information

PowerPoint Presentation

PowerPoint Presentation Class - Property Jo, Heeseung 목차 section 1 클래스의일반구조 section 2 클래스선언 section 3 객체의생성 section 4 멤버변수 4-1 객체변수 4-2 클래스변수 4-3 종단 (final) 변수 4-4 멤버변수접근방법 section 5 멤버변수접근한정자 5-1 public 5-2 private 5-3 한정자없음

More information

Design Issues

Design Issues 11 COMPUTER PROGRAMMING INHERIATANCE CONTENTS OVERVIEW OF INHERITANCE INHERITANCE OF MEMBER VARIABLE RESERVED WORD SUPER METHOD INHERITANCE and OVERRIDING INHERITANCE and CONSTRUCTOR 2 Overview of Inheritance

More information

용어사전 PDF

용어사전 PDF 0100010111000101010100101010101010010101010010101010101000101010101010101010101010001001011000101001010100001010111010 1101101101111010011101010010101000010111010000101010101010101110010010011111101010101010010101010101010100101010100001

More information

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

Microsoft Word - [2017SMA][T8]OOPT_Stage_2040 ver2.docx OOPT Stage 2040 - Design Feesual CPT Tool Project Team T8 Date 2017-05-24 T8 Team Information 201211347 박성근 201211376 임제현 201411270 김태홍 2017 Team 8 1 Table of Contents 1. Activity 2041. Design Real Use

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 @ Lesson 3 if, if else, if else if, switch case for, while, do while break, continue : System.in, args, JOptionPane for (,, ) @ vs. logic data method variable Data Data Flow (Type), ( ) @ Member field

More information

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

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과 임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과 System call table and linkage v Ref. http://www.ibm.com/developerworks/linux/library/l-system-calls/ - 2 - Young-Jin Kim SYSCALL_DEFINE 함수

More information

USER GUIDE

USER GUIDE Solution Package Volume II DATABASE MIGRATION 2010. 1. 9. U.Tu System 1 U.Tu System SeeMAGMA SYSTEM 차 례 1. INPUT & OUTPUT DATABASE LAYOUT...2 2. IPO 중 VB DATA DEFINE 자동작성...4 3. DATABASE UNLOAD...6 4.

More information

11장 포인터

11장 포인터 누구나즐기는 C 언어콘서트 제 9 장포인터 이번장에서학습할내용 포인터이란? 변수의주소 포인터의선언 간접참조연산자 포인터연산 포인터와배열 포인터와함수 이번장에서는포인터의기초적인지식을학습한다. 포인터란? 포인터 (pointer): 주소를가지고있는변수 메모리의구조 변수는메모리에저장된다. 메모리는바이트단위로액세스된다. 첫번째바이트의주소는 0, 두번째바이트는 1, 변수와메모리

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Chapter 08 함수 01 함수의개요 02 함수사용하기 03 함수와배열 04 재귀함수 함수의필요성을인식한다. 함수를정의, 선언, 호출하는방법을알아본다. 배열을함수의인자로전달하는방법과사용시장점을알아본다. 재귀호출로해결할수있는문제의특징과해결방법을알아본다. 1.1 함수의정의와기능 함수 (function) 특별한기능을수행하는것 여러가지함수의예 Page 4 1.2

More information

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

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx #include int main(void) { int num; printf( Please enter an integer "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 을 작성하면서 C 프로그램의

More information

MPLAB C18 C

MPLAB C18 C MPLAB C18 C MPLAB C18 MPLAB C18 C MPLAB C18 C #define START, c:\mcc18 errorlevel{0 1} char isascii(char ch); list[list_optioin,list_option] OK, Cancel , MPLAB IDE User s Guide MPLAB C18 C

More information

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

A Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning C Programming Practice (II) Contents 배열 문자와문자열 구조체 포인터와메모리관리 구조체 2/17 배열 (Array) (1/2) 배열 동일한자료형을가지고있으며같은이름으로참조되는변수들의집합 배열의크기는반드시상수이어야한다. type var_name[size]; 예 ) int myarray[5] 배열의원소는원소의번호를 0 부터시작하는색인을사용

More information

본 발명은 중공코어 프리캐스트 슬래브 및 그 시공방법에 관한 것으로, 자세하게는 중공코어로 형성된 프리캐스트 슬래브 에 온돌을 일체로 구성한 슬래브 구조 및 그 시공방법에 관한 것이다. 이를 위한 온돌 일체형 중공코어 프리캐스트 슬래브는, 공장에서 제작되는 중공코어 프

본 발명은 중공코어 프리캐스트 슬래브 및 그 시공방법에 관한 것으로, 자세하게는 중공코어로 형성된 프리캐스트 슬래브 에 온돌을 일체로 구성한 슬래브 구조 및 그 시공방법에 관한 것이다. 이를 위한 온돌 일체형 중공코어 프리캐스트 슬래브는, 공장에서 제작되는 중공코어 프 (51) Int. Cl. E04B 5/32 (2006.01) (19)대한민국특허청(KR) (12) 등록특허공보(B1) (45) 공고일자 (11) 등록번호 (24) 등록일자 2007년03월12일 10-0693122 2007년03월05일 (21) 출원번호 10-2006-0048965 (65) 공개번호 (22) 출원일자 2006년05월30일 (43) 공개일자 심사청구일자

More information

김기남_ATDC2016_160620_[키노트].key

김기남_ATDC2016_160620_[키노트].key metatron Enterprise Big Data SKT Metatron/Big Data Big Data Big Data... metatron Ready to Enterprise Big Data Big Data Big Data Big Data?? Data Raw. CRM SCM MES TCO Data & Store & Processing Computational

More information

Semantic Consistency in Information Exchange

Semantic Consistency in Information Exchange 제 3 장시맨틱스 (Semantics) Reading Chap 13 숙대창병모 1 시맨틱스의필요성 프로그램의미의정확한이해 소프트웨어의정확한명세 소프트웨어시스템에대한검증혹은추론 컴파일러혹은해석기작성의기초 숙대창병모 2 3.1 Operational Semantics 숙대창병모 3 의미론의종류 Operational Semantics 프로그램의동작과정을정의 Denotational

More information

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

윈도우즈프로그래밍(1) 제어문 (2) For~Next 문 윈도우즈프로그래밍 (1) ( 신흥대학교컴퓨터정보계열 ) 2/17 Contents 학습목표 프로그램에서주어진특정문장을부분을일정횟수만큼반복해서실행하는문장으로 For~Next 문등의구조를이해하고활용할수있다. 내용 For~Next 문 다중 For 문 3/17 제어문 - FOR 문 반복문 : 프로그램에서주어진특정문장들을일정한횟수만큼반복해서실행하는문장

More information

여행기

여행기 POPL/VMCAI 2013 ROME, ITALY 2013.01.20-2013.01.26 POPL 2013. 40 POPL VMCAI, PADL, PEPM... 1. POPL,. VMCAI(International Conference on Verification, Model Checking, and Abstract Interpretation), PADL(International

More information

Chapter #01 Subject

Chapter #01  Subject Device Driver March 24, 2004 Kim, ki-hyeon 목차 1. 인터럽트처리복습 1. 인터럽트복습 입력검출방법 인터럽트방식, 폴링 (polling) 방식 인터럽트서비스등록함수 ( 커널에등록 ) int request_irq(unsigned int irq, void(*handler)(int,void*,struct pt_regs*), unsigned

More information

강의10

강의10 Computer Programming gdb and awk 12 th Lecture 김현철컴퓨터공학부서울대학교 순서 C Compiler and Linker 보충 Static vs Shared Libraries ( 계속 ) gdb awk Q&A Shared vs Static Libraries ( 계속 ) Advantage of Using Libraries Reduced

More information

Microsoft PowerPoint - PL_03-04.pptx

Microsoft PowerPoint - PL_03-04.pptx Copyright, 2011 H. Y. Kwak, Jeju National University. Kwak, Ho-Young http://cybertec.cheju.ac.kr Contents 1 프로그래밍 언어 소개 2 언어의 변천 3 프로그래밍 언어 설계 4 프로그래밍 언어의 구문과 구현 기법 5 6 7 컴파일러 개요 변수, 바인딩, 식 및 제어문 자료형 8

More information

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 제 3 장함수와문자열 1. 함수의기본적인개념을이해한다. 2. 인수와매개변수의개념을이해한다. 3. 함수의인수전달방법 2가지를이해한다 4. 중복함수를이해한다. 5. 디폴트매개변수를이해한다. 6. 문자열의구성을이해한다. 7. string 클래스의사용법을익힌다. 이번장에서만들어볼프로그램 함수란? 함수선언 함수호출 예제 #include using

More information

Microsoft PowerPoint - 27.pptx

Microsoft PowerPoint - 27.pptx 이산수학 () n-항관계 (n-ary Relations) 2011년봄학기 강원대학교컴퓨터과학전공문양세 n-ary Relations (n-항관계 ) An n-ary relation R on sets A 1,,A n, written R:A 1,,A n, is a subset R A 1 A n. (A 1,,A n 에대한 n- 항관계 R 은 A 1 A n 의부분집합이다.)

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 @ Lesson 2... ( ). ( ). @ vs. logic data method variable behavior attribute method field Flow (Type), ( ) member @ () : C program Method A ( ) Method B ( ) Method C () program : Java, C++, C# data @ Program

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 함수 Heeseung Jo 이장의내용 함수개요프로시저함수호출메커니즘변수와유효범위재귀함수매크로함수 2 함수개요 함수개요 함수란? 함수 (function): 상자수 ; 상자에수를넣으면수가나옴 자동판매기와유사함 수학에서함수는대응관계 (mapping) 를의미함 함수주변상황 인수 : 함수에들어가는값 - 정의구역 (domain) 의원소 리턴값 : 함수가되돌려주는값 -

More information

untitled

untitled int i = 10; char c = 69; float f = 12.3; int i = 10; char c = 69; float f = 12.3; printf("i : %u\n", &i); // i printf("c : %u\n", &c); // c printf("f : %u\n", &f); // f return 0; i : 1245024 c : 1245015

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 @ Lesson 4 (Object) (Class) (Instance) (Method) (Constructor) Memory 1 UML 1 @ & 1 (Real World) (Software World) @ &.. () () @ & 2 (Real World) (Software World) OOA/ Modeling Abstraction Instantiation

More information

Microsoft Word - FunctionCall

Microsoft Word - FunctionCall Function all Mechanism /* Simple Program */ #define get_int() IN KEYOARD #define put_int(val) LD A val \ OUT MONITOR int add_two(int a, int b) { int tmp; tmp = a+b; return tmp; } local auto variable stack

More information

adfasdfasfdasfasfadf

adfasdfasfdasfasfadf C 4.5 Source code Pt.3 ISL / 강한솔 2019-04-10 Index Tree structure Build.h Tree.h St-thresh.h 2 Tree structure *Concpets : Node, Branch, Leaf, Subtree, Attribute, Attribute Value, Class Play, Don't Play.

More information

gnu-lee-oop-kor-lec06-3-chap7

gnu-lee-oop-kor-lec06-3-chap7 어서와 Java 는처음이지! 제 7 장상속 Super 키워드 상속과생성자 상속과다형성 서브클래스의객체가생성될때, 서브클래스의생성자만호출될까? 아니면수퍼클래스의생성자도호출되는가? class Base{ public Base(String msg) { System.out.println("Base() 생성자 "); ; class Derived extends Base

More information

untitled

untitled Step Motor Device Driver Embedded System Lab. II Step Motor Step Motor Step Motor source Embedded System Lab. II 2 open loop, : : Pulse, 1 Pulse,, -, 1 +5%, step Step Motor (2),, Embedded System Lab. II

More information

API 매뉴얼

API 매뉴얼 PCI-DIO12 API Programming (Rev 1.0) Windows, Windows2000, Windows NT and Windows XP are trademarks of Microsoft. We acknowledge that the trademarks or service names of all other organizations mentioned

More information

슬라이드 1

슬라이드 1 Recursion SANGJI University KO Kwangman () 1. 개요 재귀 (recursion) 의정의, 순환 정의하고있는개념자체에대한정의내부에자기자신이포함되어있는경우를의미 알고리즘이나함수가수행도중에자기자신을다시호출하여문제를해결하는기법 정의자체가순환적으로되어있는경우에적합한방법 예제 ) 팩토리얼값구하기 피보나치수열 이항계수 하노이의탑 이진탐색

More information

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

Microsoft PowerPoint - additional01.ppt [호환 모드] 1.C 기반의 C++ part 1 함수 오버로딩 (overloading) 디폴트매개변수 (default parameter) 인-라인함수 (in-line function) 이름공간 (namespace) Jong Hyuk Park 함수 Jong Hyuk Park 함수오버로딩 (overloading) 함수오버로딩 (function overloading) C++ 언어에서는같은이름을가진여러개의함수를정의가능

More information

C 프로그래밍 언어 입문 C 프로그래밍 언어 입문 김명호저 숭실대학교 출판국 머리말..... C, C++, Java, Fortran, Python, Ruby,.. C. C 1972. 40 C.. C. 1999 C99. C99. C. C. C., kmh ssu.ac.kr.. ,. 2013 12 Contents 1장 프로그래밍 시작 1.1 C 10 1.2 12

More information

목차 BUG 문법에맞지않는질의문수행시, 에러메시지에질의문의일부만보여주는문제를수정합니다... 3 BUG ROUND, TRUNC 함수에서 DATE 포맷 IW 를추가지원합니다... 5 BUG ROLLUP/CUBE 절을포함하는질의는 SUBQUE

목차 BUG 문법에맞지않는질의문수행시, 에러메시지에질의문의일부만보여주는문제를수정합니다... 3 BUG ROUND, TRUNC 함수에서 DATE 포맷 IW 를추가지원합니다... 5 BUG ROLLUP/CUBE 절을포함하는질의는 SUBQUE ALTIBASE HDB 6.3.1.10.1 Patch Notes 목차 BUG-45710 문법에맞지않는질의문수행시, 에러메시지에질의문의일부만보여주는문제를수정합니다... 3 BUG-45730 ROUND, TRUNC 함수에서 DATE 포맷 IW 를추가지원합니다... 5 BUG-45760 ROLLUP/CUBE 절을포함하는질의는 SUBQUERY REMOVAL 변환을수행하지않도록수정합니다....

More information

Microsoft PowerPoint - 26.pptx

Microsoft PowerPoint - 26.pptx 이산수학 () 관계와그특성 (Relations and Its Properties) 2011년봄학기 강원대학교컴퓨터과학전공문양세 Binary Relations ( 이진관계 ) Let A, B be any two sets. A binary relation R from A to B, written R:A B, is a subset of A B. (A 에서 B 로의이진관계

More information

02 C h a p t e r Java

02 C h a p t e r Java 02 C h a p t e r Java Bioinformatics in J a va,, 2 1,,,, C++, Python, (Java),,, (http://wwwbiojavaorg),, 13, 3D GUI,,, (Java programming language) (Sun Microsystems) 1995 1990 (green project) TV 22 CHAPTER

More information

Chapter 4. LISTS

Chapter 4. LISTS 6. 동치관계 (Equivalence Relations) 동치관계 reflexive, symmetric, transitive 성질을만족 "equal to"(=) 관계는동치관계임. x = x x = y 이면 y = x x = y 이고 y = z 이면 x = z 동치관계를이용하여집합 S 를 동치클래스 로분할 동일한클래스내의원소 x, y 에대해서는 x y 관계성립

More information

<4D F736F F F696E74202D203137C0E55FBFACBDC0B9AEC1A6BCD6B7E7BCC72E707074>

<4D F736F F F696E74202D203137C0E55FBFACBDC0B9AEC1A6BCD6B7E7BCC72E707074> SIMATIC S7 Siemens AG 2004. All rights reserved. Date: 22.03.2006 File: PRO1_17E.1 차례... 2 심벌리스트... 3 Ch3 Ex2: 프로젝트생성...... 4 Ch3 Ex3: S7 프로그램삽입... 5 Ch3 Ex4: 표준라이브러리에서블록복사... 6 Ch4 Ex1: 실제구성을 PG 로업로드하고이름변경......

More information

EA0015: 컴파일러

EA0015: 컴파일러 5 Context-Free Grammar 무엇을공부하나? 앞에서배운 " 정규식 " 은언어의 " 어휘 (lexeme)" 를표현하는도구로사용되었다. 언어의 " 구문 (syntax)" 은 " 정규언어 " 의범위를벗어나기때문에 " 정규식 " 으로표현이불가능하다. 본장에서배우는 " 문맥자유문법 " 은언어의 " 구문 (syntax)" 을표현할수있는도구이다. 어떤 " 문맥자유문법

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 System Software Experiment 1 Lecture 5 - Array Spring 2019 Hwansoo Han (hhan@skku.edu) Advanced Research on Compilers and Systems, ARCS LAB Sungkyunkwan University http://arcs.skku.edu/ 1 배열 (Array) 동일한타입의데이터가여러개저장되어있는저장장소

More information

Chap 6: Graphs

Chap 6: Graphs 그래프표현법 인접행렬 (Adjacency Matrix) 인접리스트 (Adjacency List) 인접다중리스트 (Adjacency Multilist) 6 장. 그래프 (Page ) 인접행렬 (Adjacency Matrix) n 개의 vertex 를갖는그래프 G 의인접행렬의구성 A[n][n] (u, v) E(G) 이면, A[u][v] = Otherwise, A[u][v]

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Lecture 02 프로그램구조및문법 Kwang-Man Ko kkmam@sangji.ac.kr, compiler.sangji.ac.kr Department of Computer Engineering Sang Ji University 2018 자바프로그램기본구조 Hello 프로그램구조 sec01/hello.java 2/40 자바프로그램기본구조 Hello 프로그램구조

More information

Microsoft Word - ExecutionStack

Microsoft Word - ExecutionStack Lecture 15: LM code from high level language /* Simple Program */ external int get_int(); external void put_int(); int sum; clear_sum() { sum=0; int step=2; main() { register int i; static int count; clear_sum();

More information

학습목차 2.1 다차원배열이란 차원배열의주소와값의참조

학습목차 2.1 다차원배열이란 차원배열의주소와값의참조 - Part2- 제 2 장다차원배열이란무엇인가 학습목차 2.1 다차원배열이란 2. 2 2 차원배열의주소와값의참조 2.1 다차원배열이란 2.1 다차원배열이란 (1/14) 다차원배열 : 2 차원이상의배열을의미 1 차원배열과다차원배열의비교 1 차원배열 int array [12] 행 2 차원배열 int array [4][3] 행 열 3 차원배열 int array [2][2][3]

More information

#KM560

#KM560 KM-560 KM-560-7 PARTS BOOK KM-560 KM-560-7 INFORMATION A. Parts Book Structure of Part Book Unique code by mechanism Unique name by mechanism Explode view Ref. No. : Unique identifcation number by part

More information

1 개정 사유 환경영향평가제도가 환경정책기본법 에 따른 사전환경성검토와, 환경영향평가법 에 따른 환경영향평가로 이원화 -유사 목적의 평가제도가 각각 다른 법률에 규정되어 평가절차가 복잡하고 환경평가의 일관성 연계성이 부족 *사전환경경성검토는 행정계획과 개발사업계획 수립

1 개정 사유 환경영향평가제도가 환경정책기본법 에 따른 사전환경성검토와, 환경영향평가법 에 따른 환경영향평가로 이원화 -유사 목적의 평가제도가 각각 다른 법률에 규정되어 평가절차가 복잡하고 환경평가의 일관성 연계성이 부족 *사전환경경성검토는 행정계획과 개발사업계획 수립 환경영향평가법 전부개정법률안 설명자료 2012. 7. 자 연 보 전 국 1 개정 사유 환경영향평가제도가 환경정책기본법 에 따른 사전환경성검토와, 환경영향평가법 에 따른 환경영향평가로 이원화 -유사 목적의 평가제도가 각각 다른 법률에 규정되어 평가절차가 복잡하고 환경평가의 일관성 연계성이 부족 *사전환경경성검토는 행정계획과 개발사업계획 수립단계에서,환경영향평가는

More information

Microsoft PowerPoint - o8.pptx

Microsoft PowerPoint - o8.pptx 메모리보호 (Memory Protection) 메모리보호를위해 page table entry에 protection bit와 valid bit 추가 Protection bits read-write / read-only / executable-only 정의 page 단위의 memory protection 제공 Valid bit (or valid-invalid bit)

More information

slide2

slide2 Program P ::= CL CommandList CL ::= C C ; CL Command C ::= L = E while E : CL end print L Expression E ::= N ( E + E ) L &L LefthandSide L ::= I *L Variable I ::= Numeral N ::=

More information

Let G = (V, E) be a connected, undirected graph with a real-valued weight function w defined on E. Let A be a set of E, possibly empty, that is includ

Let G = (V, E) be a connected, undirected graph with a real-valued weight function w defined on E. Let A be a set of E, possibly empty, that is includ 알고리즘설계와분석 (CSE3081(2 반 )) 기말고사 (2016년 12월15일 ( 목 ) 오전 9시40분 ~) 담당교수 : 서강대학교컴퓨터공학과임인성 < 주의 > 답안지에답을쓴후제출할것. 만약공간이부족하면답안지의뒷면을이용하고, 반드시답을쓰는칸에어느쪽의뒷면에답을기술하였는지명시할것. 연습지는수거하지않음. function MakeSet(x) { x.parent

More information

JAVA PROGRAMMING 실습 08.다형성

JAVA PROGRAMMING 실습 08.다형성 2015 학년도 2 학기 1. 추상메소드 선언은되어있으나코드구현되어있지않은메소드 abstract 키워드사용 메소드타입, 이름, 매개변수리스트만선언 public abstract String getname(); public abstract void setname(string s); 2. 추상클래스 abstract 키워드로선언한클래스 종류 추상메소드를포함하는클래스

More information

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

SNU =10100 =minusby by1000 ÄÄto0.03exÄÄto0.03exÄÄ=10100 =minusby by1000 Ç»to0.03exÇ»to0.03exÇ»=10100 =minusby by1000 ÅÍto0.0 차례 SNU 046.016 컴퓨터과학이여는 세계 (Computational Civilization) Part Prof. Kwangkeun Yi Department of Computer Science & Engineering 이전 다음 1 400년의 축적 2 그 도구의 실현 3 SW, 지혜로 짓는 세계 4 응용: 인간 지능/본능/현실의 확장 또다른 100여년의

More information

PowerPoint Presentation

PowerPoint Presentation public class SumTest { public static void main(string a1[]) { int a, b, sum; a = Integer.parseInt(a1[0]); b = Integer.parseInt(a1[1]); sum = a + b ; // 두수를더하는부분입니다 System.out.println(" 두수의합은 " + sum +

More information

<4D F736F F F696E74202D B3E22032C7D0B1E220C0A9B5B5BFECB0D4C0D3C7C1B7CEB1D7B7A1B9D620C1A638B0AD202D20C7C1B7B9C0D320BCD3B5B5C0C720C1B6C0FD>

<4D F736F F F696E74202D B3E22032C7D0B1E220C0A9B5B5BFECB0D4C0D3C7C1B7CEB1D7B7A1B9D620C1A638B0AD202D20C7C1B7B9C0D320BCD3B5B5C0C720C1B6C0FD> 2006 년 2 학기윈도우게임프로그래밍 제 8 강프레임속도의조절 이대현 한국산업기술대학교 오늘의학습내용 프레임속도의조절 30fps 맞추기 스프라이트프레임속도의조절 프레임속도 (Frame Rate) 프레임속도란? 얼마나빨리프레임 ( 일반적으로하나의완성된화면 ) 을만들어낼수있는지를나타내는척도 일반적으로초당프레임출력횟수를많이사용한다. FPS(Frame Per Sec)

More information