SIGPLwinterschool2012
|
|
- 준현 손
- 6 years ago
- Views:
Transcription
1
2 1994
3
4
5
6
7
8
9
10
11
12
13 2002
14 Semantics Engineering with PLT Redex Matthias Felleisen, Robert Bruce Findler and Matthew Flatt 2009 Text
15 David A. Schmidt
16
17 EXPRESSION E ::= N ( E1 O E2 ) OPERATOR O ::= + - NUMERAL N ::= D D N DIGIT D ::= : ((2 + 1) - (3-4)) ETREE ::= NUM [ OP, ETREE, ETREE ] OP ::= + - NUM ::= <string of digits> : ["-", ["+", "2", "1"], ["-", "3", "4"]]
18 def interpetree(t): # pre: t == ETREE # where ETREE ::= NUM [ OP, ETREE, ETREE ] # OP ::= + - # NUM ::= <string of digits> # post: ans == t ( ) # returns: ans if isinstance(t, str): if t.isdigit(): ans = int(t) else: raise Exception else: if t[0] == + : ans = interpetree(t[1]) + interpetree(t[2]) elif t[0] == - : ans = interpetree(t[1]) - interpetree(t[2]) else: print( interpetree error:,t, is illegal. ) raise Exception return ans
19 interpetree( ["-", ["+", "2", "1"], ["-", "3", "4"]]) => ans = interpetree(["+", "2", "1"]) - interpetree(["-", "3", "4"]) => ans = interpetree("2") + interpetree("1") => ans = 2 = 2 + interpetree("1") => ans = 1 = = 3 = 3 - interpetree(["-", "3", "4"]) => ans = interpetree("3") - interpetree("4") => ans = 3 = 3 - interpetree("4") = 3 - => ans = 4 = 3-4 = -1 = 3 - (-1) = 4 = 4
20 Program P ::= CL CommandList CL ::= C C ; CL Command C ::= I = E print I while E : CL end Expression E ::= N I ( E O E ) Operator O ::= + - Numeral N ::= <strings of digits> Variable I := <strings> PTREE ::= CLIST CLIST ::= [ CTREE+ ] CTREE ::= ["=", ID, ETREE] ["print", ID] ["while", ETREE, CLIST] ETREE ::= NUM ID [OP, ETREE, ETREE]
21 x = 3 ; while x : x = x - 1 end ; print x [["=", "x", "3"], ["while", "x", [["=", "x", ["-", "x", "1"]]]], ["print", "x"] ]
22 x = 3 ; while x : x = x - 1 end ; print x program [["=", "x", "3"], ["while", "x", [["=", "x", ["-", "x", "1"]]]], ["print", "x"] ] interpptree interpctree interpetree namespace x 3 def interpptree(program): # pre: program == PTREE ::= CLIST # CLIST ::= [ CTREE+ ] # post: namespace == program ( ) global namespace namespace = {} # for command in program: interpctree(command) print( final namespace =, namespace)
23 def interpctree(c): # pre: c == CTREE ::= [ =, ID, ETREE] [ print, ID] [ while, ETREE, CLIST] # post: namespace == c ( ) op = c[0] if op == = : var = c[1] expr = c[2] exprval = interpetree(expr) namespace[var] = exprval elif op == print : var = c[1] if var in namespace: val = namespace[var] print(val) else: crash( variable name undefined ) elif op == while : expr = c[1] body = c[2] while (interpetree(expr)!= 0) interpclist(body) else: crash( invalid command )
24 def interpetree(e): # pre: e == ETREE ::= NUM ID [OP, ETREE, ETREE] OP ::= + - # post: val == e ( ) # returns: val if isinstance(e,str) and e.isdigit(): val = int(e) elif isinstance(e,str) and len(e)>0 and e[0].isalpha(): if e in namespace: val = namespace[e] else: crash( variable name undefined ) else: op = e[0] val1 = interpetree(e[1]) val2 = interpetree(e[2]) if op == + : val = val1 + val2 elif op == - : val = val1 - val2 else: crash( illegal arithmetic operator ) return val
25 interpptree([["=", "x", "3"], ["while", "x", [["=", "x", ["-", "x", "1"]]]], ["print", "x"] ])
26
27
28 Program P ::= CL CommandList CL ::= C C ; CL Command C ::= L = E while E : CL end print L Expression E ::= N L &L ( E + E ) LefthandSide L ::= I *L Numeral N ::= <strings of digits> Variable I ::= <strings> PTREE ::= CLIST CLIST ::= [ CTREE+ ] CTREE ::= ["=", LTREE, ETREE] ["while", ETREE, CLIST] ["print", LTREE] ETREE ::= NUM LTREE [ &, LTREE] [ +, ETREE, ETREE] LTREE ::= ID [ *, LTREE]
29 y = 5; z = 0; x = (6 + y) [["=", "y", "5"], ["=", "z", "0"], ["=", "x", [ +, 6, y ]] ] program interpptree interpctree interpetree interpltree namespace memory
30 y = 5; z = 0; x = (6 + y) [["=", "y", "5"], ["=", "z", "0"], ["=", "x", [ +, 6, y ]] ] program interpptree interpctree interpetree interpltree y 0 namespace memory
31 y = 5; z = 0; x = (6 + y) [["=", "y", "5"], ["=", "z", "0"], ["=", "x", [ +, 6, y ]] ] program interpptree interpctree interpetree interpltree y 0 z 1 namespace memory
32 y = 5; z = 0; x = (6 + y) [["=", "y", "5"], ["=", "z", "0"], ["=", "x", [ +, 6, y ]] ] program interpptree interpctree interpetree interpltree y 0 z 1 x 2 namespace memory
33 y = 5; z = &y; x = (6 + *z) program [["=", "y", "5"], ["=", "z", ["&", "y"]], ["=", "x", [ +, 6, [ *, z ]]] ] interpptree interpctree interpetree interpltree namespace memory
34 y = 5; z = &y; x = (6 + *z) program [["=", "y", "5"], ["=", "z", ["&", "y"]], ["=", "x", [ +, 6, [ *, z ]]] ] interpptree interpctree interpetree interpltree y 0 namespace memory
35 y = 5; z = &y; x = (6 + *z) program [["=", "y", "5"], ["=", "z", ["&", "y"]], ["=", "x", [ +, 6, [ *, z ]]] ] interpptree interpctree interpetree interpltree y 0 z 1 namespace memory
36 y = 5; z = &y; x = (6 + *z) program [["=", "y", "5"], ["=", "z", ["&", "y"]], ["=", "x", [ +, 6, [ *, z ]]] ] interpptree interpctree interpetree interpltree y 0 z 1 x 2 namespace memory
37 memory = [] # memory = [5,0,11] namespace = {} # namespace = { y =0, z =1, x =2} def interpc(program): # pre: program == PTREE ::= [ CTREE+ ] # post: memory == program ( ) global namespace, memory namespace = {} memory = [] for command in program: interpctree(command) print( final namespace =, namespace) print( final memory =, memory)
38 def interpltree(x): # pre: x == LTREE ::= ID [ *, LTREE] # post: loc == x # returns: loc if isinstance(x,str): if x in namespace: loc = namespace[x] else: memory.append( err ) namespace[x] = len(memory) - 1 loc = namespace[x] else: y = interpltree(x[1]) loc = memory[y] return loc
39 def interpctree(c): # pre: c == CTREE ::= [ =, LTREE, ETREE] [ while, ETREE, CLIST] [ print, LTREE] # post: memory == c ( ) op = c[0] if op == = : lval = interpltree(c[1]) rval = interpetree(c[2]) memory[lval] = rval elif op == while : expr = c[1] body = c[2] while (interpetree(expr)!= 0) interpclist(body) elif op == print : print(interpltree(c[1])) else: crash( invalid command )
40 def interpetree(e): # pre: e == ETREE ::= NUM LTREE [ &, LTREE] [ +, ETREE, ETREE] # post: val == e ( ) # returns: val if isinstance(e,str) and e.isdigit(): val = int(e) elif isinstance(e,list) and e[0] == + :: val1 = interpetree(e[1]) val2 = interpetree(e[2]) val = val1 + val2 elif isinstance(e,list) and e[0] == & : val = interpltree(e[1]) else: x = interpltree(e) val = memory[x] return val
41 declare y : int; declare z : *int; y = 5; z = &y; declare x : int; x = (6 + *z) declare x : int; x = 0; declare y : int; y = (6 + &x) declare x : int; x = 0; *x = 999
42 Program CommandList Command P ::= CL CL ::= C C ; CL C ::= L = E while E : CL end print L declare I : T Type T ::= int *T Expression E ::= N L &L ( E1 + E2 ) LefthandSide L ::= I *L Numeral Variable N ::= <strings of digits> I ::= <strings> PTREE ::= CLIST CLIST ::= [ CTREE+ ] CTREE ::= ["=", LTREE, ETREE] ["while", ETREE, CLIST] ["print", LTREE] [ dec, ID, TYPE] TYPE ::= [ ptr *, int ] ETREE ::= NUM LTREE [ &, LTREE] [ +, ETREE, ETREE] LTREE ::= ID [ *, LTREE]
43 declare y : int; declare z : *int; y = 5; z = &y; declare x; x = (6 + *z) program interpptree interpctree interpetree interpltree namespace [[ dec, y, [ int ]], [ dec, z, [ ptr, int ]], ["=", "y", "5"], ["=", "z", ["&", "y"]], [ dec, x, [ int ]], ["=", "x", [ +, 6, [ *, z ]]] ] memory
44 declare y : int; declare z : *int; y = 5; z = &y; declare x; x = (6 + *z) program interpptree interpctree interpetree interpltree y [ int ], 0 namespace [[ dec, y, [ int ]], [ dec, z, [ ptr, int ]], ["=", "y", "5"], ["=", "z", ["&", "y"]], [ dec, x, [ int ]], ["=", "x", [ +, 6, [ *, z ]]] ] memory
45 declare y : int; declare z : *int; y = 5; z = &y; declare x; x = (6 + *z) program interpptree interpctree interpetree interpltree y [ int ], 0 z [ ptr, int ], 1 namespace [[ dec, y, [ int ]], [ dec, z, [ ptr, int ]], ["=", "y", "5"], ["=", "z", ["&", "y"]], [ dec, x, [ int ]], ["=", "x", [ +, 6, [ *, z ]]] ] memory
46 declare y : int; declare z : *int; y = 5; z = &y; declare x; x = (6 + *z) program interpptree interpctree interpetree interpltree y [ int ], 0 z [ ptr, int ], 1 namespace [[ dec, y, [ int ]], [ dec, z, [ ptr, int ]], ["=", "y", "5"], ["=", "z", ["&", "y"]], [ dec, x, [ int ]], ["=", "x", [ +, 6, [ *, z ]]] ] memory
47 declare y : int; declare z : *int; y = 5; z = &y; declare x; x = (6 + *z) program interpptree interpctree interpetree interpltree y [ int ], 0 z [ ptr, int ], 1 namespace [[ dec, y, [ int ]], [ dec, z, [ ptr, int ]], ["=", "y", "5"], ["=", "z", ["&", "y"]], [ dec, x, [ int ]], ["=", "x", [ +, 6, [ *, z ]]] ] memory
48 declare y : int; declare z : *int; y = 5; z = &y; declare x; x = (6 + *z) program interpptree interpctree interpetree interpltree y [ int ], 0 z [ ptr, int ], 1 x [ int ], 2 namespace [[ dec, y, [ int ]], [ dec, z, [ ptr, int ]], ["=", "y", "5"], ["=", "z", ["&", "y"]], [ dec, x, [ int ]], ["=", "x", [ +, 6, [ *, z ]]] ] memory
49 declare y : int; declare z : *int; y = 5; z = &y; declare x; x = (6 + *z) program interpptree interpctree interpetree interpltree y [ int ], 0 z [ ptr, int ], 1 x [ int ], 2 namespace [[ dec, y, [ int ]], [ dec, z, [ ptr, int ]], ["=", "y", "5"], ["=", "z", ["&", "y"]], [ dec, x, [ int ]], ["=", "x", [ +, 6, [ *, z ]]] ] memory
50 memory = [] # memory = [5,0,11] namespace = {} # namespace = { y =([ int ],0), # z =([ ptr, int ],1), # x =([ int ],2)} def interpct(program): # pre: program == PTREE ::= [ CTREE+ ] # post: memory == program ( ) global namespace, memory namespace = {} memory = [] for command in program: interpctree(command) print( final namespace =, namespace) print( final memory =, memory)
51 def interpltree(x): # pre: x == LTREE ::= ID [ *, LTREE] # post: ans == x (, ) # returns: ans if isinstance(x,str): if x in namespace: ans = namespace[x] else: crash( variable,x, undeclared ) else: type, loc = interpltree(x[1]) if type[0] == ptr : ans = (type[1:],memory[loc]) else: crash( variable not a pointer ) return ans
52 def interpctree(c): # pre: c == CTREE ::= [ =, LTREE, ETREE] [ while, ETREE, CLIST] [ print, LTREE] [ dec, ID, TYPE] TYPE ::= [ ptr *, int ] # post: memory == c ( ) op = c[0] if op == = : type1,lval = interpltree(c[1]) type2,rval = interpetree(c[2]) if type1 == type2: memory[lval] = rval else: crash( incompatible types for assignment ) elif op == while : expr = c[1] body = c[2] type,val = interpetree(expr) while (val!= 0) interpclist(body) type,val = interpetree(expr) elif op == print : type,num = interpltree(c[1]) print(num) elif op == dec : x = c[1] if x in namespace: crash( variable,x, redeclared ) else: memory.append( err ) namespace[x] = (c[2],len(memory)-1) else: crash( invalid command )
53 def interpetree(e): # pre: e == ETREE ::= NUM LTREE [ &, LTREE] [ +, ETREE, ETREE] # post: ans == e (, ) # returns: ans if isinstance(e,str) and e.isdigit(): ans = ([ int ],int(e)) elif isinstance(e,list) and e[0] == + :: type1,val1 = interpetree(e[1]) type2,val2 = interpetree(e[2]) if type1 == [ int ] and type2 == [ int ]: ans = ([ int ],val1 + val2) elif isinstance(e,list) and e[0] == & : type,val = interpltree(e[1]) ans = ([ ptr ]+type,val) else: type,loc = interpltree(e) ans = (type,memory[loc]) return ans
54
55 x = 7; y = new {f, g}; y.f = x; y.g = new {r}; y.g.r = y.f program interpptree interpctree interpetree interpltree α namespace α heap
56 x = 7; y = new {f, g}; y.f = x; y.g = new {r}; y.g.r = y.f program interpptree interpctree interpetree interpltree α namespace α x 7 heap
57 x = 7; y = new {f, g}; y.f = x; y.g = new {r}; y.g.r = y.f program interpptree interpctree interpetree interpltree α namespace α x 7 y β heap β f g
58 x = 7; y = new {f, g}; y.f = x; y.g = new {r}; y.g.r = y.f program interpptree interpctree interpetree interpltree α namespace α x 7 y β heap β f 7 g
59 x = 7; y = new {f, g}; y.f = x; y.g = new {r}; y.g.r = y.f program interpptree interpctree interpetree interpltree α namespace α x 7 y β heap β f 7 g ɣ ɣ r
60 x = 7; y = new {f, g}; y.f = x; y.g = new {r}; y.g.r = y.f program interpptree interpctree interpetree interpltree α namespace α x 7 y β heap β f 7 g ɣ ɣ r 7
61 Program CommandList Command Expression LefthandSide FieldNames Numeral Variable P ::= CL CL ::= C C ; CL C ::= L = E if E : CL1 else CL2 end print L E ::= N L ( E + E ) new { F } L ::= I L. I F ::= I I, F N ::= <strings of digits> I ::= <strings> PTREE ::= CLIST CLIST ::= [ CTREE+ ] CTREE ::= ["=", LTREE, ETREE] ["if", ETREE, CLIST, CLIST] ["print", LTREE] ETREE ::= NUM [ deref, LTREE] [ +, ETREE, ETREE] [ new, OBJ] LTREE ::= [ ID+ ] OBJ ::= [ ID+ ] a = new { f,g }; a.f = 3; a.g = (1 + a.f) [ ["=", ["a"], ["new", ["f","g"]]], ["=", ["a", "f"], "3"], ["=", ["a", "g"], ["+", "1", ["deref", ["a", "f"]]]] ]
62 heap = {} # { ( = )+ } heap_count = 0 # x = 7; y = new {f,g}; y.g = 5; z = new {r}; z.r = (y.g + x) heap 0 namespace 0
63 heap = {} # { ( = )+ } heap_count = 0 # x = 7; y = new {f,g}; y.g = 5; z = new {r}; z.r = (y.g + x) heap 0 x 7 namespace 0
64 heap = {} # { ( = )+ } heap_count = 0 # x = 7; y = new {f,g}; y.g = 5; z = new {r}; z.r = (y.g + x) heap 0 x 7 y 1 namespace 0 1 f g
65 heap = {} # { ( = )+ } heap_count = 0 # x = 7; y = new {f,g}; y.g = 5; z = new {r}; z.r = (y.g + x) heap 0 x 7 y 1 namespace 0 1 f g 5
66 heap = {} # { ( = )+ } heap_count = 0 # x = 7; y = new {f,g}; y.g = 5; z = new {r}; z.r = (y.g + x) heap 0 x 7 y 1 z 2 namespace 0 1 f g 5 2 r
67 heap = {} # { ( = )+ } heap_count = 0 # x = 7; y = new {f,g}; y.g = 5; z = new {r}; z.r = (y.g + x) heap 0 x 7 y 1 z 2 namespace 0 1 f g 5 2 r 12
68 heap = {} # { ( = )+ } heap_count = 0 # x = 7; y = new {f,g}; y.g = 5; z = new {r}; z.r = (y.g + x) heap 0 x 7 y 1 z 2 namespace 0 heap = { "0": {"x":7, "y":"1", "z":"2"}, "1": {"f":"nil", "g":5}, "2": {"r":12} } heap_count = f g 5 r 12
69 def cleartheheap(): global heap_count, heap heap_count = 0 heap = {} def allocatens(): global heap_count newloc = str(heap_count) heap[newloc] = {} heap_count = heap_count + 1 return newloc def dereference(lval): ans = nil loc,f = lval if isinstance(loc,str) and loc.isdigit(): ans = heap[loc][f] else: crash( dereference error: lval =,str(lval)) return ans def store(lval,rval): loc, qual = lval if isinstance(loc,str) and loc.isdigit(): heap[loc][qual] = rval else: crash( store error: lval =,str(lval))
70 def interpct(program): # pre: program == PTREE ::= [ CTREE+ ] # post: memory == program ( ) global namespace, heap cleartheheap() namespace = allocatens() for command in program: interpctree(command) print( final namespace =,namespace) print( final heap =,heap)
71 def interpctree(c): # pre: c == CTREE ::= [ =, LTREE, ETREE] [ if, ETREE, CLIST, CLIST] [ print, LTREE] # post: heap == c ( ) op = c[0] if op == = : lval = interpltree(c[1]) rval = interpetree(c[2]) store(lval,rval) elif op == if : test = interpetree(c[1]) if test!= 0: interpclist(c[2]) else: interpclist(c[3]) elif op == print : val = dereference(interpltree(c[1])) print(val) else: crash( invalid command )
72 def interpetree(e): # pre: e == ETREE ::= NUM [ deref, LTREE] [ +, ETREE, ETREE] [ new OBJ] OBJ ::= [ ID+ ] # post: ans == or or nil (+ ) # returns: ans ans = nil if isinstance(e,str) and e.isdigit(): ans = int(e) elif e[0] == + :: val1 = interpetree(e[1]) val2 = interpetree(e[2]) if isinstance(val1,int) and isinstance(val2,int): ans = val1 + val2 else: crash( addition error - non-int value used ) elif e[0] == deref : ans = dereference(interpltree(e[1])) elif e[0] == new : handle = allocatens() fields = e[1] for f in fields: store((handle,f), nil ) ans = handle else: crash( invalid expression ) return ans
73 def interpltree(x): # pre: x == LTREE ::= [ ID+ ] # post: lval == (, ) # returns: ans lval = (namespace,x[0]) indexlist = x[1:] while indexlist!= []: fieldname = indexlist[0] indexlist = indexlist[1:] handle = dereference(lval) lval = (handle, fieldname) return lval
74 x y.f y.g.h ["x"] ["y", "f"] ["y", "g", h ] ( 0, x ) ( 1, f ) crash! heap namespace 0 x 7 y 1 z f g 5 2 r 12
75
76
77
78
79
80 Peter J. Landin, "Correspondence between ALGOL 60 and Church's Lambda-notation: part I & II". Communications of the ACM, (February 1965).
81
82
83
84
85 Program Declaration Command Expression Numeral Variable P ::= D ; C D ::= int I D1 ; D2 C ::= I = E C1 ; C2 while E : C print E E ::= N E1 + E2 E1 == N ::= <strings of digits> I ::= <alphanumeric strings>
86 Program Declaration Command Expression Numeral Variable P ::= D ; C D ::= int I D1 ; D2 proc I = C C ::= I = E C1 ; C2 while E : C print E call I E ::= N E1 + E2 E1 == N ::= <strings of digits> I ::= <alphanumeric strings>
87 Program Declaration Command Expression Numeral Variable P ::= D ; C D ::= int I D1 ; D2 proc I = C fun I = E C ::= I = E C1 ; C2 while E : C print E call I E ::= N E1 + E2 E1 == I() N ::= <strings of digits> I ::= <alphanumeric strings>
88 int i; i = 0; fun f = (i + i) + 1; i = i + 1; i = f() + f() - i int i; i = 0; fun f = 1; i = i + 1; i = f() + f() - i int i; i = 0; fun f = 1; i = i + 1; i = i
89 int i; i = 0; fun f = (i + i) + 1; i = i + 1; i = f() + f() - i int i; i = 0; fun f = (i + i) + 1; i = i + 1; i = (i + i) (i + i) i
90 Program Declaration Command Expression Numeral Variable P ::= D ; C D ::= int I D1 ; D2 proc I = C fun I = { C ; return E} C ::= I = E C1 ; C2 while E : C print E call I E ::= N E1 + E2 E1 == I() N ::= <strings of digits> I ::= <alphanumeric strings>
91
92
93 Program Declaration Command P ::= D ; C D ::= int I D1 ; D2 proc I(I *) = C C ::= I = E C1 ; C2 while E : C print E I(E*) Program Declaration Command P ::= D ; C D ::= int I D1 ; D2 proc I(I ) = C C ::= I = E C1 ; C2 while E : C print E I(C)
94 (a) int x; int[3] y; proc p(x, z) { z = x + y[1]; y[x] = z }; x = 1; y[1] = 5; p(x + x, 0); print x; (a) namespace heap α α β x 1 y β p ɣ nil ɣ codeptr α
95 int x; int[3] y; proc p(x, z) { (b) α δ z = x + y[1]; y[x] = z }; x = 1; y[1] = 5; p(x + x, 0); print x; (b) namespace α β heap x 1 y p β ɣ nil δ x 2 z 0 α ɣ codeptr α
96 (c) int x; int[3] y; proc p(x, z) { z = x + y[1]; y[x] = z }; x = 1; y[1] = 5; p(x + x, 0); print x; (c) namespace heap α δ α β x 1 y β p ɣ nil δ x 2 z 7 α ɣ codeptr α
97 (d) int x; int[3] y; proc p(x, z) { z = x + y[1]; y[x] = z }; x = 1; y[1] = 5; p(x + x, 0); print x; (d) namespace heap α α β x 1 y β p ɣ nil δ x 2 z 7 α ɣ codeptr α
98
99 (a) (a) int x; x = 1; proc f(n) { if n > 0 { x = x * n; f(n - 1) } }; f(4) namespace α heap α x 1 f β nil β codeptr α
100 (b) (b) int x; x = 1; proc f(n) { if n > 0 { x = x * n; f(n - 1) } }; f(4) namespace α ɣ heap α x 1 f β ɣ n 4 α nil β codeptr α
101 (c) (c) int x; x = 1; proc f(n) { if n > 0 { x = x * n; f(n - 1) } }; f(4) namespace α ɣ heap α x 4 f β ɣ n 4 α nil β codeptr α
102 (d) (d) int x; x = 1; proc f(n) { if n > 0 { x = x * n; f(n - 1) } }; f(4) namespace α ɣ δ heap α x 4 f β ɣ n 4 α δ n 3 α nil β codeptr α
103 (e) (e) int x; x = 1; proc f(n) { if n > 0 { x = x * n; f(n - 1) } }; f(4) namespace α ɣ δ heap α x 12 f β ɣ n 4 α δ n 3 α nil β codeptr α
104 (f) int x; x = 1; proc f(n) { if n > 0 { x = x * n; f(n - 1) } }; f(4) (f) namespace α ɣ δ ε heap α ɣ δ ε x 12 n 4 n 3 n 2 f β nil β codeptr α α α α
105 define I = U define F(I) =... F(U)
106
107 Declaration D ::= int I D1 ; D2 proc I(I ) { C } Command C ::= I = E C1 ; C2 while E : C print E I(E) begin D in C end int x = 0; # begin int y # in y = x + 1; x = y + y end; # y print x # 2 int x = 0; # int y = 9; # begin int y # in y = x + 1; x = y + y print y end; print y # 1 # 9
108 int i = 0; proc p() { i = i + 1 }; begin int i = 9 in p(); print i # 9? 10? end; p(); print i # 1? 2?
109 (a) proc f(n) { begin int i; proc g(m) { print m + n + i } in i = 1; return g end }; int i = 9; h = f(2); h(3) (a) namespace α heap α f β i 9 nil β codeptr α
110 (b) proc f(n) { begin int i; proc g(m) { print m + n + i } in i = 1; return g end }; int i = 9; h = f(2); h(3) (b) namespace α ɣ heap α ɣ f β i 9 nil β codeptr α n 2 i 1 g δ α δ codeptr ɣ
111 (c) proc f(n) { begin int i; proc g(m) { print m + n + i } in i = 1; return g end }; int i = 9; h = f(2); h(3) (c) namespace α heap α f i β 9 ɣ n i 2 1 h δ g δ nil α β codeptr α δ codeptr ɣ
112 (d) proc f(n) { begin int i; proc g(m) { print m + n + i } in i = 1; return g end }; int i = 9; h = f(2); h(3) (d) namespace α ε heap α f β ɣ n 2 ε i 9 i 1 h δ g δ nil α m 3 ɣ β δ codeptr codeptr α ɣ
113 (d) proc f(n) { begin int i; proc g(m) { print m + n + i } in i = 1; return g end }; int i = 9; h = f(2); h(3) (d) namespace α ε heap α f β ɣ n 2 ε i 9 i 1 h δ g δ nil α m 3 ɣ β δ codeptr codeptr α ɣ
114
115
116
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 informationENE414 프로그래밍언어론강의노트 1 1 문법, 핵심구문나무, 인터프리터 한양대학교 ERICA캠퍼스컴퓨터공학과도경구 2012년 1학기 (version 0.35) 1 c David A. Schmidt, 도경구 (2012). 본문서는 Kansas State Univers
ENE414 프로그래밍언어론강의노트 1 1 문법, 핵심구문나무, 인터프리터 한양대학교 ERICA캠퍼스컴퓨터공학과도경구 2012년 1학기 (version 0.35) 1 c David A. Schmidt, 도경구 (2012). 본문서는 Kansas State University의 David A. Schmidt 교수의강의노트 Introduction to Programming-Language
More informationHW5 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 information1
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 informationOCaml
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 informationPowerPoint 프레젠테이션
@ 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 informationC++-¿Ïº®Çؼ³10Àå
C C++. (preprocessor directives), C C++ C/C++... C++, C. C++ C. C C++. C,, C++, C++., C++.,.. #define #elif #else #error #if #itdef #ifndef #include #line #pragma #undef #.,.,. #include #include
More information03장.스택.key
---------------- DATA STRUCTURES USING C ---------------- 03CHAPTER 1 ? (stack): (LIFO:Last-In First-Out) 2 : top : ( index -1 ),,, 3 : ( ) ( ) -> ->. ->.... 4 Stack ADT : (LIFO) : init():. is_empty():
More information프로그램을 학교 등지에서 조금이라도 배운 사람들을 위한 프로그래밍 노트 입니다. 저 역시 그 사람들 중 하나 입니다. 중고등학교 시절 학교 도서관, 새로 생긴 시립 도서관 등을 다니며 책을 보 고 정리하며 어느정도 독학으르 공부하긴 했지만, 자주 안하다 보면 금방 잊어
개나리 연구소 C 언어 노트 (tyback.egloos.com) 프로그램을 학교 등지에서 조금이라도 배운 사람들을 위한 프로그래밍 노트 입니다. 저 역시 그 사람들 중 하나 입니다. 중고등학교 시절 학교 도서관, 새로 생긴 시립 도서관 등을 다니며 책을 보 고 정리하며 어느정도 독학으르 공부하긴 했지만, 자주 안하다 보면 금방 잊어먹고 하더라구요. 그래서,
More information61 62 63 64 234 235 p r i n t f ( % 5 d :, i+1); g e t s ( s t u d e n t _ n a m e [ i ] ) ; if (student_name[i][0] == \ 0 ) i = MAX; p r i n t f (\ n :\ n ); 6 1 for (i = 0; student_name[i][0]!= \ 0&&
More information13주-14주proc.PDF
12 : Pro*C/C++ 1 2 Embeded SQL 3 PRO *C 31 C/C++ PRO *C NOT! NOT AND && AND OR OR EQUAL == = SQL,,, Embeded SQL SQL 32 Pro*C C SQL Pro*C C, C Pro*C, C C 321, C char : char[n] : n int, short, long : float
More informationchap10.PDF
10 C++ Hello!! C C C++ C++ C++ 2 C++ 1980 Bell Bjarne Stroustrup C++ C C++ C, C++ C C 3 C C++ (prototype) (type checking) C C++ : C++ 4 C C++ (prototype) (type checking) [ 10-1] #include extern
More informationPowerPoint 프레젠테이션
@ 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 informationPowerPoint 프레젠테이션
@ 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본 발명은 중공코어 프리캐스트 슬래브 및 그 시공방법에 관한 것으로, 자세하게는 중공코어로 형성된 프리캐스트 슬래브 에 온돌을 일체로 구성한 슬래브 구조 및 그 시공방법에 관한 것이다. 이를 위한 온돌 일체형 중공코어 프리캐스트 슬래브는, 공장에서 제작되는 중공코어 프
(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 informationMicrosoft 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 informationModern 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歯처리.PDF
E06 (Exception) 1 (Report) : { $I- } { I/O } Assign(InFile, InputName); Reset(InFile); { $I+ } { I/O } if IOResult 0 then { }; (Exception) 2 2 (Settling State) Post OnValidate BeforePost Post Settling
More information2힉년미술
제 회 Final Test 문항 수 배점 시간 개 00 점 분 다음 밑줄 친 부분의 금속 공예 가공 기법이 바르게 연결된 것은? 금, 은, 동, 알루미늄 등의 금속을 ᄀ불에 녹여 틀에 붓거나 금속판을 ᄂ구부리거나 망치로 ᄃ두들겨서 여러 가지 형태의 쓸모 있는 물건을 만들 수 있다. ᄀ ᄂ ᄃ ᄀ ᄂ ᄃ 조금 단금 주금 주금 판금 단금 단금 판금 주금 판금 단금
More informationK&R2 Reference Manual 번역본
typewriter structunion struct union if-else if if else if if else if if if if else else ; auto register static extern typedef void char short int long float double signed unsigned const volatile { } struct
More informationMicrosoft PowerPoint - semantics
제 3 장시맨틱스 (Semantics) Reading Chap 13 숙대창병모 Sep. 2007 1 3.1 Operational Semantics 숙대창병모 Sep. 2007 2 시맨틱스의필요성 프로그램의미의정확한이해 소프트웨어의정확한명세 소프트웨어시스템에대한검증혹은추론 컴파일러혹은해석기작성의기초 숙대창병모 Sep. 2007 3 의미론의종류 Operational
More information특허청구의 범위 청구항 1 몸체(110)의 일측에는 테스트의 필요성에 따라 여타한 디젤 자동차(100)에서 분리시킨 상태의 분리형 커먼레일 인젝트(110)를 고정할 수 있는 분리형 인젝터 고정부(20)가 구비되고, 그 고정부(20)의 하측에는 분리형 커먼 레일 인젝터(
(19) 대한민국특허청(KR) (12) 공개특허공보(A) (11) 공개번호 10-2010-0038259 (43) 공개일자 2010년04월14일 (51) Int. Cl. G01M 15/09 (2006.01) G01M 15/00 (2006.01) (21) 출원번호 10-2008-0097443 (22) 출원일자 2008년10월04일 심사청구일자 전체 청구항 수 :
More informationFebruary
February 3 8 10 12 14 18 22 24 26 28 30 37 38 40 42 44 45 45 46 46 47 48 50 51 155 379 503 763 867 955 1031 1061 1 171 051 052 053 053 054 054 054 055 056 057 058 059 060 061 062 063 064 064 065 066 068
More informationC# 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- 2 -
- 1 - - 2 - - 3 - - 4 - - 1 - - 2 - 구분청구 심결 (B) 취하절차무효미처리 (A) 인용기각각하소계 (C) (D) (E=A-(B+C+D) 2015 505 0 165 0 165 176 116 48 2016 3 0 2 0 2 0 0 1 합계 508 0 167 0 167 176 116 49 구분 심결년 2013 2014 2015 2016
More information6 강남구 청담지구 청담동 46, 삼성동 52 일대 46,592-46,592 7 강남구 대치지구 대치동 922번지 일대 58,440-58,440 8 강남구 개포지구 개포동 157일대 20,070-20,070 9 강남구 개포지구중심 포이동 238 일대 25,070-25,
서울특별시시 제2014-77호 도시관리계획[성내지구 지구단위계획구역 등 176개 구역 (민간부문 운영시행지침)] 결정(변경) 시 서울특별시 성내지구 등 176개소 지구단위계획구역 민간부문 운영시행지침 에 대하여 국토의 계획 및 이용에 관한 법률 제30조 및 같은법 시행령 제25조 규정에 따라 도시관리 계획결정(변경) 사항을 다음과 같이 시합니다. 2014년
More information27집최종10.22
경 축 2012년 한국문인협회 선정 우수지부상 수상 아래 글은 한국문인협회 지회, 지부 중 홍천지부가 전국 우수지부로 선정되어 지난 2012년 9월 22~23일 원주 인터블고 호텔에서 개최한 한국문인협회 제32차 문협 전국대표자 대회 에서 수상하고 석도익 회장이 발표한 홍천지부 지부운영사례에 대한 글을 옮김. 2012년 한국문인협회 선정 우수지부장
More information황룡사 복원 기본계획 Ⅵ. 사역 및 주변 정비계획 가. 사역주변 정비구상 문화유적지구 조성 1. 정비방향의 설정 황룡사 복원과 함께 주변 임해전지(안압지) 海殿址(雁鴨池)와 분황사 등의 문화유적과 네트워크로 연계되는 종합적 정비계획안을 수립한다. 주차장과 광장 등 주변
194 197 황룡사 복원 기본계획 Ⅵ. 사역 및 주변 정비계획 가. 사역주변 정비구상 문화유적지구 조성 1. 정비방향의 설정 황룡사 복원과 함께 주변 임해전지(안압지) 海殿址(雁鴨池)와 분황사 등의 문화유적과 네트워크로 연계되는 종합적 정비계획안을 수립한다. 주차장과 광장 등 주변 편의시설에 대한 계획을 고려하여 하나의 유적지구로 조성한다. 각 유적을 하나의
More information4. #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제4장 기본 의미구조 (Basic Semantics)
제 4 장블록및유효범위 Reading Chap. 5 숙대창병모 1 4.1 변수선언및유효범위 숙대창병모 2 변수선언과유효범위 변수선언 Declaration before Use! 대부분의언어에서변수는사용전에먼저선언해야한다. 변수의유효범위 (scope) 선언된변수가유효한 ( 사용될수있는 ) 프로그램내의범위 / 영역 변수이름뿐아니라함수등다른이름도생각해야한다. 정적유효범위
More information6.1 Addresses and Pointers Recall memory concepts from Ch2 ch6_testbasicpointer.c int x1=1, x2=7; double distance; int *p; int q=8; p = &q; name addre
GEN1031 Computer Programming Chapter 6 Pointer 포인터 Kichun Lee Department of Industrial Engineering Hanyang Univesity 1 6.1 Addresses and Pointers Recall memory concepts from Ch2 ch6_testbasicpointer.c
More informationSemantic Consistency in Information Exchange
제 3 장시맨틱스 (Semantics) Reading Chap 13 숙대창병모 1 시맨틱스의필요성 프로그램의미의정확한이해 소프트웨어의정확한명세 소프트웨어시스템에대한검증혹은추론 컴파일러혹은해석기작성의기초 숙대창병모 2 3.1 Operational Semantics 숙대창병모 3 의미론의종류 Operational Semantics 프로그램의동작과정을정의 Denotational
More informationMobile Service > IAP > Android SDK [ ] IAP SDK TOAST SDK. IAP SDK. Android Studio IDE Android SDK Version (API Level 10). Name Reference V
Mobile Service > IAP > Android SDK IAP SDK TOAST SDK. IAP SDK. Android Studio IDE 2.3.3 Android SDK Version 2.3.3 (API Level 10). Name Reference Version License okhttp http://square.github.io/okhttp/ 1.5.4
More informationuntitled
if( ) ; if( sales > 2000 ) bonus = 200; if( score >= 60 ) printf(".\n"); if( height >= 130 && age >= 10 ) printf(".\n"); if ( temperature < 0 ) printf(".\n"); // printf(" %.\n \n", temperature); // if(
More informationAnalytics > Log & Crash Search > Unity ios SDK [Deprecated] Log & Crash Unity ios SDK. TOAST SDK. Log & Crash Unity SDK Log & Crash Search. Log & Cras
Analytics > Log & Crash Search > Unity ios SDK [Deprecated] Log & Crash Unity ios SDK. TOAST SDK. Log & Crash Unity SDK Log & Crash Search. Log & Crash Unity SDK... Log & Crash Search. - Unity3D v4.0 ios
More informationMicrosoft 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슬라이드 1
Pairwise Tool & Pairwise Test NuSRS 200511305 김성규 200511306 김성훈 200614164 김효석 200611124 유성배 200518036 곡진화 2 PICT Pairwise Tool - PICT Microsoft 의 Command-line 기반의 Free Software www.pairwise.org 에서다운로드후설치
More informationExercise (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 informationDeok9_Exploit Technique
Exploit Technique CodeEngn Co-Administrator!!! and Team Sur3x5F Member Nick : Deok9 E-mail : DDeok9@gmail.com HomePage : http://deok9.sur3x5f.org Twitter :@DDeok9 > 1. Shell Code 2. Security
More informationPART 8 12 16 21 25 28
PART 8 12 16 21 25 28 PART 34 38 43 46 51 55 60 64 PART 70 75 79 84 89 94 99 104 PART 110 115 120 124 129 134 139 144 PART 150 155 159 PART 8 1 9 10 11 12 2 13 14 15 16 3 17 18 19 20 21 4 22 23 24 25 5
More informationMySQL-Ch10
10 Chapter.,,.,, MySQL. MySQL mysqld MySQL.,. MySQL. MySQL....,.,..,,.,. UNIX, MySQL. mysqladm mysqlgrp. MySQL 608 MySQL(2/e) Chapter 10 MySQL. 10.1 (,, ). UNIX MySQL, /usr/local/mysql/var, /usr/local/mysql/data,
More informationchap 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 informationDBPIA-NURIMEDIA
e- 비즈니스연구 (The e-business Studies) Volume 17, Number 1, February, 28, 2016:pp. 293~316 ISSN 1229-9936 (Print), ISSN 2466-1716 (Online) 원고접수일심사 ( 수정 ) 게재확정일 2015. 12. 04 2015. 12. 24 2016. 02. 25 ABSTRACT
More informationuntitled
5. hamks@dongguk.ac.kr (regular expression): (recognizer) : F(, scanner) CFG(context-free grammar): : PD(, parser) CFG 1 CFG form : N. Chomsky type 2 α, where V N and α V *. recursive construction ) E
More informationuntitled
- -, (insert) (delete) - - (insert) (delete) (top ) - - (insert) (rear) (delete) (front) A A B top A B C top push(a) push(b) push(c) A B top pop() top A B D push(d) top #define MAX_STACK_SIZE 100 int
More information많이 이용하는 라면,햄버그,과자,탄산음료등은 무서운 병을 유발하고 비만의 원인 식품 이다. 8,등겨에 흘려 보낸 영양을 되 찾을 수 있다. 도정과정에서 등겨에 흘려 보낸 영양 많은 쌀눈과 쌀껍질의 영양을 등겨를 물에 우러나게하여 장시간 물에 담가 두어 영양을 되 찾는다
(51) Int. Cl. (19) 대한민국특허청(KR) (12) 공개실용신안공보(U) A23L 1/307 (2006.01) C02F 1/68 (2006.01) (21) 출원번호 20-2011-0002850 (22) 출원일자 2011년04월05일 심사청구일자 2011년04월05일 (11) 공개번호 20-2011-0004312 (43) 공개일자 2011년05월03일
More information기본자료형만으로이루어진인자를받아서함수를결과값으로반환하는고차함수 기본자료형과함수를인자와결과값에모두이용하는고차함수 다음절에서는여러가지예를통해서고차함수가어떤경우에유용한지를설명한다. 2 고차함수의 예??장에서대상체만바뀌고중간과정은동일한계산이반복될때함수를이용하면전체연산식을간 단
EECS-101 전자계산입문 고차함수 박성우 2008년5월 29일 지금까지정수나부동소수와같은기본적인자료형의조합을인자로받고결과값으로반환하는 함수에대해서배웠다. 이번강의에서는함수자체를다른함수의인자로이용하거나결과값으로 이용하는 방법을 배운다. 1 고차함수의 의미 계산은무엇을어떻게처리하여결과값을얻는지설명하는것으로이루어진다. 여기서 무엇 과 결 과값 은계산의대상체로서정수나부동소수와같은기본자료형의조합으로표현하며,
More informationMicrosoft PowerPoint - chap6 [호환 모드]
제 6 장프로세스 (Process) 숙대창병모 1 내용 프로세스시작 / 종료 명령중인수 / 환경변수 메모리배치 / 할당 비지역점프 숙대창병모 2 프로세스시작 / 종료 숙대창병모 3 Process Start Kernel exec system call user process Cstart-up routine call return int main(int argc,
More informationChap04(Signals and Sessions).PDF
Signals and Session Management 2002 2 Hyun-Ju Park (Signal)? Introduction (1) mechanism events : asynchronous events - interrupt signal from users : synchronous events - exceptions (accessing an illegal
More informationWeek5
Week 05 Iterators, More Methods and Classes Hash, Regex, File I/O Joonhwan Lee human-computer interaction + design lab. Iterators Writing Methods Classes & Objects Hash File I/O Quiz 4 1. Iterators Array
More informationHomework 3 SNU , 2011 가을이광근 Program Due: 10/10, 24:00 Essay Due: 10/12, 15:30 이번숙제의목적은 : 수업시간에살펴본, 상식적인명령형언어의정확한정의를이해하고그실행기를구현해보기. 상식적인수준에서디자인
Homework 3 SNU 4190.310, 2011 가을이광근 Program Due: 10/10, 24:00 Essay Due: 10/12, 15:30 이번숙제의목적은 : 수업시간에살펴본, 상식적인명령형언어의정확한정의를이해하고그실행기를구현해보기. 상식적인수준에서디자인된명령형언어의대표격인 C언어의역사와, 컴퓨터실행 ( 기계적인계산 ) 과상위논리의관계, 제대로정의된언어의쓰임새등에대한이야기를읽고느낀바를글로쓰기.
More informationApplication TI-89 / Voyage TM 200 PLT application. application, application. APPLICATIONS :, N. 1. O application. 2. application : D C application,. a
Custom TI-89 / Voyage TM 200 PLT custom. custom custom. Custom : CustmOn CustmOff custom. Custom, Toolbar. Custom., Home Toolbar, 2 ¾ custom. 2 ¾ Home Toolbar Custom, custom. Tip: Custom. Custom : custom..
More information확률 및 분포
확률및분포 박창이 서울시립대학교통계학과 박창이 ( 서울시립대학교통계학과 ) 확률및분포 1 / 15 학습내용 조건부확률막대그래프히스토그램선그래프산점도참고 박창이 ( 서울시립대학교통계학과 ) 확률및분포 2 / 15 조건부확률 I 첫째가딸일때두아이모두딸일확률 (1/2) 과둘중의하나가딸일때둘다딸일확률 (1/3) 에대한모의실험 >>> from collections import
More informationMicrosoft PowerPoint - 기계공학실험1-1MATLAB_개요2D.pptx
1. MATLAB 개요와 활용 기계공학실험 I 2013년 2학기 MATLAB 시작하기 이장의내용 MATLAB의여러창(window)들의 특성과 목적 기술 스칼라의 산술연산 및 기본 수학함수의 사용. 스칼라 변수들(할당 연산자)의 정의 및 변수들의 사용 방법 스크립트(script) 파일에 대한 소개와 간단한 MATLAB 프로그램의 작성, 저장 및 실행 MATLAB의특징
More information[ 융합과학 ] 과학고 R&E 결과보고서 뇌파를이용한곤충제어 연구기간 : ~ 연구책임자 : 최홍수 ( 대구경북과학기술원 ) 지도교사 : 박경희 ( 부산일과학고 ) 참여학생 : 김남호 ( 부산일과학고 ) 안진웅 ( 부산일과학고 )
[ 융합과학 ] 과학고 R&E 결과보고서 뇌파를이용한곤충제어 연구기간 : 2013. 3. 1 ~ 2014. 2. 28 연구책임자 : 최홍수 ( 대구경북과학기술원 ) 지도교사 : 박경희 ( 부산일과학고 ) 참여학생 : 김남호 ( 부산일과학고 ) 안진웅 ( 부산일과학고 ) 장은영 ( 부산일과학고 ) 정우현 ( 부산일과학고 ) 조아현 ( 부산일과학고 ) 1 -
More informationT100MD+
User s Manual 100% ) ( x b a a + 1 RX+ TX+ DTR GND TX+ RX+ DTR GND RX+ TX+ DTR GND DSR RX+ TX+ DTR GND DSR [ DCE TYPE ] [ DCE TYPE ] RS232 Format Baud 1 T100MD+
More informationObservational Determinism for Concurrent Program Security
웹응용프로그램보안취약성 분석기구현 소프트웨어무결점센터 Workshop 2010. 8. 25 한국항공대학교, 안준선 1 소개 관련연구 Outline Input Validation Vulnerability 연구내용 Abstract Domain for Input Validation Implementation of Vulnerability Analyzer 기존연구
More information歯표지.PDF
GLOFA MASTERK !!!! 8 4 4 4 4 4!! 8 4 8 8 8 8 4 4 1 1 1 1 1 2 ± 1 1 3 2 + < < ± 2 1 2 DIN BS ( C) (µv) K NiCrNi NiCrNiAI 2000~12000 5891~48828 J PeCuNi 2000~8000 7890~45498 E NiCrCuNi 1500~6000 7297~45085
More information12-file.key
11 (String).. java.lang.stringbuffer. s String s = "abcd"; s = s + "e"; a b c d e a b c d e ,., "910359,, " "910359" " " " " (token) (token),, (delimiter). java.util.stringtokenizer String s = "910359,,
More informationMicrosoft PowerPoint - a10.ppt [호환 모드]
Structure Chapter 10: Structures t and Macros Structure 관련된변수들의그룹으로이루어진자료구조 template, pattern field structure를구성하는변수 (cf) C언어의 struct 프로그램의 structure 접근 entire structure 또는 individual fields Structure는
More informationJavascript.pages
JQuery jquery part1 JavaScript : e-mail:leseraphina@naver.com http://www.webhard.co.kr I.? 2 ......,,. : : html5 ; ; .
More informationHomework 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 informationPowerPoint 프레젠테이션
Web server porting 2 Jo, Heeseung Web 을이용한 LED 제어 Web 을이용한 LED 제어프로그램 web 에서데이터를전송받아타겟보드의 LED 를조작하는프로그램을작성하기위해다음과같은소스파일을생성 2 Web 을이용한 LED 제어 LED 제어프로그램작성 8bitled.html 파일을작성 root@ubuntu:/working/web# vi
More information목차 BUG offline replicator 에서유효하지않은로그를읽을경우비정상종료할수있다... 3 BUG 각 partition 이서로다른 tablespace 를가지고, column type 이 CLOB 이며, 해당 table 을 truncate
ALTIBASE HDB 6.1.1.5.6 Patch Notes 목차 BUG-39240 offline replicator 에서유효하지않은로그를읽을경우비정상종료할수있다... 3 BUG-41443 각 partition 이서로다른 tablespace 를가지고, column type 이 CLOB 이며, 해당 table 을 truncate 한뒤, hash partition
More informationC++ Programming
C++ Programming 연산자다중정의 Seo, Doo-okok clickseo@gmail.com http://www.clickseo.com 목 차 연산자다중정의 C++ 스타일의문자열 2 연산자다중정의 연산자다중정의 단항연산자다중정의 이항연산자다중정의 cin, cout 그리고 endl C++ 스타일의문자열 3 연산자다중정의 연산자다중정의 (Operator
More informationSNU =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 informationNoSQL
MongoDB Daum Communications NoSQL Using Java Java VM, GC Low Scalability Using C Write speed Auto Sharding High Scalability Using Erlang Read/Update MapReduce R/U MR Cassandra Good Very Good MongoDB Good
More informationC프로-3장c03逞풚
C h a p t e r 03 C++ 3 1 9 4 3 break continue 2 110 if if else if else switch 1 if if if 3 1 1 if 2 2 3 if if 1 2 111 01 #include 02 using namespace std; 03 void main( ) 04 { 05 int x; 06 07
More informationSNU =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특허청구의 범위 청구항 1 앵커(20)를 이용한 옹벽 시공에 사용되는 옹벽패널에 있어서, 단위패널형태의 판 형태로 구성되며, 내부 중앙부가 후방 하부를 향해 기울어지도록 돌출 형성되어, 전면이 오 목하게 들어가고 후면이 돌출된 결속부(11)를 형성하되, 이 결속부(11
(51) Int. Cl. (19) 대한민국특허청(KR) (12) 등록특허공보(B1) E02D 29/02 (2006.01) E02D 17/20 (2006.01) E02B 3/14 (2006.01) (21) 출원번호 10-2010-0089517 (22) 출원일자 2010년09월13일 심사청구일자 (56) 선행기술조사문헌 JP2006037700 A* KR100920461
More information0. 표지에이름과학번을적으시오. (6) 1. 변수 x, y 가 integer type 이라가정하고다음빈칸에 x 와 y 의계산결과값을적으시오. (5) x = (3 + 7) * 6; x = 60 x = (12 + 6) / 2 * 3; x = 27 x = 3 * (8 / 4
Introduction to software design 2012-1 Final 2012.06.13 16:00-18:00 Student ID: Name: - 1 - 0. 표지에이름과학번을적으시오. (6) 1. 변수 x, y 가 integer type 이라가정하고다음빈칸에 x 와 y 의계산결과값을적으시오. (5) x = (3 + 7) * 6; x = 60 x
More information歯PLSQL10.PDF
10 - SQL*Pl u s Pl / SQL - SQL*P lus 10-1 1 0.1 PL/ SQL SQL*Pl u s. SQL*P lus 10-2 1 0.2 S QL* Pl u s PL/ S QL SQL*Pl u s, Pl / SQL. - PL/ SQL (i npu t ), (s t or e ), (r un). - PL/ SQL s cr i pt,,. -
More information6주차.key
6, Process concept A program in execution Program code PCB (process control block) Program counter, registers, etc. Stack Heap Data section => global variable Process in memory Process state New Running
More information歯9장.PDF
9 Hello!! C printf() scanf() getchar() putchar() gets() puts() fopen() fclose() fprintf() fscant() fgetc() fputs() fgets() gputs() fread() fwrite() fseek() ftell() I/O 2 (stream) C (text stream) : `/n'
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) 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 information5.스택(강의자료).key
CHP 5: https://www.youtube.com/watch?v=ns-r91557ds ? (stack): (LIFO:Last-In First-Out):. D C B C B C B C B (element) C (top) B (bottom) (DT) : n element : create() ::=. is_empty(s) ::=. is_full(s) ::=.
More informationuntitled
Push... 2 Push... 4 Push... 5 Push... 13 Push... 15 1 FORCS Co., LTD A Leader of Enterprise e-business Solution Push (Daemon ), Push Push Observer. Push., Observer. Session. Thread Thread. Observer ID.
More informationMicrosoft PowerPoint - lecture2.ppt
Overview s & osg::referenced Class & osg::ref_ptr Template Class 개요 OSG OSG::Referenced Class OSG::ref_ptr Template Class 2008년여름박경신 2 스마트포인터 () 는 C++ class 이다. syntax 와 semantics 상일반포인터와같다. memory
More information8장 문자열
8 장문자열 박창이 서울시립대학교통계학과 박창이 ( 서울시립대학교통계학과 ) 8 장문자열 1 / 24 학습내용 문자열 (string) 훑기 (traversal) 부분추출 (slicing) print 함수불변성 (immutablity) 검색 (search) 세기 (count) Method in 연산자비교 박창이 ( 서울시립대학교통계학과 ) 8 장문자열 2 /
More information3ÆÄÆ®-14
chapter 14 HTTP >>> 535 Part 3 _ 1 L i Sting using System; using System.Net; using System.Text; class DownloadDataTest public static void Main (string[] argv) WebClient wc = new WebClient(); byte[] response
More information90
89 3 차원공간질의를위한효율적인위상학적데이터모델의검증 Validation of Efficient Topological Data Model for 3D Spatial Queries Seokho Lee Jiyeong Lee 요약 키워드 Abstract Keywords 90 91 92 93 94 95 96 -- 3D Brep adjacency_ordering DECLARE
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강의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 informationuntitled
1 PLC 1.1 PLC 1.1.1 PLC PLC(Programmable Logic Controller),,, LSI,,. (NEMA: National Electrical Manufactrurers Association),,,,. 1.1.2 PLC PLC. FMS(Flexible Manufacturing System) PLC,. 1-1 PLC. - 5 - 1.2
More informationPowerPoint 프레젠테이션
파이썬을이용한빅데이터수집. 분석과시각화 Part 2. 데이터시각화 이원하 목 차 1 2 3 4 WordCloud 자연어처리 Matplotlib 그래프 Folium 지도시각화 Seabean - Heatmap 03 07 16 21 1 WORDCLOUD - 자연어처리 KoNLPy 형태소기반자연어처리 http://www.oracle.com/technetwork/java/javase/downloads/index.html
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商用
商用 %{ /* * line numbering 1 */ int lineno = 1 % \n { lineno++ ECHO ^.*$ printf("%d\t%s", lineno, yytext) $ lex ln1.l $ gcc -o ln1 lex.yy.c -ll day := (1461*y) div 4 + (153*m+2) div 5 + d if a then c :=
More information