Microsoft PowerPoint - lua_script11_18.ppt

Size: px
Start display at page:

Download "Microsoft PowerPoint - lua_script11_18.ppt"

Transcription

1 11 자료구조

2 배열 자료구조: 자료(사실 사실, 값) + 처리 방법 테이블: 루아의 유일한 자료구조. 전산학의 모든 자료구조를 처리할 수 있고, 효율적 배열: 순차 자료구조. 테이블로 가변적인 배열 표현 a = {} -- 새로운 배열 for i=1, 1000 do a[i] = 0 -- 길이 출력 print(table.getn(a)) print(#a) a = {} -- 새로운 배열 for i=1, 1000 do a[i] = 0 루아는 인덱스를 1부터시작 -- [-5, 5] 범위로 배열생성 a = {} for i=-5, 5 do a[i] = 0 print(table.getn(a)) --> 5 생성자를 사용 단일 수식으로 배열 초기화 squares = {1, 4, 9, 16, 25, 36, 49, 64, 81}

3 11.2 행렬과 다차원 배열 배열의 배열 mt = {} -- 테이블로 행렬 생성 for i=1,n do mt[i] = {} -- 새로운 열(column) 생성 for j=1,m do mt[i][j] ] = 0 -- 새로운 행(row) 생성 초기화 0 1차원 배열로 생성 mt = {} -- create the matrix for i=1,n do for j=1,m do mt[i*m + j] = 0 희소 행렬(sparse matrix): 행렬의 값이 거의 0으로 채워진 행렬 루아 테이블을 사용하면 nil로 검색하면서 처리 --> 매우 효율적 -- 두행렬의 곱. 값이 nil이면 곱셈을 처리하지 않음 function mult(a, rowindex, k) local row = a[rowindex] for i, v in pairs(row) do row[i] = v * k

4 11.3 연결 리스트 노드가 {자료 + 링크 포인터}를 가지고 한 줄로 연결되어 있는 방식으로 데이터를 저장하는 자료 구조 -- 리스트 정의 list = nil list ={ value = v, next = list} -- 리스트 순회 local l = list while l do print(l.value) l = l.next

