একটি নতুন প্রোগ্রামিং ভাষা শিখা মজার হতে পারে। যখনই আমি একটি নতুন ভাষা শিখতে চেষ্টা করি, আমি ভেরিয়েবল ডিফাইন করা, স্টেটমেন্ট লিখা, এবং এক্সপ্রেশন ইভ্যালুয়েট করার ওপর ফোকাস করি। একবার আমার সেই কনসেপ্টগুলোতে একটি জেনারেল আন্ডারস্ট্যান্ডিং হয়ে যায়, আমি সাধারণত বাকিগুলো নিজে নিজে ফিগার আউট করতে পারি। অধিকাংশ প্রোগ্রামিং ভাষার কিছু সাদৃশ্য থাকে, তাই একবার আপনি একটি প্রোগ্রামিং ভাষা জানলে, পরবর্তীটি শিখা কवल সেই ভাষার ইউনিক ডিটেইলস ফিগার আউট করার এবং পার্থক্যগুলো রিকগ্নাইজ করার বিষয়।
একটি নতুন প্রোগ্রামিং ভাষা প্র্যাকটিস করতে সাহায্য করতে, আমি কিছু টেস্ট প্রোগ্রাম লিখতে পছন্দ করি। আমি যা স্যাম্পল প্রোগ্রাম প্রায়শই লিখি সেটি হলো একটি সহজ "গেস দি নম্বর" প্রোগ্রাম, যেখানে কম্পিউটার এক থেকে ১০০ এর মধ্যে একটি নম্বর পিক করে এবং আমাকে নম্বরটি অনুমান করার জন্য বলে। প্রোগ্রামটি লুপ করে যতক্ষণ না আমি সঠিক অনুমান করি।
"গেস দি নম্বর" প্রোগ্রাম প্রোগ্রামিং ভাষার বেশ কিছু কনসেপ্ট এক্সারসাইজ করে: ভেরিয়েবলে ভ্যালু এসাইন করা কীভাবে, স্টেটমেন্ট লিখা কীভাবে, এবং কন্ডিশনাল ইভ্যালুয়েশন এবং লুপ পারফর্ম করা কীভাবে। এটি একটি নতুন প্রোগ্রামিং ভাষা শিখার জন্য একটি চমৎকার প্র্যাকটিক্যাল এক্সপেরিমেন্ট।
ব্যাশে গেস দি নম্বর
ব্যাশ অধিকাংশ লিনাক্স সিস্টেমের স্ট্যান্ডার্ড শেল। একটি সমৃদ্ধ কমান্ড-লাইন ইউজার ইন্টারফেস প্রদান করার পাশাপাশি, ব্যাশ স্ক্রিপ্ট-এর রূপে একটি সম্পূর্ণ প্রোগ্রামিং ভাষাও সমর্থন করে।
আপনি যদি ব্যাশের সাথে পরিচিত না হন, আমি এই ইন্ট্রোডাকশনগুলো রিকমেন্ড করি:
- ব্যাশ কী?
- ব্যাশ প্রোগ্রামিং শুরু করুন
- সিস্টেম অ্যাডমিনদের জন্য ব্যাশ স্ক্রিপ্টিং শুরু করুন
- ব্যাশে ফাংশন কীভাবে লিখবেন
- ব্যাশ সম্পর্কে আরও পড়ুন
আপনি "গেস দি নম্বর" গেমের একটি ভার্সন লিখে ব্যাশ এক্সপ্লোর করতে পারেন। এখানে আমার ইমপ্লিমেন্টেশন:
#!/bin/bash
number=$(( $RANDOM % 100 + 1 ))
echo "Guess a number between 1 and 100"
guess=0
while [ "0$guess" -ne $number ] ; do
read guess
[ "0$guess" -lt $number ] && echo "Too low"
[ "0$guess" -gt $number ] && echo "Too high"
done
echo "That's right!"
exit 0
স্ক্রিপ্টটি কী করে - ব্রেকডাউন
স্ক্রিপ্টের প্রথম লাইন, #!/bin/bash লিনাক্সকে বলে এই স্ক্রিপ্টটি ব্যাশ শেল ব্যবহার করে রান করবে। প্রতিটি স্ক্রিপ্ট #! ক্যারেক্টার পেয়ার দিয়ে শুরু হয়, যা ইন্ডিকেট করে এটি একটি শেল স্ক্রিপ্ট। #!-এর ঠিক পরেই শেলটি থাকে যা রান করবে। এই কেসে, /bin/bash হলো ব্যাশ শেল।
একটি ভেরিয়েবলে ভ্যালু এসাইন করতে, ভেরিয়েবলের নাম লিস্ট করুন তারপর = সাইন। উদাহরণস্বরূপ, স্টেটমেন্ট guess=0 guess ভেরিয়েবলে শূন্য ভ্যালু এসাইন করে।
আপনি ব্যবহারকারীকে একটি ভ্যালু লিখতে প্রম্পট করতে পারেন read স্টেটমেন্ট ব্যবহার করে। আপনি যদি read guess লিখেন, ব্যাশ ব্যবহারকারীর ইনপুটের জন্য অপেক্ষা করে তারপর সেই ভ্যালুটি guess ভেরিয়েবলে স্টোর করে।
একটি ভেরিয়েবলের ভ্যালু রেফারেন্স করতে, ভেরিয়েবল নামের আগে $ ব্যবহার করুন। তাই, guess ভেরিয়েবলে একটি ভ্যালু স্টোর করার পর, আপনি $guess ব্যবহার করে সেটি রিট্রিভ করতে পারেন।
আপনি ভেরিয়েবল যেকোনো নাম দিতে পারেন, কিন্তু ব্যাশ কিছু স্পেশাল ভেরিয়েবল নাম নিজের জন্য রিজার্ভড রাখে। একটি স্পেশাল ভেরিয়েবল হলো RANDOM, যা প্রতিবার আপনি এটি রেফারেন্স করলে একটি খুব বড় র্যান্ডম নম্বর জেনারেট করে।
আপনি যদি একটি অপারেশন পারফর্ম করতে চান একই সাথে ভ্যালু স্টোর করার সময়, আপনাকে স্টেটমেন্টটিকে স্পেশ্যাল ব্র্যাকেটে এনক্লোজ করতে হবে। এটি ব্যাশকে বলে সেটি প্রথমে সেই স্টেটমেন্টটি এক্সিকিউট করবে, এবং = ফলাফল ভ্যালুটি ভেরিয়েবলে স্টোর করবে। একটি ম্যাথমেটিক্যাল এক্সপ্রেশন ইভ্যালুয়েট করতে, আপনার স্টেটমেন্টের চারপাশে $(( )) ব্যবহার করুন। ডাবল প্যারেন্থেসিস একটি অ্যারিথমেটিক এক্সপ্রেশন ইন্ডিকেট করে। আমার উদাহরণে, number=$(( $RANDOM % 100 + 1 )) এক্সপ্রেশন $RANDOM % 100 + 1 ইভ্যালুয়েট করে এবং তারপর ফলাফল ভ্যালুটি number ভেরিয়েবলে স্টোর করে।
স্ট্যান্ডার্ড অ্যারিথমেটিক অপারেটর যেমন + (প্লাস), - (মাইনাস), * (মাল্টিপ্লাই), / (ডিভাইড), এবং % (মডুলো) প্রযোজ্য।
এর মানে স্টেটমেন্ট number=$(( $RANDOM % 100 + 1 )) এক থেকে ১০০ এর মধ্যে একটি র্যান্ডম নম্বর জেনারেট করে। মডুলো অপারেটর (%) দুটি নম্বর ভাগ করার পর রিমেইন্ডার রিটার্ন করে। এই কেসে, ব্যাশ একটি র্যান্ডম নম্বর ১০০ দিয়ে ভাগ করে, একটি রিমেইন্ডার রেখে যা শূন্য থেকে ৯৯ রেঞ্জে। সেটিতে এক যোগ করলে, আপনি এক থেকে ১০০ এর মধ্যে একটি র্যান্ডম নম্বর পান।
ব্যাশ কন্ডিশনাল এক্সপ্রেশন এবং ফ্লো কন্ট্রোল সাপোর্ট করে যেমন লুপ। "গেস দি নম্বর" গেমে, ব্যাশ লুপ চালিয়ে রাখে যতক্ষণ না guess-এ থাকা ভ্যালু number-এর সমান নয়। যদি অনুমানটি র্যান্ডম নম্বর থেকে কম হয়, ব্যাশ "Too low" প্রিন্ট করে, এবং যদি অনুমানটি নম্বর থেকে বেশি হয়, ব্যাশ "Too high" প্রিন্ট করে।
কীভাবে এটি কাজ করে
এখন আপনি আপনার ব্যাশ স্ক্রিপ্ট লিখে ফেলেছেন, আপনি সেটি রান করতে পারেন "গেস দি নম্বর" গেম খেলতে। সঠিক নম্বর পাওয়া পর্যন্ত অনুমান চালিয়ে যান:
Guess a number between 1 and 100
50
Too high
30
Too high
20
Too high
10
Too low
15
Too high
13
Too low
14
That's right!
প্রতিবার আপনি স্ক্রিপ্টটি রান করবেন, ব্যাশ একটি ভিন্ন র্যান্ডম নম্বর পিক করবে।
এই "গেস দি নম্বর" গেম একটি নতুন প্রোগ্রামিং ভাষা শিখার সময় একটি চমৎকার ইন্ট্রোডাক্টরি প্রোগ্রাম কারণ এটি বেশ কিছু সাধারণ প্রোগ্রামিং কনসেপ্ট একটি খুব সহজ উপায়ে এক্সারসাইজ করে। এই সহজ গেমটি ভিন্ন প্রোগ্রামিং ভাষায় ইমপ্লিমেন্ট করে, আপনি কিছু কোর কনসেপ্ট ডেমনস্ট্রেট করতে পারেন এবং প্রতিটি ভাষার ডিটেইলস তুলনা করতে পারেন।
আপনার একটি প্রিয় প্রোগ্রামিং ভাষা আছে কি? আপনি কীভাবে "গেস দি নম্বর" গেমটি সেটিতে লিখবেন? এই আর্টিকেল সিরিজ ফলো করুন অন্যান্য প্রোগ্রামিং ভাষার উদাহরণ দেখতে যা আপনাকে আকৃষ্ট করতে পারে।