즉, 두정수의사칙연산을계산하는함수를자기호출하면사칙연산이여러번들어간연산식도계산할수있다. 이번에는변수에대해생각해보자. 다음과같은연산식을계산한다고하자. let a = 2 a + 1 먼저 let과 사이의정의를보고변수 a에정수 2가저장되어있다는것을기억해둔다. 그다음에 뒤에오는연

Size: px
Start display at page:

Download "즉, 두정수의사칙연산을계산하는함수를자기호출하면사칙연산이여러번들어간연산식도계산할수있다. 이번에는변수에대해생각해보자. 다음과같은연산식을계산한다고하자. let a = 2 a + 1 먼저 let과 사이의정의를보고변수 a에정수 2가저장되어있다는것을기억해둔다. 그다음에 뒤에오는연"

Transcription

1 EECS101 전자계산입문아홉번째숙제 - Mi-Ocaml 만들기 - (200 점 + α) 이재봉 (novaever@postech) 제출마감 : 5 월 29 일 11:59pm 여러분은이제까지컴퓨터를이용한간단한정수의사칙연산에서부터변수나함수그리고자기호출함수를이용한다양한계산방법까지배웠습니다. 이렇게컴퓨터를이용해계산을하기위해여러분은이제까지 Ocaml이라는프로그래밍언어를이용했습니다. 이번숙제에서는여러분이직접 Ocaml의일부기능을수행하는프로그램을만들어보겠습니다. 부정행위에관한규정은 POSTECH 전자컴퓨터공학부학부위원회의 POSTECH 전자컴퓨터공학부부정행위정의 를따릅니다. ( 제 1 절 Mi-Ocaml 두정수의사칙연산을수행하는함수를만들었다고하자. 이함수를이용하면다음과같은계산을할수있다 이번에는다음과같이조금더복잡한연산식이있다고하자. 2 * / (7-2) 연산자 * 와 / 는 + 나 -보다우선순위가높으므로이를고려하여연산식에괄호를모두집어넣으면 ((2 * 3) + (100 / (7-2))) 이렇게바뀌게된다. 이제이연산식을단계적으로계산하면아래와같다. ((2 * 3) + (100 / (7-2))) (6 + (100 / (7-2))) (6 + (100 / 5)) (6 + 20) 26 1

2 즉, 두정수의사칙연산을계산하는함수를자기호출하면사칙연산이여러번들어간연산식도계산할수있다. 이번에는변수에대해생각해보자. 다음과같은연산식을계산한다고하자. let a = 2 a + 1 먼저 let과 사이의정의를보고변수 a에정수 2가저장되어있다는것을기억해둔다. 그다음에 뒤에오는연산식 a + 1을계산한다. 변수 a에 2가저장되어있다는것을알고있으므로 a + 1을 2 + 1로바꾸어계산하면 3을구할수있다. 이과정을단계적으로나타내면다음과같다. 아래그림에서왼쪽에있는상자는변수를저장하고있는공간을나타낸다. let a = 2 a + 1 a = 2 a + 1 a = a = 2 3 같은이름의변수를여러번정의할수있으므로연산식을계산하다가변수를만나면가장최근에저장한변수부터사용해야한다. 예를들어다음과같은연산식을계산할경우 let a = 1 let b = a + 1 let a = 2 a * b 두번째줄의 let b = a + 1 을계산할때는변수 a의값이정수 1이지만마지막줄의 a * b를계산할때는변수 a의값이정수 2가된다. 따라서이연산식의계산결과는 4가된다. 마지막으로다음과같이함수를정의하고사용하는경우를살펴보자. let f a b = a + b (f 1 2) * 2 let과 사이의정의를보고함수 f는형식인자로 a와 b를가지고몸통연산식으로 a + b를가진다는것을저장해둔다. 그다음에 뒤에오는연산식 (f 1 2) * 2를계산한다. 연산식을계산하는도중에함수적용 f 1 2를만나면이전에저장해둔함수 f를찾는다. 함수 f는형식인자로 a와 b를가지므로정수 1과 2를각각의형식인자에저장하고몸통연산식인 a + b를계산한다. 변수를계산할때와마찬가지로 a에는 1, b에는 2가저장되어있음을이용하여몸통연산식을계산하면함수적용결과 f 1 2는 3이된다. 이제 3 * 2를계산하면 6을얻을수있다. 이과정을단계적으로나타내면다음과같다. let f a b = a + b (f 1 2) * 2 f a b = a + b (f 1 2) * 2 2

3 b = 2 a = 1 f a b = a + b (a + b) * 2 b = 2 a = 1 f a b = a + b (a + 2) * 2 b = 2 a = 1 f a b = a + b (1 + 2) * 2 f a b = a + b 3 * 2 f a b = a + b 6 이번숙제에서여러분이직접만들게될 Mi-Ocaml은정수연산식의계산을수행할수있는프로그래밍언어이며 Ocaml의문법을동일하게사용한다. 기본적인정수의사칙연산과나머지연산그리고조건연산식을계산할수있으며변수와함수를정의하여사용할수있다. 이숙제를모두완성하면그림 1과같이과제 3이나과제 4에서작성했던 gcd나 log2 또는 b2dec과같은프로그램을여러분이직접만든 Mi-Ocaml에서계산할수있게된다. 그림 1: 완성한 Mi-Ocaml 의실행예 3

4 제 2 절 골격파일과검사파일 웹브라우저에서 또는 FTP client에서 <Hemos home folder> /cs101 hand/hw9/hw9.ml <Hemos home folder> /cs101 hand/hw9/hw9-check.ml <Hemos home folder> /cs101 hand/hw9/ma.ml <Hemos home folder> /cs101 hand/hw9/parser.ml 을내려받는다. 이번숙제에서는총 4개의파일을받아야한다. 제 3 절 숙제작성법 hw9.ml 은다음과같은구조를가지고있다. exception NotImplemented;; < 중략 > (* 연산식계산 * exp -> t *) let rec calc_exp e = raise NotImplemented;; 함수 calc exp는연산식을받아계산결과를넘겨주는함수이다. 이함수를작성하기위해등호와 ;; 사이에있는 raise NotImplemented를삭제하고문제가요구하는올바른연산식을채워넣는다. 연산식 raise NotImplemented는함수의몸통연산식이작성되지않았다는예외상황을표시하며, 의미자체는본숙제의해결에중요하지않다. 만약올바르게함수를정의할수없다고판단하는경우함수의몸통연산식인 raise NotImplemented를삭제하지않고그대로두어야한다. 제 4 절 기본적으로제공되는것들 이번숙제에서는연산식을표현하기위한타입이제공된다. hw9.ml 에서타입선언부분만추려내면다음 과같다. 4

5 (* 연산식정의 *) type exp = Num of t (* 정수 *) Var of strg (* 변수 *) Neg of exp (* 음수 *) Sum of exp * exp (* 더하기 *) Diff of exp * exp (* 빼기 *) Mult of exp * exp (* 곱하기 *) Div of exp * exp (* 나누기 *) Mod of exp * exp (* 나머지 *) If of exp * exp * exp * exp (* 조건연산식 *) Let of strg * exp * exp (* 변수정의 *) Fun of strg * strg list * exp * exp * bool (* 함수정의 *) App of strg * exp list (* 함수적용 *) ;; exp는연산식을표현하기위한생성자들의합집합이다. 이합집합의각생성자에대해서살펴보자. 각항목아래에있는예는사용자가입력한 Mi-Ocaml 코드를여러분이작성할함수 calc exp에서사용할 exp 타입으로변환한것이다. Num n : 정수 n ( 예 ) 100 Num 100 Var v : 변수 v ( 예 ) sum Var "sum" Neg e : ( 연산식 e) ( 예 ) -10 Neg (Num 10) Sum (e1, e2) : ( 연산식 e1) + ( 연산식 e2) ( 예 ) a + 2 Sum (Var "a", Num 2) Diff (e1, e2) : ( 연산식 e1) ( 연산식 e2) ( 예 ) a - 2 Diff (Var "a", Num 2) Mult (e1, e2) : ( 연산식 e1) ( 연산식 e2) ( 예 ) a * 2 Mult (Var "a", Num 2) Div (e1, e2) : ( 연산식 e1) ( 연산식 e2) ( 예 ) a / 2 Div (Var "a", Num 2) Mod (e1, e2) : ( 연산식 e1) mod ( 연산식 e2) ( 예 ) a mod 2 Mod (Var "a", Num 2) If (c1, c2, e1, e2) : if c1 = c2 then e1 else e2 연산식 c1을계산한값과연산식 c2를계산한값을서로비교하여같으면연산식 e1을계산하고다르면연산식 e2를계산한다. ( 예 ) if a = 3 then 0 else 1 If (Var "a", Num 3, Num 0, Num 1) 5

6 Let (v, d, e) : let v = d e v라는이름을가진변수에연산식 d를계산한결과를저장한후연산식 e를계산한다. ( 예 ) let a = 1 a + 1 Let ("a", Num 1, Sum (Var "a", Num 1)) Fun (f, [x 1, x 2,..., x n ], d, e, r) r이 true일경우 : let rec f x 1 x 2... x n = d e r이 false일경우 : let f x 1 x 2... x n = d e 형식인자 x 1, x 2,..., x n 과몸통연산식 d를가지는함수 f를저장한후연산식 e를계산한다. 형식인자는반드시하나이상있다고가정한다. r이 true인경우에함수 f는자기호출함수이지만 r이 false인경우에함수 f는자기호출함수가아니다. ( 예 ) let f x y = x + y f 1 2 Fun ("f", ["x"; "y"], Sum (Var "x", Var "y"), App ("f", [Num 1; Num 2]), false) App (f, [e l, e 2,..., e n ]) : f e l e 2... e n 함수 f의인자로 e l, e 2,..., e n 을넘겨주고함수 f를계산한다. 인자는반드시하나이상있다고가정한다. ( 예 ) f 1 2 App ("f", [Num 1; Num 2]) 사용자가입력한 Mi-Ocaml 연산식을 exp 타입으로변환하는기능은이미 ma.ml과 parser.ml에작성되어있으므로이에대해서는신경쓰지않아도된다. 여러분은단지 exp 타입으로변환된 Mi- Ocaml 연산식을계산하여정수값을반환하는함수 calc exp만올바로작성하면된다. 사용자가입력한 Mi-Ocaml 연산식이 exp 타입으로변환된결과를보고싶으면아래와같이한다. Ocaml을실행한다. hw9.ml을연다. ([ 메뉴 ] [File] [Open] hw9.ml을선택 ) parser.ml을연다. ([ 메뉴 ] [File] [Open] parser.ml을선택 ) convert "< 변환할연산식 >";; 을이용하여연산식변환결과를볼수있다. 다음은 convert 함수를사용한예이다. # convert "-10";; - : exp = Neg (Num 10) # convert "let a = 3 a * 2";; - : exp = Let ("a", Num 3, Mult (Var "a", Num 2)) # convert "let f x = x + 1 f 2";; - : exp = Fun ("f", ["x"], Sum (Var "x", Num 1), App ("f", [Num 2]), false) 제 5 절 컴파일및테스트 숙제를작성한후실행결과를확인하는방법에는두가지가있다. 6

7 컴파일 후 실행 숙제파일 hw9.ml을 비롯해 내려받도록 지시한 파일들을 모두 동일한 폴더에 위치시킨다. 명령 프롬프트([시작] [프로그램] [보조 프로그램] [명령 프롬프트])를 실행한 후, cd명령어를 이 용해 숙제파일 hw9.ml이 위치한 폴더로 이동한다. 아래와 같이 ocamlc 명령어를 이용해 숙제파일을 컴파일한다. ocamlc -o hw9.exe hw9.ml ma.ml 오류 없이 컴파일이 성공하였다면 hw9.exe 파일이 생성된다. hw9.exe를 실행하면 연산식을 입력할 수 있는 상태가 된다. 원하는 연산식을 입력하여 결과를 확인 한다. Ocaml과 동일하게 연산식은 여러줄에 걸쳐 입력할 수 있으며 ;;로 연산식의 끝을 나타낸다. 프로그램을 종료하고 싶으면 Ctrl + c를 누른다. 다음은 컴파일하여 실행 결과를 확인하는 예이다. D:\Programmg\Assignments\Graduate\EECS101\hw9>ocamlc -o hw9.exe hw9.ml ma.ml <Warng 메시지 생략> D:\Programmg\Assignments\Graduate\EECS101\hw9>hw9.exe # -10;; -10 # let a = 3 a * 2;; 6 # let f x = x + 1 f 2;; 3 # D:\Programmg\Assignments\Graduate\EECS101\hw9> Ocaml 인터프리터에서 직접 실행 Ocaml을 실행한다. hw9.ml을 연다. ([메뉴] [File] [Open] hw9.ml을 선택) parser.ml을 연다. ([메뉴] [File] [Open] parser.ml을 선택) calc exp (convert "<변환할 연산식>");;을 이용하여 결과를 확인한다. 다음은 Ocaml 인터프리터에서 직접 실행 결과를 확인하는 예이다. 7

8 # calc_exp (convert "-10");; - : t = -10 # calc_exp (convert "let a = 3 a * 2");; - : t = 6 # calc_exp (convert "let f x = x + 1 f 2");; - : t = 3 Ocaml 인터프리터에서자신이작성한프로그램의결과를테스트할경우, 처음에는반드시 hw9.ml을먼저열고 parser.ml을열어야하며 hw9.ml을수정한후에는반드시다시 hw9.ml과 parser.ml을여는과정을거친후에결과를확인해야한다. 이과정이컴파일러를사용하는방법보다번거롭기때문에되도록이면컴파일러를사용하여컴파일후결과를확인하는방법을사용하기를권장한다. 오류처리 3 * + 2;; 나 a + 1;;( 변수 a를정의하지않고사용 ) 과같이사용자가 Mi-Ocaml에입력한연산식에오류가있는경우다음과같이오류메시지가출력되거나아무런결과가출력되지않고무시된다. D:\Programmg\Assignments\Graduate\EECS101\hw9>hw9.exe # 3 * + 2;; Syntax Error # a + 1;; # D:\Programmg\Assignments\Graduate\EECS101\hw9> Ocaml 인터프리터에서직접실행한경우에는다음과같이 Exception:... 메시지가출력된다. # calc_exp (convert "3 * + 2");; Exception: SyntaxError. # calc_exp (convert "a + 1");; Exception: Match_failure ("D:/Programmg/Assignments/Graduate/EECS101/HW9/hw9_sol/hw9.ml", 35, 2). 숙제검사를할때는오류가없는연산식만을사용하므로숙제를작성할때에는입력되는연산식에오류가없다고가정하고프로그램을작성하면된다. 제 6 절 타입확인및제출 문제에대한답을다작성한이후, 작성한숙제파일 hw9.ml 의 calc exp 함수가문제에서제시한타입을 만족하는지확인하기위해다음과같이검사파일을이용한다. 골격파일을편집하여숙제를작성하게되므 로이후골격파일과숙제파일은동일한파일인 hw9.ml 을가리킨다. 8

9 숙제파일 hw9.ml과 검사파일 hw9-check.ml을 동일한 폴더에 위치시킨다. 명령 프롬프트([시작] [프로그램] [보조 프로그램] [명령 프롬프트])를 실행한 후, cd명령어를 이 용해 숙제파일과 검사파일이 위치한 폴더로 이동한다. 아래와 같이 ocamlc 명령어를 이용해 숙제파일과 검사파일을 함께 컴파일한다. ocamlc -o hw9-check.exe hw9.ml hw9-check.ml 컴파일한 결과 명령 프롬프트에 아무런 메시지가 나타나지 않으면 작성한 함수들이 모두 올바른 타입을 가지고 있음을 의미한다. 단, Warng 메시지는 출력되어도 상관없다. 숙제 작성을 마친 후 FTP client를 이용하여 숙제파일인 hw9.ml을 자신의 숙제 제출 폴더인 <Hemos home folder> /cs101 hand/hw9/<hemos id> 에 저장한다. 주의사항 (꼭 읽어보고 시작하세요!) 필요한 경우 함수의 몸통부분에 지역 변수를 이용하여 값 또는 함수를 자유로이 정의할 수 있다. 골격파일의 어디든지 필요한 타입이나 함수를 자유롭게 정의하여 사용한다. 단, hw9-check.ml을 이용한 타입 검사를 통과해야 한다. 숙제 작성시 타입은 hw9-check.ml을 통과하면 된다. 문제에서 제시하는 함수와 실제 작성을 한 뒤에 나오는 타입이 다르더라도 hw9-check.ml을 통과한다면 문제가 없다. 단, 이번 숙제는 올바르게 프로 그램을 작성해도 Warng 메시지가 여러번 출력될 수 있으므로 Warng 메시지는 무시한다. 파일 이름은 반드시 hw9.ml이어야 한다. hw9.ml이 아닌 다른 이름의 파일을 제출하면 0점 처리 된다. 컴파일되지 않는 숙제는 0점 처리 된다. Ocaml의 라이브러리는 모두 사용해도 된다. 아래와 같은 질문은 삼가해주기 바랍니다. (코드의 내용을 보여주면서) "제 코드가 요구사항대로 동작하지 않는데 어느 부분이 잘못된 건가요?" 자신이 작성한 코드를 보여주면서 틀린부분을 찾아달라는 질문에 대하여 대답해 줄 수 없습니다. "제 코드의 함수 f는 타입이 t->t->t 인데요, 핸드아웃에는 t->(t->t) 라고 되어 있어요, 괜찮은가요?" hw9-check.ml을 이용한 타입 검사를 통과하면 됩니다. "핸드아웃의 실행 예는 다 만족하는데요 그러면 제 코드가 올바르게 작성된 것인가요?" 어떤 입력 값을 넣었을때 자기가 짠 코드가 올바른지 판단하는 몫은 학생여러분 자신들에게 있습 니다. 단 강의게시판에 자신이 테스트한 케이스를 올려두고 다른 학생들의 것과 비교해보는 것은 상 관없습니다. "제가 짠 코드를 복사해서 Ocaml 해석기에 붙여넣어서 테스트하면 잘 되는데 컴파일 하면 에러가 나요 ㅠㅠ." 편집기에서 복사해서 Ocaml 해석기에 붙여넣지 말고, 컴파일러를 이용합니다. 9

10 제 7 절 문제 8번숙제까지는문제 1개당함수 1개씩을작성하였지만이번숙제에서는처음부터마지막까지 calc exp 함수하나만을작성하며그기능을단계적으로확장해나간다. 함수 calc exp의타입은항상 exp -> t이다. calc exp 함수가이번숙제에서요구한모든계산기능을올바로수행하면만점을받을수있으며, 그렇지못할경우자신이구현한기능에해당하는점수만받게된다. 실행예는컴파일후실행한경우를기준으로작성하였다. Ocaml 인터프리터에서직접실행하는방법은 5절을참고하도록한다. Question 1. [30점] 정수계산을구현하라. ( 설명 ) 정수의사칙연산 (+,,, ) 과부호바꿈그리고나머지연산을수행할수있도록 calc exp를작성한다. ( 컴파일후실행예 ) D:\Programmg\Assignments\Graduate\EECS101\hw9>hw9.exe # 3;; 3 # 3 + 2;; 5 # 17 mod 3;; 2 # 3 * -4;; -12 # 17 * 7 mod 4 + 3;; 6 # 17 / (1 + 3 * (1-4));; -2 Question 2. [20점] 조건연산식을구현하라. ( 설명 ) Ocaml의 if와같은조건연산식을계산할수있도록 calc exp를작성한다. 기본적으로 Ocaml의조건연산식과동일한기능을수행하지만등호 (=) 를이용한조건만계산하며 >, < 와같은부등호나기타다른논리연산자는사용하지않는다. 조건연산식 if c1 = c2 then e1 else e2는 If (c1, c2, e1, e2) 로변환되고함수 calc exp는 c1과 c2의계산결과를비교하여서로같으면 e1을, 서로다르면 e2를계산한다. ( 컴파일후실행예 ) D:\Programmg\Assignments\Graduate\EECS101\hw9>hw9.exe # if 1 = 1 then 10 else 20;; 10 # if 2 = 1 then 10 else 20;; 20 # if 3 mod 2 = 0 then 5 * (3-1) else 1 + 1;; 2 # if 3 * 4 = then 5 * (3-1) else 1 + 1;; 10 10

11 # if 3 = 2 then 10 else if 2 * 2 = then 17 mod 5 else 18 mod 5;; 2 Question 3. [50점] 변수를구현하라. ( 설명 ) Ocaml에서처럼 let... 을이용하여지역변수를선언하고사용할수있도록 calc exp를작성한다. 이문제에는부분점수가있으며그기준은다음과같다. 변수에정수값을대입하는경우에대해서계산이가능 [10점] 변수에연산식의결과를대입하는경우에대해서계산이가능 [20점] 변수가여러번중첩선언되어있는경우에대해서계산이가능 [20점] 변수가여러번중첩되어선언되었을경우주의할점은다음과같다. let a = 2 let b = let a = 3 a + 1 a + b;; 위와같은연산식을계산할때, 첫번째줄에서변수 a에정수 2를저장했지만세번째줄의 let a = 3 a + 1에서연산식 a + 1을계산하기위해변수 a에정수 3을저장했으므로 a + 1의결과는 4가되고이값이변수 b에저장된다. 그러나 let a = 3은 a + 1에서만의미가있으므로마지막줄의 a + b를계산할때는변수 a의값이 2가되어최종계산결과는 6이된다. ( 힌트 ) 선언된변수이름과변수의값을저장하는방법을고안하고필요한보조함수를작성하여이용한다. 변수이름과변수의값을저장하기위해서는어떤방법을사용해도상관없으나리스트를이용하는것이좋다. ( 컴파일후실행예 : 변수에정수값을대입하는경우 ) D:\Programmg\Assignments\Graduate\EECS101\hw9>hw9.exe # let a = 3 a + 2;; 5 # let a = 3 let b = 4 a * b - 7;; 5 ( 컴파일후실행예 : 변수에연산식의결과를대입하는경우 ) D:\Programmg\Assignments\Graduate\EECS101\hw9>hw9.exe # let a = 2 let b = a * 3 a + b;; 8 11

12 # let a = 2 let b = if a = 2 then 10 else 20 a + b;; 12 ( 컴파일후실행예 : 변수를여러번중첩선언한경우 ) D:\Programmg\Assignments\Graduate\EECS101\hw9>hw9.exe # let a = 2 let b = let a = 3 a + 1 a + b;; 6 # let a = 2 let b = let c = 3 c * a let c = a + 1 a * b - c;; 9 Question 4. [100점] 닫힌함수를구현하라. 닫힌함수를정의하고사용할수있도록 calc exp를작성한다. 여기서닫힌함수란함수의몸통연산식에형식인자로명시된변수만사용하는함수를말한다. 예를들어 let f x = x + 2 f 1에서함수 f의몸통연산식인 x + 2에는형식인자인 x 외에다른변수를사용하지않았으므로 f는닫힌함수이다. 반면에 let a = 2 let f x = x + a f 1에서는함수 f의몸통연산식인 x + a에형식인자인 x외에앞에서정의한변수 a도사용하였으므로닫힌함수가아니다. 이문제에는부분점수가있으며그기준은다음과같다. 한개의형식인자를가지는함수에대해서계산이가능 [10점] 여러개의형식인자를가지는함수에대해서계산이가능 [20점] 중첩선언된함수에대해서계산이가능 [20점] 자기호출함수에대해서계산이가능 [50점] 함수가중첩선언되었을경우에주의할점은다음과같다. let f x = x + 1 let g x = let f x = x + 2 f (x * 2) f 1 + g 5;; 위와같은연산식에서첫번째줄에서함수 f는형식인자 x를가지고몸통연산식 x + 1을가지는함수로정의했지만세번째줄에서 f (x * 2) 를계산할때함수 f를형식인자 x를가지고몸통연산식 x + 2을가지는함수로다시정의했으므로여기서는 f의몸통연산식이 x + 1이아닌 x + 2가된다. 하지만마지막 12

13 줄의 f 1를계산할때는세번째줄에서정의한 f가더이상유효하지않으므로처음에정의한 f가사용된다. 따라서 f 1은 2가되고 g 5는 12가되어최종계산결과는 14가된다. 또한 let rec을이용해서함수를선언하였을경우함수의몸통연산식에서자기자신을사용할수있게만들어서자기호출이가능하도록한다. 함수의인자로함수를넘겨주는경우는고려하지않는다. ( 힌트 ) 선언된함수의정보 ( 함수이름, 형식인자, 몸통연산식 ) 를저장하는방법을고안하고필요한보조함수를작성하여이용한다. 함수를저장하기위해서는어떤방법을사용해도상관없으나리스트를이용하는것이좋다. ( 컴파일후실행예 : 한개의형식인자를가지는경우 ) D:\Programmg\Assignments\Graduate\EECS101\hw9>hw9.exe # let f x = x + 1 f 2;; 3 # let sum n = if n = 0 then 0 else n * (n + 1) / 2 sum 10;; 55 ( 컴파일후실행예 : 여러개의형식인자를가지는경우 ) D:\Programmg\Assignments\Graduate\EECS101\hw9>hw9.exe # let f x y = if x = y then 1 else 2 f 3 4;; 2 # let g x = x + 1 let f x y = x * y g 2 + f 3 4;; 15 ( 컴파일후실행예 : 함수를여러번중첩선언한경우 ) D:\Programmg\Assignments\Graduate\EECS101\hw9>hw9.exe # let f x = x + 1 let g x = let f x = x + 2 f (x * 2) f 1 + g 5;; 14 13

14 # let f x y z = x + y + z let g x = let f x = x + 2 f (x * 2) f g 2;; 12 ( 컴파일후실행예 : 자기호출함수 ) D:\Programmg\Assignments\Graduate\EECS101\hw9>hw9.exe # let rec sum x = if x = 0 then 0 else sum (x - 1) + x sum 10;; 55 # let rec fib n = if n = 1 then 1 else if n = 2 then 1 else fib (n - 1) + fib (n - 2) fib 5;; 5 # let b2dec n = let rec b2dec n m s = if n = 0 then s else b2dec (n / 10) (2 * m) (m * (n mod 10) + s) b2dec n 1 0 b2dec ;; 100 제 8 절 도전문제 [ 알림 ] 도전문제에대한질문은일체받지않습니다. Question 1. [+α] 열린함수와일종함수를구현하여라. 닫힌함수를확장하여열린함수를계산할수있도록 calc exp를작성한다. 닫힌함수와달리열린함수는이전에선언한변수나함수도몸통연산식안에서사용할수있다. 예를들어다음과같은연산식이있다고할때 14

15 let a = 2 let f x y = x * y let g x = f a x g 5;; 세번째줄의 let g x = f a x 에서함수 g는형식인자로 x만을가지지만몸통연산식인 f a x안에는이전에정의된함수 f와변수 a도사용하였다. 따라서함수 g는열린함수이다. 열린함수를계산할때중간에함수의정의가바뀔수있다는것을주의해야한다. 예를들면 let f x = x + 1 let g x = f (x * 2) let f x = x + 2 f 2 + g 4;; 위와같은연산식에서두번째줄인 let g x = f (x * 2) 에서함수 g의몸통연산식에함수 f를사용하였고마지막줄인 f 2 + g 4에서도함수 f를사용하였다. 두함수가같은이름을가지고있지만 g의몸통연산식에서쓰인함수 f는세번째줄에서함수 f를다시정의하기전에사용되었으므로첫번째줄에정의된 f x = x + 1로계산하고마지막줄에사용한함수 f는다시정의한 f x = x + 2로계산한다. 열린함수역시닫힌함수와마찬가지로자기호출함수로사용할수있어야한다. let rec을이용하여자기호출함수로작성한함수와그낭 let만을이용하여작성한함수사이에는큰차이점이있다. 다음의예를보자. let f x = x + 1 let rec f x = if x = 0 then 0 else f (x - 1) + x f 10;; 첫번째줄의함수 f는정수를 1 증가시키는함수이다. 그다음에같은이름의함수 f를정의하는데, 이함수는몸통연산식에서자신과같은이름의함수 f를사용하였다. 이함수는 rec을사용하여자기호출함수로정의하였으므로, 네번째줄에있는함수 f는자기자신을의미한다. 따라서두번째줄에서다시정의한함수 f는자기호출을하며 0부터 x까지정수의합을구하는기능을올바로수행한다. 하지만다음과같이 rec 키워드를빼면 let f x = x + 1 let f x = if x = 0 then 0 else f (x - 1) + x f 10;; 두번째줄에서다시선언한함수 f는더이상자기호출함수가아니므로네번째줄의함수 f는처음에정의한정수를 1 증가시키는함수를의미하게된다. 따라서자기호출이되지않고바로 (10-1) 을계산하므로결과는 20이된다. 또한함수의인자로함수를받을수도있고함수의계산결과가함수가될수도있게하여일종함수를구현한다. 일종함수에관해서는이미수업시간에배웠으므로자세히설명하지않는다. 15

16 ( 알림 ) 열린함수와자기호출그리고일종함수까지완벽하게구현할경우에는최종학점을한단계올려준다. 예를들어, 최종학점이 B+ 인경우 A-를받게된다. 만약도전문제의일부기능만구현했다면구현한기능에따라최대 50점까지부분점수를받을수있다. 도전문제의부분점수기준은다음과같다. 이전에정의한변수를함수안에서사용할수있음 [10점] 이전에정의한함수를함수안에서사용할수있음 [10점] 열린함수의자기호출이가능 [30점] ( 컴파일후실행예 : 이전에정의한변수를사용하는경우 ) D:\Programmg\Assignments\Graduate\EECS101\hw9>hw9.exe # let a = 2 let f x = x * a f 3;; 6 # let x = 2 let y = 3 let f x = x * y + x f 4 + x + y;; 21 # let f x = x + 1 let a = 3 let b = let f x = x * a let a = 5 f a f a + b;; 19 ( 컴파일후실행예 : 이전에정의한함수를사용하는경우 ) D:\Programmg\Assignments\Graduate\EECS101\hw9>hw9.exe # let a = 2 let f x y = x * y let g x = f a x g 5;; 10 # let f x = x + 1 let g x = f (x * 2) let f x = x + 2 f 2 + g 4;; 13 16

17 # let f x = x + 1 let f x = if x = 0 then 0 else f (x - 1) + x f 10;; 20 ( 컴파일후실행예 : 자기호출함수 ) D:\Programmg\Assignments\Graduate\EECS101\hw9>hw9.exe # let f x = x + 1 let rec f x = if x = 0 then 0 else f (x - 1) + x f 10;; 55 # let rec tegral a b c d e = let f x = a * x * x + b * x + c if d = e then 0 else f d + tegral a b c (d + 1) e tegral ;; # let a = 0 let s x y = x + y let rec sum x = if x = a then a else s x (sum (x - 1)) let s x y = x * y sum 10 + s 3 4;; 67 ( 컴파일후실행예 : 일종함수 ) D:\Programmg\Assignments\Graduate\EECS101\hw9>hw9.exe # let g x y = x + y let f = g 2 f 3;; 5 17

18 # let g x y = x * y let h x y = x mod y let app f x y = f x y app g app h 10 3;; 7 # let g x y = x + y let f = g 2 let g x = x * 2 f 3 * g 2;; 20 # let f x = 3 * x * x + x - 9 let rec tegral f a b = if a = b then 0 else f a + tegral f (a + 1) b tegral f 0 10;; 810 제 9 절 숙제에대한의견 숙제에대한학생들의모든의견을환영합니다. 숙제에대한의견이있으면 페이지를방문하여의견을익명으로남겨주시길바랍니다. 여러분들의의견은향후숙제설계와강의준비에중요한자료로이용됩니다. 의견을남기는사람에대한어떤정보도저장되지않습니다. 18

EECS101 전자계산입문여섯번째숙제 -리스트- (100 점 + 도전문제점수 50점 ) 오진오 제출마감 : 5월 1일 11:59pm 이번숙제에서는수업시간에배웠던리스트에대한기본개념을프로그래밍을통해익혀보고, 리스트를통해가능한문제해결방법에대해서알

EECS101 전자계산입문여섯번째숙제 -리스트- (100 점 + 도전문제점수 50점 ) 오진오 제출마감 : 5월 1일 11:59pm 이번숙제에서는수업시간에배웠던리스트에대한기본개념을프로그래밍을통해익혀보고, 리스트를통해가능한문제해결방법에대해서알 EECS101 전자계산입문여섯번째숙제 -리스트- (100 점 + 도전문제점수 50점 ) 오진오 (kurin@postech) 제출마감 : 5월 1일 11:59pm 이번숙제에서는수업시간에배웠던리스트에대한기본개념을프로그래밍을통해익혀보고, 리스트를통해가능한문제해결방법에대해서알아봅니다. 부정행위에관한규정은 POSTECH 전자컴퓨터공학부학부위원회의 POSTECH 전자컴퓨터공학부부정행위정의

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

OCW_C언어 기초

OCW_C언어 기초 초보프로그래머를위한 C 언어기초 4 장 : 연산자 2012 년 이은주 학습목표 수식의개념과연산자및피연산자에대한학습 C 의알아보기 연산자의우선순위와결합방향에대하여알아보기 2 목차 연산자의기본개념 수식 연산자와피연산자 산술연산자 / 증감연산자 관계연산자 / 논리연산자 비트연산자 / 대입연산자연산자의우선순위와결합방향 조건연산자 / 형변환연산자 연산자의우선순위 연산자의결합방향

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

PowerPoint 프레젠테이션

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

More information

Microsoft PowerPoint - chap06-2pointer.ppt

Microsoft PowerPoint - chap06-2pointer.ppt 2010-1 학기프로그래밍입문 (1) chapter 06-2 참고자료 포인터 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- 포인터의정의와사용 변수를선언하는것은메모리에기억공간을할당하는것이며할당된이후에는변수명으로그기억공간을사용한다. 할당된기억공간을사용하는방법에는변수명외에메모리의실제주소값을사용하는것이다.

More information

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

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

More information

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

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

10 강. 쉘스크립트 l 쉘스크립트 Ÿ 쉘은명령어들을연속적으로실행하는인터프리터환경을제공 Ÿ 쉘스크립트는제어문과변수선언등이가능하며프로그래밍언어와유사 Ÿ 프로그래밍언어와스크립트언어 -프로그래밍언어를사용하는경우소스코드를컴파일하여실행가능한파일로만들어야함 -일반적으로실행파일은다

10 강. 쉘스크립트 l 쉘스크립트 Ÿ 쉘은명령어들을연속적으로실행하는인터프리터환경을제공 Ÿ 쉘스크립트는제어문과변수선언등이가능하며프로그래밍언어와유사 Ÿ 프로그래밍언어와스크립트언어 -프로그래밍언어를사용하는경우소스코드를컴파일하여실행가능한파일로만들어야함 -일반적으로실행파일은다 10 강. 쉘스크립트 쉘스크립트 쉘은명령어들을연속적으로실행하는인터프리터환경을제공 쉘스크립트는제어문과변수선언등이가능하며프로그래밍언어와유사 프로그래밍언어와스크립트언어 -프로그래밍언어를사용하는경우소스코드를컴파일하여실행가능한파일로만들어야함 -일반적으로실행파일은다른운영체제로이식되지않음 -스크립트언어를사용하면컴파일과정이없고인터프리터가소스파일에서명령문을판독하여각각의명령을수행

More information

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D> 리눅스 오류처리하기 2007. 11. 28 안효창 라이브러리함수의오류번호얻기 errno 변수기능오류번호를저장한다. 기본형 extern int errno; 헤더파일 라이브러리함수호출에실패했을때함수예 정수값을반환하는함수 -1 반환 open 함수 포인터를반환하는함수 NULL 반환 fopen 함수 2 유닉스 / 리눅스 라이브러리함수의오류번호얻기 19-1

More information

슬라이드 1

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

More information

슬라이드 1

슬라이드 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 information

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

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

More information

설계란 무엇인가?

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

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

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

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

More information

Microsoft PowerPoint - chap06-5 [호환 모드]

Microsoft PowerPoint - chap06-5 [호환 모드] 2011-1 학기프로그래밍입문 (1) chapter 06-5 참고자료 변수의영역과데이터의전달 박종혁 Tel: 970-6702 Email: jhpark1@seoultech.ac.kr h k 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- ehanbit.net 자동변수 지금까지하나의함수안에서선언한변수는자동변수이다. 사용범위는하나의함수내부이다. 생존기간은함수가호출되어실행되는동안이다.

More information

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp");

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher( 실행할페이지.jsp); 다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp"); dispatcher.forward(request, response); - 위의예에서와같이 RequestDispatcher

More information

Microsoft PowerPoint - chap-03.pptx

Microsoft PowerPoint - chap-03.pptx 쉽게풀어쓴 C 언어 Express 제 3 장 C 프로그램구성요소 컴퓨터프로그래밍기초 이번장에서학습할내용 * 주석 * 변수, 상수 * 함수 * 문장 * 출력함수 printf() * 입력함수 scanf() * 산술연산 * 대입연산 이번장에서는 C프로그램을이루는구성요소들을살펴봅니다. 컴퓨터프로그래밍기초 2 일반적인프로그램의형태 데이터를받아서 ( 입력단계 ), 데이터를처리한후에

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

Microsoft PowerPoint - Java7.pptx

Microsoft PowerPoint - Java7.pptx HPC & OT Lab. 1 HPC & OT Lab. 2 실습 7 주차 Jin-Ho, Jang M.S. Hanyang Univ. HPC&OT Lab. jinhoyo@nate.com HPC & OT Lab. 3 Component Structure 객체 (object) 생성개념을이해한다. 외부클래스에대한접근방법을이해한다. 접근제어자 (public & private)

More information

Microsoft PowerPoint - chap01-C언어개요.pptx

Microsoft PowerPoint - chap01-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 학습목표 프로그래밍의 기본 개념을

More information

Microsoft PowerPoint - C++ 5 .pptx

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

More information

C 프로그램의 기본

C 프로그램의 기본 C 프로그램의기본 목차 C 프로그램의구성요소 주석 main 함수 출력 C 언어의입력과출력 변수 printf 함수 scanf 함수 2 예제 2-1 : 첫번째 C 프로그램 3 2.1.1 주석 주석의용도 프로그램에대한설명 프로그램전체에대한대략적인정보를제공 프로그램수행에영향을미치지않는요소 4 2.1.1 주석 주석사용방법 /* 과 */ 을이용한여러줄주석 // 을이용한한줄주석

More information

OCW_C언어 기초

OCW_C언어 기초 초보프로그래머를위한 C 언어기초 2 장 : C 프로그램시작하기 2012 년 이은주 학습목표 을작성하면서 C 프로그램의구성요소 주석 (comment) 이란무엇인지알아보고, 주석을만드는방법 함수란무엇인지알아보고, C 프로그램에반드시필요한 main 함수 C 프로그램에서출력에사용되는 printf 함수 변수의개념과변수의값을입력받는데사용되는 scanf 함수 2 목차 프로그램코드

More information

PowerPoint Template

PowerPoint Template 16-1. 보조자료템플릿 (Template) 함수템플릿 클래스템플릿 Jong Hyuk Park 함수템플릿 Jong Hyuk Park 함수템플릿소개 함수템플릿 한번의함수정의로서로다른자료형에대해적용하는함수 예 int abs(int n) return n < 0? -n : n; double abs(double n) 함수 return n < 0? -n : n; //

More information

PowerPoint Presentation

PowerPoint Presentation #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

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

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

More information

컴파일러

컴파일러 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

Microsoft PowerPoint - Lesson2.pptx

Microsoft PowerPoint - Lesson2.pptx Computer Engineering g Programming g 2 제 3 장 C 프로그래밍구성요소 Lecturer: JUNBEOM YOO jbyoo@konkuk.ac.kr 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다. 이번장에서학습할내용 * 주석 * 변수, 상수 * 함수 * 문장 * 출력함수 printf() * 입력함수 scanf() *

More information

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

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

More information

쉽게 풀어쓴 C 프로그래밍

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

More information

Microsoft PowerPoint - chap06-1Array.ppt

Microsoft PowerPoint - chap06-1Array.ppt 2010-1 학기프로그래밍입문 (1) chapter 06-1 참고자료 배열 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- 배열의선언과사용 같은형태의자료형이많이필요할때배열을사용하면효과적이다. 배열의선언 배열의사용 배열과반복문 배열의초기화 유연성있게배열다루기 한빛미디어

More information

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

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

More information

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

3. 다음은카르노맵의표이다. 논리식을간략화한것은? < 나 > 4. 다음카르노맵을간략화시킨결과는? < >

3. 다음은카르노맵의표이다. 논리식을간략화한것은? < 나 > 4. 다음카르노맵을간략화시킨결과는? < > . 변수의수 ( 數 ) 가 3 이라면카르노맵에서몇개의칸이요구되는가? 2칸 나 4칸 다 6칸 8칸 < > 2. 다음진리표의카르노맵을작성한것중옳은것은? < 나 > 다 나 입력출력 Y - 2 - 3. 다음은카르노맵의표이다. 논리식을간략화한것은? < 나 > 4. 다음카르노맵을간략화시킨결과는? < > 2 2 2 2 2 2 2-3 - 5. 다음진리표를간략히한결과

More information

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

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

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Chapter 15 고급프로그램을 만들기위한 C... 1. main( ) 함수의숨겨진이야기 2. 헤더파일 3. 전처리문과예약어 1. main( ) 함수의숨겨진이야기 main( ) 함수의매개변수 [ 기본 14-1] main( ) 함수에매개변수를사용한예 1 01 #include 02 03 int main(int argc, char* argv[])

More information

Microsoft PowerPoint - C프로그래밍-chap03.ppt [호환 모드]

Microsoft PowerPoint - C프로그래밍-chap03.ppt [호환 모드] Chapter 03 변수와자료형 2009 한국항공대학교항공우주기계공학부 (http://mercury.kau.ac.kr/sjkwon) 1 변수와자료유형 변수 프로그램에서자료값을임시로기억할수있는저장공간을변수 (variables) 변수 (Variables) 는컴퓨터의메모리인 RAM(Random Access Memory) 에저장 물건을담는박스라고생각한다면박스의크기에따라담을물건이제한됨

More information

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

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

More information

Microsoft PowerPoint - 08-C-App-19-Quick-Preprocessor

Microsoft PowerPoint - 08-C-App-19-Quick-Preprocessor 19. 전처리와분할컴파일 순천향대학교컴퓨터학부이상정 1 학습내용 전처리명령어 #include #define 기호상수 const 분할컴파일 순천향대학교컴퓨터학부이상정 2 전처리과정 전처리 (preprocessor) 전처리명령어는 # 기호로시작 #incldue #define 순천향대학교컴퓨터학부이상정 3 #include (1) 지정된파일을프로그램에삽입 꺽쇠괄호는포함할파일을컴파일러에설정되어있는특정디렉토리에서검색

More information

Microsoft PowerPoint 세션.ppt

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

More information

1

1 2/33 3/33 4/33 5/33 6/33 7/33 8/33 9/33 10/33 11/33 12/33 13/33 14/33 15/33 16/33 17/33 5) 입력을 다 했으면 확인 버튼을 클릭합니다. 6) 시작 페이지가 제대로 설정이 되었는지 살펴볼까요. 익스플로러를 종료하고 다시 실행시켜 보세요. 시작화면에 야후! 코리아 화면이 뜬다면 설정 완료..^^

