การเขียนโปรแกรมภาษาแรกที่ผมได้สัมผัสกับเป็นซินแคลขั้นพื้นฐาน เช่นเดียวกับภาษาขั้นพื้นฐานจำนวนมากก็ต้องใช้ทุกสายรหัสที่มาเป็นเลข
ด้วยเหตุนี้การใช้GO TOคำสั่งจึงเป็นไปตามสำนวนและการดำเนินการข้ามไปยังหมายเลขบรรทัดที่กำหนด (ไม่มีป้ายกำกับ)
นอกจากนี้ยังมีGO SUBคำสั่งที่เกี่ยวข้องซึ่งสามารถใช้เป็นการเรียกใช้ฟังก์ชันพื้นฐาน อีกครั้งการดำเนินการกระโดดไปหมายเลขบรรทัดที่กำหนด แต่เมื่อมีคำสั่งถึงการดำเนินการกระโดดกลับไปสอนต่อไปหลังจากที่RETURNGO 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 ขั้นพื้นฐานหรือ 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แต่สิ่งนี้ดูเหมือนจะเป็นลิงก์ที่ตายแล้ว เครื่อง Wayback มีสำเนาแม้ว่า
GOTO 100 + A*10และภาคผนวก C ของคู่มือ ZX สเปกตรัมรายการGO TOเป็นยอมรับการแสดงออกเชิงตัวเลข (ไม่มีข้อ จำกัด ที่จะคงที่) นี่คือการอภิปรายเกี่ยวกับข้อดีของการคำนวณGOTOบน ZX80 และ ZX81 BTW ฉันไม่รู้ว่าทำไมพื้นที่เพิ่มเข้ามาในรุ่น Spectrum