
অ্যালগরিদম লিখার নিয়ম ও কয়েকটি অ্যালগরিদম
নতুনদের মনে সাধারণ কিছু প্রশ্ন হলো, কোন ল্যাঙ্গুয়েজে অ্যালগরিদম লিখে? কিভাবে লিখে? অথবা অ্যালগরিদম এবং প্রোগ্রামিং এর মধ্যে পার্থক্য কি?
এর সহজ উত্তর হলো, অ্যালগরিদম একটা Universal Language যেটা নিদিষ্ট কোন প্রোগ্রামিং ল্যাঙ্গুয়েজ কে ফলো করে না। এটা প্লেইন ইংলিশ গ্রামারে লেখা একটা বাক্য।
সুতরাং এটা নিদিষ্ট কোন ল্যাঙ্গুয়েজের জন্য না। আপনি যে ল্যাঙ্গুয়েজ ভালো পারেন সে ল্যাঙ্গুয়েজ ব্যবহার করতে পারেন।
আমরা জানি অ্যালগরিদম নিদিষ্ট কোন সমস্যা কে সমাধান করার কিছু ধাপ। আপনি যে ল্যাঙ্গুয়েজ পারেন, সেই ল্যাঙ্গুয়েজ দিয়ে অ্যালগরিদমের ধাপ গুলো এক্সিকিউট করলে সেই নিদিষ্ট সমস্যার সমাধান পাবেন।
যেমন আমাকে একটা সমস্যা দেওয়া হলো এরকম "দুইটি সংখ্যার যোগফল বের করো"। তাহলে এর একটা ফ্লো চার্ট আকা যাক।
আপনি যদি কম্পিউটার সাইন্সের ছাত্র বা ছাত্রী হয়ে থাকেন তাহলে কম্পিউটার ফান্ডামেন্টাল সাবজেক্টে ফ্লো চার্ট পেয়েছেন নিশ্চয়।
এটাই যদি প্লেন ইংলিশে লিখতে চাই তাহলে কেমন হবে -
1. Take a number store in ‘a’
2. Take second number store in ‘b’
3. Add a & b and store the result in ‘c’
4. Show the value of c
এই যে ১, ২, ৩, সিরিয়াল ভাবে প্লেইন ইংলিশে লিখলাম এটাই হলো অ্যালগরিদম। মাঝে মাঝে আমরা ম্যাথম্যাটিক্যাল সিম্বল ব্যবহার করি।
এখন আপনি যদি ১ থেকে ৪ পর্যন্ত সিরিয়াল ফলো করে যে কোন ল্যাঙ্গুয়েজে এক্সিকিউট করেন তাহলে ২ টা সংখ্যার যোগফল পাবেন।
আমি এই অ্যালগরিদম টা কে সি ল্যাঙ্গুয়েজ দিয়ে লেখলাম।
আপনি চাইলে যেকোন ল্যাঙ্গুয়েজে লিখতে পারেন।
কিন্তু কেউ যদি বলে প্রথমে ৪ নাম্বার তারপর ২ নাম্বার টা এক্সিকিউট করবে তাহলে কিন্তু সঠিক রেজাল্ট আসবে না।
তাহলে একটা নিদিষ্ট সমস্যার জন্য আমরা একটা ফ্লো চার্ট আঁকলাম। তারপর অ্যালগরিদম লিখলাম এবং সি ল্যাঙ্গুয়েজ দিয়ে সেটা এক্সিকিউট করলাম।
অ্যালগরিদম যেহেতু প্লেইন ইংলিশ এবং কোন ল্যাঙ্গুয়েজ ফলো করে না সো অ্যালগরিদম লেখার নিদিষ্ট কোন নিয়ম নেই। তবে সবাই যেভাবে লিখে আমরা সেভাবেই কয়েক টি সমস্যার অ্যালগরিদম দেখবো।
সমস্যা ১ঃ
দুইটি সংখ্যার মধ্যে বড় এবং ছোট সংখ্যা বের করো।
পুর্বের সব গুলা উদাহারনে আমি Step 01, Step 02 এভাবে লিখে আসছি কিন্তু এখানে শুধু নাম্বার দিয়ে লেখলাম। এতে কোন সমস্যা নেই। আপনি চাইলে Step 01 এভাবে লিখতে পারেন চাইলে শুধু নাম্বার দিয়েও লিখতে পারেন।
তবে অবশ্যই প্রথম নাম্বারটাতে “Start” শব্দটা লিখতে হবে এবং সবার শেষে “End” শব্দটা লিখতে হবে। এর অর্থ হলো অ্যালগরিদমটা কোথা থেকে শুরু হলো এবং কোথায় শেষ হলো।
সমস্যা ২ঃ
ইউজার ১ থেকে ১০ এর মধ্যে ৮ টা সংখ্যা দিবে। এই ৮ টা সংখ্যার মধ্যে কোন সংখ্যা টা বেশিবার আসছে। যেমন [1,1,2,2,2,2,3,3]
তাহলে এখানে সব থেকে বেশিবার কোন সংখ্যাটা আসছে? উত্তরঃ ২ সুতরাং প্রিন্ট করবে ২।
এই সমস্যার অ্যালগরিদম আমরা লিখবো।