게시판 인덱스

 
 FAQFAQ   검색검색   멤버리스트멤버리스트   사용자 그룹사용자 그룹   사용자 등록하기사용자 등록하기 
 개인 정보개인 정보   비공개 메시지를 확인하려면 로그인하십시오비공개 메시지를 확인하려면 로그인하십시오   로그인로그인 

숙제 3 변경사항 및 스펙 정리 (10/13 14:00 기준)

 
글 쓰기   답변 달기     게시판 인덱스 -> 4190.310 Programming Languages (Fall 2014)
이전 주제 보기 :: 다음 주제 보기  
글쓴이 메시지
강동옥



가입: 2009년 9월 18일
올린 글: 602

올리기올려짐: 2014년10월3일 16:00    주제: 숙제 3 변경사항 및 스펙 정리 (10/13 14:00 기준) 인용과 함께 답변

숙제 3에서의 질문/답변과 확정된 스펙을 모아놓은 게시글입니다.
이 글에 댓글로 질문을 하지 말아주세요. (질문은 게시판에 직접)

--

Exercise 1 "K- 실행기"

1) read semantics 구현은 read_int 를, write 는 print_int 를 사용합니다.
write 할 때 마지막에 print_endline 을 넣지 않습니다.

2) write 는 정수일 경우에만 출력하고, 그 외의 경우 예외를 냅니다.
의미 문서의 WRITE 부분에서 e => v 는 e => n 으로, write e => v 는 write e => n 으로 생각하시면 되겠습니다.

3) K.run 의 결과는 출력 대상이 아닙니다. 입출력은 read/write 로만 이루어집니다.

4) callv, callr 에서 부른 인자의 개수와 함수 인자의 개수가 다른 경우 예외를 냅니다. <strike>OCaml 표준 예외인 Invalid_argument 예외를 낼 것을 권장합니다. </strike>채점의 편의를 위해, 뼈대 코드의 Error 예외에 "Invalid_argument" 문자열을 인자로 사용하는 것으로 정하겠습니다. 즉 아래와 같이 하시면 됩니다.
코드:
raise (Error "Invalid_argument")

만약 Ocaml 표준 예외인 Invalid_argument 예외를 내는 코드를 작성하셔서 감점이 되더라도, 클레임해 주시면 일체의 불이익 없이 수정해 드리겠습니다.


5) K- 코드를 해석하는 도중 '정의되지 않은 의미'를 만나면 항상 예외를 냅니다. 따로 본 게시글에 예외 이름을 명시하지 않는 한 모두 뼈대 코드의 Error 예외를 낼 것을 권장합니다. 4)의 경우를 제외하고는, Error 예외의 문자열은 자유롭게 사용하시면
됩니다.

---

Exercise 2 "K-프로그래밍: 거스름 방법의 수"

1) 뼈대 코드에 제공된 파서 기준으로 코딩해주세요.
(참고:파서파일은 parser.mly입니다.)

2) numch 함수 작성 후 in 안에서 정수를 하나 입력으로 받고(input), numch(input) 을 출력하는 코드까지 작성해 주세요.
예를 들면, 아래와 같은 코드가 나올 수 있습니다.
코드:
let input := 0 in
let proc numch (x) = ... in (
  read input;
  write (numch(input))
)


3) numch 함수의 인자로는 양의 정수만 들어온다고 가정하셔도 됩니다.
(양의 정수 아닌 값이 인자로 들어올 경우 자유롭게 처리)

4) 우리나라에는 50원 동전이 있지만 본 숙제에서는 없는 것으로 간주하고 제외합니다.
(문제 스펙을 그대로 따라간다는 뜻)

--

Exercise 3 "K- 프로그래밍: compound data"

1) 뼈대 코드에 제공된 파서 기준으로 코딩해주세요.
(참고:파서파일은 parser.mly입니다.)

2) 구현해야 하는 모든 함수 작성 후 마지막을 in 으로 끝내주세요.
파싱 에러 나는 그대로 제출하시면 됩니다.

3) dft 함수를 작성할 때는 preorder 로 작성해 주세요.

4) bft 함수를 작성할 때는 왼편 자식 트리를 우선으로 계산합니다.
예를 들어, 아래 트리의 bft 순회 순서는 1->2->3 이 됩니다.
코드:
  1
 /  \
2    3


5) makeLtree/makeRtree처럼 한쪽에만 subtree를 가지고 있는 tree의 경우, 반대편에 empty tree가 매달려 있는 것으로 하겠습니다. 그리고 Empty tree가 나타나는 상황은 이것이 유일합니다. Leaf 양쪽에 빈 트리가 달려있다고 볼 수도 있겠지만, 이 과제에서는 그렇지 않은 것으로 정의합니다.

즉, 아래와 같은 결과가 나와야 합니다.
isEmpty(rTree(makeLtree (1, leaf (2)))) = true,
isEmpty(Ltree(makeRtree (1, leaf (2)))) = true

6) rTree/lTree의 인자로 empty tree나 leaf가 들어오는 경우의 예외처리, 그리고 nodeVal의 인자로 empty tree가 들어오는 경우의 예외처리는 테스트하지 않겠으니 자유롭게 구현하시면 됩니다.

7) Empty tree는 dft/bft 함수로 방문할 때 아무것도 출력하지 않으시면 됩니다.
--
위로
사용자 정보 보기 비밀 메시지 보내기
이전 글 표시:   
글 쓰기   답변 달기     게시판 인덱스 -> 4190.310 Programming Languages (Fall 2014) 시간대: GMT + 9 시간(한국)
페이지 11

 
건너뛰기:  
새로운 주제를 올릴 수 없습니다
답글을 올릴 수 없습니다
주제를 수정할 수 없습니다
올린 글을 삭제할 수 없습니다
투표를 할 수 없습니다


Powered by phpBB 2.0.21-7 (Debian) © 2001, 2005 phpBB Group
Translated by kss & drssay