অ্যালগরিদম(algorithm) লিখার নিয়ম 😍
shakilbabu
Shakil Babu
·1 min read

অ্যালগরিদম(algorithm) লিখার নিয়ম 😍

অ্যালগরিদম ও ডাটা স্ট্রাকচার সম্পর্কে গত পর্বে আলোচনা করা হয়েছে । যদি আপনি পড়ে নাহ থাকেন তাহলে এখানে পড়ুন। অ্যালগরিদম কি বা কাকে বলে তা নিয়ে আর নাহ বলি কারণ গত পর্বে আলোচনা করা হয়েছে । এখন আসি কিভাবে আমরা অ্যালগরিদম লিখতে পারি ?

অ্যালগরিদম লেখার বিভিন্ন পদ্ধতি আছে মানে বোঝাঁতে চেয়েছি অনেক ভাবেই লেখা যায় । অনেকরই মনে প্রশ্ন থাকতে পারে যে, অ্যালগরিদম কোন প্রোগ্রামিং ভাষা দিয়ে লিখতে হয় ? উত্তর হচ্ছে, অ্যালগরিদম আপনি যে কোনো ভাষায় লিখতে পারেন । কোনো একটা অ্যালগরিদম আপনি বর্ণনামূলক ভাবে লিখতে পারেন আবার সুডোকোড আকারে লিখতে পারেন।এবং আপনি বাংলায় ও লিখতে পারেন ।

আমরা জানি যে অ্যালগরিদম হচ্ছে সমস্যা সমাধানের সুনির্দিষ্ট কিছু ধাপ । যা মানুষ বুঝতে পারলেই হইলো ।আপনি যখন কোনো একটা অ্যালগরিদম বুঝতে পারবেন তখন খুব সহজেই আপনি যেকোনো প্রোগ্রামিং ভাষা দিয়ে ইমপ্লিমেন্ট করতে পারবেন। এখন চলুন কয়েকটা সমস্যার অ্যালগরিদম কি ভাবে লিখতে হয় তা দেখি ।

সমস্যা ০১ : তিনটি সংখ্যার মধ্যে বৃহত্তম সংখ্যাটি নির্ণয়ের অ্যালগরিদম লিখ -

এখানে একটা কথা বলে রাখি যে, যেকোনো সমস্যার অ্যালগরিদম লিখার সময় তার শুরু এবং শেষ থাকবেই । তারপর সমস্যা অনুযায়ী অ্যালগরিদম লিখতে হবে ।

ধরে নিই যে, আমাদের কাছে ১০,২০,৩০ এই তিনটি সংখ্যা আছে , এখানে কিন্তু আমরা বুঝতে পারছি যে সবচেয়ে বড় সংখ্যাটি হলো ৩০। কিন্তু উপরোক্ত প্রব্লেমে আমাদের তিনটি সংখ্যার কোনটিই দেওয়া নেই । তাই যেকোনো তিনটি সংখ্যাই হতে পারে । তাহলে এখানে আমাদেরকে,তিনটি সংখ্যায় ইউজার থেকে ইনপুট নিতে হবে অথবা ফাংশনের প্যাঁরামিটার হিসেবে পাস করতে হবে ।

এখন আমরা ধরে নিতে পারি যে, তিনটি সংখ্যা a,b এবং c যা ইউজারের কাছে থেকে আসবে । আমাদের ইনপুট নেওয়া কিন্তু শেষ । এরপর আমাদের লজিক ব্যাবহার করে তিনটি সংখ্যার ভেতর বড় সংখ্যাটি বের করতে হবে । অর্থাৎ , যদি a > b এবং a > c হয় তাহলে বড় সংখ্যাটি a আর যদি b > c এবং b > a হয় তাহলে বড় সংখ্যাটি হবে b তাছাড়া বড় সংখ্যাটি হবে c ।

যেহেতু বড় সংখ্যাটি পেয়ে গেলাম সেইটা আউটপুটে দেখাবো এবং প্রোগ্রামটি শেষ করবো । এখন যদি এইটার অ্যালগরিদম অর্থাৎ সুনির্দিষ্ট ধাপসমূহ লিখি তাহলে -

01.png

এইরকম হবে । আমি আগেই বলেছি যে, একটি সমস্যার অ্যালগরিদম অনেক ভাবেই লিখা যায় কিন্তু সেইটা অবশ্যই ঠিকঠাক কাজ করতে হবে।

আমাদের উপরোক্ত অ্যালগরিদমটি সঠিকভাবে কাজ করবে কি নাহ সেইটা বোঝার জন্য আপনি যেকোনো প্রোগ্রামিং ভাষা দিয়ে স্টেপ বাই স্টেপ ইমপ্লিমেন্ট করতে পারেন।

সমস্যা ০২ : 1 + 2 + 3 + ......... + n = ? সিরিজের যোগফল নির্ণয়ের অ্যালগরিদম লিখ -

