게시판 인덱스

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

숙제2 관련 모든 공지사항 모음입니다. 자주 확인해 주세요.

 
이 게시판은 잠겼으므로 글을 올리거나, 답변을 하거나 수정을 할 수 없습니다   이 주제는 잠겼으므로 답변을 하거나 수정을 할 수 없습니다     게시판 인덱스 -> 4190.210 Principles of Programming (Fall 2009)
이전 주제 보기 :: 다음 주제 보기  
글쓴이 메시지
장수원



가입: 2008년 9월 26일
올린 글: 167

올리기올려짐: 2009년9월23일 13:34    주제: 숙제2 관련 모든 공지사항 모음입니다. 자주 확인해 주세요. 인용과 함께 답변

숙제2 관련 모든 공지사항을 앞으로 이 글타래에 올리겠습니다.

자주 확인해 주세요.

  • 3번의 함수
    코드:
    not, and, or
    이름을,
    코드:
    cnot, cand, cor
    로 각각 바꿔주세요.


장수원 가 2009년10월6일 9:40에 수정함, 총 1 번 수정됨
위로
사용자 정보 보기 비밀 메시지 보내기
이우석



가입: 2007년 9월 26일
올린 글: 72

올리기올려짐: 2009년9월23일 14:27    주제: 숙제 2번의 의도 인용과 함께 답변

여러분들에게 이번숙제의 의도를 말씀드려야 할 것 같습니다. 숙제2번의 의도는 '요약'을 몸에 익히는 것입니다.

요약이란 만드는 쪽과 쓰는 쪽을 둘로 나누어 생각하는 것을 말합니다. 무엇을 만들고 쓰느냐에서 무엇은 프로시저도 될 수 있고 데이터도 될 수 있습니다. 첫번째 숙제에서 프로시저 요약을 익혔다면 이번숙제에서는 데이터요약을 몸에 익히시게 될겁니다.

함수나 데이터를 만들고 쓰는 쪽 둘로 나누어 생각할 때, 둘 사이에 요약의 경계를 그을 수 있습니다. 이것은 요약을 할때 지켜야할 가장 중요한 성질입니다. 요약의 경계란 무엇이냐하면, 예를들어 다음과 같이 유리수를 만드는 함수, 유리수의 분자 분모를 꺼내오는 함수를 정의한다고 할 때,

코드:

(define (make-rat n d) (cons n d))

(define (numer x) (car x))

(define (denom x) (cdr x))


이 함수들을 이용해서 유리수 사칙연산을 하는 함수들도 마찬가지로 정의할 수 있을겁니다. 근데 이런 함수들을 정의할 때, 유리수가 쌍으로 구현되어있다고 해서 분자 분모를 꺼낼때 numer, denom 대신 car, cdr 를 쓰면 요약의 경계가 깨지게 됩니다. 만약 다른 이유로 유리수를 쌍이 아닌 함수를 이용해 구현해서 위의 세 함수 정의가 바뀌게 된다면, 위의 세 함수를 쓰지 않고 car나 cdr 를 쓴 함수들은 작동하지 않게 되겠죠.

즉 요약해서 말하자면, 요약의 경계를 잘 지킨다는것은 경계면에 쓰라고 내놓은 것들만 쓰는 것을 말합니다. 경계면 안쪽이 무엇으로 되어있는지, 잘되는지는 고려하지 않습니다. 이렇게 함으로써 프로그래밍할 때 복잡성을 컨트롤할 수 있고, 설계를 용이하게 하는 등등의 이점이 있습니다 (더 자세한것은 수업시간에 교수님께서 설명해 주실것입니다.)

이번숙제의 의도는 요약의 경계를 지키는 습관을 익히는 것이기 때문에 만약 요약의 경계를 지키지 않는다면 (예를들어, 1번 숙제에서 정의한 함수만을 써서 2번 3번을 하지 않고, 2,3번 문제에서 1번 숙제의 내부 구현과 관련된 것을 쓸 경우) 해당 문제 점수의 30% 를 감점하게 될 것입니다.

그리고, 미로문제에서 maze-check 를 제외한 나머지 6개 함수들의 정의를 올려달라고 요청하시거나, 테스트셋과 함께 정의를 올려도 되겠냐고 물어보신 분들이 있는데요. 이에 대한 대답은 '아니오' 입니다. 왜냐하면 숙제문서에서

인용:

위의 함수(maze-check)를 구현할 때에는 미로가 어떻게 구현되었는지, 집합은 어떻게 구현되엇는지 알지못하는 상태에서 다음의 함수들을 써서 구현할 수 있다.


고 나와있는 부분은 요약의 경계를 지키라는 의도에서 나와있는 부분이지 이 6개의 함수들을 구현하지 않아도 된다는 것은 아니기 때문입니다. 구현은 각자 스스로 해보세요. 물론 이 문제에 대해서도 요약의 경계가 잘 지켜지는지 보고 그렇지 않으면 감점을 할 것입니다.

제가 여기 쓴 글은 교재 2.1 장을 참조한 것입니다. 요약에 대해 더 자세히 알고 싶으시면 교재에서 해당 부분을 읽어보세요.
위로
사용자 정보 보기 비밀 메시지 보내기
장수원



가입: 2008년 9월 26일
올린 글: 167

올리기올려짐: 2009년9월28일 14:27    주제: 인용과 함께 답변

코드:

(is-not?)
(is-and?)
(is-or?)


는 숙제 문서에 있는 이름 그대로를 사용합니다. (is-cnot? 등으로 바꾸지 않겠습니다.)
위로
사용자 정보 보기 비밀 메시지 보내기
장수원



가입: 2008년 9월 26일
올린 글: 167

올리기올려짐: 2009년9월28일 19:43    주제: 인용과 함께 답변

숙제 상의 는 모두 pair가 아닌, 인자 2개인 것으로 하겠습니다.

예컨데, Ex2의 함수



에서 make-branch는 각각 nat 타입과 branch 타입을 가지는 2개의 인자를 받는 함수입니다.
위로
사용자 정보 보기 비밀 메시지 보내기
이전 글 표시:   
이 게시판은 잠겼으므로 글을 올리거나, 답변을 하거나 수정을 할 수 없습니다   이 주제는 잠겼으므로 답변을 하거나 수정을 할 수 없습니다     게시판 인덱스 -> 4190.210 Principles of Programming (Fall 2009) 시간대: GMT + 9 시간(한국)
페이지 11

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


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