আমি প্রথম প্রোগ্রামিং ভাষার মুখোমুখি হয়েছিলাম সিনক্লেয়ার বেসিক । অনেক বেসিক উপভাষার মতো এটির জন্য সমস্ত উত্স কোড লাইন গণনা করা প্রয়োজন ।
ফলস্বরূপ, GO TOকমান্ডটি ব্যবহারটি অহংকারমূলক ছিল এবং প্রদত্ত লাইন নম্বরটিতে কার্যকর করা লাফ দেয় (কোনও লেবেল নেই)।
এছাড়াও একটি সম্পর্কিত GO SUBকমান্ড রয়েছে যা প্রাথমিক ফাংশন কল হিসাবে ব্যবহার করা যেতে পারে। আবার, ফাঁসি দেওয়া লাইন নম্বরে জাম্প, কিন্তু যখন একটি RETURNকমান্ড এসে যাবে, ফাঁসি পর পরবর্তী নির্দেশ ফিরে জাম্প GO SUB।
একইভাবে RUNকমান্ড প্রদত্ত লাইনে প্রোগ্রামের প্রয়োগ পুনরায় আরম্ভ করবে।
যে কেউ যে কোনও সময় লাইন সংখ্যাযুক্ত বেসিক ইন্টারপ্রেটারে ব্যয় করেছে সে ফাঁক দিয়ে একটি নম্বর স্কিম ব্যবহার করতে শিখবে। এটি তাই কোডের নতুন লাইনগুলি সন্নিবেশ করা সহজ। তবুও, আপনি এখনও নিজেকে ক্রমাগত সংখ্যাযুক্ত রেখার মধ্যে নতুন লাইন সন্নিবেশ করানোর প্রয়োজন মনে করতে পারেন।
ইনপুট হিসাবে একটি লাইন-সংখ্যাযুক্ত বেসিক তালিকা দেওয়া, একই প্রোগ্রামটি আউটপুট করে তবে এমনটি পুনর্নবীকরণ করা হয়েছে যে লাইন সংখ্যাগুলি 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 লাইনের বেশি হবে না।
ইনপুট লাইনগুলি সর্বদা সংখ্যায় আরোহণের ক্রমে গণনা করা হবে।
এই চ্যালেঞ্জের উদ্দেশ্যে, ইনপুট তালিকাগুলিতে কেবল প্রিন্টযোগ্য এএসসিআইআই থাকবে। জেডএক্স অক্ষর সেট সম্পর্কে আপনাকে চিন্তা করার দরকার নেই। যে বলেন, যদি আপনার এন্ট্রি আসলে ZX বেসিক লেখা আছে বা সমাবেশ মেশিন কোড Z80 যথাযথ / (এবং আছে emulators আউট সেখানে ), তারপর আপনার জন্য আপনার ইনপুটে এনকোড করা চয়ন করতে পারেন 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"
আমি একটি জেডএক্স বেসিক ম্যানুয়ালটিতে লিঙ্ক করতে চেয়েছিলাম। আমি যে সবচেয়ে ভাল খুঁজে পেতে পারি তা হ'ল http://www.worldofspectrum.org/ZXBasicManual/index.html তবে এটি একটি মৃত লিঙ্ক বলে মনে হচ্ছে। ওয়েবব্যাক মেশিনটির একটি অনুলিপি রয়েছে ।
GOTO 100 + A*10 এবং জেডএক্স স্পেকট্রামের ম্যানুয়াল তালিকার পরিশিষ্ট সিGO TO একটি সংখ্যাসূচক প্রকাশটি স্বীকার করার জন্য (ধ্রুবকের কোনও বাধা নেই) অনুমতি দেয়। এখানে জেডএক্স 80 এবং জেডএক্স 81 তে গণিতের গুণাবলীর আলোচনা রয়েছে GOTO। বিটিডাব্লু, স্পেকট্রাম সংস্করণে স্থানটি কেন যুক্ত করা হয়েছিল তা আমার কোনও ধারণা নেই।