 |
|
| 이전 주제 보기 :: 다음 주제 보기 |
| 글쓴이 |
메시지 |
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 주제: |
|
|
작년 게시판을 살펴보면 예제가 몇개 더 있는것 같습니다  |
|
| 위로 |
|
 |
윤용호
가입: 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)이 맞습니다.
(수정했어요) |
|
| 위로 |
|
 |
|
|
새로운 주제를 올릴 수 없습니다 답글을 올릴 수 없습니다 주제를 수정할 수 없습니다 올린 글을 삭제할 수 없습니다 투표를 할 수 없습니다
|
Powered by phpBB 2.0.21-7 (Debian) © 2001, 2005 phpBB Group Translated by kss & drssay
|