beginner#algorithmUpdated: 2026-05-13

অ্যালগরিদম (Algorithm)


১. ভূমিকা — তুমি কি ইতিমধ্যে অ্যালগরিদম ব্যবহার করছ?

ধরো তুমি তোমার বন্ধুকে ফোনে বলছো — "ভাই, আমাদের বাড়ি আসতে হলে কী করতে হবে?"

তুমি কি এভাবে বলবে?

"আসো!"

না! তুমি বলবে:

১. বাস স্টেশন থেকে নামো। ২. সোজা হাঁটো ২০০ মিটার। ৩. মসজিদ দেখলে ডানে মোড় নাও। ৪. নীল রঙের বাড়িটাই আমাদের।

এটাই অ্যালগরিদম! তুমি ইতিমধ্যে সারাজীবন অ্যালগরিদম ব্যবহার করে আসছো — শুধু নাম জানতে না।


২. সমস্যা — কম্পিউটার কীভাবে জানবে কী করতে হবে?

কম্পিউটার কিন্তু মানুষের মতো বোঝে না। তুমি যদি বলো "২ এবং ৩ যোগ করো" — সে বুঝবে না।

কম্পিউটারকে বলতে হয়:

  • কোথা থেকে শুরু করবে?
  • কী কী ধাপ অনুসরণ করবে?
  • কখন শেষ হবে?

এই ধাপগুলো সুনির্দিষ্টভাবে লেখার পদ্ধতিই হলো Algorithm (অ্যালগরিদম)

আসল সমস্যা: কম্পিউটার নিজে থেকে চিন্তা করতে পারে না। আমাদেরই প্রতিটি পদক্ষেপ বলে দিতে হয়।


৩. চিত্রের মাধ্যমে বোঝো

ধরো তুমি চাও "১ থেকে ৫ পর্যন্ত সংখ্যাগুলো যোগ করো":

শুরু
  ↓
যোগফল = 0, সংখ্যা = 1
  ↓
সংখ্যা ≤ 5?
  ↓ হ্যাঁ
যোগফল = যোগফল + সংখ্যা
  ↓
সংখ্যা = সংখ্যা + 1
  ↓
আবার চেক করো ← ←
  ↓ না (সংখ্যা > 5)
যোগফল দেখাও
  ↓
শেষ

প্রতিটি তীর চিহ্ন একটি ধাপ। কম্পিউটার এভাবেই কাজ করে।


৪. বাস্তব জীবনের সাথে মিল

রান্নার রেসিপি ভাবো:

মায়ের রেসিপি বই:

ডাল রান্নার পদ্ধতি:
১. ডাল ধুয়ে ভিজিয়ে রাখো (৩০ মিনিট)
২. হাঁড়িতে তেল গরম করো
৩. পেঁয়াজ কুচি দাও, বাদামি হওয়া পর্যন্ত ভাজো
৪. আদা-রসুন বাটা দাও
৫. হলুদ, মরিচ মেশাও
৬. ডাল দাও, পানি দাও
৭. ঢেকে জ্বাল দাও — নরম হলে নামাও

এই রেসিপি হলো একটি Algorithm! কারণ:

  • ✅ ধাপগুলো সুনির্দিষ্ট (specific)
  • ✅ ক্রম ঠিক আছে (ordered)
  • ✅ শেষ আছে (finite)
  • ✅ ফলাফল নির্দিষ্ট (deterministic)

Module 1: সংজ্ঞা ও ধারণা

Algorithm কী?

Algorithm (অ্যালগরিদম) হলো কোনো সমস্যা সমাধানের জন্য সুনির্দিষ্ট, সসীম এবং সুশৃঙ্খল ধাপের একটি সেট, যা নির্দিষ্ট ইনপুট (Input) নিয়ে নির্দিষ্ট আউটপুট (Output) দেয়।

অ্যালগরিদমের ৫টি বৈশিষ্ট্য:

বৈশিষ্ট্যবাংলাঅর্থ
Inputইনপুটশূন্য বা তার বেশি তথ্য দিতে হয়
Outputআউটপুটঅন্তত একটি ফলাফল দেয়
Definitenessসুনির্দিষ্টতাপ্রতিটি ধাপ পরিষ্কারভাবে বলা থাকে
Finitenessসসীমতাএকসময় শেষ হয়
Effectivenessকার্যকারিতাপ্রতিটি ধাপ সম্পন্ন করা সম্ভব

