게시판 인덱스

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

숙제3 입출력 예제 하나만 올려주실 수 있나요! somebody help me!

 
이 게시판은 잠겼으므로 글을 올리거나, 답변을 하거나 수정을 할 수 없습니다   이 주제는 잠겼으므로 답변을 하거나 수정을 할 수 없습니다     게시판 인덱스 -> 4190.310 Programming Languages (Fall 2008)
이전 주제 보기 :: 다음 주제 보기  
글쓴이 메시지
shinsanghyup
손님





올리기올려짐: 2008년10월3일 18:18    주제: 숙제3 입출력 예제 하나만 올려주실 수 있나요! somebody help me! 인용과 함께 답변

누군가 입출력 예제좀 올려주세요
위로
최원태



가입: 2006년 9월 16일
올린 글: 369

올리기올려짐: 2008년10월4일 13:44    주제: 인용과 함께 답변

코드:

(* factorial.k-- *)

let x := 1 in
let y := 0 in
let z := 0 in

read y;
for z := 1 to y do (
     x := x * z
);
write x

K--로 작성한 프로그램의 예제입니다.

이것을 파서에 넣으면 다음과 같은 파스트리가 생겨납니다.
(run -pp로 실행시켜보면 출력해서 볼 수 있습니다.)

코드:
LETV("x",NUM(1),
LETV("y",NUM(0),
LETV("z",NUM(0),
    SEQ(
    SEQ(
        READ("y"),
        FOR("z",NUM(1),VAR("y"),
             ASSIGN("x",MUL(VAR("x"),VAR("z"))))),
        WRITE(VAR("x"))))))


뼈대는 이 결과를 여러분이 만든 K-- 인터프리터에
emptyMemry, emptyEnvironment와 함께 넘겨주고 실행하겠지요.
이것을 인터프리터에서 실행하면
하나의 정수를 입력받고 그것의 factorial을 계산해 출력해줍니다.

코드:
wtchoi@localhost:~/pl/3$ ./run examples/factorial.k--
10
3628800


인터프리터의 입력은 AST이고 출력은 실행 자체와 실행결과값입니다.
(위의 경우에는 Num(3628800)이 인터프리터의 실행결과값이겠죠겠죠)
그리고 인터프리터가 실행하면서 중간에 콘솔에서 입력을 받고 출력을 내고 할 것입니다.
이것은 k-- 프로그램의 입출력이죠.


최원태 가 2008년10월4일 21:03에 수정함, 총 1 번 수정됨
위로
사용자 정보 보기 비밀 메시지 보내기 이메일 보내기 글 올린이의 웹사이트 방문
06김주성



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

올리기올려짐: 2008년10월4일 15:00    주제: 인용과 함께 답변

작년 게시판을 살펴보면 예제가 몇개 더 있는것 같습니다 Smile
위로
사용자 정보 보기 비밀 메시지 보내기
윤용호



가입: 2008년 9월 23일
올린 글: 257

올리기올려짐: 2008년10월4일 16:42    주제: 인용과 함께 답변

최원태 씀:
[code]

[code]LETV("x",NUM(1),
LETV("y",NUM(0),
LETV("z",NUM(0),
SEQ(
SEQ(
READ("y"),
FOR("z",NUM(1),VAR("y"),
ASSIGN("x",MUL(VAR("x"),VAR("z"))))),
WRITE(VAR("x"))))))[/code]

뼈대는 이 결과를 여러분이 만든 K-- 인터프리터에
emptyMemry, emptyEnvironment와 함께 넘겨주고 실행하겠지요.
이것을 인터프리터에서 실행하면
하나의 정수를 입력받고 그것의 factorial을 계산해 출력해줍니다.

[code]wtchoi@localhost:~/pl/3$ ./run examples/factorial.k--
10
3628800[/code]

인터프리터의 입력은 AST이고 출력은 실행 자체와 실행결과값입니다.
(위의 경우에는 Num(1)이 인터프리터의 실행결과값이겠죠겠죠)


여기서 왜 결과가 Num(1)이 되는지 모르겠습니다.
let 의 value는 in 뒷부분의 value가 되고
seq의 value는 두번째 expression의 value가 되고
write의 value는 출력한 수가 되니까
실행 결과값은 팩토리얼 연산결과가 아닌지요? (Num(3628800)이 되어야 할 것 같습니다)
설명해 주실분이 있나요 'ㅡ'?
위로
사용자 정보 보기 비밀 메시지 보내기
06김주성



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

올리기올려짐: 2008년10월4일 17:01    주제: ㅜㅜ 인용과 함께 답변

저도 Num(3628800)가 맞는거 같습니다

책 79페이지 LETV의 정의에 보면

LET id E1 E2 의 값은 E2가 실행된 후의 value인 것으로 정의가 되어있습니다

그러니 최종적으로는 Num(3628800)가 될것같습니다
위로
사용자 정보 보기 비밀 메시지 보내기
최원태



가입: 2006년 9월 16일
올린 글: 369

올리기올려짐: 2008년10월4일 21:04    주제: 인용과 함께 답변

글을 쓰고 탈고를 제대로 안하면 이렇게 되는군요ㅠㅠ
두분이 지적한데로 Num(3628800)이 맞습니다.
(수정했어요)
위로
사용자 정보 보기 비밀 메시지 보내기 이메일 보내기 글 올린이의 웹사이트 방문
이전 글 표시:   
이 게시판은 잠겼으므로 글을 올리거나, 답변을 하거나 수정을 할 수 없습니다   이 주제는 잠겼으므로 답변을 하거나 수정을 할 수 없습니다     게시판 인덱스 -> 4190.310 Programming Languages (Fall 2008) 시간대: GMT + 9 시간(한국)
페이지 11

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


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