More information

<342EBAAFBCF620B9D720B9D9C0CEB5F92E687770>

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

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

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

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

More information

Microsoft Word - src.doc

Microsoft Word - src.doc IPTV 서비스탐색및콘텐츠가이드 RI 시스템운용매뉴얼 목차 1. 서버설정방법... 5 1.1. 서비스탐색서버설정... 5 1.2. 컨텐츠가이드서버설정... 6 2. 서버운용방법... 7 2.1. 서비스탐색서버운용... 7 2.1.1. 서비스가이드서버실행... 7 2.1.2. 서비스가이드정보확인... 8 2.1.3. 서비스가이드정보추가... 9 2.1.4. 서비스가이드정보삭제...

More information

17장 클래스와 메소드

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

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

지난시간에... 우리는 kernel compile을위하여 cross compile 환경을구축했음. UBUNTU 12.04에서 arm-2009q3를사용하여 간단한 c source를빌드함. 한번은 intel CPU를위한 gcc로, 한번은 ARM CPU를위한 gcc로. AR

지난시간에... 우리는 kernel compile을위하여 cross compile 환경을구축했음. UBUNTU 12.04에서 arm-2009q3를사용하여 간단한 c source를빌드함. 한번은 intel CPU를위한 gcc로, 한번은 ARM CPU를위한 gcc로. AR Configure Kernel Build Environment And kernel & root file system Build 2018-09-27 VLSI Design Lab 1 지난시간에... 우리는 kernel compile을위하여 cross compile 환경을구축했음. UBUNTU 12.04에서 arm-2009q3를사용하여 간단한 c source를빌드함.

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Chapter 03 일단짜보는그럴듯한 C 프로그램... 1. 프로그램작성순서복습 2. 주석 3. scanf_s( ) 맛보기 1. 프로그램작성순서복습 프로그래밍작성순서요약 프로젝트만들기 : 소스파일보다프로젝트를먼저생성해야함 코딩 : C 컴파일러가알아들을수있는형식으로문서작성 빌드 : 컴파일과링크를합친개념 컴파일 : 소스를컴퓨터가이해하는오브젝트파일로변환 링크 :

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