Module 2: কীভাবে কাজ করে

কম্পিউটার Algorithm কীভাবে চালায়?

তোমার Algorithm (মানুষের ভাষায়)
           ↓
     Programming Language
     (C, Python, Java...)
           ↓
     Compiler/Interpreter
     (মানুষের ভাষা → মেশিন ভাষা)
           ↓
     CPU (Central Processing Unit)
     (ধাপে ধাপে কাজ করে)
           ↓
     RAM (Memory)
     (তথ্য সাময়িক রাখে)
           ↓
     Output

প্রতিটি ধাপ CPU-তে গিয়ে Instruction (নির্দেশনা) হিসেবে চলে। CPU প্রতি সেকেন্ডে কোটি কোটি Instruction চালাতে পারে।


Module 3: প্যাটার্ন ও উদাহরণ

প্যাটার্ন ১: Sequential Algorithm (ক্রমানুসারী অ্যালগরিদম)

ধাপগুলো একের পর এক চলে। কোনো শর্ত বা লুপ নেই।

উদাহরণ ১.১: দুটি সংখ্যার যোগফল

Algorithm: Add_Two_Numbers
Input: দুটি সংখ্যা a, b
Output: যোগফল

ধাপ ১: a এবং b ইনপুট নাও
ধাপ ২: sum = a + b
ধাপ ৩: sum প্রিন্ট করো
ধাপ ৪: শেষ

উদাহরণ ১.২: আয়তক্ষেত্রের ক্ষেত্রফল

Algorithm: Rectangle_Area
Input: দৈর্ঘ্য l, প্রস্থ w
Output: ক্ষেত্রফল

ধাপ ১: l এবং w ইনপুট নাও
ধাপ ২: area = l × w
ধাপ ৩: area প্রিন্ট করো
ধাপ ৪: শেষ

উদাহরণ ১.৩: সেলসিয়াস থেকে ফারেনহাইট রূপান্তর

Algorithm: Celsius_to_Fahrenheit
Input: সেলসিয়াস তাপমাত্রা C
Output: ফারেনহাইট তাপমাত্রা F

ধাপ ১: C ইনপুট নাও
ধাপ ২: F = (C × 9/5) + 32
ধাপ ৩: F প্রিন্ট করো
ধাপ ৪: শেষ

প্যাটার্ন ২: Conditional Algorithm (শর্তযুক্ত অ্যালগরিদম)

কোনো শর্ত সত্য হলে এক পথে, মিথ্যা হলে অন্য পথে যায়।

উদাহরণ ২.১: সংখ্যা জোড় না বিজোড়

Algorithm: Even_or_Odd
Input: একটি সংখ্যা n
Output: "জোড়" অথবা "বিজোড়"

ধাপ ১: n ইনপুট নাও
ধাপ ২: যদি (n % 2 == 0) হয়
         তাহলে প্রিন্ট করো "জোড় সংখ্যা"
         নইলে প্রিন্ট করো "বিজোড় সংখ্যা"
ধাপ ৩: শেষ

উদাহরণ ২.২: পাস/ফেল নির্ধারণ

Algorithm: Pass_Fail
Input: নম্বর marks
Output: "পাস" অথবা "ফেল"

ধাপ ১: marks ইনপুট নাও
ধাপ ২: যদি (marks >= 33) হয়
         তাহলে প্রিন্ট করো "পাস"
         নইলে প্রিন্ট করো "ফেল"
ধাপ ৩: শেষ

উদাহরণ ২.৩: তিনটি সংখ্যার মধ্যে সর্বোচ্চ খোঁজা

Algorithm: Find_Maximum
Input: তিনটি সংখ্যা a, b, c
Output: সর্বোচ্চ সংখ্যা

ধাপ ১: a, b, c ইনপুট নাও
ধাপ ২: যদি (a >= b এবং a >= c) হয়
         তাহলে max = a
         নইলে যদি (b >= c) হয়
           তাহলে max = b
           নইলে max = c
ধাপ ৩: max প্রিন্ট করো
ধাপ ৪: শেষ

উদাহরণ ২.৪: গ্রেড নির্ধারণ (HSC-এ গুরুত্বপূর্ণ)

Algorithm: Grade_Calculator
Input: নম্বর marks
Output: গ্রেড

ধাপ ১: marks ইনপুট নাও
ধাপ ২: যদি marks >= 80 → "A+"
         যদি marks >= 70 → "A"
         যদি marks >= 60 → "A-"
         যদি marks >= 50 → "B"
         যদি marks >= 40 → "C"
         যদি marks >= 33 → "D"
         নইলে → "F"
