게시판 인덱스

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

숙제 2 변경사항 및 스펙 정리 (9/22 10:40 기준)

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



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

올리기올려짐: 2013년9월17일 16:41    주제: 숙제 2 변경사항 및 스펙 정리 (9/22 10:40 기준) 인용과 함께 답변

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

--

Exercise 1 "Galculator"

- 계산 도중 묶여있지 않은 변수를 만날 경우 FreeVariable 예외를 냅니다.
아래 코드를 참고하시고 숙제 제출시 포함해 주세요.
코드:
exception FreeVariable


- 계산 식의 SIGMA, INTEGRAL 등의 의미는 우리가 수학적으로 알고 있는 그것과 동일합니다.
예를 들어, INTEGRAL 안에 상수 식이 있다면 우리가 잘 알고있는 적분 방법으로 계산하시면 됩니다.

- SIGMA, INTEGRAL 의 대상 인자인 튜플의 첫 두 인자는 모두 어떤 exp든 올 수 있습니다.
단, SIGMA의 경우 첫 두 인자를 계산한 결과가 실수(float)일 경우 이를 정수로 바꾸어 계산합니다.
실수 -> 정수 변환에는 OCaml 내장 함수인 int_of_float 을 사용하도록 하겠습니다.

- INTEGRAL 계산시 시작과 끝 값의 차가 0.1 미만인 경우 0을 리턴합니다.

- INTEGRAL 계산시 구분구적법 형태로 계산하게 되는데, 이 때 고려하는 직사각형의 높이는 왼쪽 함수값을 기준으로 합니다.
즉, f 함수의 적분 계산시 구분구적법에서 구간 [a, b]를 만나면 해당하는 직사각형의 높이는 f(a) 가 됩니다.

- OCaml floating-point arithmetic 의 불확실성에 의해 발생할 수 있는 계산 오차는 무시하셔도 됩니다.
(예를 들어, 1.1 -. 1.0 > 0.1 식이 true 가 리턴되는 현상)
계산 값이 실수일 경우 오차 범위를 주는 식으로 채점할 예정이며, 테스트 케이스 또한 논란의 여지가 없는 식을 사용할 예정입니다.

- 변수로 주어지는 X는 항상 변수를 감싸고 있는 가장 안쪽의 SIGMA 또는 INTEGRAL 에 묶이는 것으로 합니다.
가장 안쪽의 어떤 SIGMA, INTEGRAL 도 없다면 FreeVariable 예외를 내시면 됩니다.

- SIGMA 계산시 n = a to b 라 할 때 a > b 인 경우 0을 리턴하도록 합니다.

- floating-point, integer arithmetic 은 OCaml 의 그것을 그대로 사용하도록 합니다.
float 의 infinity/neg_infinity/nan 을 그대로 계산에 사용하며,
정수에서의 Division_by_zero 예외도 따로 처리 하지 않고 그대로 예외를 내시면 됩니다.
단, 정수의 사칙연산을 사용할지 실수의 사칙연산을 사용할지는 자유롭게 의미를 주시고 선택하시면 됩니다.
채점시 혼란의 여지가 있을 수 있는 테스트 케이스는 사용하지 않겠습니다.


--

Exercise 2 "Mathemadiga"

- SUM 혹은 TIMES 의 인자로 빈 리스트가 들어올 경우 InvalidArgument 예외를 냅니다.
아래 코드를 참고하시고, 숙제 제출시 포함해 주세요.
코드:
exception InvalidArgument


--

Exercise 3 "Queue = 2 Stacks"

- 어떤 코드를 작성해야 하는지에 대해서: 숙제의 템플릿을 그대로 따라가는 IntListQ 모듈을 구현하는 것으로 하겠습니다.
숙제에는 module IntListQ 뒤에 Queue 타입인지를 확인하는 ": Queue" 가 없음에 유의해 주세요.

구현하신 IntListQ 가 Queue 타입인지를 확인하려면 아래 코드가 정상적으로 해석되는지 보면 됩니다.
제출하실때는 물론 아래 코드는 제거하셔야 하고요. (Queue signature는 코드에 포함)
코드:
module ValidIntListQ = (IntListQ: Queue)


위의 코드를 통해 조교팀에서도 IntListQ 가 충실하게 구현되었는지 확인할 예정입니다.

--

Exercise 4 "계산 실행"

- 숙제 pdf 오타 수정
1) 아래 코드의 env 를 environment 로 수정.
코드:
val eval: env * expr -> value

2) 예제의 1, 2 등의 숫자를 모두 NUM 1, NUM 2 등으로 수정.

- 뼈대 코드가 제공되어 있습니다. 링크 들어가서 꼭 확인해주세요. (https://ropas.snu.ac.kr/phpbb/viewtopic.php?t=3796)
1) 뼈대 코드에는 구현해야 할 함수가 하나 더 추가되어 있습니다. (int_of_value)
2) 숙제 문서에 있는 "최종 값을 프린트하고..."는 위의 int_of_value 함수를 구현하는 것으로 대체합니다.

- Error 예외 문자열을 다음과 같이 구분합니다.
1) 현재 환경에서 정의되지 않은 이름이 사용될 때 : "FreeVariable"

--
위로
사용자 정보 보기 비밀 메시지 보내기
이전 글 표시:   
글 쓰기   답변 달기     게시판 인덱스 -> 4190.310 Programming Languages (Fall 2013) 시간대: GMT + 9 시간(한국)
페이지 11

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


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