제가 처음 접한 프로그래밍 언어는 Sinclair BASIC 입니다. 많은 BASIC 방언과 마찬가지로 모든 소스 코드 행에 번호를 매겨 야 합니다.
결과적 GO TO으로이 명령의 사용은 관용적이며 지정된 줄 번호 (라벨 없음)로 실행을 이동합니다.
또한 GO SUB기본적인 함수 호출로 사용할 수 있는 관련 명령이 있습니다. 다시 한 번 실행은 주어진 행 번호로 이동하지만 RETURN명령에 도달하면 실행은 다음에 나오는 다음 명령으로 다시 이동합니다 GO SUB.
마찬가지로 RUN명령은 주어진 행에서 프로그램 실행을 다시 시작합니다.
줄 번호가 매겨진 BASIC 통역사에서 시간을 보낸 사람은 번호가 매겨진 번호 매기기 체계를 사용하는 법을 배웠을 것입니다. 따라서 새로운 코드 줄을 쉽게 삽입 할 수 있습니다. 그러나 그럼에도 불구하고 계속 번호가 매겨진 줄 사이에 새 줄을 삽입해야 할 수도 있습니다.
행 번호가 지정된 BASIC 목록을 입력으로 지정하면 동일한 프로그램을 출력하지만 행 번호가 10에서 시작하여 10 씩 단계적으로 증가하도록 번호를 다시 매겼습니다. 입력 목록에 명령 GO TO또는 GO SUB명령 이있을 수 있으므로 이와 관련된 숫자도 조정해야합니다.
GO TO및GO SUB명령은 자신의 라인 또는 말 중 하나입니다IFTHEN라인. 말에 그것의 안전은^(\d+) .*GO (TO|SUB) (\d+)$같은 라인과 일치하는 것으로 충분하다. 따옴표로 묶인 명령은 무시해야합니다.RUN명령은 항상 자체 줄에 있습니다. 이 경우 줄 번호는 선택 사항입니다. 누락 된 경우 통역사는 프로그램 상단에서 시작합니다.경우
GO TO,GO SUB또는RUN명령 참조 존재하지 않는 라인, 다음은 대신 다음 정의 된 라인으로 이동합니다. 입력시이 문제를 처리하고 해당 라인 참조가 올바른 라인을 가리 키도록 수정해야합니다. 프로그램 종료 후 행 번호가이 명령 중 하나에 제공되면 동작이 정의되지 않을 수 있습니다.줄 번호는 항상 양의 정수 1-9999입니다 (설명서에 따라). 이것은 입력 프로그램이 999 라인을 초과하지 않을 것임을 의미합니다.
입력 라인은 항상 숫자의 오름차순으로 번호가 매겨집니다.
이 문제를 해결하기 위해 입력 목록에는 인쇄 가능한 ASCII 만 포함됩니다. ZX 문자 집합에 대해 걱정할 필요가 없습니다. 실제로 항목이 ZX BASIC 또는 적절한 z80 어셈블리 / 기계 코드로 작성되고 ( 에뮬레이터 가있는 경우 ) 입력이 ZX 문자 세트 로 인코딩되도록 선택할 수 있습니다 .
이 목적에 맞게 조정 된 라이브러리 번호를 다시 매기는 라이브러리 나 유틸리티를 사용할 수 없습니다.
입력 예 :
1 REM "A rearranged guessing game"
2 INPUT A: CLS
3 INPUT "Guess the number ", B
10 IF A=B THEN PRINT "Correct": STOP
100 IF A<B THEN GO SUB 125
120 IF A>B THEN GO SUB 122
121 GO TO 3
125 PRINT "Try again"
126 RETURN
127 REM "An example of GO TO 7 and GO SUB 13 in quotes"
출력 예 :
10 REM "A rearranged guessing game"
20 INPUT A: CLS
30 INPUT "Guess the number ", B
40 IF A=B THEN PRINT "Correct": STOP
50 IF A<B THEN GO SUB 80
60 IF A>B THEN GO SUB 80
70 GO TO 30
80 PRINT "Try again"
90 RETURN
100 REM "An example of GO TO 7 and GO SUB 13 in quotes"
ZX BASIC 매뉴얼에 링크하고 싶었습니다. 내가 찾을 수있는 최선은 http://www.worldofspectrum.org/ZXBasicManual/index.html 인 것 같지만 이것은 죽은 링크 인 것 같습니다. 웨이 백 머신 에는 사본이 있습니다.
GOTO 100 + A*10 하고 ZX 스펙트럼 매뉴얼의 부록 C 리스트 GO TO숫자 식 (상수 제한 없음)를 받아들이고있다. 다음 은 ZX80 및 ZX81 에서 계산 된 장점에 대한 설명 입니다 GOTO. BTW, 왜 공간이 스펙트럼 버전에 추가되었는지 모르겠습니다.