ধাপ ৩: গ্রেড প্রিন্ট করো
ধাপ ৪: শেষ

প্যাটার্ন ৩: Iterative Algorithm (পুনরাবৃত্তিমূলক অ্যালগরিদম)

কোনো শর্ত পূরণ না হওয়া পর্যন্ত একই ধাপ বারবার চলে।

উদাহরণ ৩.১: ১ থেকে n পর্যন্ত যোগফল

Algorithm: Sum_1_to_N
Input: n
Output: ১ থেকে n পর্যন্ত যোগফল

ধাপ ১: n ইনপুট নাও
ধাপ ২: sum = 0, i = 1
ধাপ ৩: যতক্ষণ (i <= n):
         sum = sum + i
         i = i + 1
ধাপ ৪: sum প্রিন্ট করো
ধাপ ৫: শেষ

উদাহরণ ৩.২: কোনো সংখ্যার গুণনীয়ক বের করা

Algorithm: Find_Factorial
Input: n
Output: n! (n এর factorial)

ধাপ ১: n ইনপুট নাও
ধাপ ২: result = 1, i = 1
ধাপ ৩: যতক্ষণ (i <= n):
         result = result × i
         i = i + 1
ধাপ ৪: result প্রিন্ট করো
ধাপ ৫: শেষ

উদাহরণ ৩.৩: Linear Search (তালিকায় উপাদান খোঁজা)

Algorithm: Linear_Search
Input: তালিকা arr[], n টি উপাদান, খোঁজার মান key
Output: অবস্থান অথবা "পাওয়া যায়নি"

ধাপ ১: arr, n, key ইনপুট নাও
ধাপ ২: i = 0
ধাপ ৩: যতক্ষণ (i < n):
         যদি arr[i] == key হয়
           প্রিন্ট করো "পাওয়া গেছে, অবস্থান:" i
           শেষ
         i = i + 1
ধাপ ৪: প্রিন্ট করো "পাওয়া যায়নি"
ধাপ ৫: শেষ

Module 4: বাস্তব প্রয়োগ

বাস্তব উদাহরণকোন Algorithm ব্যবহার হয়
Google Maps-এ রুট খোঁজাShortest Path Algorithm (Dijkstra)
ATM থেকে টাকা তোলাConditional + Sequential
bKash-এ টাকা পাঠানোVerification + Transaction Algorithm
Facebook Feed দেখানোRecommendation Algorithm
ক্রিকেট DLS পদ্ধতিMathematical Algorithm
পরীক্ষার মেধা তালিকাSorting Algorithm

Module 5: সাধারণ ভুল ও সতর্কতা

ভুল ১: অস্পষ্ট ধাপ লেখা

❌ ভুল:
ধাপ ১: সংখ্যাটা নাও
ধাপ ২: কিছু করো
ধাপ ৩: উত্তর দাও

✅ সঠিক:
ধাপ ১: ব্যবহারকারীর কাছ থেকে পূর্ণসংখ্যা n ইনপুট নাও
ধাপ ২: n এর বর্গ হিসাব করো: square = n × n
ধাপ ৩: square প্রিন্ট করো

ভুল ২: অসীম লুপ (যা কখনো শেষ হয় না)

❌ ভুল:
ধাপ ১: i = 1
ধাপ ২: i প্রিন্ট করো
ধাপ ৩: ধাপ ২-এ যাও (কখনো শেষ হবে না!)

✅ সঠিক:
ধাপ ১: i = 1
ধাপ ২: যতক্ষণ i <= 10:
         i প্রিন্ট করো
         i = i + 1
ধাপ ৩: শেষ

ভুল ৩: ধাপের ক্রম ভুল করা

❌ ভুল: (আগে ফলাফল দেখাও, পরে হিসাব করো)
ধাপ ১: sum প্রিন্ট করো
ধাপ ২: sum = a + b

✅ সঠিক:
ধাপ ১: sum = a + b
ধাপ ২: sum প্রিন্ট করো

Module 6: সুবিধা-অসুবিধা

বিষয়সুবিধাঅসুবিধা
Simple Algorithmবোঝা সহজবড় সমস্যায় অকার্যকর
Complex Algorithmদ্রুত কাজ করেবোঝা কঠিন, লেখা জটিল
Iterative Algorithmকম মেমরি লাগেকখনো অসীম লুপে আটকে যেতে পারে
Recursive Algorithmকোড ছোটবেশি মেমরি লাগে

