2013-08-08 4 views
5

일부 오래된 qbasic 코드를 작업하고 있습니다. 모든 고토 (Goto) 진술을 망친 것입니다. 다음 줄을 항상 반환하는 것이 맞습니까?빠른 기본 결장 선 분리 자

IF FLAG = 0 THEN TARGET = X: GOSUB 55000: TEMP = XI - TEMP2: RETURN 

이렇게 정확하게 이해하면 콜론이 같은 줄에있는 문장을 구분합니다. if은 TARGET = X에만 해당됩니다. GOSUB, TEMP = 및 RETURN은 항상 실행됩니다. 옳은? 바로 다음 줄을

IF FLAG = 1 THEN STEP = X: GOSUB 115000 

을 읽고 두 번째 문에 레이블이 GOTO에 사용되지 않습니다 때문에 나는 그것이 모두 실행한다고 볼 수 없기 때문에 내 혼란의

부분이다.

+1

"Nibbles"또는 "Gorilla"입니까? –

+0

@JoeEnos 아니요. 그것은 오래된 IEEE 코드입니다. –

+0

적어도 PL/I는 아닙니다. ['if then then then else; else else = if;'] (http://wiki.tcl.tk/14057?redir=13395). 현대 언어는 이유로 키워드를 예약했습니다 ... ;-) –

답변

5

예, 귀하의 평가가 정확하다고 생각합니다. 콜론은 동일한 행에 여러 명령문을 사용할 수있게하는 명령문 분리 기호입니다. 당신의 서브 루틴이 55000 반환한다고 가정하면,이 줄 또한 반환되어야합니다.

내가 잘못되었습니다. qb64.net 만 인쇄 End of program

if 1=2 then print "Never printed" : print "how about this?" 
print "End of program" 

:이 프로그램을 실행합니다. 나는 문법의 세부 사항이 리버스 엔지니어링 된 노력이지만 Qbasic과 동일하다고 가정합니다.

이 코드는 GOSUB 및 행 번호를 사용하여 사전 QBasic 스타일로 작성됩니다. QBasic (remline.bas, 저는 그것이 호출되었다고 생각합니다)과 함께 제공되는 스크립트는 이러한 종류의 프로그램을 새로운 스타일로 번역하는 것을 돕기로되어 있습니다. 나는 그것을 사용하지 않았다.

+0

고마워요. 나는 스파게티 코드보다 나쁜 것은 스파게티 코드가 잘못 작성되었다고 말해야 만합니다. –

+0

나는 내 가정이 잘못되었다고 말하는이 링크를 발견했습니다. http://stackoverflow.com/questions/367325/vb-net-if-statement-and-the-colon –

+0

음, 방금 [qb64.net] (http://qb64.net)에서 테스트했는데, 분명히 지금 구현에 대한 온라인 인터페이스가 있고, 내가 틀렸다는 것이 밝혀졌습니다. 내 답변을 편집 할 수 있도록 알려 주셔서 감사합니다 :). – Troy