이전 주제 보기 :: 다음 주제 보기 |
글쓴이 |
메시지 |
오민식
가입: 2012년 12월 19일 올린 글: 4
|
올려짐: 2012년12월20일 14:56 주제: 프로젝트3 질문입니다. |
|
|
무한루프여도 오류가 나지않으면 true라는 질문때문에 다시 질문드리는데요
제가 구현하려는 방식대로라면 적당한 루프길이만큼돌아도 에러가 없다면 트루를 리턴해야할텐데
만약 1000000번 루프를 돌고 루프를 빠져나와서 그다음에 에러가 생기는 경우가 cmd로 들어온다면 처리를 못할텐데 제가 접근하는 방식이다른걸까요 ㅠㅠ 아니면 적당히 루프길이가 제한되서 들어오나요??? |
|
위로 |
|
|
강동옥
가입: 2009년 9월 18일 올린 글: 602
|
올려짐: 2012년12월20일 15:11 주제: |
|
|
적당한 길이를 돌다가 아니다 싶으면 좀 확장하는 방법이 있습니다.
예를 들면 루프를 돌때마다 1 2 3 4 이렇게 계속 증가한다면
Positive 이렇게 만들어버릴 수 있겠지요.
-1000 -999 -998 ..이런식으로 증가할때 몇번 돌리다가 negative로 만들어버리면
다음번에는 0이 포함되어서 루프를 빠져나갈 수 있게 되죠.
물론 실제로는 0까지 계속 증가하는 프로그램이 아닌데 그렇다고 간주해 버린것일수도 있습니다. 그렇다면 에러가 나는게 아닌데 에러라고 말할 가능성도 있겠죠
하지만 꼭 긴 루프가 아니더라도 1 2 3 4 이와같이 계속 증가하는것은 무한루프를 돌텐데
어떤 시점에서 멈추도록 하려고 하셨나요? 어떤지점에서 어떻게 멈추면 좋을지를 고민해보세요. |
|
위로 |
|
|
오민식
가입: 2012년 12월 19일 올린 글: 4
|
올려짐: 2012년12월20일 15:20 주제: |
|
|
맨처음엔 적당히 n을 잡아서 n번반복되었을때 오류가 없으면 true라고 하려고 했는데요
만약 아니다 싶어서 확장을시켰는데
(
어쩌구저쩌구
루프
)
goto l on y;
say abs;
x는 100000부터 1씩감소하고
y는 300000부터 3씩감소해는 루프라고 하면 종료될때 x=0 y=0이 될텐데 abs라는 변수가 처음 보이는거라면에러가 나오는데요.
그럼 확장할때 그안에 있는 변수들 변화를 규칙찾아서 모두 예측을 해야하는건가요??? |
|
위로 |
|
|
강동옥
가입: 2009년 9월 18일 올린 글: 602
|
올려짐: 2012년12월20일 15:32 주제: |
|
|
아닙니다.
그런걸 그렇게 정확하게 예측하기는 쉽지 않습니다.
일단 큰수가 실행중에 변화한다면
무조건 일정하게 증가하거나 일정하게 감소하는 케이스만 테스트하겠습니다.
-10000 -9999 -9998 ...
10000 9999 9998 ... |
|
위로 |
|
|
오민식
가입: 2012년 12월 19일 올린 글: 4
|
올려짐: 2012년12월20일 15:57 주제: |
|
|
그럼 루프가 좀많이 돈다싶으면 1씩증가하거나 감소하며
goto on x 에쓰이는x말고는 다른변수가 변한다거나 하는건 생각하지않아도되는건가요??? |
|
위로 |
|
|
강동옥
가입: 2009년 9월 18일 올린 글: 602
|
올려짐: 2012년12월20일 16:17 주제: |
|
|
그건 아닙니다...
다른 변수도 변할 수 있습니다.
그냥 큰수에 대한 케이스를 공개하겠습니다.
코드: | (*분석은 유한시간이어야함, false*)
x has read ;
t has 1000000000;
y has x-t;
lp: say y;
s has 1;
y has y+s;
goto lp on y;
x has z+w;
say x |
강동옥 가 2012년12월20일 16:21에 수정함, 총 1 번 수정됨 |
|
위로 |
|
|
서석준
가입: 2012년 9월 13일 올린 글: 59
|
올려짐: 2012년12월20일 16:21 주제: 그런데 인덱스가 음수인 루프가 가능한가요?? |
|
|
인덱스 음수 루프가 어떡게 가능하죠....
repeat는 양수 인덱스만 받는거 아닌가요?? |
|
위로 |
|
|
강동옥
가입: 2009년 9월 18일 올린 글: 602
|
올려짐: 2012년12월20일 16:23 주제: |
|
|
cmd 인풋은 exp의 특징과 상관없이 넣을것입니다.
어차피 check_cmd는 transform이 잘못 변환했을때를 체킹하기 위한 함수입니다. |
|
위로 |
|
|
|