11장 포인터

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

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

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Function) 1. 함수의개념 입력에대해적절한출력을발생시켜주는것 내가 ( 프로그래머 ) 작성한명령문을연산, 처리, 실행해주는부분 ( 모듈 ) 자체적으로실행되지않으며,

More information

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 함수 (function) 는특정작업을수행하는명령어들의모음에이름을붙인것 함수는작업에필요한데이터를전달받을수있으며, 작업이완료된후에는작업의결과를호출자에게반환할수있다. print() input() abs(), 함수안의명령어들을실행하려면함수를호출 (call) 하면된다. >>> value = abs(-100) >>> value 100 >>>def say_hello(name):

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

Microsoft PowerPoint - e pptx

Microsoft PowerPoint - e pptx Import/Export Data Using VBA Objectives Referencing Excel Cells in VBA Importing Data from Excel to VBA Using VBA to Modify Contents of Cells 새서브프로시저작성하기 프로시저실행하고결과확인하기 VBA 코드이해하기 Referencing Excel Cells

More information

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

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

More information

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

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

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

Microsoft PowerPoint 자바스크립트(1).pptx

Microsoft PowerPoint 자바스크립트(1).pptx 웹과인터넷활용및실습 () (Part I) 문양세강원대학교 IT 대학컴퓨터과학전공 강의내용 의기초의기본문법제어구조함수의내장객체브라우저내장객체를이용한다양한효과주기 Page 2 1 개요 사용자와상호작용하는동적웹문서작성웹에서사용할수있도록만들어진스크립트언어선마이크로시스템스와넷스케이프사가공동으로개발 주요특징 웹문서 (HTML 문서 ) 에포함되어웹서버에서브라우저로다운로드됨

