| 이전 주제 보기 :: 다음 주제 보기 |
| 글쓴이 |
메시지 |
최민아
가입: 2009년 9월 28일 올린 글: 236
|
올려짐: 2009년11월14일 21:18 주제: 5-1 질문입니다 |
|
|
CHOICE의 경우 둘 중 하나를 선택해 실행한다고 되어 있는데
둘 중 아무거나 임의로 실행하면 되는 건가요?
그렇다면 항상 첫 번째 cmd만 실행해도 되나요?
이렇게 된다면 실행 결과 리스트가 항상 같지 않을 것 같은데..
제가 잘못 이해하고 있는 것 같은데 잘 모르겠습니다.
REPEAT의 경우
x := 1; ((x eq 1? x := x+1) U (x neq 1? x := x-1))*
이런 경우 가능한 상태가 [1, 2]라고 되어 있는데
만약 U에 대해 항상 앞의 cmd만 실행한다고 하면
원래 처음의 상태는 1이고,
처음 실행할 때는 x가 1이니 x가 1 증가되어 상태가 2가 되고,
다시 실행하면 x가 2니까 x eq 1?이 참이 아니라서 x := x+1을 실행하지 않고
끝나는 건가요?
그런데 *를 끝내는 조건은 나와있지 않은 것 같아 상태가 -5 미만, 5를 초과하는
값이 되었을 때만 끝난다고 받아들였는데..
제가 전체적으로 잘 이해하고 있지 못한 것 같습니다. ㅜㅜ
설명해 주시면 감사하겠습니다. |
|
| 위로 |
|
 |
최종욱
가입: 2009년 9월 15일 올린 글: 84
|
올려짐: 2009년11월14일 21:42 주제: |
|
|
문제나 게시판을 잘 읽어보시면 해결하실 수 있는 질문인데...
https://ropas.snu.ac.kr/phpbb/viewtopic.php?t=1957 를 참조하세요.
말씀해주신 예제에서 끝내는 조건이 나와있지 않지만 '가능한 종료 상태'의 집합은 [1; 2] 가 됩니다.
왜냐면 REPEAT를 0번 하는 경우 -> 1
1번 하는 경우 -> 2
2번 하는 경우 -> 1
...
니까 임의의 자연수 n에 대해 n번 반복해도 그 값은 1 또는 2겠지요. _________________ Jongwook Choi
Seoul National University, School of Computer Science & Engineering |
|
| 위로 |
|
 |
blindblue
가입: 2009년 11월 14일 올린 글: 5
|
올려짐: 2009년11월14일 21:42 주제: |
|
|
결국 구현해야 하는 건 싹쓸이 이므로 모든 가능한 경우를 다 상정해야 합니다.
x := 1; ((x eq 1? x := x+1) U (x neq 1? x := x-1))*
즉 여기서는 (x eq 1? x := x+1) 여기에서도 x=1이 대입 되서 문제를 풀어야 하고 (x neq 1? x := x-1))* 여기에서도 x=1이 대입 되어야 한다는 거죠.
즉 x=1이므로 첫번째에서는 2라는 값이 나오고, 두번째 에서는 안의 cmd가 실행이 되지 않고 기존 값이였던 1이 나오는 것입니다.
수고하세요~[/tex] |
|
| 위로 |
|
 |
최민아
가입: 2009년 9월 28일 올린 글: 236
|
올려짐: 2009년11월14일 22:27 주제: |
|
|
제가 게시판을 제대로 읽어보지 않았었네요 ~^^;;
감사합니다~~ |
|
| 위로 |
|
 |
|