5 11.4 스택(stack (stack), 큐 (Queue) Queue)와 덱(Deque (Deque: Doubly Queue) 큐: FIFO (First in First Out) 선입 선출 자료구조 동작: push back, pop front Deque(데크 데크): 이중 노드를 사용해서 큐와 스택을 합친 자료구조 동작: push front, pop front, push rear, pop rear

6 11.4 스택(stack (stack), 큐 (Queue) Queue)와 덱(Deque (Deque: Doubly Queue) 스택: LIFO(Last In First Out) 후입선출 자료구조 스택 위치를 기억하는 top이 존재 동작: push: 원소의 추가, pop : 원소 꺼내오기 -- 스택에대한 자료구조 function NewStack () return {top = 0} Stack={} function Stack.push(lst, value) -- 스택에 자료 추가(push) local top = lst.top top 위치 1증가 lst.top = top lst[top] = value function Stack.Dequeue (lst lst) -- 스택에서 원소 꺼내오기(pop) local top = lst.top -- top 위치 1 증가 if top<0 then print("stack Under Flow"); return local value = lst[top] lst[top] = nil -- 초기화 top = top top 위치 1 감소 return value

7 11.4 스택(stack (stack), 큐 (Queue) Queue)와 덱(Deque (Deque: Doubly Queue) Queue: FIFO (First in First Out) 선입 선출 자료구조 자료의 위치를 기억하는 front, rear가 존재 동작: Enqueue: 원소를 rear에 추가, Dequeue: 원소를 front에서 꺼내오기 function NewQueue () -- 큐에대한 자료구조 return {front = 0, rear = 0} Queue ={} function Queue.Enqueue (lst lst, value) -- 큐의 rear에 insert (Enqueue ( Enqueue) local rear = lst.rear rear 위치 1증가 lst.rear = rear lst[rear] = value function Queue.Dequeue (lst lst) -- 큐의 front에서 원소 꺼내오기 (Dequeue Dequeue) local front = lst.front if front >= lst.rear then -- front 위치가 rear보다 같거나 크면 큐가 비어있는 것 error("lst is empty") local value = lst[front] lst[front] = nil -- 초기화 lst.front = front front 위치 1증가 return value

8 11.4 스택(stack (stack), 큐 (Queue) Queue)와 덱(Deque (Deque: Doubly Queue) 덱(Deque): 큐의 자료구조에 스택의 동작을 추가한 구조 자료의 위치를 기억하는 front, rear가 존재 동작: push_front- 원소를 front앞에 추가 push_back- 원소를 rear에 추가 pop_front- front 원소 꺼내오기 pop_back- rear 원소 꺼내오기 function DequeNew () --덱의 자료구조: 큐와 동일 return {front = 0, rear = 0} Deque = {} function Deque.push_front (lst lst, value) -- 덱의 front에 insert local front = lst.front front 위치를 1감소 시킴 lst.front = front lst[front] = value -- 감소된 front 위치에 원소 추가 -- 1 감소된

9 11.4 스택(stack (stack), 큐 (Queue) Queue)와 덱(Deque (Deque: Doubly Queue) function Deque.push_rear (lst lst, value) -- 덱의 rear에 insert local rear = lst.rear rear 위치를 1 증가 lst.rear = rear lst[rear] = value function Deque.pop_front (lst lst) -- 덱의 front에서 원소 꺼내오기 local front = lst.front if front >= lst.rear then error("lst is empty") local value = lst[front] lst[front] = nil -- 초기화 lst.front = front front 위치 1 증가 return value End function Deque.poprear (lst lst) -- 덱의 rear에서 원소 꺼내오기 local rear = lst.rear if lst.front >= rear then error("lst is empty") local value = lst[rear] lst[rear] = nil -- 초기화 lst.rear = rear rear 위치 1 감소 return value

10 11.5 집합과 멀티 셋 집합(set) 자료구조: 원소 자체가 자료를 구분하는 식별자로 구성된 자료구조, 원소의 중복은 없음. 멀티-셋: 원소의 중복이 허락된 셋 --루아의 예약어를 문자열 키(key) (key)로 사용하는 방법 reserved = { ["while"] = true, [""] = true, ["function"] = true, ["local"] = true, } for w in allwords() do if reserved[w] then -- `w' 처리 -- 좀 더 향상된 방법 function Set (lst lst) local set = {} for _, l in ipairs(lst) do set[l] = true return set reserved = Set{"while", ", "", "function", "local", }

11 11.5 집합과 멀티 셋 멀티 셋: 키마다 카운터를 설정, 중복된 원소 만큼 카운터 올림 --멀티 셋 원소 추가 function insert(bag, element) bag[element] = (bag[element bag[element] or 0) 멀티 셋 원소 감소 -- 카운터의 숫자가 1 보다 작으면 nil function remove(bag, element) local count = bag[element] bag[element] = (count and count > 1) and count -1 or nil

12 11.6 문자열 버퍼 루아의 문자열 변경은 불가. 파일에서 문자열을 읽을 때 새로운 문자열을 만들게 되므로 메모리가 증가될 수 있음 table.concat(): 주어진 리스트의 모든 문자열을 병합 -- 파일에 저장된 문자열을 하나의 큰 문자열로 합병 local t = {} for line in io.lines() do t[#t + 1] = line.. "\n" s = table.concat(t) -- 제일 작은 문자열 길이부터 큰 문자열 길이 순으로 합병 function addstring (stack, s) stack[#stack +1] = s for i=#stack-1, 1, -1 do if #stack[i+1] < #stack[i stack[i] then break stack[i] = stack[i].. statck[i+1] statck[i+1] = nil

13 11.7 그래프 (Graph) 도형으로 표현되는 비 선형 자료구조 연결할 객체를 나타내는 정점(Vertex), 이를 연결하는 간선 (Edge)의 집합으로 표현 -- 하나의 정점에 간선의 집합으로 표현 graph = {vertex, edge } -- 또는 정점(또는 노드)의 이름과 인접한 노드들의 집합으로 변경 graph = {name, adj} local function name2node(graph, name) if not graph[name] then -- 노드가 존재하지 않음. 새로운 노드 생성 graph[name] = { name = name, adj = adj{} } return graph[name]

14 11.7 그래프 (Graph) -- 파일로부터 그래프 읽기 function read_graph() local graph = {} for line in io.lines() do -- 이름 두 개로 줄을 분할 local namefrom, nameto = string.match(line, "(%S+)%s+(%S S+)%s+(%S+)" +)" ) -- 적당한 노드들을 찾는다. local from = name2node(graph, namefrom) local to = name2node(graph, nameto) -- 'from'에 인접한 집합에 'to' 를 더한다 from.adj[to] = true return graph "(% "(%S+)%s+(%S S+)%s+(%S+)" +)" --> 정규표현으로 %S+는 공백이 %s+ 공백문자가 1번이상을 의미 공백이 아닌문자가 아닌문자가 1개이상

15 12 자료파일 관리와 지속성

16 12.1 Donald Jon Bentley,MoreProgramming 자료 E. Knuth,LiterateProgramming,CSLI,1992 파일 Pearls,Addison-Wesley,1990 csv 파일 형식: 쉼표(',') (',')로 자료 구분 Entry{"DonaldE. "Literate E. Knuth", Programming", 루아 테이블을 사용하면 자료를 쉽게 구성 루아 테이블 Entry{"JonBentley", "CSLI", 1992} 1 "More "Addison-Wesley", 1990} Programming Pearls", Entry{author = "Donald E. Knuth", 루아 테이블 }Entry{ title publisher year = "Literate 1992 = "CSLI", Programming", 2 {이름 { 이름-값} author = "Jon Bentley", } title publisher year = "More 1990 = "Addison-Wesley", Programming Pearls",

17 12.2 직렬화 직렬화: 파일 저장 네트워크 전송 등 자료의 처리 순서가 명확히 요구되는 환경에서 자료를 바이트 또는 문자 스트림으로 변환하는 작업 순환 참조가 없는 단순 테이블 구조 해석 저장될 스트림을 분석해서 각각 수치, 문자열, 테이블 구조에 대한 코드 저장 function serialize (o) if type(o) == "number" then io.write(o) elseif type(o) == "string" then -- 문자열 저장 "%q"는 큰따옴표로 감싸는 것 " -->\"으로 변경됨 io.write(string.format("%q", ", o)) elseif type(o) == "table" then -- 테이블 스트림은 {} 안에 출력 io.write("{\n") ") for k,v in pairs(o) do io.write(" ", k, " = ") -- first version --[[ --second version io.write(" [") serialize(k) io.write("] = ") --]] serialize(v) io.write(",\n") ") io.write("}\n") ") else error("cannot serialize a ".. type(o))

18 12.2 직렬화 -- result of serialize{a=12, b='lua', key='another "one"'} -- first version { a = 12, b = "Lua", key = "another \"one "one\"", "", } -- second version { ["a"] = 12, ["b"] = "Lua", ["key"] = "another \"one "one\"", "", }

19 12.2 직렬화 순환 참조가 있는 테이블 저장 테이블에 테이블이 있는 구조는 이름이 필요. 이름과 값을 동시에 받아서 처리 function basicserialize (o) if type(o) == "number" then return tostring(o) else -- assume it is a string return string.format("%q", ", o) function save (name, value, saved) saved = saved or {} -- initial value io.write(name, " = ") if type(value) == "number" or type(value) == "string" then io.write(basicserialize(value), "\n")" elseif type(value) == "table" then if saved[value] then -- value already saved? io.write(saved[value], "\n") " -- use its previous name else saved[value] = name -- save name for next time io.write("{}\n") ") -- create a new table for k,v in pairs(value) do -- save its fields local fieldname = string.format("%s[%s]", name, basicserialize(k)) save(fieldname, v, saved) else error("cannot save a ".. type(value))

20 12.2 직렬화 --call save save('a', ', a) --result a = {} a[1] = {} a[1][1] = 3 a[1][2] = 4 a[1][3] = 5 a[2] = a a["y"] "] = 2 a["x"] "] = 1 a["z"] "] = a[1]

21 13 메타테이블 메타메서드

22 13 메타테이블과 메타메서드(Metatable and Metamethod) 메타테이블(metatable metatable): 루아에서 정의하지 되어 있지 않은 새로운 연산을 지정하는 방법 메타테이블 동작: 두 테이블의 연산에서 메타테이블과 '연산 필드' 필드가 있는지 먼저 확인 연산 함수가 존재하더라도 메타테이블에 '연산 필드'에 대한 메타메서드가 있으면 이 필드에 정의 된 함수를 먼저 실행 테이블에 대해서만 메타 테이블을 적용할 수 있음 문자열 라이브러리는 문자열 전용 메타테이블만 적용 t = {} print(getmetatable(t)) --> nil -- 메타테이블 적용 t1 = {} setmetatable(t, t1) -- t 테이블에 t1 assert(getmetatable(t) == t1) t1 테이블을 테이블을 메타테이블로 적용

23 13.1 산술 연산 메타메서드 산술 연산에 관련된 필드: '+': add, '-': sub, ' ': sub, '*': mul mul, '/': div, '-': ' ': unm <-- 부호 반전 '%': mod, '^': pow pow, '..': concat <-- 병합 연산 -- 집합(set) 자료구조에 대한 메서드 정의 Set = {} function Set.new (t) local set = {} for _, l in ipairs(t) do set[l] = true return set function Set.union (a,b a,b) -- 합집합 local res = Set.new{} for k in pairs(a) do res[k] = true for k in pairs(b) do res[k] = true return res function Set.intersection (a,b a,b) -- 교집합 local res = Set.new{} for k in pairs(a) do res[k] = b[k] return res

24 13.1 산술 연산 메타메서드 산술 연산에 관련된 필드: '+': add, '-': sub, ' ': sub, '*': mul mul, '/': div, '-': ' ': unm <-- 부호 반전 '%': mod, '^': pow pow, '..': concat <-- 병합 연산 집합의 합집합을 '+' 연산자로, 교집합을 '-' 연산자로 처리하는 방법 -- 집합(set) 자료구조에 대한 메서드 정의 Set = {} function Set.new (t) local set = {} for _, l in ipairs(t) do set[l] = true return set function Set.union (a,b a,b) -- 합집합 local res = Set.new{} for k in pairs(a) do res[k] = true for k in pairs(b) do res[k] = true return res function Set.intersection (a,b a,b) -- 교집합 local res = Set.new{} for k in pairs(a) do res[k] = b[k] return res

25 13.1 산술 연산 메타메서드 -- 집합 자료구조의 내용을 출력하기 위한 함수 function Set.tostring (set) local s = "{" local sep = "" for e in pairs(set) do s = s.. sep.. e sep = ", " return s.. "}" function Set.print (s) print(set.tostring(s))

26 13.1 산술 연산 메타메서드 -- '+' 연산자가 호출되면 합집합을 구하도록 메타테이블로 사용할 정규 테이블을 생성 Set.mt = {} -- '+' 연산자를 사용하기 위한 메타테이블 function Set.new (t) -- 집합 자료구조 생성 함수 수정. 2nd version local set = {} setmetatable(set, Set.mt) -- 메타테이블 설정 for _, l in ipairs(t) do set[l] = true return set -- Set.new() 로 생성된 모든 집합은 동일한 테이블을 자신의 메타테이블로 지정됨 s1 = Set.new{10, 20, 30, 50} s2 = Set.new{30, 1} print(getmetatable(s1)) --> table: print(getmetatable(s2)) --> table: -- 합집합 연산을 위해서 Set.mt에 add 추가 Set.mt. add = Set.union s3 = s1 + s2 -- '+' 연산자로 합집합 표현 Set.print(s3) --> {1, 30, 10, 50, 20} Set.mt. mul = Set.intersection -- 교집합 연산을 위해서 Set.mt에 mul 추가 Set.print((s1 + s2)*s1) -- +, * 연산자로 합집합, 교집합 연산 --> {30, 10, 50, 20} > {30, 10, 50, 20}

27 13.2 관계 연산 메타메서드 관계 연산 필드: '==': eq eq, '<': lt lt, '<=': le '~', '>', '>='은 다음 관계가 있어 별도의 메타메서드가 없음 a~=b <-- -->!(a==b), a>b <-- -->!(a<=b) a>=b <-- -->!(a<b) 산술 연산은 다른 타입을 섞어 사용할 수 있으나 관계 연산은 불가 항등 연산은 다른 타입을 쓸 수 있으나 다르면 항상 false --관계 연산 필드 정의 Set.mt. le = function (a,b a,b) -- set containment for k in pairs(a) do if not b[k] then return false return true

28 13.2 관계 연산 메타메서드 Set.mt. lt = function (a,b a,b) return a <= b and not (b <= a) -- 마지막으로 lt, le를 가지고 항등 비교 연산 정의 Set.mt. eq = function (a,b a,b) return a <= b and b <= a -- 메타메서드 정의 테스트 s1 = Set.new{2, 4} s2 = Set.new{4, 10, 2} print(s1 <= s2) --> true print(s1 < s2) --> true print(s1 >= s1) --> true print(s1 > s1) --> false print(s1 == s2 * s1) --> true

29 13.3 라이브러리 전용 메서드 연산 함수가 미리 존재하더라도 메타테이블에 '연산 필드'에 대한 메타메서드가 있으면 이 필드에 정의 된 함수를 먼저 실행 -- print는 언제나 포맷 때문에 tostring() 호출 print({}) --> table: -- 만약 연산 필드 tostring tostring에 대한 메타메서드가 --정의되어 있으면 이 메타메서드를 호출 Set.mt. tostring = Set.tostring s1 = Set.new{10, 4, 5} -- print() 함수에서 Set의 tostring이 호출됨 print(s1) --> {5, 10, 4} setmetatable/getmetatable 함수는 metafield를 사용하지만 이것은 메타 테이블을 보호하기 위한 것 -- 메타 테이블을 보호하기 위해 에러나 경고등에 대한 문자 설정 Set.mt. metatable = "메타테이블은 정의할 수 없음" s1 = Set.new{} print(getmetatable(s1)) --> "메타테이블은 정의할 수 없음" 출력 setmetatable(s1, {}) --> 오류 출력

30 13.4 테이블 접근 메타메서드 index 메타메서드: 테이블의 원소 접근 처리 테이블에 존재하지 않은 인덱스(키) 접근할 때 이를 처리 index 메타메서드의 활용은 키가 정해지지 않은 원소를 접근할 때 nil을 반환하거나 객체를 새로 생성해서 반환할 수 있는 장점 이 있음 Window = {} -- 이름 공간 생성 Window.prototype={x=0,y=0,width=200,height=300,} -- 기본값(Default) 설정 Window.mt = {} -- 메타테이블 생성 function Window.new (o) -- 생성자 함수 선언 print("call Window.new") setmetatable(o, Window.mt) return o -- index 메타메서드 설정 Window.mt. index = function (table, key) print("call index") return Window.prototype[key] -- 함수 대신 테이블로 직접 설정 Window.mt. index = Window.prototype -- 테스트 w = Window.new{x=10, y=20} print(w.width) --> 200 w.width에 접근. w["width"], "], Window.prototype Window.prototype와 동일 동일

31 13.4 테이블 접근 메타메서드 index 메타메서드: 테이블의 원소 접근 처리 테이블에 존재하지 않은 인덱스(키) 접근할 때 이를 처리 index 메타메서드의 활용은 키가 정해지지 않은 원소를 접근할 때 nil을 반환하거나 객체를 새로 생성해서 반환할 수 있는 장점 이 있음 Window = {} -- 이름 공간 생성 Window.prototype={x=0,y=0,width=200,height=300,} -- 기본값(Default) 설정 Window.mt = {} -- 메타테이블 생성 function Window.new (o) -- 생성자 함수 선언 print("call Window.new") setmetatable(o, Window.mt) return o -- index 메타메서드 설정 Window.mt. index = function (table, key) print("call index") return Window.prototype[key] -- 함수 대신 테이블로 직접 설정 Window.mt. index = Window.prototype -- 테스트 w = Window.new{x=10, y=20} print(w.width) --> 200 w.width에 접근. w["width"], "], Window.prototype Window.prototype와 동일 메타메서드를 함수로 설정하는 것이 테이블보다 비용이 많이 들지만 다중 상속, 캐시 처리, 기타 중간 작업 등을 설정할 수 있어 융통성이 높음 동일

32 13.4 접근 메타메서드 Window.mt. newindex= --index 테이블갱신 메타메서드설정 갱신처리 처리. 존재하지않은 않은인덱스 인덱스(키)에값을 값을설정할 설정할때처리 newindex print("call Window.prototype[key] newindex") function = value (table, key, value) w.height= w --테스트 print(w.height) = Window.new{x=10, 30 y=20} --table table안에 안에직접 직접수정 -->30 -->w.height w.height에접근 접근. t index = { =, function print("*access return t[k] (temp, to k) element ".. tostring(k)) newindex newindex= function (temp, k,, print("*update t[k] = v " to " of.. element tostring(v)) ".. tostring(k).. }function print("callt.new t.new(o) t.new") return setmetatable(o, o t) print(w[3]) w = t.new{} = "Hello" --> > *access *update to of element 3, 3 to hello hello,] = v

33 13.4 테이블 접근 메타메서드 테이블 접근 추적하기 index 와 newindex newindex를 혼합 사용해서 대행자(proxy) (proxy)를 만들어 존재하지 않은 키에 대한 처리 t = {} -- 테스트용 원본 테이블 local _t = t -- 원본 테이블을 비공개 접근 유지하도록 local에 저장 t = {} -- 대행자(proxy (proxy) 생성 -- 메타테이블 생성 local mt = { index = function (t,k t,k) print("*access to element ".. tostring(k)) return _t[k t[k] -- 원본 테이블 접근, } newindex = function (t,k,v t,k,v) print("*update of element ".. tostring(k).. " to ".. tostring(v)) _t[k t[k] = v -- 원본 테이블 갱신 setmetatable(t, mt) -- test t[2] = "hello" --> *update of element 2 to hello print(t[2]) --> *access to element 2, hello

34 14 환경

35 14 환경 루아는 전역변수를 환경 테이블에 저장 전역 변수를 저장한 _G table 출력 for n in pairs(_g) do print(n) 환경 변수 설정 함수: setfenv() 필드를 수정하는 함수: setfield()

36 14.1 동적 명칭을 가진 전역 변수 다른 변수에 담긴 문자열을 전역 변수 이름으로 사용하거나 실행 시점에 전역 변수 이름을 만들 필요가 있을 때 패 턴을 사용해서 일반화 시킴 function getfield (f) local v = _G -- 전역 테이블을 사용하여 시작 for w in string.gfind(f, "[%w_]+") do v = v[w] print(v) return v --[%w_]+ 은 영문자 '_' 가 반복되는 패턴: 전역 변수 테이블에는 '_'로 시작하는 변수도 존재함 function setfield (f, v) local t = _G -- 전역 테이블을 사용하여 시작 for w, d in string.gfind(f, "([%w_]+)(.?)") do if d == "." then -- 마지막 필드가 아니라면 t[w] = t[w] or {} -- 없다면 새로운 필드를 만듦 t = t[w] -- 테이블을 얻는다. else -- 마지막 필드라면 t[w] = v -- 값을 할당한다. --([%w_]+)(.?) 은 영문자와 '_'의 조합 패턴에 마지막에 '.' 0번 0 또는 1번 있을 때를 의미 -- 테이블 t에.x.y 를 생성하고 10d을 배정 setfield("t.x.y", ", 10) print(t.x.y) --> 10 print(getfield("t.x.y")) ")) --> 10

37 14.2 전역 변수 선언 -- 존재하지 않은 전역 변수에 대한 접근을 에러로 처리 -- 다음 코드는 lua.exe에서는 중단됨 setmetatable(_g, { index = function (_, n) error("attempt to read undeclared variable "..n, 2), newindex newindex=function (_, n) error("attempt to write to undeclared variable "..n, 2), }) --a는 선언이 되지 않아 오류 메시지를 출력 a = 1 -->stdin:1: attempt to write to undeclared variable a 새로운 변수의 선언은 메타메서드를 건너뛰는 rawset() 함수 사용 function declare (name, initval) rawset(_g, name, initval or false) -- nil 값 대신 false false 값으로 값으로 대치

38 14.3 비전역 환경 루아의 환경은 전역변수를 사용하므로 전역 변수가 수정되었을 때 전체 환경이 달라짐 루아 5 이상은 함수마다 자신만의 환경을 가지도록 구성됨 환경 변경 함수 : setenv() -- 전역 변수 선언 검사 local declarednames={} setmetatable(_g, { newindex = function(t, n, v) if not declarednames[n] then local w = debug.getinfo(1, "S").what if w ~= "main" and w ~= "C" then error("attempt to write to undeclared variable "..n, 2) declarednames[n] = true rawset(t, n, v), }) --test a= 1 setfenv(1, {}) --현재 환경을 새로운 빈 테이블로 변경 print(a) -- stdin:5: attempt to call global 'print' (a nil value)

39 14.3 비전역 환경 환경을 변경하면 전역 접근은 새로운 테이블을 사용 --_G 이름으로 환경을 변경하고 다시 배정 a = 1 -- create a global variable setfenv(1, {_G = _G}) -- 현재 환경 변경 _G.print(a G.print(a) --> nil _G.print(_G.a G.print(_G.a) --> 1 -- 상속을 사용한 환경 변경 a = 1 local newgt = {} -- 새로운 환경 생성 setmetatable(newgt, { index = _G}) setfenv(1, newgt) -- 생성한 환경 설정 print(a) --> 1 a = 10 print(a) --> 10 print(_g.a) --> 1 _G.a = 20 print(_g.a) --> 20

40 모듈, 테이블, 객체지향, 라이브러리

41 15.1 루아 모듈 모듈 모듈: 거의 독립된 기능을 가지면서 교환 가능한 실행단위 패키지 :모듈의 모음 루아의 모듈은 require 함수를 통해서 읽고 테이블에 저장하는 단일한 전역 이름으로 이 름공간(namespace) (namespace)처럼 동작 모듈 구성: 함수, 상수 모듈은 일등급 값이 아님 모듈 호출 방법 require "mod" -- 모듈 호출 mod.foo() -- 모듈내의 함수 실행 local m = require "mod" -- 모듈을 호출하고 변수 m에 저장 m.foo() require "mod" -- 모듈 호출 local f = mod.foo() -- 모듈의 함수를 변수에 저장 f() -- io 에 대한 모듈 사용 예 local m = require "io io" m.write("hello world\n")

42 15.2 모듈 작성 테이블을 만들고, 내보낼 모든 함수를 넣고 테이블을 반환함 complex = {} -- 복소수에 대한 모듈 function complex.new (r, i) return {r=r, i=i} -- 생성 complex.i = complex.new(0, 1) -- 허수부에 대한 상수 정의 function complex.add (c1, c2) -- 덧셈 return complex.new(c1.r + c2.r, c1.i + c2.i) function complex.sub (c1, c2) -- 뺄셈 return complex.new(c1.r - c2.r, c1.i - c2.i) function complex.mul (c1, c2) -- 곱셈 return complex.new(c1.r*c2.r - c1.i*c2.i, c1.r*c2.i + c1.i*c2.r) function complex.inv (c) -- 역수 local n = c.r^2 + c.i^2 return complex.new(c.r/n, -c.i/n c.i/n) return complex -- 테이블 반환 -- test c = complex.add(complex.i, complex.new(10, 20)) print(c.r, c.i) -->10 21

43 16 객체지향 프로그래밍 루아의 자료구조는 테이블로 구성되기 때문에 원칙적으로 객체 지 향 프로그램을 할 수 없고 비슷하게 흉내낼 수 있음 객체 자신의 함수 참조: self 또는 this 이용 self: 명령의 수신자(receiver). this와 비슷 v = 10 Account = {balance = 0} function Account.withdraw (self, v) self.balance = self.balance - v a1 = Account; Account= nil -- a1.withdraw(a1, ) -- widthdraw 함수 함수 인수에 인수에 a1을 전달함

44 16 객체지향 프로그래밍 콜론(':') : 메서드 변수의 접근에 대한 범위 연산자 Account = { balance=0, withdraw = function (self, v) self.balance = self.balance - v print("widthdraw ", self.balance) } function Account:deposit (v) self.balance = self.balance + v print("deposit ", self.balance) a1 = Account; Account= nil -- a1.deposit(a1, ) a1:withdraw(100.00) a1.withdraw(a1, ) a1.withdraw(a1, )과 같음

45 17 약 참조 테이블 (Weak Table) 루아는 Garbage Collector가 있어 더 이상 참조가 없는 객체들을 자동으로 수거 만약 객체가 집합 (Set)에 있으면 자동으로 수거 안됨 약 참조 테이블: 위치에 관계 없이 자동으로 수거될 대상 강 참조 테이블: 키와 값 모두 자신이 참조하는 객체의 수거를 방해함으로 strong reference라 함 mode로 수정: 문자열로 설정 약 참조 키 설정: mode ="k" 약 참조 값 설정 : mode ="v" a = {} b = { mode = "k"} setmetatable(a, b) -- a는 약참조 키를 가짐 key = {} -- 첫 번째 키 생성 a[key] = 1 key = {} -- 두 번째 키 생성 a[key] = 2 collectgarbage() -- 강제로 garbage collector 실행 for k, v in pairs(a) do print(v) --> 2

46 18 수학 라이브러리 수학 함수들: sin, cos, tan, asin, acos, exp, log, log10, floor, ceil, amx, min, random, randomseed 모든 삼각 함수는 radian으로 동작 수학 함수들을 다시 정의 하는 방법 -- sin, cos, tan, asin, acos local sin, cos, tan, asin, acos = math.sin, math.cos, math.tan, math.asin, math.acos -- degree, radian 변환 local deg, rad = math.deg, math.rad -- sin 함수의 입력 각도를 radian으로 설정 math.sin = function (x) return sin(rad(x)) -- sin 함수의 입력 각도를 degree로 설정 math.asin = function (x) return deg(asin(x)) math.random(n) 정수 [1, n] 값을 반환. 인수가 없으면 [0, 1) 실수 값을 반환 seed가 설정되어 있지 않으면 매번 동일한 값 출력 math.randomseed(seed): 난수의 seed 값을 지정 math.randomseed(os.time()) ())

47 19 테이블 라이브러리 insert(테이블 테이블, 위치, 원소): 지정 위칭 원소 추가. 위치 가 없으면 맨 끝에 추가 t = {10, 20, 30} table.insert(t, 1, 15) for i, n in pairs(t) do print(n) --getn getn() 테이블 원소 수 반환 print(table.getn(t)) sort(t): 정렬 table.sort(t, f) concat(): 병합

48 20 문자열 (string) 라이브러리 byte(): 구간의 문자를 숫자로 반환 char(): 숫자를 ASCII로 변환 len(): 문자열 길이 반환 lower(): 소문자로 전환 upper(): 대문자로 전환 reverse(): 역순으로 변경 sub(): 구간 i, j 사이의 문자열 추출. j=-1 문자열 마지막 글자 j=-2 그 이전 문자 gmatch(): 문자열에서 패턴과 일치하는 모든 부분을 훑어 나감. -- 문자열 s 안의 모든 문자 수거 예제 words={} for w in string.gmatch(s, "a+") do words[#words +1] = w

49 20 문자열 (string) 라이브러리 format(): C의 printf() 함수의 포맷 설정과 동일 find(대상 문자열, 패턴): 문자열 검색. 시작 위치, 끝 위치 두개의 값을 반환 i, j = string.find("hi, Hello world", "Hello") print(i, j) --> 5, 9 gsub(대상 문자열, 패턴, 대체할 문자열): 문자열 대체 s = string.gsub("lua is cute", "cute", "great") print(s) --> Lua is great 패턴: 문자 분류(character class)와 마법문자(magic character)를 이용 문자 분류:., %a, %c, %d, %l, %p, %s %u %w %x %z 마법문자: ( ). % + - *? [ ] ^ $ 알파벳, 숫자, _ 패턴: [A-Za Za-z0 z0-9_] 주민 번호 : \d{6} d{6}-\d{7} d{7} 16진수 진수: [A-Fa Fa-f0 f0-9]

50 21 입출력(io io) 라이브러리 open(): 파일 입출력 핸들 얻음. "r, "w" 모드 필요 close(): 파일 핸들 닫기 input(): 읽기 모드로 파일 오픈 output(): 쓰기 모드로파일 오픈 read(): 파일을 읽어 들임. *all을 사용하면 전부 읽음 local fd = io.open(loadname) local slotnum = fd:read(3) fd:close() write(): 파일에 쓰기 lines(): line 단위로 읽기 close(): open()으로 개방한 파일 닫기 seek(): 파일 포인터 위치 옮기기 "set" 시작 위치, "" 파일 끝

51 21 입출력(io io) 라이브러리 -- 텍스트 파일 읽기 연습 fr = io.open ("test.txt","r test.txt","r") ") -- 파일 핸들 얻기 while true do local line = fr:read("*line") -- 라인단위로 파일 내용 읽기 if nil == line then -- 읽을 데이터가 없으면 nil 반환 break print(line) -- 라인 내용 출력 fr:close() -- 파일 핸들 반환

52 22 운영체제 라이브러리 date(): 날짜 print(os.date()) ()) time(): 시간 print(os.time()) ()) getenv(): 시스템 환경 변수 os.getenv("path") ") execute(): 프로그램 실행 os.execute("notepad.exe") ")

03_queue

03_queue Queue Data Structures and Algorithms 목차 큐의이해와 ADT 정의 큐의배열기반구현 큐의연결리스트기반구현 큐의활용 덱 (Deque) 의이해와구현 Data Structures and Algorithms 2 큐의이해와 ADT 정의 Data Structures and Algorithms 3 큐 (Stack) 의이해와 ADT 정의 큐는 LIFO(Last-in,

More information

슬라이드 1

슬라이드 1 CHAP 6: 큐 yicho@gachon.ac.kr 1 큐 (QUEUE) 큐 : 먼저들어온데이터가먼저나가는자료구조 선입선출 (FIFO: First-In First-Out) ( 예 ) 매표소의대기열 Ticket Box 전단 () 후단 () 2 큐 ADT 삽입과삭제는 FIFO 순서를따른다. 삽입은큐의후단에서, 삭제는전단에서이루어진다. 객체 : n 개의 element

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

Chapter 4. LISTS

Chapter 4. LISTS C 언어에서리스트구현 리스트의생성 struct node { int data; struct node *link; ; struct node *ptr = NULL; ptr = (struct node *) malloc(sizeof(struct node)); Self-referential structure NULL: defined in stdio.h(k&r C) or

More information

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

5.스택(강의자료).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 information

03장.스택.key

03장.스택.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

Microsoft PowerPoint - 08-chap06-Queue.ppt

Microsoft PowerPoint - 08-chap06-Queue.ppt / 큐 (QUEUE) Chapter 큐 : 먼저들어온데이터가먼저나가는자료구조 선입선출 (FIFO: First-In First-Out) ( 예 ) 매표소의대기열 큐 Ticket ox Dongwon Jeong djeong@kunsan.ac.kr Department of Kunsan National University 전단 () 후단 () 학습목표 큐 DT 큐의개념및추상데이터타입에대한이해

More information

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

예제 1.1 ( 관계연산자 ) >> A=1:9, B=9-A A = B = >> tf = A>4 % 4 보다큰 A 의원소들을찾을경우 tf = >> tf = (A==B) % A 예제 1.1 ( 관계연산자 ) >> A=1:9, B=9-A A = 1 2 3 4 5 6 7 8 9 B = 8 7 6 5 4 3 2 1 0 >> tf = A>4 % 4 보다큰 A 의원소들을찾을경우 tf = 0 0 0 0 1 1 1 1 1 >> tf = (A==B) % A 의원소와 B 의원소가똑같은경우를찾을때 tf = 0 0 0 0 0 0 0 0 0 >> tf

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

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

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

슬라이드 1

슬라이드 1 CHP 6: 큐 C 로쉽게풀어쓴자료구조 생능출판사 2005 큐 (QUEUE) 큐 : 먼저들어온데이터가먼저나가는자료구조 선입선출 (FIFO: First-In First-Out) ( 예 ) 매표소의대기열 Ticket Box 전단 () 후단 () 큐 DT 삽입과삭제는 FIFO 순서를따른다. 삽입은큐의후단에서, 삭제는전단에서이루어진다. 객체 : n 개의 element

More information

Contents v 학습목표 자료구조큐에대한개념을스택과비교하여이해한다. 큐의특징과연산방법에대해알아본다. 순차표현방법을이용한큐와연결표현방법을이용한큐를구현해본다. 큐의응용방법을알아본다. v 내용 큐 큐의구현 큐의응용 2/74

Contents v 학습목표 자료구조큐에대한개념을스택과비교하여이해한다. 큐의특징과연산방법에대해알아본다. 순차표현방법을이용한큐와연결표현방법을이용한큐를구현해본다. 큐의응용방법을알아본다. v 내용 큐 큐의구현 큐의응용 2/74 큐 IT CookBook, C 로배우는쉬운자료구조 ( 개정판 ) Contents v 학습목표 자료구조큐에대한개념을스택과비교하여이해한다. 큐의특징과연산방법에대해알아본다. 순차표현방법을이용한큐와연결표현방법을이용한큐를구현해본다. 큐의응용방법을알아본다. v 내용 큐 큐의구현 큐의응용 2/74 1. 큐 v 큐 (Queue) 데이터의삽입과삭제가양쪽끝에서일어나는자료구조

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

Microsoft PowerPoint - 08-Queue.ppt

Microsoft PowerPoint - 08-Queue.ppt Chapter Queue ( 큐 ) Dongwon Jeong djeong@kunsan.ac.kr Department of Informatics & Statistics 학습목표 큐의개념및추상데이터타입에대한이해 큐의구현방법 배열 링크드리스트 덱 / 데크의개념과구현방법 큐 (QUEUE) 큐 : 먼저들어온데이터가먼저나가는자료구조 선입선출 (FIFO: First-In

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

설계란 무엇인가?

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

More information

Microsoft PowerPoint - chap10-함수의활용.pptx

Microsoft PowerPoint - chap10-함수의활용.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 학습목표 중 값에 의한 전달 방법과

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

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

Data structure: Assignment 1 Seung-Hoon Na October 1, Assignment 1 Binary search 주어진 정렬된 입력 파일이 있다고 가정하자. 단, 파일내의 숫자는 공백으로 구 분, file내에 숫자들은 Data structure: Assignment 1 Seung-Hoon Na October 1, 018 1 1.1 Assignment 1 Binary search 주어진 정렬된 입력 파일이 있다고 가정하자. 단, 파일내의 숫자는 공백으로 구 분, file내에 숫자들은 multiline으로 구성될 수 있으며, 한 라인에는 임의의 갯수의 숫자가 순서대로 나열될

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

04장.큐

04장.큐 ---------------- DATA STRUCTURES USING C ---------------- CHAPTER 큐 1/33 큐 (QUEUE) 큐 : 먼저들어온데이터가먼저나가는자료구조 선입선출 (FIFO: First-In First-Out) ( 예 ) 매표소의대기열 A B C 전단 ( front) 후단 ( rea r) 2/33 큐 ADT 삽입과삭제는 FIFO

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

C++ Programming

C++ Programming C++ Programming 연산자다중정의 Seo, Doo-okok clickseo@gmail.com http://www.clickseo.com 목 차 연산자다중정의 C++ 스타일의문자열 2 연산자다중정의 연산자다중정의 단항연산자다중정의 이항연산자다중정의 cin, cout 그리고 endl C++ 스타일의문자열 3 연산자다중정의 연산자다중정의 (Operator

More information

PowerPoint 프레젠테이션

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

More information

설계란 무엇인가?

설계란 무엇인가? 금오공과대학교 C++ 프로그래밍 jhhwang@kumoh.ac.kr 컴퓨터공학과 황준하 5 강. 배열, 포인터, 참조목차 배열 포인터 C++ 메모리구조 주소연산자 포인터 포인터연산 배열과포인터 메모리동적할당 문자열 참조 1 /20 5 강. 배열, 포인터, 참조배열 배열 같은타입의변수여러개를하나의변수명으로처리 int Ary[10]; 총 10 개의변수 : Ary[0]~Ary[9]

More information

종사연구자료-이야기방2014 7 18.hwp

종사연구자료-이야기방2014 7 18.hwp 차례 1~3쪽 머리말 4 1. 계대 연구자료 7 가. 증 문하시랑동평장사 하공진공 사적기 7 나. 족보 변천사항 9 1) 1416년 진양부원군 신도비 음기(陰記)상의 자손록 9 2) 1605년 을사보 9 3) 1698년 무인 중수보 9 4) 1719년 기해보 10 5) 1999년 판윤공 파보 10 - 계대 10 - 근거 사서 11 (1) 고려사 척록(高麗史摭錄)

More information

인천광역시의회 의원 상해 등 보상금 지급에 관한 조례 일부개정조례안 의안 번호 179 제안연월일 : 2007. 4. 제 안 자 :조례정비특별위원회위원장 제안이유 공무상재해인정기준 (총무처훈령 제153호)이 공무원연금법 시행규칙 (행정자치부령 제89호)으로 흡수 전면 개

인천광역시의회 의원 상해 등 보상금 지급에 관한 조례 일부개정조례안 의안 번호 179 제안연월일 : 2007. 4. 제 안 자 :조례정비특별위원회위원장 제안이유 공무상재해인정기준 (총무처훈령 제153호)이 공무원연금법 시행규칙 (행정자치부령 제89호)으로 흡수 전면 개 인천광역시의회 의원 상해 등 보상금 지급에 관한 조례 일부개정조례안 인 천 광 역 시 의 회 인천광역시의회 의원 상해 등 보상금 지급에 관한 조례 일부개정조례안 의안 번호 179 제안연월일 : 2007. 4. 제 안 자 :조례정비특별위원회위원장 제안이유 공무상재해인정기준 (총무처훈령 제153호)이 공무원연금법 시행규칙 (행정자치부령 제89호)으로 흡수 전면

More information

목 차 국회 1 월 중 제 개정 법령 대통령령 7 건 ( 제정 -, 개정 7, 폐지 -) 1. 댐건설 및 주변지역지원 등에 관한 법률 시행령 일부개정 1 2. 지방공무원 수당 등에 관한 규정 일부개정 1 3. 경력단절여성등의 경제활동 촉진법 시행령 일부개정 2 4. 대

목 차 국회 1 월 중 제 개정 법령 대통령령 7 건 ( 제정 -, 개정 7, 폐지 -) 1. 댐건설 및 주변지역지원 등에 관한 법률 시행령 일부개정 1 2. 지방공무원 수당 등에 관한 규정 일부개정 1 3. 경력단절여성등의 경제활동 촉진법 시행령 일부개정 2 4. 대 목 차 국회 1 월 중 제 개정 법령 대통령령 7 건 ( 제정 -, 개정 7, 폐지 -) 1. 댐건설 및 주변지역지원 등에 관한 법률 시행령 일부개정 1 2. 지방공무원 수당 등에 관한 규정 일부개정 1 3. 경력단절여성등의 경제활동 촉진법 시행령 일부개정 2 4. 대도시권 광역교통관리에 관한 특별법 시행령 일부개정 3 5. 영유아보육법 시행령 일부개정 4

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

슬라이드 1

슬라이드 1 CHAP 6: 큐 큐 (QUEUE) 큐 : 먼저들어온데이터가먼저나가는자료구조 선입선출 (FIFO: First-In First-Out) ( 예 ) 매표소의대기열 Ticket Box 전단 (front) 후단 (rear) 큐 ADT 삽입과삭제는 FIFO 순서를따른다. 삽입은큐의후단에서, 삭제는전단에서이루어진다. 객체 : n 개의 element 형으로구성된요소들의순서있는모임

More information

o 스택 (stack) ~ 쌓아놓은더미 1. 스택의개요 - 2 -

o 스택 (stack) ~ 쌓아놓은더미 1. 스택의개요 - 2 - 스택 (stack) SANGJI University Kwangman Ko o 스택 (stack) ~ 쌓아놓은더미 1. 스택의개요 - 2 - o 스택의특징 ~ 모든원소의삽입과삭제가 top 이라는자료구조의한쪽끝에서만수행되는제한된리스트구조 ~ 후입선출 (Last-In-First-Out, LIFO) 방식 가장마지막에입력된자료가가장먼저출력 o 스택의동작 ~ top 에서만삽입

More information

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

목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2 제 8 장. 포인터 목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2 포인터의개요 포인터란? 주소를변수로다루기위한주소변수 메모리의기억공간을변수로써사용하는것 포인터변수란데이터변수가저장되는주소의값을 변수로취급하기위한변수 C 3 포인터의개요 포인터변수및초기화 * 변수데이터의데이터형과같은데이터형을포인터 변수의데이터형으로선언 일반변수와포인터변수를구별하기위해

More information

MySQL-.. 1

MySQL-.. 1 MySQL- 기초 1 Jinseog Kim Dongguk University jinseog.kim@gmail.com 2017-08-25 Jinseog Kim Dongguk University jinseog.kim@gmail.com MySQL-기초 1 2017-08-25 1 / 18 SQL의 기초 SQL은 아래의 용도로 구성됨 데이터정의 언어(Data definition

More information

untitled

untitled - -, (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

Microsoft PowerPoint - chap05-제어문.pptx

Microsoft PowerPoint - chap05-제어문.pptx int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); 1 학습목표 제어문인,, 분기문에 대해 알아본다. 인 if와 switch의 사용 방법과 사용시 주의사항에 대해 알아본다.

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

PowerPoint Presentation

PowerPoint Presentation 객체지향프로그래밍 클래스, 객체, 메소드 ( 실습 ) 손시운 ssw5176@kangwon.ac.kr 예제 1. 필드만있는클래스 텔레비젼 2 예제 1. 필드만있는클래스 3 예제 2. 여러개의객체생성하기 4 5 예제 3. 메소드가추가된클래스 public class Television { int channel; // 채널번호 int volume; // 볼륨 boolean

More information

Chapter 4. LISTS

Chapter 4. LISTS 연결리스트의응용 류관희 충북대학교 1 체인연산 체인을역순으로만드는 (inverting) 연산 3 개의포인터를적절히이용하여제자리 (in place) 에서문제를해결 typedef struct listnode *listpointer; typedef struct listnode { char data; listpointer link; ; 2 체인연산 체인을역순으로만드는

More information

8장 문자열

8장 문자열 8 장문자열 박창이 서울시립대학교통계학과 박창이 ( 서울시립대학교통계학과 ) 8 장문자열 1 / 24 학습내용 문자열 (string) 훑기 (traversal) 부분추출 (slicing) print 함수불변성 (immutablity) 검색 (search) 세기 (count) Method in 연산자비교 박창이 ( 서울시립대학교통계학과 ) 8 장문자열 2 /

More information

<342EBAAFBCF620B9D720B9D9C0CEB5F92E687770>

<342EBAAFBCF620B9D720B9D9C0CEB5F92E687770> 예약어(reserved word) : 프로그래밍 언어에서 특별한 용도로 사용하고자 미리 지정한 단어 - 프로그램의 구성요소를 구별하게 해주는 역할 => 라벨, 서브 프로그램 이름, 변수에 연관되어 다른 변수나 서브 프로그램 등과 구별 - 식별자의 최대길이는 언어마다 각각 다르며 허용길이를 넘어서면 나머지 문자열은 무시됨 - FORTRAN, COBOL, HTML

More information

Microsoft PowerPoint 자바-기본문법(Ch2).pptx

Microsoft PowerPoint 자바-기본문법(Ch2).pptx 자바기본문법 1. 기본사항 2. 자료형 3. 변수와상수 4. 연산자 1 주석 (Comments) 이해를돕기위한설명문 종류 // /* */ /** */ 활용예 javadoc HelloApplication.java 2 주석 (Comments) /* File name: HelloApplication.java Created by: Jung Created on: March

More information

Tcl의 문법

Tcl의 문법 월, 01/28/2008-20:50 admin 은 상당히 단순하고, 커맨드의 인자를 스페이스(공백)로 단락을 짓고 나열하는 정도입니다. command arg1 arg2 arg3... 한행에 여러개의 커맨드를 나열할때는, 세미콜론( ; )으로 구분을 짓습니다. command arg1 arg2 arg3... ; command arg1 arg2 arg3... 한행이

More information

제 14 장포인터활용 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다.

제 14 장포인터활용 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다. 제 14 장포인터활용 유준범 (JUNBEOM YOO) Ver. 2.0 jbyoo@konkuk.ac.kr http://dslab.konkuk.ac.kr 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다. 이번장에서학습할내용 이중포인터란무엇인가? 포인터배열 함수포인터 다차원배열과포인터 void 포인터 포인터는다양한용도로유용하게활용될수있습니다. 2 이중포인터

More information

Microsoft PowerPoint - C++ 5 .pptx

Microsoft PowerPoint - C++ 5 .pptx C++ 언어프로그래밍 한밭대학교전자. 제어공학과이승호교수 연산자중복 (operator overloading) 이란? 2 1. 연산자중복이란? 1) 기존에미리정의되어있는연산자 (+, -, /, * 등 ) 들을프로그래머의의도에맞도록새롭게정의하여사용할수있도록지원하는기능 2) 연산자를특정한기능을수행하도록재정의하여사용하면여러가지이점을가질수있음 3) 하나의기능이프로그래머의의도에따라바뀌어동작하는다형성

More information

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

Microsoft PowerPoint - logo_3.ppt [호환 모드] Logo Programming 학습목표 데이터종류를의미하는데이터타입에대해살펴본다. (LOGO의데이터타입 : 단어, 리스트, 배열 ) 값을저장하는공간인변수에대해살펴본다. 데이터관리하기에대해살펴본다. 2012. 5. 박남제 namjepark@jejunu.ac.kr < 데이터타입 > - 단어 단어단어 (word) 는 1 개이상의문자들을나열한것, 123 같은수도단어

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

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

11장 포인터

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

More information

Microsoft PowerPoint - chap04-연산자.pptx

Microsoft PowerPoint - chap04-연산자.pptx int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); } 1 학습목표 수식의 개념과 연산자, 피연산자에 대해서 알아본다. C의 를 알아본다. 연산자의 우선 순위와 결합 방향에

More information

1 경영학을 위한 수학 Final Exam 2015/12/12(토) 13:00-15:00 풀이과정을 모두 명시하시오. 정리를 사용할 경우 명시하시오. 1. (각 6점) 다음 적분을 구하시오 Z 1 4 Z 1 (x + 1) dx (a) 1 (x 1)4 dx 1 Solut

1 경영학을 위한 수학 Final Exam 2015/12/12(토) 13:00-15:00 풀이과정을 모두 명시하시오. 정리를 사용할 경우 명시하시오. 1. (각 6점) 다음 적분을 구하시오 Z 1 4 Z 1 (x + 1) dx (a) 1 (x 1)4 dx 1 Solut 경영학을 위한 수학 Fial Eam 5//(토) :-5: 풀이과정을 모두 명시하시오. 정리를 사용할 경우 명시하시오.. (각 6점) 다음 적분을 구하시오 4 ( ) (a) ( )4 8 8 (b) d이 성립한다. d C C log log (c) 이다. 양변에 적분을 취하면 log C (d) 라 하자. 그러면 d 4이다. 9 9 4 / si (e) cos si

More information

강의 개요

강의 개요 DDL TABLE 을만들자 웹데이터베이스 TABLE 자료가저장되는공간 문자자료의경우 DB 생성시지정한 Character Set 대로저장 Table 생성시 Table 의구조를결정짓는열속성지정 열 (Clumn, Attribute) 은이름과자료형을갖는다. 자료형 : http://dev.mysql.cm/dc/refman/5.1/en/data-types.html TABLE

More information

02장.배열과 클래스

02장.배열과 클래스 ---------------- DATA STRUCTURES USING C ---------------- CHAPTER 배열과구조체 1/20 많은자료의처리? 배열 (array), 구조체 (struct) 성적처리프로그램에서 45 명의성적을저장하는방법 주소록프로그램에서친구들의다양한정보 ( 이름, 전화번호, 주소, 이메일등 ) 를통합하여저장하는방법 홍길동 이름 :

More information

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

학습목표 함수프로시저, 서브프로시저의의미를안다. 매개변수전달방식을학습한다. 함수를이용한프로그래밍한다. 2 학습목표 함수프로시저, 서브프로시저의의미를안다. 매개변수전달방식을학습한다. 함수를이용한프로그래밍한다. 2 6.1 함수프로시저 6.2 서브프로시저 6.3 매개변수의전달방식 6.4 함수를이용한프로그래밍 3 프로시저 (Procedure) 프로시저 (Procedure) 란무엇인가? 논리적으로묶여있는하나의처리단위 내장프로시저 이벤트프로시저, 속성프로시저, 메서드, 비주얼베이직내장함수등

More information

Week5

Week5 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 information

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

Microsoft PowerPoint - chap03-변수와데이터형.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 학습목표 의 개념에 대해 알아본다.

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

5장. JSP와 Servlet 프로그래밍을 위한 기본 문법(완성-0421).hwp

5장. JSP와 Servlet 프로그래밍을 위한 기본 문법(완성-0421).hwp 1 0 1.7 6 5 'A ' '/ u 4 4 2 2 ' " JS P 프로그래밍 " A ', 'b ', ' 한 ', 9, \ u d 6 5 4 ' c h a r a = 'A '; 0 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 0 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 < % @ p a g e c o n te n

More information

Javascript.pages

Javascript.pages JQuery jquery part1 JavaScript : e-mail:leseraphina@naver.com http://www.webhard.co.kr I.? 2 ......,,. : : html5 ; ; .

More information

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770> 연습문제해답 5 4 3 2 1 0 함수의반환값 =15 5 4 3 2 1 0 함수의반환값 =95 10 7 4 1-2 함수의반환값 =3 1 2 3 4 5 연습문제해답 1. C 언어에서의배열에대하여다음중맞는것은? (1) 3차원이상의배열은불가능하다. (2) 배열의이름은포인터와같은역할을한다. (3) 배열의인덱스는 1에서부터시작한다. (4) 선언한다음, 실행도중에배열의크기를변경하는것이가능하다.

More information

그 여자와 그 남자의 사랑 이야기

그 여자와 그 남자의 사랑 이야기 그 여자와 그 남자의 사랑 이야기 ------------------- 소개글 뻔한 이야기이지요. 그렇지만 보여줄 수 있는 사랑은 아주 작습니다. 그 뒤에 숨어있는 위대함에 견주어보면.. 보여지는 모습이 아닌 그 사람의 진실함과 내면을 볼수있다면 우리 모두도 좋은 사람과 아름다운 사랑이야기를 써내려 갈수있다고 봅니다.. - 어느 소개글에서 목차 1 그 여자와

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

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

06장.리스트

06장.리스트 ---------------- DATA STRUCTURES USING C ---------------- CHAPTER 리스트 1/28 리스트란? 리스트 (list), 선형리스트 (linear list) 순서를가진항목들의모임 집합 : 항목간의순서의개념이없음 리스트의예 요일 : ( 일요일, 월요일,, 토요일 ) 한글자음의모임 : ( ㄱ, ㄴ,, ㅎ ) 카드 :

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

Microsoft PowerPoint - chap13-입출력라이브러리.pptx

Microsoft PowerPoint - chap13-입출력라이브러리.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 학습목표 스트림의 기본 개념을 알아보고,

More information

삼외구사( 三 畏 九 思 ) 1981년 12월 28일 마산 상덕법단 마산백양진도학생회 회장 김무성 외 29명이 서울 중앙총본부를 방문하였을 때 내려주신 곤수곡인 스승님의 법어 내용입니다. 과거 성인께서 말씀하시길 道 를 가지고 있는 사람과 어울려야만 道 를 배울 수 있

삼외구사( 三 畏 九 思 ) 1981년 12월 28일 마산 상덕법단 마산백양진도학생회 회장 김무성 외 29명이 서울 중앙총본부를 방문하였을 때 내려주신 곤수곡인 스승님의 법어 내용입니다. 과거 성인께서 말씀하시길 道 를 가지고 있는 사람과 어울려야만 道 를 배울 수 있 2014 2 통권 342호 차 례 제목 : 백양역사의 초석 사진 : 모경옥 단주 2 7 8 12 14 17 20 30 32 34 36 38 42 45 곤수곡인법어 성훈한마디 신년사 심법연구 이상적멸분( 離 相 寂 滅 分 ) 59 경전연구 論 語 78 미륵세상 만들기 스승을 그리며/김문자 점전사 편 용두봉 음악 산책

More information

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt 변수와상수 1 변수란무엇인가? 변수 : 정보 (data) 를저장하는컴퓨터내의특정위치 ( 임시저장공간 ) 메모리, register 메모리주소 101 번지 102 번지 변수의크기에따라 주로 byte 단위 메모리 2 기본적인변수형및변수의크기 변수의크기 해당컴퓨터에서는항상일정 컴퓨터마다다를수있음 short

More information

기사스크랩 (160504).hwp

기사스크랩 (160504).hwp 경향신문 / 2016.05.03(화) "갈등없는 성과연봉제 도입" 홍보하던 동서발전, 부당노동행위 정황 성과연봉제 노사합의안 찬반투표 당시 동서발전 울산화력본부 기표소 모습 공기업 발전회사 중 처음으로 성과연봉제 확대 도입에 대한 노사합의가 이뤄진 한국동서발전이 직원 들의 찬성 투표를 유도하기 위해 부당노동행위를 벌인 복수의 정황이 나왔다. 직원들에게 동의서를

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

chap x: G입력

chap x: G입력 원형큐 (Circular Queue) [2] [3] [2] [3] [1] [4] [1] [4] [0] [5] front = 0, rear = 0 [2] [3] [0] [5] front = 0, rear = 3 [1] [4] [0] [5] front = 0, rear = 0 최대큐이용률 = MAX_Q_SIZE 1 3 장. 스택과큐 (Page 13) 원형큐의구현

More information

Columns 8 through while expression {commands} 예제 1.2 (While 반복문의이용 ) >> num=0

Columns 8 through while expression {commands} 예제 1.2 (While 반복문의이용 ) >> num=0 for loop array {commands} 예제 1.1 (For 반복변수의이용 ) >> data=[3 9 45 6; 7 16-1 5] data = 3 9 45 6 7 16-1 5 >> for n=data x=n(1)-n(2) -4-7 46 1 >> for n=1:10 x(n)=sin(n*pi/10); n=10; >> x Columns 1 through 7

More information

35.PDF

35.PDF E. E. Smith / < > 1. 3 2. 23 23 47 67 78 100 120 129 137 141 147 158 V2 170 191 209 3 1.,..,,.? ( ),.,. < >.. 4.,..,......,.,..,,.. 5?., ( )., 20. 20...,.. ( ),.... 6 7, ( )..,,,,..,...,,,..... ( ).,.

More information

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

Microsoft 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 information

Microsoft PowerPoint 웹 연동 기술.pptx

Microsoft PowerPoint 웹 연동 기술.pptx 웹프로그래밍및실습 ( g & Practice) 문양세강원대학교 IT 대학컴퓨터과학전공 URL 분석 (1/2) URL (Uniform Resource Locator) 프로토콜, 호스트, 포트, 경로, 비밀번호, User 등의정보를포함 예. http://kim:3759@www.hostname.com:80/doc/index.html URL 을속성별로분리하고자할경우

More information

산림병해충 방제규정 4. 신문 방송의 보도내용 등 제6 조( 조사지역) 제5 조에 따른 발생조사는 다음 각 호의 지역으로 구분하여 조사한다. 1. 특정지역 : 명승지 유적지 관광지 공원 유원지 및 고속국도 일반국도 철로변 등 경관보호구역 2. 주요지역 : 병해충별 선단

산림병해충 방제규정 4. 신문 방송의 보도내용 등 제6 조( 조사지역) 제5 조에 따른 발생조사는 다음 각 호의 지역으로 구분하여 조사한다. 1. 특정지역 : 명승지 유적지 관광지 공원 유원지 및 고속국도 일반국도 철로변 등 경관보호구역 2. 주요지역 : 병해충별 선단 산림병해충 방제규정 산림병해충 방제규정 [ 시행 2015.9.9] [ 산림청훈령 제1262 호, 2015.9.9, 일부개정] 산림청( 산림병해충과), 042-481-4038 제1장 총칙 제1 조( 목적) 이 규정은 산림보호법 제3 장 " 산림병해충의 예찰 방제 에서 위임된 사항과 산림병해충( 이하 " 병 해충 이라 한다) 의 예방 구제를 위하여 병해충의 발생조사와

More information

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

Microsoft PowerPoint - hw8.ppt [호환 모드] 8.1 데이터경로와제어장치 Chapter 8 데이터경로와제어장치 많은순차회로의설계는다음의두부분으로구성 datapath: data의이동및연산을위한장치 control unit에상태신호제공 control ol unit: datapath th 에서적절한순서로 data 이동및연산을수행할수있도록제어신호제공. 먼저, datapath를설계 다음에, control unit

More information

Algorithms

Algorithms 자료구조 & 알고리즘 스택과큐 (Stack and Queue) Seo, Doo-okok clickseo@gmail.com http://www.clickseo.com 목 차 스택의개념및구현 큐의개념및구현 2 스택 스택의개념및구현 스택의구현 스택의응용 큐의개념및구현 3 스택 (Stack) 스택의구조 후입선출 (LIFO, Last-In-First-Out) 삽입 PUSH

More information

김기중 - 방송통신심의위원회 인터넷 내용심의의 위헌 여부.hwp

김기중 - 방송통신심의위원회 인터넷 내용심의의 위헌 여부.hwp 방송통신심의위원회 인터넷 내용심의와 그 위헌 여부에 관한 소론 - 서울고등법원 2011.2.1.자 2010아189 위헌법률심판제청결정을 중심으로 한국정보법학회 2011년 5월 사례연구회 2011. 5. 17.발표 변호사 김기중 미완성 원고임 1. 서론 헌법재판소는 2002. 6. 27. 99헌마480 전기통신사업법 제53조등 위헌확인사건에 서 불온통신 의 단속에

More information

UI TASK & KEY EVENT

UI TASK & KEY EVENT KEY EVENT & STATE 구현 2007. 1. 25 PLATFORM TEAM 정용학 차례 Key Event HS TASK UI TASK LONG KEY STATE 구현 소스코드및실행화면 질의응답및토의 2 KEY EVENT - HS TASK hs_task keypad_scan_keypad hs_init keypad_pass_key_code keypad_init

More information

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F > 10주차 문자 LCD 의인터페이스회로및구동함수 Next-Generation Networks Lab. 5. 16x2 CLCD 모듈 (HY-1602H-803) 그림 11-18 19 핀설명표 11-11 번호 분류 핀이름 레벨 (V) 기능 1 V SS or GND 0 GND 전원 2 V Power DD or V CC +5 CLCD 구동전원 3 V 0 - CLCD 명암조절

More information

Ⅰ- 1 Ⅰ- 2 Ⅰ- 3 Ⅰ- 4 Ⅰ- 5 Ⅰ- 6 Ⅰ- 7 Ⅰ- 8 Ⅰ- 9 Ⅰ- 10 Ⅰ- 11 Ⅰ- 12 Ⅰ- 13 Ⅰ- 14 Ⅰ- 15 Ⅰ- 16 Ⅰ- 17 Ⅰ- 18 Ⅰ- 19 Ⅰ- 20 Ⅰ- 21 Ⅰ- 22 Ⅰ- 23 Ⅰ- 24 Ⅰ- 25 Ⅰ- 26 Ⅰ- 27 Ⅰ- 28 Ⅰ- 29 Ⅰ- 30 Ⅰ- 31 Ⅰ- 32 Ⅰ- 33 Ⅰ- 34 Ⅰ- 35

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Chapter 10 포인터 01 포인터의기본 02 인자전달방법 03 포인터와배열 04 포인터와문자열 변수의주소를저장하는포인터에대해알아본다. 함수의인자를값과주소로전달하는방법을알아본다. 포인터와배열의관계를알아본다. 포인터와문자열의관계를알아본다. 1.1 포인터선언 포인터선언방법 자료형 * 변수명 ; int * ptr; * 연산자가하나이면 1 차원포인터 1 차원포인터는일반변수의주소를값으로가짐

More information

슬라이드 1

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

More information

Microsoft PowerPoint - 07-chap05-Stack.ppt

Microsoft PowerPoint - 07-chap05-Stack.ppt / 스택이란? 스택 stack): 쌓아놓은더미 hapter 5 스택 Dongwon Jeong djeong@kunsan.ac.kr Department of Informatics & Statistics 학습목표 스택의개념이해 스택의동작원리이해 배열과연결리스트를이용한스택구현 스택응용프로그램 스택의특징 후입선출 LIFO:Last-In First-Out) 가장최근에들어온데이터가가장먼저나감.

More information

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C4C656D70656C2D5A69762E637070>

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C4C656D70656C2D5A69762E637070> /* */ /* LZWIN.C : Lempel-Ziv compression using Sliding Window */ /* */ #include "stdafx.h" #include "Lempel-Ziv.h" 1 /* 큐를초기화 */ void LZ::init_queue(void) front = rear = 0; /* 큐가꽉찼으면 1 을되돌림 */ int LZ::queue_full(void)

More information

Microsoft PowerPoint - chap11-포인터의활용.pptx

Microsoft PowerPoint - chap11-포인터의활용.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 학습목표 포인터를 사용하는 다양한 방법에

More information

Microsoft PowerPoint - ch08_큐 [호환 모드]

Microsoft PowerPoint - ch08_큐 [호환 모드] 큐 (Queue) 자바로배우는쉬운자료구조 이장에서다룰내용 1 큐 2 큐의구현 3 큐의응용 2 큐 (1) 큐 (Queue) 스택과마찬가지로삽입과삭제의위치가제한된유한순서리스트 큐의뒤에서는삽입만하고, 앞에서는삭제만할수있는구조 삽입한순서대로원소가나열되어가장먼저삽입 (First-In) 한원소는맨앞에있다가가장먼저삭제 (First-Out) 된다. 선입선출구조 (FIFO,

More information

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

15강 판소리계 소설 심청전 다음 글을 읽고 물음에 답하시오. [1106월 평가원] 1)심청이 수궁에 머물 적에 옥황상제의 명이니 거행이 오죽 하랴. 2) 사해 용왕이 다 각기 시녀를 보내어 아침저녁으로 문 안하고, 번갈아 당번을 서서 문안하고 호위하며, 금수능라 비 14강 역사영웅소설 15강 판소리계 소설 판소리계 소설 : , 등 일반적으로 판소리 사설의 영향을 받아 소설로 정착된 작품을 가리킨 판소리 : , , , , 등이 사설과 창이 전해지고 있 하층민의 예술로 시작하여 전계층을 아우르는 예술이 되었 상류층, 지배층이 향유층이 되면서 점차 작품의 주제가

More information

중등2단계(최종)-PDF용.hwp

중등2단계(최종)-PDF용.hwp 이해와 배려, 공감을 꿈꾸며... 꿈의 학교, 모두가 행복한 서울교육을 위해 노력하고 있는 서울교육은 장애, 다문화 등의 차이가 차별과 소외를 낳지 않도록 다문화가정, 탈북학생, 장애학생 등에 대한 지원을 강화하고 있습니다. 탈북학생은 우리나라 아픈 역사의 결과라는 점에서 이해와 배려가 필요하다고 생각합니다. 특히 같은 외모와 같은 민족이라는 점에서 관심의

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

Microsoft PowerPoint - 제11장 포인터(강의)

Microsoft PowerPoint - 제11장 포인터(강의) 쉽게풀어쓴 C 언어 Express 제 11 장포인터 이번장에서학습할내용 포인터이란? 변수의주소 포인터의선언 간접참조연산자 포인터연산 포인터와배열 포인터와함수 이번장에서는포인터의기초적인지식을학습한다. 포인터란? 포인터 (pointer): 주소를가지고있는변수 1003 1004 1005 영화관 1002 1006 1001 포인터 (pointer) 1007 메모리의구조

More information

KNK_C_05_Pointers_Arrays_structures_summary_v02

KNK_C_05_Pointers_Arrays_structures_summary_v02 Pointers and Arrays Structures adopted from KNK C Programming : A Modern Approach 요약 2 Pointers and Arrays 3 배열의주소 #include int main(){ int c[] = {1, 2, 3, 4}; printf("c\t%p\n", c); printf("&c\t%p\n",

More information

Microsoft PowerPoint - [2009] 02.pptx

Microsoft PowerPoint - [2009] 02.pptx 원시데이터유형과연산 원시데이터유형과연산 원시데이터유형과연산 숫자데이터유형 - 숫자데이터유형 원시데이터유형과연산 표준입출력함수 - printf 문 가장기본적인출력함수. (stdio.h) 문법 ) printf( Test printf. a = %d \n, a); printf( %d, %f, %c \n, a, b, c); #include #include

More information

2. QUEUE OPERATIONS Initialize the queue Insert to the rear of the queue (also called as Enqueue) Remove (Delete) from the front of the queue (also ca

2. QUEUE OPERATIONS Initialize the queue Insert to the rear of the queue (also called as Enqueue) Remove (Delete) from the front of the queue (also ca Queues The name "queue" likely comes from the everyday use of the term. Consider: queue of people waiting at a bus stop, as pictured in fig. below. Each new person who comes and takes his or her place

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

단위: 환경정책 형산강살리기 수중정화활동 지원 10,000,000원*90%<절감> 형산강살리기 환경정화 및 감시활동 5,000,000원*90%<절감> 9,000 4,500 04 민간행사보조 9,000 10,000 1,000 자연보호기념식 및 백일장(사생,서예)대회 10

단위: 환경정책 형산강살리기 수중정화활동 지원 10,000,000원*90%<절감> 형산강살리기 환경정화 및 감시활동 5,000,000원*90%<절감> 9,000 4,500 04 민간행사보조 9,000 10,000 1,000 자연보호기념식 및 백일장(사생,서예)대회 10 2013년도 본예산 일반회계 환경위생과 ~ 환경위생과 세 출 예 산 사 업 명 세 서 부서: 환경위생과 단위: 환경정책 환경위생과 8,231,353 3,622,660 4,608,693 국 2,472,543 기 144,000 도 976,102 시 4,638,708 자연환경보호(환경보호/환경보호일반) 5,910,247 1,462,545 4,447,702 국 1,817,800

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

래를 북한에서 영화의 주제곡으로 사용했다든지, 남한의 반체제세력이 애창한다 든지 등등 여타의 이유를 들어 그 가요의 기념곡 지정을 반대한다는 것은 더 이상 용인될 수 없는 반민주적인 행동이 될 것이다. 동시에 그 노래가 두 가지 필요조 건을 충족시키지 못함에도 불구하고

래를 북한에서 영화의 주제곡으로 사용했다든지, 남한의 반체제세력이 애창한다 든지 등등 여타의 이유를 들어 그 가요의 기념곡 지정을 반대한다는 것은 더 이상 용인될 수 없는 반민주적인 행동이 될 것이다. 동시에 그 노래가 두 가지 필요조 건을 충족시키지 못함에도 불구하고 제2 발제문 임을 위한 행진곡 의 문제점 임 과 새 날 의 의미를 중심으로 양 동 안 (한국학중앙연구원 명예교수) 1. 머리말 어떤 노래가 정부가 주관하는 국가기념식의 기념곡으로 지정되려면(혹은 지정 되지 않고 제창되려면) 두 가지 필요조건을 충족시켜야 한다. 하나는 그 가요(특히 가사)에 내포된 메시지가 기념하려는 사건의 정신에 부합해야 한다는 것이다. 다

More information

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

비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2 비트연산자 1 1 비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2 진수법! 2, 10, 16, 8! 2 : 0~1 ( )! 10 : 0~9 ( )! 16 : 0~9, 9 a, b,

More information