More information

<4D F736F F F696E74202D20C1A633C0E52043C7C1B7CEB1D7B7A5B1B8BCBABFE4BCD2>

<4D F736F F F696E74202D20C1A633C0E52043C7C1B7CEB1D7B7A5B1B8BCBABFE4BCD2> 쉽게풀어쓴 C 언어 Express 제 3 장 C 프로그램구성요소 이번장에서학습할내용 * 주석 * 변수, 상수 * 함수 * 문장 * 출력함수 printf() * 입력함수 scanf() * 산술연산 * 대입연산 이번장에서는 C 프로그램을이루는구성요소들을살펴봅니다. 일반적인프로그램의형태 데이터를받아서 ( 입력단계 ), 데이터를처리한후에 ( 처리단계 ), 결과를화면에출력

More information

제 12강 함수수열의 평등수렴

제 12강 함수수열의 평등수렴 제 강함수수열의평등수렴 함수의수열과극한 정의 ( 점별수렴 ): 주어진집합 과각각의자연수 에대하여함수 f : 이있다고가정하자. 이때 을집합 에서로가는함수의수열이라고한다. 모든 x 에대하여 f 수열 f ( x) lim f ( x) 가성립할때함수수열 { f } 이집합 에서함수 f 로수렴한다고한다. 또 함수 f 을집합 에서의함수수열 { f } 의극한 ( 함수 ) 이라고한다.