🔁 নিজে পরীক্ষা করো

MCQ:

১. অ্যালগরিদমের কোন বৈশিষ্ট্যটি নিশ্চিত করে যে এটি একসময় শেষ হবে?

  • ক) Input
  • খ) Output
  • গ) Finiteness ✓
  • ঘ) Definiteness

২. নিচের কোনটি Sequential Algorithm-এর উদাহরণ?

  • ক) দুটি সংখ্যার যোগফল ✓
  • খ) সংখ্যা জোড় না বিজোড় নির্ধারণ
  • গ) ১ থেকে ১০ পর্যন্ত যোগফল
  • ঘ) সর্বোচ্চ সংখ্যা খোঁজা

৩. যদি কোনো Algorithm কখনো শেষ না হয়, তাহলে কোন বৈশিষ্ট্যটি ভঙ্গ হচ্ছে?

  • ক) Input
  • খ) Finiteness ✓
  • গ) Output
  • ঘ) Effectiveness

৪. Conditional Algorithm-এ কী থাকে?

  • ক) শুধু ক্রমানুসারী ধাপ
  • খ) শর্তের উপর ভিত্তি করে ভিন্ন পথ ✓
  • গ) বারবার পুনরাবৃত্তি
  • ঘ) কোনো ইনপুট নেই

৫. Factorial গণনার Algorithm কোন ধরনের?

  • ক) Sequential
  • খ) Conditional
  • গ) Iterative ✓
  • ঘ) Sequential এবং Conditional

সংক্ষিপ্ত প্রশ্ন:

৬. অ্যালগরিদমের ৫টি বৈশিষ্ট্য কী কী? প্রতিটির সংক্ষিপ্ত ব্যাখ্যা দাও।

৭. "দুটি সংখ্যার মধ্যে ছোটটি খুঁজে বের করো" — এর জন্য Algorithm লেখো।


📝 HSC পরীক্ষার প্রস্তুতি

১. তুমি প্রতিদিন সকালে উঠে স্কুলে যাওয়া পর্যন্ত যা করো — সেটা কি একটি Algorithm? কেন বা কেন না?

২. যদি একটি Algorithm-এ Finiteness না থাকে, তাহলে কম্পিউটারে কী সমস্যা হবে? বাস্তব উদাহরণ দিয়ে ব্যাখ্যা করো।

৩. Sequential, Conditional, এবং Iterative — এই তিন ধরনের Algorithm কি একসাথে ব্যবহার করা যায়? একটি বাস্তব উদাহরণ দাও।


🎯 অনুশীলন প্রশ্ন

সহজ: নিচের সমস্যার জন্য Algorithm লেখো: "একটি সংখ্যা ইনপুট নাও। সেটা ধনাত্মক কি ঋণাত্মক কি শূন্য — তা বলো।"

মাঝারি: "১ থেকে ১০০ পর্যন্ত সকল বিজোড় সংখ্যার যোগফল বের করো" — এর জন্য Algorithm লেখো।

কঠিন: "একটি তালিকায় n সংখ্যা আছে। সর্বোচ্চ ও সর্বনিম্ন সংখ্যা খুঁজে বের করো এবং তাদের পার্থক্য বলো" — এর জন্য Algorithm লেখো।


✅ সারাংশ

🎯 মনে রেখো:

  • Algorithm = সমস্যা সমাধানের ধাপে ধাপে নির্দেশনা
  • ৫ বৈশিষ্ট্য: Input, Output, Definiteness, Finiteness, Effectiveness
  • ৩ ধরন:
    • Sequential → ধাপে ধাপে, কোনো শর্ত নেই (রেসিপি)
    • Conditional → শর্ত অনুযায়ী ভিন্ন পথ (যদি-তাহলে)
    • Iterative → বারবার একই কাজ (লুপ)
  • Algorithm লেখার আগে সমস্যাটা ভালো করে বোঝো
  • প্রতিটি ধাপ স্পষ্ট ও সুনির্দিষ্ট হওয়া চাই
  • Algorithm কোড নয় — এটা পরিকল্পনা

💡 পরীক্ষার টিপস: HSC-তে Algorithm লেখার সময় "ধাপ ১, ধাপ ২..." এভাবে নম্বর দিয়ে লিখবে। শেষে "শেষ" লিখতে ভুলবে না।