এখানে n তম সংখ্যার যোগফল নির্ণয়ের অ্যালগরিদম লিখতে বলা হয়েছে । তাহলে বরাবরের মতোই আমরা প্রোগ্রাম শুরু করবো । যেহেতু, n তম সংখ্যার যোগফল তাই আমাদেরকে n ইনপুট নিতে হবে ।

তারপর sum নামে একটা ভেরিয়েবল নিবো যার ইনিশিয়াল মান 0 রাখবো । এবং যেহেতু লুপ ব্যাবহার করবো তাই i এর ইনিশিয়াল মান 1 রাখবো । এরপর লুপের ভেতর কন্ডিশন রাখবো যে, i এর মান n এর চেয়ে যতক্ষণ পর্যন্ত কম বা সমান থাকবে ততক্ষণ পর্যন্ত sum এর ভেতর sum + i এর মান অ্যাসাইন এবং i এর মান 1 করে বাড়তে থাকবে ।

লুপ শেষে সিরিজের যোগফল sum প্রদর্শন করবে এবং প্রোগ্রাম শেষ হবে । তাহলে এর অ্যালগরিদম হবে -

02.png

চলুন উপরোক্ত অ্যালগরিদমটি আমরা জাভাস্ক্রিপ্ট প্রোগ্রামিং ভাষা ব্যাবহার করে ইমপ্লিমেন্ট করি -

const seriesSum = (n) => {
  let sum = 0;
  let i = 1;
  while(i<=n){
    sum += i;
    i++;
  }
  console.log(sum)
}

এখন আপনি উপরোক্ত অ্যালগরিদমটি দেখুন এবং নিচের প্রোগ্রামিং ভাষা ব্যাবহার করা সমাধান দেখুন আশা করি বুঝতে পারবেন । উপরোক্ত অ্যালগরিদমকেই স্টেপ বাই স্টেপ ফলো করে নিম্নোক্ত প্রোগ্রামটি লিখা হয়েছে।

আমি হয়তোবা অনেকবারই বলেছি যে, একটি সমস্যা অনেক ভাবেই সমাধান বা অ্যালগরিদম উন্নয়ন করা যায় চলুন এইবার তা দেখে নেওয়া যাক। আমরা উপরোক্ত সমস্যাটিরই প্রোগ্রাম এবং অ্যালগরিদম উন্নয়ন করবো কিন্তু অন্যভাবে ।

সমস্যাটি ছিলো 1 + 2 + 3 + ......... + n = ? সিরিজের যোগফল নির্ণয়ের অ্যালগরিদম লিখ - এইবার এই সমস্যাটির সমাধান করতে আমরা লুপ ব্যাবহার না করে একটি ম্যাথম্যাটিক্সের সুত্র ব্যাবহার করে করবো ।

সুত্রটি হইলো - n*(n+1)/2

প্রথমে অ্যালগরিদম উন্নয়ন করি - 03.png

এখন আমরা এই অ্যালগরিদমের সাহায্যে প্রোগ্রাম লিখি-

const seriesSum = (n) => {
  let sum;
  sum = n * (n+1) / 2 ;
  console.log(sum);
}

আশা করি বুঝতে পেরেছেন । আমি জাভাস্ক্রিপ্ট ব্যাবহার করে অ্যালগরিদম ইমপ্লিমেন্ট করেছি আপনি চাইলে অন্য যেকোনো প্রোগ্রামিং ভাষা ব্যাবহার করতে পারেন।

সমস্যা ০৩ : সমকোণী ত্রিভূজ ক্ষেত্রের ক্ষেত্রফল নির্ণয়ের অ্যালগরিদম লিখ -

আমরা জানি যে, সমকোণী ত্রিভূজ ক্ষেত্রের ক্ষেত্রফল = ০.৫ * ভূমি * উচ্চতা । প্রথমে প্রোগ্রাম শুরু করতে হবে এরপর ভূমি এবং উচ্চতার মান ইনপুট নিতে হবে ।

এরপর ক্ষেত্রফল এর ভেতর ( ০.৫ * ভূমি * উচ্চতা ) এর মান অ্যাসাইন করতে হবে । এবং ফলাফলের মান আউটপুটে প্রিন্ট করে প্রোগ্রাম শেষ করতে হবে । অর্থাৎ অ্যালগরিদমটি হবে ,

04.png

এখন আমরা উপরোক্ত অ্যালগরিদমের সাহায্যে প্রোগ্রাম লিখি-

const Area = (base, height) => {
	let area = 0.5 * base * height;
	console.log(area)
}

যদি পাইথনে অ্যালগরিদমটি ইমপ্লিমেন্ট করি -

base = float(input("Enter base : "))
height = float(input("Enter height : "))
area = 0.5 * base * height
print(area)

আশা করি আপনার সামান্য হলেও উপকারেএসেছে আজকের আর্টিকেল এ পর্যন্তই সবাইকে অনেক ধন্যবাদ ।

যদি এই আর্টিকেলে কোনো প্রকার ভূল পেয়ে থাকেন তাহলে আমাকে জানাতে ভূলবেন নাহ প্লিজ । আমরা শিখতে চাই সেটা ভূল থেকে হলেও ।