More information

untitled

untitled 시스템소프트웨어 : 운영체제, 컴파일러, 어셈블러, 링커, 로더, 프로그래밍도구등 소프트웨어 응용소프트웨어 : 워드프로세서, 스프레드쉬트, 그래픽프로그램, 미디어재생기등 1 n ( x + x +... + ) 1 2 x n 00001111 10111111 01000101 11111000 00001111 10111111 01001101 11111000

More information

C++ Programming

C++ Programming C++ Programming 예외처리 Seo, Doo-okok clickseo@gmail.com http://www.clickseo.com 목 차 예외처리 2 예외처리 예외처리 C++ 의예외처리 예외클래스와객체 3 예외처리 예외를처리하지않는프로그램 int main() int a, b; cout > a >> b; cout

More information

이 장에서 사용되는 MATLAB 명령어들은 비교적 복잡하므로 MATLAB 창에서 명령어를 직접 입력하지 않고 확장자가 m 인 text 파일을 작성하여 실행을 한다

이 장에서 사용되는 MATLAB 명령어들은 비교적 복잡하므로 MATLAB 창에서 명령어를 직접 입력하지 않고 확장자가 m 인 text 파일을 작성하여 실행을 한다 이장에서사용되는 MATLAB 명령어들은비교적복잡하므로 MATLAB 창에서명령어를직접입력하지않고확장자가 m 인 text 파일을작성하여실행을한다. 즉, test.m 과같은 text 파일을만들어서 MATLAB 프로그램을작성한후실행을한다. 이와같이하면길고복잡한 MATLAB 프로그램을작성하여실행할수있고, 오류가발생하거나수정이필요한경우손쉽게수정하여실행할수있는장점이있으며,

More information

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

C 언어 프로그래밊 과제 풀이 과제풀이 (1) 홀수 / 짝수판정 (1) /* 20094123 홍길동 20100324 */ /* even_or_odd.c */ /* 정수를입력받아홀수인지짝수인지판정하는프로그램 */ int number; printf(" 정수를입력하시오 => "); scanf("%d", &number); 확인 주석문 가필요한이유 printf 와 scanf 쌍

More information

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

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

More information

Python과 함께 배우는 신호 해석 제 5 강. 복소수 연산 및 Python을 이용한 복소수 연산 (제 2 장. 복소수 기초)

Python과 함께 배우는 신호 해석 제 5 강. 복소수 연산 및 Python을 이용한 복소수 연산      (제 2 장. 복소수 기초) 제 5 강. 복소수연산및 을이용한복소수연산 ( 제 2 장. 복소수기초 ) 한림대학교전자공학과 한림대학교 제 5 강. 복소수연산및 을이용한복소수연산 1 배울내용 복소수의기본개념복소수의표현오일러 (Euler) 공식복소수의대수연산 1의 N 승근 한림대학교 제 5 강. 복소수연산및 을이용한복소수연산 2 복소수의 4 칙연산 복소수의덧셈과뺄셈에는직각좌표계표현을사용하고,

More information

06 세상을 변화시키는 연산자

06 세상을 변화시키는 연산자 Part 06 세상을변화시키는연산자 1 이장의내용 대입문도사실은수식이다 대입연산자의변형 증감연산자 조건연산자 괄호도연산자인가? 우선순위와결합순서정리 2 6.1 대입문도사실은수식이다 3 대입문 변수에값을대입시키는문장 a = a + 1; "a 와 a+1 이같다 " 는뜻이아니라 "a+1 값을변수 a 에저장하라 " 는뜻 대입문동작과정 대입문수행전에변수 a 에 20

More information

JAVA PROGRAMMING 실습 08.다형성

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

More information

Frama-C/JESSIS 사용법 소개

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

More information

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

PowerPoint Template

PowerPoint Template JavaScript 회원정보 입력양식만들기 HTML & JavaScript Contents 1. Form 객체 2. 일반적인입력양식 3. 선택입력양식 4. 회원정보입력양식만들기 2 Form 객체 Form 객체 입력양식의틀이되는 태그에접근할수있도록지원 Document 객체의하위에위치 속성들은모두 태그의속성들의정보에관련된것

More information

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

1. auto_ptr 다음프로그램의문제점은무엇인가? void func(void) int *p = new int; cout <<  양수입력 : ; cin >> *p; if (*p <= 0) cout <<  양수를입력해야합니다  << endl; return; 동적할 15 장기타주제들 auto_ptr 변환함수 cast 연산자에의한명시적형변환실행시간타입정보알아내기 (RTTI) C++ 프로그래밍입문 1. auto_ptr 다음프로그램의문제점은무엇인가? void func(void) int *p = new int; cout > *p; if (*p

More information

FGB-P 학번수학과권혁준 2008 년 5 월 19 일 Lemma 1 p 를 C([0, 1]) 에속하는음수가되지않는함수라하자. 이때 y C 2 (0, 1) C([0, 1]) 가미분방정식 y (t) + p(t)y(t) = 0, t (0, 1), y(0)

FGB-P 학번수학과권혁준 2008 년 5 월 19 일 Lemma 1 p 를 C([0, 1]) 에속하는음수가되지않는함수라하자. 이때 y C 2 (0, 1) C([0, 1]) 가미분방정식 y (t) + p(t)y(t) = 0, t (0, 1), y(0) FGB-P8-3 8 학번수학과권혁준 8 년 5 월 9 일 Lemma p 를 C[, ] 에속하는음수가되지않는함수라하자. 이때 y C, C[, ] 가미분방정식 y t + ptyt, t,, y y 을만족하는해라고하면, y 는, 에서연속적인이계도함수를가지게확 장될수있다. Proof y 은 y 의도함수이므로미적분학의기본정리에의하여, y 은 y 의어떤원시 함수와적분상수의합으로표시될수있다.

More information

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

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

More information

<C6F7C6AEB6F5B1B3C0E72E687770>

<C6F7C6AEB6F5B1B3C0E72E687770> 1-1. 포트란 언어의 역사 1 1-2. 포트란 언어의 실행 단계 1 1-3. 문제해결의 순서 2 1-4. Overview of Fortran 2 1-5. Use of Columns in Fortran 3 1-6. INTEGER, REAL, and CHARACTER Data Types 4 1-7. Arithmetic Expressions 4 1-8. 포트란에서의

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

제 3강 역함수의 미분과 로피탈의 정리

제 3강 역함수의 미분과 로피탈의 정리 제 3 강역함수의미분과로피탈의정리 역함수의미분 : 두실수 a b 와폐구갂 [ ab, ] 에서 -이고연속인함수 f 가 ( a, b) 미분가능하다고가정하자. 만일 f '( ) 0 이면역함수 f 은실수 f( ) 에서미분가능하고 ( f )'( f ( )) 이다. f '( ) 에서 증명 : 폐구갂 [ ab, ] 에서 -이고연속인함수 f 는증가함수이거나감소함수이다 (

More information

Microsoft PowerPoint - chap08-1 [호환 모드]

Microsoft PowerPoint - chap08-1 [호환 모드] 2011-1 학기프로그래밍입문 (1) 참고자료 : chapter 8-1. 전처리 박종혁 Tel: 970-6702 Email: jhpark1@seoultech.ac.kr h k 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- ehanbit.net 전처리명령어 컴파일과정에는전처리 (preprocessing) 단계가있다. - 컴파일러는목적파일을만들기전에전처리라고하는특별한작업을

More information

Chapter ...

Chapter ... Chapter 4 프로세서 (4.9절, 4.12절, 4.13절) Contents 4.1 소개 4.2 논리 설계 기초 4.3 데이터패스 설계 4.4 단순한 구현 방법 4.5 파이프라이닝 개요*** 4.6 파이프라이닝 데이터패스 및 제어*** 4.7 데이터 해저드: 포워딩 vs. 스톨링*** 4.8 제어 해저드*** 4.9 예외 처리*** 4.10 명령어 수준

More information

Microsoft PowerPoint - chap12-고급기능.pptx

Microsoft PowerPoint - chap12-고급기능.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

C# Programming Guide - Types

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

More information

<BFACBDC0B9AEC1A6C7AEC0CC5F F E687770>

<BFACBDC0B9AEC1A6C7AEC0CC5F F E687770> IT OOKOOK 87 이론, 실습, 시뮬레이션 디지털논리회로 ( 개정 3 판 ) (Problem Solutions of hapter 7) . 반감산기와전감산기를설계 반감산기반감산기는한비트의 2진수 에서 를빼는회로이며, 두수의차 (difference, ) 와빌림수 (barrow, ) 를계산하는뺄셈회로이다. 에서 를뺄수없으면윗자리에서빌려와빼야하며, 이때빌려오는수는윗자리에서가져오므로

More information

Flowchart 작성법

Flowchart 작성법 Flowchart 작성법 Flowchart 란? Algorithm 어떤문제를해결하기위해수행할작업을순서대로파악해서, 그순서에따라해결방법을결정하는방법 수학의문제해결방법으로사용할뿐만이아니라일상생활과일의경우에도무의식적으로사용 Flowchart Algorithm 을정해진기호를이용한그림으로표시하여시각적으로표현한것 2 Flowchart 란? Program Flowchart

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

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 (I) Contents 변수와상수 블록과변수의범위 수식과연산자 제어문과반복문 문자와문자열 배열, 포인터, 메모리관리 구조체 디버거 (gdb) 사용법 2/17 Reference The C Programming language, Brian W. Kernighan, Dennis M. Ritchie, Prentice-Hall

More information

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 제 5 장생성자와접근제어 1. 객체지향기법을이해한다. 2. 클래스를작성할수있다. 3. 클래스에서객체를생성할수있다. 4. 생성자를이용하여객체를초기화할수 있다. 5. 접근자와설정자를사용할수있다. 이번장에서만들어볼프로그램 생성자 생성자 (constructor) 는초기화를담당하는함수 생성자가필요한이유 #include using namespace

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

프로그래밍개론및실습 2015 년 2 학기프로그래밍개론및실습과목으로본내용은강의교재인생능출판사, 두근두근 C 언어수업, 천인국지음을발췌수정하였음

프로그래밍개론및실습 2015 년 2 학기프로그래밍개론및실습과목으로본내용은강의교재인생능출판사, 두근두근 C 언어수업, 천인국지음을발췌수정하였음 프로그래밍개론및실습 2015 년 2 학기프로그래밍개론및실습과목으로본내용은강의교재인생능출판사, 두근두근 C 언어수업, 천인국지음을발췌수정하였음 CHAPTER 9 둘중하나선택하기 관계연산자 두개의피연산자를비교하는연산자 결과값은참 (1) 아니면거짓 (0) x == y x 와 y 의값이같은지비교한다. 관계연산자 연산자 의미 x == y x와 y가같은가? x!= y

More information

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

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

와플-4년-2호-본문-15.ps

와플-4년-2호-본문-15.ps 1 2 1+2 + = = 1 1 1 +2 =(1+2)+& + *=+ = + 8 2 + = = =1 6 6 6 6 6 2 2 1 1 1 + =(1+)+& + *=+ =+1 = 2 6 1 21 1 + = + = = 1 1 1 + 1-1 1 1 + 6 6 0 1 + 1 + = = + 7 7 2 1 2 1 + =(+ )+& + *= + = 2-1 2 +2 9 9 2

More information

슬라이드 1

슬라이드 1 기초 PYTHON 프로그래밍 14. 함수 - 1 1. 함수 2. 파이썬내장함수 3. 사용자정의함수 4. 함수의인수와반환값 5. 함수의위치와 main 작성하기 1. 함수 블랙박스 (black box) 함수는입력과출력을갖는 black box이다. 주어진입력에대해서어떤과정을거쳐출력이나오는지가숨겨져있다. >>> print('hello world') Hello world

More information

슬라이드 1

슬라이드 1 UNIT 16 예외처리 로봇 SW 교육원 3 기 최상훈 학습목표 2 예외처리구문 try-catch-finally 문을사용핛수있다. 프로그램오류 3 프로그램오류의종류 컴파일에러 (compile-time error) : 컴파일실행시발생 럮타임에러 (runtime error) : 프로그램실행시발생 에러 (error) 프로그램코드에의해서해결될수없는심각핚오류 ex)

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

제이쿼리 (JQuery) 정의 자바스크립트함수를쉽게사용하기위해만든자바스크립트라이브러리. 웹페이지를즉석에서변경하는기능에특화된자바스크립트라이브러리. 사용법 $( 제이쿼리객체 ) 혹은 $( 엘리먼트 ) 참고 ) $() 이기호를제이쿼리래퍼라고한다. 즉, 제이쿼리를호출하는기호

제이쿼리 (JQuery) 정의 자바스크립트함수를쉽게사용하기위해만든자바스크립트라이브러리. 웹페이지를즉석에서변경하는기능에특화된자바스크립트라이브러리. 사용법 $( 제이쿼리객체 ) 혹은 $( 엘리먼트 ) 참고 ) $() 이기호를제이쿼리래퍼라고한다. 즉, 제이쿼리를호출하는기호 제이쿼리 () 정의 자바스크립트함수를쉽게사용하기위해만든자바스크립트라이브러리. 웹페이지를즉석에서변경하는기능에특화된자바스크립트라이브러리. 사용법 $( 제이쿼리객체 ) 혹은 $( 엘리먼트 ) 참고 ) $() 이기호를제이쿼리래퍼라고한다. 즉, 제이쿼리를호출하는기호 CSS와마찬가지로, 문서에존재하는여러엘리먼트를접근할수있다. 엘리먼트접근방법 $( 엘리먼트 ) : 일반적인접근방법

More information