অ্যালগরিদম ও ফ্লোচার্ট: ধারণা ও উদাহরণ

এইচএসসি আইসিটি: অ্যালগরিদম ও ফ্লোচার্ট কী? ফ্লোচার্টের প্রতীকসমূহ এবং গুরুত্বপূর্ণ উদাহরণ (গড়, বড় সংখ্যা, সিরিজ, ফ্যাক্টরিয়াল)।

শেখা শুরু করুন

অ্যালগরিদম ও ফ্লোচার্ট: ধারণা ও উদাহরণ

  1. অ্যালগরিদম ও ফ্লোচার্ট: ধারণা ও উদাহরণ
  2. লেখা নাকি ছবি: কোনটি সহজ?
  3. অ্যালগরিদম (Algorithm) কী?
  4. ফ্লোচার্ট (Flowchart) কী?
  5. ফ্লোচার্টের প্রতীকসমূহ (পর্ব ১)
  6. ফ্লোচার্টের প্রতীকসমূহ (পর্ব ২)
  7. উদাহরণ ১: দুটি সংখ্যার যোগফল নির্ণয়
  8. উদাহরণ ২: সিদ্ধান্ত গ্রহণ (Selection)
  9. উদাহরণ ৩: লুপ বা চক্র (Iteration)
  10. অ্যালগরিদম বনাম ফ্লোচার্ট
  11. নিজে চেষ্টা করি (Classwork)
  12. সারসংক্ষেপ ও আগামী ক্লাসে যা শিখব

অ্যালগরিদম ও ফ্লোচার্ট: ধারণা ও উদাহরণ

এই লেকচার শেষে আমরা-

১। অ্যালগরিদম ও ফ্লোচার্টের সংজ্ঞা ও বৈশিষ্ট্য ব্যাখ্যা করতে পারব।
২। ফ্লোচার্টে ব্যবহৃত বিভিন্ন প্রতীকের কাজ বর্ণনা করতে পারব।
৩। বিভিন্ন গাণিতিক সমস্যার অ্যালগরিদম লিখতে পারব।
৪। অ্যালগরিদম অনুযায়ী ফ্লোচার্ট অঙ্কন করতে পারব।

স্বাগতম সবাইকে! এইচএসসি আইসিটি অধ্যায় ৫-এর আজকের লেকচারে আমরা প্রোগ্রামিংয়ের একেবারে ভিত্তি নিয়ে আলোচনা করব। আজকের টপিক 'অ্যালগরিদম ও ফ্লোচার্ট'। শুনতে হয়তো একটু কঠিন লাগছে, কিন্তু বিশ্বাস করো, এটা খুবই মজার এবং সহজ একটা বিষয়। এই লেকচার শেষে আমরা- ১। অ্যালগরিদম ও ফ্লোচার্ট কী তা ব্যাখ্যা করতে পারব। ২। ফ্লোচার্টে ব্যবহৃত বিভিন্ন প্রতীকের কাজ বর্ণনা করতে পারব। ৩। ছোটখাটো গাণিতিক সমস্যার জন্য অ্যালগরিদম লিখতে পারব। এবং ৪। সেই অ্যালগরিদম দেখে নিজেই ফ্লোচার্ট আঁকতে পারব। চলো শুরু করা যাক!

লেখা নাকি ছবি: কোনটি সহজ?

প্রশ্ন: মনে করো তুমি একটি নতুন টেবিল কিনেছ যা তোমাকে জোড়া লাগাতে হবে। তুমি কোন নির্দেশিকাটি বেছে নেবে?

  1. ১০ পাতার লিখিত নির্দেশিকা (Text)
  2. এক পাতার ছবিসহ নির্দেশিকা (Visual Diagram)

অধিকাংশ মানুষ ছবিসহ নির্দেশিকা বেছে নেয় কারণ এটি বোঝা সহজ।

প্রোগ্রামিংয়েও ঠিক তাই:
* লিখিত নির্দেশিকা = অ্যালগরিদম
* ছবিসহ নির্দেশিকা = ফ্লোচার্ট

আচ্ছা, একটা দৃশ্য কল্পনা করো। তুমি বাজার থেকে একটা পড়ার টেবিল কিনে আনলে, কিন্তু সেটা খোলা অবস্থায় আছে, মানে তোমাকে নাট-বল্টু দিয়ে জোড়া লাগাতে হবে। এখন দোকানদার তোমাকে দুটো অপশন দিল। এক, ১০ পাতার একটা বই যেখানে শুধু লেখা আছে কীভাবে জোড়া লাগাতে হবে। দুই, মাত্র এক পাতার একটা কাগজ যেখানে ধাপে ধাপে ছবি দেওয়া আছে। তুমি কোনটা নেবে? নিশ্চয়ই ছবির কাগজটা? কারণ ছবি দেখে কাজটা বোঝা অনেক সহজ। প্রোগ্রামিংয়েও আমরা ঠিক এই কাজটাই করি। যখন আমরা ধাপে ধাপে লিখে সমস্যা সমাধান করি, সেটাকে বলি অ্যালগরিদম। আর যখন ছবির মাধ্যমে দেখাই, সেটা ফ্লোচার্ট।

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

সংজ্ঞা: কোনো সমস্যা সমাধানের জন্য যুক্তিসঙ্গত ও পর্যায়ক্রমিক ধারাবর্ণনাকে অ্যালগরিদম বলা হয়।

সহজ কথায়: ধাপে ধাপে সমস্যা সমাধানের লিখিত রূপ।

বৈশিষ্ট্য:
* সহজবোধ্য হতে হবে।
* প্রত্যেকটি ধাপ স্পষ্ট হতে হবে।
* সসীম সংখ্যক ধাপে শেষ হতে হবে (End)।

উদাহরণ: চা বানানোর অ্যালগরিদম
* ধাপ ১: কাজ শুরু করি।
* ধাপ ২: পাত্রে পানি ও চা পাতা দিয়ে চুলায় দিই।
* ধাপ ৩: পানি ফুটলে চিনি ও দুধ মেশাই।
* ধাপ ৪: কাপে ঢালি।
* ধাপ ৫: কাজ শেষ করি।

তাহলে চলো অ্যালগরিদমের একটা ফরমাল সংজ্ঞা জেনে নিই। কোনো একটা সমস্যা সমাধানের জন্য যখন আমরা ধাপে ধাপে যুক্তি দিয়ে সেটা লিখে ফেলি, সেটাই অ্যালগরিদম। এর মূল শর্ত হলো, এটা সহজ হতে হবে এবং এর একটা শেষ থাকতে হবে। মানে এমন না যে কাজটা চলতেই থাকবে, কোথাও না কোথাও গিয়ে থামতে হবে। যেমন ধরো চা বানানোর কথা। তুমি যদি কাউকে মুখে বলো কীভাবে চা বানাতে হয়, তুমি কী বলবে? প্রথমে পানি গরম করো, তারপর চা পাতা দাও, তারপর চিনি দাও, সবশেষে কাপে ঢালো। এই যে ধাপে ধাপে নির্দেশনা দিলে, এটাই হলো চা বানানোর অ্যালগরিদম।

ফ্লোচার্ট (Flowchart) কী?

সংজ্ঞা: অ্যালগরিদমের চিত্ররূপ। বিশেষ কিছু জ্যামিতিক প্রতীক ব্যবহার করে কোনো সমস্যার সমাধান যখন চিত্রের মাধ্যমে প্রকাশ করা হয়, তাকে ফ্লোচার্ট বলে।

কেন ফ্লোচার্ট আঁকব?
* প্রোগ্রামের প্রবাহ (Flow) সহজে বোঝা যায়।
* প্রোগ্রাম তৈরির আগে ব্লু-প্রিন্ট হিসেবে কাজ করে।
* ভুল ত্রুটি (Bug) খুঁজে বের করা সহজ হয়।

প্রকারভেদ:
১. সিস্টেম ফ্লোচার্ট (System Flowchart)
২. প্রোগ্রাম ফ্লোচার্ট (Program Flowchart) -> আমরা এটিই শিখব।

এবার আসি ফ্লোচার্টে। সোজা কথায়, অ্যালগরিদমকে যখন আমরা ছবির মাধ্যমে প্রকাশ করি, সেটাই ফ্লোচার্ট। যেমন বাড়ি বানানোর আগে আর্কিটেক্টরা একটা নকশা বা ব্লু-প্রিন্ট তৈরি করেন, ঠিক তেমনি বড় কোনো সফটওয়্যার বানানোর আগে প্রোগ্রামাররা ফ্লোচার্ট তৈরি করেন। এতে বোঝা যায় ডেটা কোনদিক থেকে কোনদিকে যাচ্ছে। ফ্লোচার্ট প্রধানত দুই প্রকার - সিস্টেম ফ্লোচার্ট আর প্রোগ্রাম ফ্লোচার্ট। আমরা যেহেতু কোডিং শিখব, তাই আমাদের মূল ফোকাস থাকবে প্রোগ্রাম ফ্লোচার্টের ওপর।

ফ্লোচার্টের প্রতীকসমূহ (পর্ব ১)

ফ্লোচার্ট আঁকার জন্য নির্দিষ্ট কিছু জ্যামিতিক আকৃতি ব্যবহার করা হয়।

১. ওভাল (Oval/Capsule)
* কাজ: শুরু বা শেষ (Start/End)
* ফ্লোচার্টের একদম শুরুতে এবং শেষে এটি থাকে।

২. সামান্তরিক (Parallelogram)
* কাজ: ইনপুট বা আউটপুট (Input/Output)
* কোনো মান গ্রহণ করা বা ফলাফল দেখানোর জন্য ব্যবহৃত হয়।

৩. আয়তক্ষেত্র (Rectangle)
* কাজ: প্রক্রিয়া বা প্রসেসিং (Processing)
* যোগ, বিয়োগ, গুণ, ভাগ বা মান নির্ধারণের কাজ এখানে হয়।

ফ্লোচার্ট আঁকার জন্য আমরা চাইলেই যে কোনো শেপ ব্যবহার করতে পারি না। এর জন্য নির্দিষ্ট কিছু আন্তর্জাতিক প্রতীক আছে। স্লাইডের ছবিটা খেয়াল করো। সবার ওপরে যে চ্যাপ্টা গোল বা ওভাল শেপ দেখছো, এটা দিয়ে আমরা শুরু বা শেষ বোঝাই। এরপর বাঁকা চারকোনা বাক্স বা সামান্তরিক—এটা ব্যবহার করি যখন কম্পিউটারকে কোনো ইনপুট দেই বা কম্পিউটার আমাদের কোনো আউটপুট দেখায়। আর একদম নিচে যে আয়তক্ষেত্র বা রেক্ট্যাঙ্গেল দেখছো, এটা হলো প্রসেসিং বক্স। মানে যোগ-বিয়োগ-গুণ-ভাগ, এসব হিসেব-নিকেশের কাজ এই বাক্সের ভেতরে লিখতে হয়।

ফ্লোচার্টের প্রতীকসমূহ (পর্ব ২)

৪. হীরক বা ডায়মন্ড (Diamond)
* কাজ: সিদ্ধান্ত গ্রহণ (Decision)
* সত্য/মিথ্যা যাচাই (যেমন: A > B?)
* এখান থেকে কমপক্ষে দুটি পথ বের হয় (Yes/No)।

৫. বৃত্ত (Circle)
* কাজ: সংযোগকারী (Connector)
* একাধিক ফ্লো লাইনকে এক করার জন্য ব্যবহৃত হয়।

৬. তীর চিহ্ন (Arrow)
* কাজ: প্রবাহের দিক (Flow Line)
* প্রোগ্রামের কাজের দিক বা ক্রম নির্দেশ করে।

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

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

সমস্যা: দুটি সংখ্যা ইনপুট নিয়ে তাদের যোগফল বের করা।

অ্যালগরিদম:
* ধাপ-১: শুরু করি।
* ধাপ-২: দুটি সংখ্যা A ও B এর মান গ্রহণ করি।
* ধাপ-৩: Sum = A + B নির্ণয় করি।
* ধাপ-৪: Sum এর মান ছাপাই।
* ধাপ-৫: শেষ করি।

ফ্লোচার্ট বিশ্লেষণ:
* Start (Oval) -> Input (Parallelogram) -> Process (Rectangle) -> Output (Parallelogram) -> End (Oval)

চলো এবার একটা উদাহরণ দিয়ে ব্যাপারটা পরিষ্কার করা যাক। মনে করো তোমাকে বলা হলো দুটো সংখ্যা যোগ করার জন্য একটা ফ্লোচার্ট আঁকতে। পাশের ছবিটা দেখো। প্রথমে ওভাল শেপ দিয়ে 'Start' করলাম। এরপর ইনপুট নিতে হবে, তাই সামান্তরিক শেপ-এ লিখলাম 'Input A, B'। তারপর যোগ করতে হবে, যেটা একটা প্রসেসিং, তাই আয়তক্ষেত্রের ভেতরে লিখলাম 'Sum = A + B'। যোগফল তো পেলাম, এবার সেটা দেখতে হবে বা প্রিন্ট করতে হবে, তাই আবার সামান্তরিক শেপ-এ 'Print Sum'। কাজ শেষ, তাই শেষে আবার ওভাল দিয়ে 'End'। কত সহজ, তাই না?

উদাহরণ ২: সিদ্ধান্ত গ্রহণ (Selection)

সমস্যা: দুটি সংখ্যার মধ্যে বড় সংখ্যাটি নির্ণয়।

লজিক:
* আমাদের প্রশ্ন করতে হবে: A কি B এর চেয়ে বড়?
* উত্তর হতে পারে: হ্যাঁ (Yes) অথবা না (No)

ফ্লোচার্ট:
* ডায়মন্ড শেপের ভেতরে শর্ত: A > B?
* Yes পথে গেলে: Print A (মানে A বড়)
* No পথে গেলে: Print B (মানে B বড়)
* দুই পথ শেষে এসে End এ মিলবে।

এখন যদি সমস্যাটা একটু জটিল হয়? ধরো দুটো সংখ্যার মধ্যে কোনটা বড় সেটা বের করতে হবে। কম্পিউটার তো আর নিজে নিজে বোঝে না কে বড়। তাকে প্রশ্ন করতে হয়। এই প্রশ্ন করার জন্যই আমরা ডায়মন্ড শেপ ব্যবহার করি। ছবিতে দেখো, ডায়মন্ডের ভেতরে লেখা 'A > B?'। এখন উত্তর যদি 'হ্যাঁ' হয়, তাহলে ডানদিকের রাস্তা দিয়ে গিয়ে A-কে প্রিন্ট করবে। আর যদি 'না' হয়, মানে A বড় না, তাহলে নিচের রাস্তা দিয়ে গিয়ে B-কে প্রিন্ট করবে। এটাকে বলা হয় কন্ডিশনাল ফ্লো বা সিলেকশন।

উদাহরণ ৩: লুপ বা চক্র (Iteration)

সমস্যা: ১, ২, ৩, ... , N পর্যন্ত সংখ্যার যোগফল নির্ণয়।

লজিক (লুপ): একই কাজ বারবার করা।

প্রক্রিয়া:
১. Sum = 0 এবং i = 1 ধরি।
২. Sum = Sum + i (যোগ করা)
৩. i = i + 1 (পরের সংখ্যার জন্য তৈরি হওয়া)
৪. শর্ত: i <= N? যদি হ্যাঁ হয়, তবে আবার যোগ করার ধাপে ফেরত যাই (Loop)।

বৈশিষ্ট্য: অ্যারো বা তীর চিহ্নটি নিচ থেকে আবার উপরে ফিরে যায়।

সবচেয়ে মজার এবং গুরুত্বপূর্ণ কনসেপ্ট হলো লুপ বা চক্র। ধরো তোমাকে ১ থেকে ১০০ পর্যন্ত সব সংখ্যা যোগ করতে বলা হলো। তুমি কি ১০০ বার 'যোগ করো', 'যোগ করো' লিখবে? না! আমরা একটা চক্র তৈরি করব। পাশের ছবিটা ভালো করে লক্ষ্য করো। নিচের প্রসেসিং বক্স থেকে একটা তীর চিহ্ন আবার ঘুরে উপরের কন্ডিশনে ফিরে গেছে। এটাই হলো লুপ। কম্পিউটার বারবার ঘুরতে থাকবে এবং যোগ করতে থাকবে যতক্ষণ না i-এর মান N-এর চেয়ে বড় হয়ে যায়। প্রোগ্রামিংয়ে লুপ খুবই শক্তিশালী একটা টুল।

অ্যালগরিদম বনাম ফ্লোচার্ট

অ্যালগরিদম
* সমস্যার সমাধানের বর্ণনামূলক বা লিখিত রূপ।
* টেক্সট বা ভাষায় লেখা হয়।
* বুঝতে সময় বেশি লাগতে পারে কারণ পড়ে বুঝতে হয়।
* জটিল লজিক বোঝানো অনেক সময় কঠিন হয়ে পড়ে।
* কোনো নিয়ম বা স্ট্যান্ডার্ড সিম্বল নেই।

তাহলে, অ্যালগরিদম আর ফ্লোচার্টের মধ্যে মূল পার্থক্যটা কী? সোজা কথায়, অ্যালগরিদম হলো গল্পের মতো লিখিত বর্ণনা, আর ফ্লোচার্ট হলো ছবির মতো ভিজ্যুয়াল রিপ্রেজেন্টেশন। অ্যালগরিদম পড়ে বুঝতে হয়, সময় লাগে। কিন্তু ফ্লোচার্ট দেখলে এক নজরেই বোঝা যায় ডেটা কোনদিক থেকে কোনদিকে যাচ্ছে। তবে মনে রাখবে, ভালো প্রোগ্রামাররা কোড করার আগে দুটোই প্র্যাকটিস করেন—আগে লজিকটা লিখে ফেলেন (অ্যালগরিদম), তারপর সেটাকে ছবিতে রূপ দেন (ফ্লোচার্ট)।

নিজে চেষ্টা করি (Classwork)

নিচের সমস্যাগুলোর জন্য ফ্লোচার্ট আঁকার চেষ্টা করো:

১. সেলসিয়াস তাপমাত্রাকে ফারেনহাইটে রূপান্তর করার ফ্লোচার্ট।
* সূত্র: $F = (C \times \frac{9}{5}) + 32$
* ক্লু: ইনপুট হবে C, প্রসেসিং হবে সূত্রটি, আউটপুট হবে F।

২. তিনটি সংখ্যার মধ্যে সবচেয়ে বড় সংখ্যাটি নির্ণয়।
* ক্লু: এখানে একাধিক ডায়মন্ড শেপ বা সিদ্ধান্ত লাগবে। প্রথমে A ও B এর তুলনা, তারপর বিজয়ীর সাথে C এর তুলনা।

নির্দেশনা: ভিডিওটি পজ করে খাতা-কলমে ফ্লোচার্টগুলো আঁকো।

এবার তোমাদের পালা। আমি চাই তোমরা এখন ভিডিওটা একটু পজ করো। খাতা-কলম নাও। এখানে দুটো সমস্যা দেওয়া আছে। প্রথমটা খুব সহজ, শুধু সূত্রটা বসিয়ে দিলেই হবে। ইনপুট নেবে সেলসিয়াস C, প্রসেসিং বক্সে সূত্রটা লিখবে, আর আউটপুট দেখাবে ফারেনহাইট F। দ্বিতীয়টা একটু চ্যালেঞ্জিং—তিনটা সংখ্যার মধ্যে বড়টা বের করতে হবে। এখানে তোমাকে দুইবার তুলনা করতে হতে পারে। ভয় পাওয়ার কিছু নেই, ভুল হলেও সমস্যা নেই, চেষ্টা করাটাই আসল। নিজে আঁকলে দেখবে কনসেপ্টটা একদম ক্লিয়ার হয়ে গেছে।

সারসংক্ষেপ ও আগামী ক্লাসে যা শিখব

আজ আমরা শিখলাম:
* অ্যালগরিদম ও ফ্লোচার্টের সংজ্ঞা ও পার্থক্য
* বিভিন্ন প্রতীকের (Start, Input, Process, Decision) ব্যবহার
* সিকুয়েন্স, সিলেকশন ও লুপের ফ্লোচার্ট তৈরি

আগামী ক্লাসে:
* আমরা প্রোগ্রামিং ভাষা C (সি) এর প্রাথমিক ধারণা নেব এবং আমাদের প্রথম কোড লিখব।

আজকের ক্লাসে আমরা প্রোগ্রামিংয়ের ব্লু-প্রিন্ট বা নকশা তৈরি করা শিখলাম। আমরা জানলাম কীভাবে অ্যালগরিদম লিখতে হয় এবং ফ্লোচার্ট আঁকতে হয়। ওভাল, ডায়মন্ড, আর লুপের কাজও দেখলাম। এই ভিত্তিটা কিন্তু খুবই জরুরি। কারণ আগামী ক্লাসে আমরা যখন সত্যিকারের কোডিং শুরু করব, তখন এই লজিকগুলোই আমাদের কাজে লাগবে। আগামী ক্লাসে আমরা 'C প্রোগ্রামিং' ল্যাঙ্গুয়েজ নিয়ে আলোচনা করব এবং কম্পিউটারে আমাদের প্রথম কোড লিখব। সেই পর্যন্ত সবাই ভালো থেকো, আর ফ্লোচার্টগুলো প্র্যাকটিস করতে থেকো। ধন্যবাদ!

অ্যালগরিদম ও ফ্লোচার্ট: ধারণা ও উদাহরণ

পড়তে প্রায় 25 মিনিট

লেকচারের আসবাবপত্র সংযোজনের উদাহরণটি মনে আছে? একটি আসবাব বা যন্ত্রাংশ কেনার পর সাথে যে ম্যানুয়াল বা নির্দেশিকা থাকে, সেখানে ছবি এবং লেখা—উভয় মাধ্যমেই ধাপে ধাপে সংযোজন প্রক্রিয়াটি বোঝানো হয়। প্রোগ্রামিংয়ের জগতেও বিষয়টি ঠিক তেমনই। একটি সফটওয়্যার বা প্রোগ্রাম তৈরি করার আগে, সেটি কীভাবে কাজ করবে তার একটি নীল-নকশা বা ব্লু-প্রিন্ট তৈরি করতে হয়। এই ব্লু-প্রিন্ট তৈরির দুটি প্রধান হাতিয়ার হলো অ্যালগরিদম (Algorithm) এবং ফ্লোচার্ট (Flowchart)

বাস্তব জীবনে যেমন একটি বহুতল ভবন নির্মাণের আগে আর্কিটেক্ট তার নকশা চূড়ান্ত করেন, তেমনি কোডিং শুরু করার আগে প্রোগ্রামারকে অ্যালগরিদম ও ফ্লোচার্ট তৈরি করতে হয়। এটি না করলে প্রোগ্রামে লজিক্যাল ভুল বা বাগ (Bug) থাকার সম্ভাবনা বেড়ে যায় এবং পরবর্তীতে ডিবাগিং (Debugging) করা কঠিন হয়ে পড়ে। এই অধ্যায়ে আমরা জানব কীভাবে একটি সমস্যার যৌক্তিক সমাধান ধাপে ধাপে সাজাতে হয় এবং চিত্রের মাধ্যমে প্রকাশ করতে হয়।

অ্যালগরিদম: ধাপে ধাপে সমস্যা সমাধান

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

সংজ্ঞা (Definition): অ্যালগরিদম হলো কোনো নির্দিষ্ট সমস্যা সমাধানের জন্য যুক্তিযুক্ত ও ধাপে ধাপে বিন্যস্ত যে পর্যায়ক্রমিক ধারা বর্ণনা করা হয়, তাকে অ্যালগরিদম বলা হয়।

সহজ কথায়, একটি সমস্যাকে ছোট ছোট ধাপে ভাগ করে সমাধানের লিখিত রূপই হলো অ্যালগরিদম। উদাহরণস্বরূপ, তিনটি সংখ্যার গড় নির্ণয়ের জন্য আমরা এভাবে অ্যালগরিদম লিখতে পারি:
- ধাপ ১: শুরু।
- ধাপ ২: তিনটি সংখ্যা ইনপুট হিসেবে গ্রহণ করি।
- ধাপ ৩: সংখ্যা তিনটির যোগফল বের করি।
- ধাপ ৪: যোগফলকে ৩ দিয়ে ভাগ করে গড় নির্ণয় করি।
- ধাপ ৫: গড় ফলাফল হিসেবে ছাপাই।
- ধাপ ৬: শেষ।

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

পরীক্ষায় অনুধাবনমূলক প্রশ্নে প্রায়ই "ভালো অ্যালগরিদমের শর্তাবলি" জানতে চাওয়া হয়। একটি আদর্শ অ্যালগরিদমের নিচের ৫টি বৈশিষ্ট্য থাকা জরুরি:

গুরুত্বপূর্ণ (Important) - ভালো অ্যালগরিদমের ৫টি বৈশিষ্ট্য:
- স্পষ্টতা (Clarity): অ্যালগরিদমের প্রতিটি ধাপ সহজবোধ্য ও স্পষ্ট হতে হবে, যাতে কোনো অস্পষ্টতা না থাকে।
- সসীমতা (Finiteness): ধাপের সংখ্যা অবশ্যই নির্দিষ্ট বা সসীম হতে হবে। অসীম সংখ্যক ধাপ হতে পারবে না।
- ইনপুট (Input): সমস্যা সমাধানের জন্য প্রয়োজনীয় ডেটা বা ইনপুট গ্রহণের ব্যবস্থা থাকতে হবে।
- আউটপুট (Output): প্রক্রিয়াকরণ শেষে কমপক্ষে একটি ফলাফল বা আউটপুট পাওয়া যেতে হবে।
- কার্যকারিতা (Effectiveness): প্রতিটি ধাপ এমন হতে হবে যা বাস্তবে প্রয়োগ করা সম্ভব এবং কার্যকর।

ফ্লোচার্ট: যুক্তির চিত্ররূপ

অ্যালগরিদম যেখানে লিখিত বর্ণনা, ফ্লোচার্ট সেখানে চিত্রভিত্তিক উপস্থাপনা। মানুষের মস্তিষ্ক লেখার চেয়ে ছবি বা ডায়াগ্রাম দ্রুত বুঝতে পারে, তাই জটিল প্রোগ্রামের লজিক বুঝতে ফ্লোচার্ট অত্যন্ত কার্যকর।

সংজ্ঞা (Definition): যে চিত্রের মাধ্যমে কোনো সিস্টেম বা প্রোগ্রামের কার্যাবলি বা প্রবাহ ধাপে ধাপে জ্যামিতিক প্রতীকের সাহায্যে প্রকাশ করা হয়, তাকে ফ্লোচার্ট বা প্রবাহচিত্র বলে।

ফ্লোচার্টের প্রকারভেদ

ফ্লোচার্ট প্রধানত দুই প্রকার:
১. সিস্টেম ফ্লোচার্ট (System Flowchart): এটি পুরো সিস্টেমের ডেটা প্রবাহ দেখায়। এতে ডেটা কোথা থেকে আসছে, কোথায় প্রসেস হচ্ছে এবং কোথায় সংরক্ষিত হচ্ছে—তা দেখানো হয়।
২. প্রোগ্রাম ফ্লোচার্ট (Program Flowchart): এটি নির্দিষ্ট কোনো প্রোগ্রামের লজিক বা যুক্তির প্রবাহ দেখায়। আমরা প্রোগ্রামিংয়ে মূলত এটিই ব্যবহার করি।

পার্থক্য (Difference): সিস্টেম ফ্লোচার্ট বনাম প্রোগ্রাম ফ্লোচার্ট

বৈশিষ্ট্য সিস্টেম ফ্লোচার্ট প্রোগ্রাম ফ্লোচার্ট
বিষয়বস্তু পুরো সিস্টেমের ডেটা প্রসেসিং প্রবাহ দেখায়। নির্দিষ্ট প্রোগ্রামের লজিক বা সমাধানের ধাপ দেখায়।
ব্যবহারকারী সিস্টেম এনালিস্টরা ব্যবহার করেন। প্রোগ্রামাররা ব্যবহার করেন।
জটিলতা তুলনামূলক জটিল ও বিস্তৃত। তুলনামূলক নির্দিষ্ট ও সহজবোধ্য।

ফ্লোচার্টের প্রতীক পরিচিতি ও ব্যবহার

ফ্লোচার্ট আঁকার জন্য আন্তর্জাতিকভাবে স্বীকৃত কিছু নির্দিষ্ট প্রতীক বা সিম্বল (Symbol) ব্যবহৃত হয়। নিজের ইচ্ছেমতো আকৃতি ব্যবহার করা যাবে না। নিচে বহুল ব্যবহৃত প্রতীকগুলো দেওয়া হলো:

স্ট্যান্ডার্ড ফ্লোচার্ট প্রতীকসমূহ

পরীক্ষার টিপস (Exam Tip):
- ডিম্বাকৃতি (Oval): প্রতীকটি শুধুমাত্র 'শুরু' (Start) এবং 'শেষ' (End) এর জন্য ব্যবহৃত হয়। ইনপুট বা প্রসেসিংয়ের জন্য কখনোই এটি ব্যবহার করবে না।
- সামান্তরিক (Parallelogram): ইনপুট নেওয়া এবং আউটপুট বা ফলাফল দেখানোর জন্য ব্যবহৃত হয়।
- ডায়মন্ড (Diamond): সিদ্ধান্ত গ্রহণের জন্য ব্যবহৃত হয়। এখান থেকে সবসময় কমপক্ষে দুটি প্রবাহ রেখা (Yes/No অথবা True/False) বের হবে।
- বৃত্ত (Circle): এটি সংযোগকারী বা Connector। ফ্লোচার্ট এক পৃষ্ঠায় না ধরলে বা একাধিক প্রবাহ এক বিন্দুতে মিলিত হলে এটি ব্যবহৃত হয়।

উদাহরণ ১: সরল অনুক্রম (Sequence)

যেসব সমস্যায় কোনো শর্ত বা লুপ নেই, কেবল একটার পর একটা ধাপ বা সূত্র প্রয়োগ করতে হয়, সেগুলোকে সরল অনুক্রম বলা হয়।

সমস্যা: বৃত্তের ক্ষেত্রফল নির্ণয়

$$Area = \pi \times r^2$$
যেখানে, $\pi = 3.1416$ এবং $r$ হলো বৃত্তের ব্যাসার্ধ।

অ্যালগরিদম:
- ধাপ-১: শুরু করি।
- ধাপ-২: ব্যাসার্ধ r এর মান ইনপুট হিসেবে গ্রহণ করি।
- ধাপ-৩: $Area = 3.1416 \times r \times r$ সূত্র ব্যবহার করে ক্ষেত্রফল নির্ণয় করি।
- ধাপ-৪: ক্ষেত্রফল Area এর মান ছাপাই।
- ধাপ-৫: শেষ করি।

ফ্লোচার্ট:
1. Oval (Start)
2. Parallelogram (Input r)
3. Rectangle (Area = 3.1416 * r * r)
4. Parallelogram (Print Area)
5. Oval (End)

সমস্যা: তাপমাত্রা রূপান্তর (সেলসিয়াস থেকে ফারেনহাইট)

$$F = \frac{9C}{5} + 32$$
যেখানে, $C$ = সেলসিয়াস তাপমাত্রা এবং $F$ = ফারেনহাইট তাপমাত্রা।

অ্যালগরিদম:
- ধাপ-১: শুরু।
- ধাপ-২: সেলসিয়াস তাপমাত্রা C ইনপুট নিই।
- ধাপ-৩: $F = (9 \times C) / 5 + 32$ হিসেব করি।
- ধাপ-৪: F এর মান প্রদর্শন করি।
- ধাপ-৫: শেষ।

উদাহরণ ২: সিদ্ধান্ত গ্রহণ (Selection) - বড় সংখ্যা ও লিপিয়ার

যখন প্রোগ্রামে কোনো শর্তের ওপর ভিত্তি করে ভিন্ন ভিন্ন কাজ করতে হয়, তখন সিদ্ধান্তমূলক বা কন্ডিশনাল লজিক ব্যবহার করা হয়।

সমস্যা: তিনটি সংখ্যার মধ্যে বড় সংখ্যা নির্ণয়

এটি পরীক্ষার জন্য খুবই গুরুত্বপূর্ণ। এখানে নেস্টেড (Nested) কন্ডিশন ব্যবহার করা হয়।

তিনটি সংখ্যার মধ্যে বড় সংখ্যা নির্ণয়ের ফ্লোচার্ট

লজিক ব্যাখ্যা:
- প্রথমে A ও B এর তুলনা করি।
- যদি A বড় হয় (Yes), তবে চেক করি A কি C এর চেয়েও বড়?
- যদি হ্যাঁ, তবে A সবচেয়ে বড়।
- যদি না, তবে C সবচেয়ে বড় (কারণ C > A এবং A > B, তাই C সবার বড়)।
- যদি B বড় হয় (No, মানে A ছোট), তবে চেক করি B কি C এর চেয়েও বড়?
- যদি হ্যাঁ, তবে B সবচেয়ে বড়।
- যদি না, তবে C সবচেয়ে বড়।

সমস্যা: অধিবর্ষ বা লিপিয়ার (Leap Year) নির্ণয়

লিপিয়ার নির্ণয়ের শর্তটি একটু জটিল, তাই এটি পরীক্ষায় বেশি আসে। একটি সাল লিপিয়ার হবে যদি:
1. সালটি ৪০০ দ্বারা বিভাজ্য হয়।
অথবা
2. সালটি ৪ দ্বারা বিভাজ্য হয় এবং ১০০ দ্বারা বিভাজ্য না হয়।

শর্ত বা লজিক:
$$IsLeapYear = (Year \% 400 == 0) \quad OR \quad ((Year \% 4 == 0) \quad AND \quad (Year \% 100 != 0))$$

অ্যালগরিদম:
- ধাপ-১: শুরু।
- ধাপ-২: সাল (Y) ইনপুট নিই।
- ধাপ-৩: যদি Y কে ৪০০ দিয়ে ভাগ করলে ভাগশেষ ০ হয়, তবে ধাপ-৬ এ যাই (লিপিয়ার)।
- ধাপ-৪: যদি Y কে ১০০ দিয়ে ভাগ করলে ভাগশেষ ০ হয়, তবে ধাপ-৭ এ যাই (লিপিয়ার না)।
- ধাপ-৫: যদি Y কে ৪ দিয়ে ভাগ করলে ভাগশেষ ০ হয়, তবে ধাপ-৬ এ যাই (লিপিয়ার)। অন্যথায় ধাপ-৭ এ যাই।
- ধাপ-৬: "লিপিয়ার" ছাপাই এবং ধাপ-৮ এ যাই।
- ধাপ-৭: "লিপিয়ার না" ছাপাই।
- ধাপ-৮: শেষ।

উদাহরণ ৩: পুনরাবৃত্তি বা লুপ (Loop)

যখন একই কাজ বারবার করার প্রয়োজন হয়, তখন লুপ ব্যবহার করা হয়।

সংজ্ঞা (Definition): প্রোগ্রামের কোনো অংশ নির্দিষ্ট শর্ত পূরণ না হওয়া পর্যন্ত বারবার পুনরাবৃত্তি করাকে লুপ বা চক্র বলা হয়।

সমস্যা: ১ + ২ + ৩ + ... + N ধারার যোগফল নির্ণয়

অ্যালগরিদম:
- ধাপ-১: শুরু।
- ধাপ-২: শেষ পদ N এর মান ইনপুট নিই।
- ধাপ-৩: যোগফল রাখার জন্য S = 0 এবং কাউন্টার i = 1 ধরি।
- ধাপ-৪: S = S + i এবং i = i + 1 করি।
- ধাপ-৫: যদি i <= N হয়, তবে ৪ নং ধাপে ফেরত যাই। (লুপ চলছে)
- ধাপ-৬: যদি i > N হয়, তবে S এর মান ছাপাই।
- ধাপ-৭: শেষ।

সমস্যা: ফ্যাক্টরিয়াল নির্ণয় (N!)

লজিক: ফ্যাক্টরিয়াল হলো ১ থেকে ওই সংখ্যা পর্যন্ত সকল সংখ্যার গুণফল। যেমন: $5! = 1 \times 2 \times 3 \times 4 \times 5 = 120$।

অ্যালগরিদম:
- ধাপ-১: শুরু।
- ধাপ-২: N এর মান ইনপুট।
- ধাপ-৩: গুণফল রাখার জন্য F = 1 এবং i = 1 ধরি। (যোগফলের ক্ষেত্রে 0, কিন্তু গুণফলের ক্ষেত্রে 1 ধরতে হয়, কারণ 0 দিয়ে গুণ করলে সব 0 হয়ে যাবে)।
- ধাপ-৪: F = F * i
- ধাপ-৫: i = i + 1
- ধাপ-৬: যদি i <= N হয়, তবে ৪ নং ধাপে যাই।
- ধাপ-৭: F এর মান ছাপাই।
- ধাপ-৮: শেষ।

অ্যালগরিদম বনাম ফ্লোচার্ট: তুলনামূলক আলোচনা

পার্থক্যসমূহ:

ভিত্তি অ্যালগরিদম ফ্লোচার্ট
সংজ্ঞা সমস্যা সমাধানের লিখিত বর্ণনা। সমস্যা সমাধানের চিত্রভিত্তিক রূপ।
মাধ্যম এটি বর্ণনামূলক (Text-based)। এটি গ্রাফিক্যাল বা চিত্রভিত্তিক (Graphical)।
বোঝা পড়ে বুঝতে সময় বেশি লাগে। একনজরেই পুরো লজিক বোঝা যায়।
তৈরির নিয়ম নির্দিষ্ট কোনো ধরাবাঁধা নিয়ম নেই। নির্দিষ্ট জ্যামিতিক প্রতীক ব্যবহারের নিয়ম আছে।
ডিবাগিং ভুল খুঁজে বের করা তুলনামূলক কঠিন। ফ্লোচার্ট দেখে লজিক্যাল ভুল বা অসীম লুপ সহজেই ধরা যায়।

সৃজনশীল প্রশ্নের প্রস্তুতি ও শেষ কথা

পরীক্ষার হলে উদ্দীপক পড়ে তোমাকে সিদ্ধান্ত নিতে হবে কোন ধরনের ফ্লোচার্ট আঁকতে হবে। সাধারণত ৩ ধরনের সমস্যা বেশি আসে:
1. সূত্র নির্ভর: ক্ষেত্রফল, তাপমাত্রা, গড় ইত্যাদি। (সরল প্রবাহ)
2. শর্ত নির্ভর: বড়/ছোট সংখ্যা, লিপিয়ার, পাস/ফেইল। (ডায়মন্ড শেপ ব্যবহার হবে)
3. লুপ নির্ভর: ধারা বা সিরিজ, ফ্যাক্টরিয়াল, গসাগু। (প্রবাহ রেখা পেছনে ফিরে যাবে)

পরীক্ষার টিপস (Exam Tips):
- ফ্লোচার্টে অ্যারো বা তীর চিহ্ন দিতে ভুলবে না। তীর চিহ্ন ছাড়া ফ্লোচার্ট অর্থহীন কারণ এতে প্রবাহের দিক বোঝা যায় না।
- পেন্সিল দিয়ে ফ্লোচার্ট আঁকা বুদ্ধিমানের কাজ, যাতে ভুল হলে সহজে মোছা যায়।
- কানেক্টর (বৃত্ত) ব্যবহার করার সময় খেয়াল রাখবে যাতে সংযোগ রেখাগুলো এলোমেলো না হয়ে যায়।

পরিভাষা (Glossary)

শব্দ সংজ্ঞা
অ্যালগরিদম (Algorithm) সমস্যা সমাধানের ধাপে ধাপে লিখিত নির্দেশনা।
ফ্লোচার্ট (Flowchart) অ্যালগরিদমের জ্যামিতিক চিত্ররূপ।
সুডো কোড (Pseudo Code) প্রোগ্রামিং ভাষার মতো দেখতে কিন্তু মানুষের ভাষায় লেখা কোড বা খসড়া কোড।
ডিবাগিং (Debugging) প্রোগ্রামের ভুল (Bug) খুঁজে বের করা ও সমাধান করার প্রক্রিয়া।
লুপ (Loop) একই কাজ বারবার করার প্রক্রিয়া বা চক্র।
নেস্টেড লুপ (Nested Loop) একটি লুপের ভেতরে আরেকটি লুপ থাকা।
ইনপুট-আউটপুট (I/O) তথ্য গ্রহণ ও ফলাফল প্রদান প্রক্রিয়া।

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

সৃজনশীল প্রশ্ন

সৃজনশীল প্রশ্ন ১

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

ক) সুডোকোড (Pseudocode) কী?
খ) অ্যালগরিদম ও ফ্লোচার্টের মধ্যে দুটি পার্থক্য লিখ।
গ) উদ্দীপকের সমস্যাটির (তিনটি সংখ্যার গড় নির্ণয়) জন্য একটি অ্যালগরিদম লিখ।
ঘ) উদ্দীপকের সমস্যাটির জন্য একটি ফ্লোচার্ট অঙ্কন কর এবং অ্যালগরিদমের সাথে এর সম্পর্ক বিশ্লেষণ কর।

উত্তর

(ক) সুডোকোড হলো প্রোগ্রামের খসড়া বা ছদ্ম কোড, যা মানুষের বোধগম্য ভাষায় লেখা হয় এবং প্রোগ্রামের লজিক বা ধাপগুলো বর্ণনা করে, তবে এটি সরাসরি কম্পিউটারে রান করা যায় না।

(খ) অ্যালগরিদম ও ফ্লোচার্টের মধ্যে দুটি পার্থক্য হলো:
১. অ্যালগরিদম হলো কোনো সমস্যা সমাধানের ধারাবাহিক বর্ণনা বা ধাপসমূহ (লিখিত রূপ), আর ফ্লোচার্ট হলো সেই ধাপগুলোর চিত্রভিত্তিক বা গ্রাফিক্যাল উপস্থাপনা।
২. অ্যালগরিদম বুঝতে সময় বেশি লাগতে পারে কারণ এটি টেক্সট বা বর্ণনামূলক, কিন্তু ফ্লোচার্ট দেখে প্রোগ্রামের প্রবাহ দ্রুত বোঝা যায়।

(গ) উদ্দীপকের সমস্যাটি হলো তিনটি সংখ্যার গড় নির্ণয়। এর জন্য অ্যালগরিদম নিচে দেওয়া হলো:
ধাপ-১: শুরু করি।
ধাপ-২: তিনটি সংখ্যা A, B এবং C ইনপুট হিসেবে গ্রহণ করি।
ধাপ-৩: সংখ্যা তিনটির যোগফল Sum = A + B + C নির্ণয় করি।
ধাপ-৪: গড় Avg = Sum / 3 নির্ণয় করি।
ধাপ-৫: গড় Avg এর মান ছাপাই বা প্রদর্শন করি।
ধাপ-৬: শেষ করি।

(ঘ) উদ্দীপকের সমস্যাটির (তিনটি সংখ্যার গড় নির্ণয়) ফ্লোচার্ট নিচে দেওয়া হলো:

(চিত্র: তিনটি সংখ্যার গড় নির্ণয়ের ফ্লোচার্ট)
[Start] → (oval)

[Input A, B, C] → (parallelogram)

[Sum = A + B + C] → (rectangle)

[Avg = Sum / 3] → (rectangle)

[Print Avg] → (parallelogram)

[End] → (oval)

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


সৃজনশীল প্রশ্ন ২

শিক্ষক ক্লাসে ফ্লোচার্ট শেখানোর সময় বোর্ডে একটি চিত্র আঁকলেন যেখানে একটি হীরক আকৃতির (Diamond shape) বক্স ব্যবহার করা হয়েছে। বক্সটির ভেতরে শর্ত লেখা আছে "N > 0?"। যদি শর্তটি সত্য হয় তবে এক পথে কাজ হবে, আর মিথ্যা হলে অন্য পথে যাবে। তিনি বললেন, "প্রোগ্রামিংয়ে সিদ্ধান্ত গ্রহণের জন্য এই প্রতীকটি খুবই গুরুত্বপূর্ণ।"

চিত্র

ক) ফ্লোচার্ট কী?
খ) সংযোগকারী বা কানেক্টর প্রতীকটি কখন ব্যবহৃত হয়?
গ) উদ্দীপকে বর্ণিত প্রতীকটির কাজ ব্যাখ্যা কর।
ঘ) উদ্দীপকের প্রতীকটি ব্যবহার করে ১ থেকে N পর্যন্ত সংখ্যার যোগফল নির্ণয়ের জন্য একটি ফ্লোচার্ট অঙ্কন কর।

উত্তর

(ক) ফ্লোচার্ট হলো বিশেষ কিছু জ্যামিতিক প্রতীক বা চিহ্নের সাহায্যে কোনো সমস্যা সমাধানের ধাপসমূহের চিত্রভিত্তিক উপস্থাপনা, যা প্রোগ্রামের ডেটা প্রবাহের দিক নির্দেশ করে।

(খ) ফ্লোচার্টে সংযোগকারী বা কানেক্টর (Connector) প্রতীকটি (সাধারণত ছোট বৃত্ত) ব্যবহৃত হয় যখন ফ্লোচার্টটি অনেক বড় হয়ে যায় এবং এক পৃষ্ঠা থেকে অন্য পৃষ্ঠায় সংযোগ করার প্রয়োজন হয় অথবা ফ্লোচার্টের বিভিন্ন অংশের প্রবাহকে এক বিন্দুতে মিলিত করার প্রয়োজন হয়। এটি প্রোগ্রামের প্রবাহের ধারাবাহিকতা বজায় রাখতে সাহায্য করে।

(গ) উদ্দীপকে বর্ণিত প্রতীকটি হলো হীরক আকৃতির বা ডায়মন্ড শেপ (Diamond Shape) বক্স। ফ্লোচার্টে এই প্রতীকটি 'সিদ্ধান্ত গ্রহণ' (Decision Making) বা শর্ত যাচাইয়ের জন্য ব্যবহৃত হয়। যখন প্রোগ্রামের কোনো ধাপে একাধিক পথ বা বিকল্প তৈরি হয় এবং একটি শর্তের ওপর ভিত্তি করে প্রোগ্রামটি কোন দিকে যাবে তা নির্ধারণ করতে হয়, তখন এই বক্স ব্যবহার করা হয়। যেমন উদ্দীপকে "N > 0?" শর্তটি সত্য হলে এক পথে (Yes) এবং মিথ্যা হলে অন্য পথে (No) যাওয়ার নির্দেশ দেয়। এটি প্রোগ্রামের লজিক্যাল ফ্লো বা প্রবাহ নিয়ন্ত্রণে অপরিহার্য।

(ঘ) উদ্দীপকের সিদ্ধান্ত গ্রহণ প্রতীকটি ব্যবহার করে ১ থেকে N পর্যন্ত সংখ্যার যোগফল নির্ণয়ের ফ্লোচার্ট নিচে দেওয়া হলো:

  1. শুরু (Start) - ওভাল শেপ।
  2. ইনপুট N গ্রহণ (Input N) - সামান্তরিক শেপ।
  3. প্রসেস: S = 0 এবং I = 1 সেট করা (S হলো যোগফল, I হলো কাউন্টার) - আয়তক্ষেত্র।
  4. সিদ্ধান্ত (Decision): "I <= N?" (হীরক আকৃতি)।
    - যদি হ্যাঁ (Yes) হয়:
    • S = S + I (যোগফলের সাথে বর্তমান সংখ্যা যোগ) - আয়তক্ষেত্র।
    • I = I + 1 (পরবর্তী সংখ্যার জন্য বৃদ্ধি) - আয়তক্ষেত্র।
    • লুপের শুরুতে ফিরে যাওয়া (৪ নং ধাপে)।
    • যদি না (No) হয়:
    • ফলাফল S ছাপানো (Print S) - সামান্তরিক।
    • শেষ (End) - ওভাল।

এই ফ্লোচার্টে হীরক আকৃতির বক্সটি বারবার যাচাই করে যে কাউন্টার I এর মান N এর সমান বা ছোট কি না। যতক্ষণ শর্ত সত্য থাকে, লুপ চলতে থাকে এবং যোগফল নির্ণয় হয়।


সৃজনশীল প্রশ্ন ৩

আইসিটি ক্লাসে শিক্ষক বললেন, "আমরা যখন কোনো বড় সমস্যা সমাধান করি, তখন সেটি ছোট ছোট অংশে ভাগ করে সমাধান করা সহজ।" তিনি বোর্ডে একটি ধারার যোগফল নির্ণয়ের লজিক দেখালেন: ১ + ৩ + ৫ + ... + N। তিনি বললেন, এই লজিকটি অ্যালগরিদম ও ফ্লোচার্ট উভয় মাধ্যমেই প্রকাশ করা যায়।

ক) ডিবাগিং কী?
খ) ফ্লোচার্টকে কেন প্রোগ্রামের ব্লুপ্রিন্ট বলা হয়?
গ) উদ্দীপকে উল্লিখিত ধারাটির (১+৩+৫+...+N) যোগফল নির্ণয়ের জন্য একটি ফ্লোচার্ট তৈরি কর।
ঘ) উদ্দীপকের সমস্যাটি সমাধানের জন্য অ্যালগরিদম ও ফ্লোচার্টের মধ্যে কোনটি বেশি সুবিধাজনক বলে তুমি মনে কর? যুক্তিসহ বিশ্লেষণ কর।

উত্তর

(ক) ডিবাগিং হলো প্রোগ্রামের ভুল-ত্রুটি (Bugs) খুঁজে বের করা এবং তা সংশোধন করার প্রক্রিয়া।

(খ) কোনো দালান বা বড় স্থাপনা তৈরির আগে যেমন নকশা বা ব্লুপ্রিন্ট তৈরি করা হয়, তেমনি কোনো জটিল প্রোগ্রাম লেখার আগে ফ্লোচার্ট তৈরি করা হয়। ফ্লোচার্ট দেখে বোঝা যায় প্রোগ্রামটি কীভাবে কাজ করবে, ডেটা কোন দিক থেকে কোন দিকে প্রবাহিত হবে এবং কোথায় সিদ্ধান্ত নিতে হবে। এটি প্রোগ্রামারকে কোড লেখার সময় দিকনির্দেশনা দেয় এবং ভুল কমাতে সাহায্য করে। এজন্য ফ্লোচার্টকে প্রোগ্রামের ব্লুপ্রিন্ট বা রূপরেখা বলা হয়।

(গ) উদ্দীপকের ধারাটি (১ + ৩ + ৫ + ... + N) হলো বিজোড় সংখ্যার যোগফল নির্ণয়ের সমস্যা। এর ফ্লোচার্ট নিম্নরূপ:

[Start]

[Input N]

[Sum = 0, K = 1] (Sum হলো যোগফল, K হলো পদ সংখ্যা)

(Decision Box) [K <= N?]
↓ Yes ↓ No
[Sum = Sum + K] → [Print Sum]
↓ ↓
[K = K + 2] → [End]

(Go back to Decision)

এখানে লুপের মধ্যে প্রতিবার K এর মান ২ করে বাড়ছে (১, ৩, ৫...), এবং তা Sum এর সাথে যোগ হচ্ছে।

(ঘ) উদ্দীপকের সমস্যাটি সমাধানের জন্য অ্যালগরিদম ও ফ্লোচার্ট উভয়ই গুরুত্বপূর্ণ, তবে ফ্লোচার্ট বেশি সুবিধাজনক বলে আমি মনে করি।

কারণসমূহ:
১. ভিজ্যুয়ালাইজেশন: অ্যালগরিদম হলো টেক্সট বা বর্ণনামূলক, যা পড়ে বুঝতে সময় লাগে। কিন্তু ফ্লোচার্ট হলো চিত্রভিত্তিক। মানুষ চিত্রের মাধ্যমে যেকোনো লজিক দ্রুত বুঝতে পারে। উদ্দীপকের লুপটি (Loop) কীভাবে ঘুরছে এবং শর্ত (Condition) কোথায় যাচাই হচ্ছে, তা ফ্লোচার্টে এক নজরেই বোঝা যায়।
২. প্রবাহ বোঝা: ডেটা প্রবাহের দিক অ্যালগরিদমে সবসময় স্পষ্ট হয় না, কিন্তু ফ্লোচার্টে তীরের সাহায্যে তা স্পষ্টভাবে দেখানো থাকে।
৩. ডিবাগিং সুবিধা: যদি লজিকের কোথাও ভুল থাকে, তবে ফ্লোচার্ট দেখে তা শনাক্ত করা সহজ। অ্যালগরিদমের ক্ষেত্রে প্রতিটি লাইন পড়ে ভুল বের করা সময়সাপেক্ষ।
৪. সর্বজনীনতা: ফ্লোচার্টের প্রতীকগুলো আন্তর্জাতিকভাবে স্বীকৃত। ভাষার বাধা থাকলেও ফ্লোচার্ট দেখে অন্য কেউ লজিকটি বুঝতে পারবে।

তাই বলা যায়, যদিও অ্যালগরিদম লজিক দাঁড় করাতে সাহায্য করে, কিন্তু প্রোগ্রাম বোঝা, বিশ্লেষণ করা এবং রক্ষণাবেক্ষণের ক্ষেত্রে ফ্লোচার্ট অধিকতর সুবিধাজনক।

এমসিকিউ

১। সমস্যা সমাধানের ধাপসমূহের চিত্রভিত্তিক রূপকে কী বলা হয়?

ক) অ্যালগরিদম
খ) ফ্লোচার্ট
গ) সুডোকোড
ঘ) ডিবাগিং

সঠিক উত্তর: খ) ফ্লোচার্ট

ব্যাখ্যা: ফ্লোচার্ট হলো বিশেষ কিছু জ্যামিতিক প্রতীক বা চিহ্নের সাহায্যে কোনো সমস্যা সমাধানের ধাপসমূহের চিত্রভিত্তিক উপস্থাপনা।


২। প্রোগ্রাম তৈরির পূর্বে অ্যালগরিদম ও ফ্লোচার্ট তৈরি করার মূল উদ্দেশ্য কী?

ক) কোডিং সহজ করা
খ) ভুল নির্ণয় কঠিন করা
গ) মেমোরি কমানো
ঘ) সময় বাড়ানো

সঠিক উত্তর: ক) কোডিং সহজ করা

ব্যাখ্যা: অ্যালগরিদম ও ফ্লোচার্ট তৈরি করলে প্রোগ্রামের লজিক বা যুক্তি আগে থেকেই স্পষ্ট হয়ে যায়, ফলে কোডিং বা প্রোগ্রাম লেখা সহজ হয় এবং ভুল হওয়ার সম্ভাবনা কমে।


৩। ফ্লোচার্টে শুরু এবং শেষ বোঝাতে কোন প্রতীক ব্যবহৃত হয়?

ক) আয়তক্ষেত্র (Rectangle)
খ) সামান্তরিক (Parallelogram)
গ) ডিম্বাকৃতি (Oval)
ঘ) হীরক আকৃতি (Diamond)

সঠিক উত্তর: গ) ডিম্বাকৃতি (Oval)

ব্যাখ্যা: ফ্লোচার্টে শুরু (Start) এবং শেষ (End) বোঝাতে ওভাল বা ডিম্বাকৃতি প্রতীক ব্যবহৃত হয়।


৪। ফ্লোচার্টে সিদ্ধান্ত গ্রহণের জন্য কোন প্রতীক ব্যবহৃত হয়?

ক) ওভাল
খ) ডায়মন্ড (Diamond)
গ) বৃত্ত (Circle)
ঘ) আয়তক্ষেত্র (Rectangle)

সঠিক উত্তর: খ) ডায়মন্ড (Diamond)

ব্যাখ্যা: যখন প্রোগ্রামে কোনো শর্ত যাচাই বা সিদ্ধান্ত গ্রহণের প্রয়োজন হয় (যেমন: হ্যাঁ/না), তখন হীরক আকৃতির বা ডায়মন্ড শেপ বক্স ব্যবহৃত হয়।


৫। ফ্লোচার্টে ইনপুট ও আউটপুট নির্দেশের জন্য কোন প্রতীক ব্যবহৃত হয়?

ক) আয়তক্ষেত্র
খ) সামান্তরিক
গ) বৃত্ত
ঘ) ওভাল

সঠিক উত্তর: খ) সামান্তরিক

ব্যাখ্যা: ফ্লোচার্টে ডেটা ইনপুট নেওয়া এবং ফলাফল আউটপুট প্রদর্শনের জন্য সামান্তরিক (Parallelogram) প্রতীক ব্যবহৃত হয়।


৬। ফ্লোচার্টে প্রক্রিয়াকরণ (Processing) বোঝাতে কোন প্রতীক ব্যবহৃত হয়?

ক) আয়তক্ষেত্র
খ) সামান্তরিক
গ) ডায়মন্ড
ঘ) বৃত্ত

সঠিক উত্তর: ক) আয়তক্ষেত্র

ব্যাখ্যা: গাণিতিক হিসাব-নিকাশ বা প্রক্রিয়াকরণ (যেমন: যোগ, বিয়োগ, মান নির্ধারণ) বোঝাতে আয়তক্ষেত্র (Rectangle) প্রতীক ব্যবহৃত হয়।


৭। ফ্লোচার্টে বৃত্ত (Circle) প্রতীকটি কী নির্দেশ করে?

ক) শুরু/শেষ
খ) সিদ্ধান্ত
গ) সংযোগকারী (Connector)
ঘ) প্রক্রিয়াকরণ

সঠিক উত্তর: গ) সংযোগকারী (Connector)

ব্যাখ্যা: ফ্লোচার্টের বিভিন্ন অংশের প্রবাহকে এক বিন্দুতে মিলিত করতে বা এক পৃষ্ঠা থেকে অন্য পৃষ্ঠায় সংযোগ করতে ছোট বৃত্ত বা কানেক্টর ব্যবহৃত হয়।


৮। সুডোকোড (Pseudocode) বলতে কী বোঝায়?

ক) মিথ্যা কোড
খ) মেশিন ভাষা
গ) অ্যাসেম্বলি ভাষা
ঘ) গ্রাফিক্যাল রিপ্রেজেন্টেশন

সঠিক উত্তর: ক) মিথ্যা কোড

ব্যাখ্যা: 'Pseudo' অর্থ ছদ্ম বা মিথ্যা। সুডোকোড হলো প্রোগ্রামের লজিক বা ধাপগুলো মানুষের ভাষায় বর্ণনা করা, যা সরাসরি কম্পিউটারে চলে না কিন্তু প্রোগ্রামারকে কোড লিখতে সাহায্য করে।


৯। প্রোগ্রাম ফ্লোচার্ট ও সিস্টেম ফ্লোচার্টের মধ্যে মূল পার্থক্য কোথায়?

ক) প্রতীকের ব্যবহারে
খ) ডেটা প্রবাহের দিকে
গ) ব্যবহারের ক্ষেত্রে
ঘ) রঙের ব্যবহারে

সঠিক উত্তর: গ) ব্যবহারের ক্ষেত্রে

ব্যাখ্যা: প্রোগ্রাম ফ্লোচার্ট একটি নির্দিষ্ট প্রোগ্রামের লজিক দেখায়, আর সিস্টেম ফ্লোচার্ট পুরো সিস্টেমের ডেটা প্রবাহ ও প্রক্রিয়াকরণ দেখায়। এদের প্রতীক ও ব্যবহারের ক্ষেত্র ভিন্ন।


১০। ফ্লোচার্টে প্রবাহের দিক নির্দেশ করতে কী ব্যবহৃত হয়?

ক) তীর চিহ্ন (Arrow)
খ) ডট চিহ্ন
গ) স্টার চিহ্ন
ঘ) হ্যাশ চিহ্ন

সঠিক উত্তর: ক) তীর চিহ্ন (Arrow)

ব্যাখ্যা: ফ্লোচার্টে এক ধাপ থেকে অন্য ধাপে যাওয়ার দিক বা প্রবাহ নির্দেশ করতে তীর চিহ্ন (Flow lines) ব্যবহৃত হয়।


১১। অ্যালগরিদমের শর্তগুলো হলো-
i. সহজবোধ্য হতে হবে
ii. সসীম সংখ্যক ধাপে শেষ হতে হবে
iii. ব্যাপকভাবে প্রয়োগ করা যাবে

নিচের কোনটি সঠিক?

ক) i ও ii
খ) i ও iii
গ) ii ও iii
ঘ) i, ii ও iii

সঠিক উত্তর: ঘ) i, ii ও iii

ব্যাখ্যা: একটি ভালো অ্যালগরিদম অবশ্যই সহজবোধ্য, সসীম ধাপে সমাপ্ত এবং ব্যাপকভাবে প্রয়োগযোগ্য হতে হবে।


১২। ফ্লোচার্ট ব্যবহারের সুবিধা হলো-
i. প্রোগ্রামের ভুল নির্ণয় সহজ হয়
ii. প্রোগ্রাম পরিবর্তন করা সহজ হয়
iii. প্রোগ্রাম লিখতে সময় কম লাগে

নিচের কোনটি সঠিক?

ক) i ও ii
খ) i ও iii
গ) ii ও iii
ঘ) i, ii ও iii

সঠিক উত্তর: ঘ) i, ii ও iii

ব্যাখ্যা: ফ্লোচার্ট থাকলে লজিক আগে থেকেই পরিষ্কার থাকে, ফলে কোড লেখা দ্রুত হয়, ভুল সহজে ধরা পড়ে এবং ভবিষ্যতে পরিবর্তন করা সহজ হয়।


১৩। লুপ (Loop) বা চক্রের অংশগুলো হলো-
i. ইনিশিয়ালাইজেশন (Initialization)
ii. কন্ডিশন (Condition)
iii. ইনক্রিমেন্ট/ডিক্রিমেন্ট (Increment/Decrement)

নিচের কোনটি সঠিক?

ক) i ও ii
খ) i ও iii
গ) ii ও iii
ঘ) i, ii ও iii

সঠিক উত্তর: ঘ) i, ii ও iii

ব্যাখ্যা: যেকোনো লুপ বা চক্রের তিনটি প্রধান অংশ থাকে: শুরু (Initialization), শর্ত যাচাই (Condition), এবং পরিবর্তন (Increment/Decrement)।


নিচের উদ্দীপকটি পড় এবং ১৪ ও ১৫ নং প্রশ্নের উত্তর দাও:
মি. এক্স তার ছাত্রদের বললেন, "আমরা একটি সংখ্যা N ইনপুট নিব এবং ১ থেকে N পর্যন্ত সংখ্যার যোগফল নির্ণয় করব। এর জন্য আমাদের একটি শর্ত যাচাই করতে হবে।"

১৪। উদ্দীপকের সমস্যাটি সমাধানের জন্য ফ্লোচার্টে কোন প্রতীকটি লুপের মধ্যে ব্যবহৃত হবে?

ক) ওভাল
খ) ডায়মন্ড
গ) বৃত্ত
ঘ) আয়তক্ষেত্র

সঠিক উত্তর: খ) ডায়মন্ড

ব্যাখ্যা: লুপ বা চক্রের শর্ত (যেমন: Counter <= N) যাচাই করার জন্য ডায়মন্ড বা সিদ্ধান্ত গ্রহণ প্রতীক ব্যবহৃত হয়।


১৫। যদি N এর মান ৫ হয়, তবে লুপটি কতবার ঘুরবে?

ক) ৪ বার
খ) ৫ বার
গ) ৬ বার
ঘ) অসংখ্য বার

সঠিক উত্তর: খ) ৫ বার

ব্যাখ্যা: ১ থেকে ৫ পর্যন্ত সংখ্যার যোগফল নির্ণয়ের জন্য লুপটি ১, ২, ৩, ৪, ৫ - এই ৫ বার ঘুরবে।


১৬। ফ্লোচার্টে A = B + C লিখলে কোন প্রতীক ব্যবহার করতে হবে?

ক) সামান্তরিক
খ) আয়তক্ষেত্র
গ) ডায়মন্ড
ঘ) ওভাল

সঠিক উত্তর: খ) আয়তক্ষেত্র

ব্যাখ্যা: A = B + C একটি গাণিতিক প্রক্রিয়া বা প্রসেসিং, তাই এটি আয়তক্ষেত্র (Rectangle) এর মধ্যে লিখতে হবে।


১৭। Input R - এটি ফ্লোচার্টের কোন প্রতীকের মধ্যে লেখা হবে?

ক) আয়তক্ষেত্র
খ) সামান্তরিক
গ) ডায়মন্ড
ঘ) বৃত্ত

সঠিক উত্তর: খ) সামান্তরিক

ব্যাখ্যা: ইনপুট বা আউটপুট নির্দেশের জন্য সামান্তরিক (Parallelogram) প্রতীক ব্যবহৃত হয়।


১৮। নিচের কোনটি সঠিক অ্যালগরিদমের বৈশিষ্ট্য নয়?

ক) ধাপে ধাপে বর্ণনা
খ) অস্পষ্টতা
গ) সসীমতা
ঘ) ফলাফল প্রদর্শন

সঠিক উত্তর: খ) অস্পষ্টতা

ব্যাখ্যা: অ্যালগরিদম অবশ্যই স্পষ্ট (Unambiguous) হতে হবে। কোনো অস্পষ্ট বা দ্ব্যর্থবোধক নির্দেশ থাকা যাবে না।


১৯। দুটি সংখ্যার মধ্যে বড় সংখ্যাটি নির্ণয়ের জন্য কোন প্রতীকটি অপরিহার্য?

ক) ওভাল
খ) ডায়মন্ড
গ) বৃত্ত
ঘ) আয়তক্ষেত্র

সঠিক উত্তর: খ) ডায়মন্ড

ব্যাখ্যা: দুটি সংখ্যার তুলনা (যেমন: A > B?) করার জন্য সিদ্ধান্ত গ্রহণ বা ডায়মন্ড প্রতীক প্রয়োজন।


২০। ফ্লোচার্টে একাধিক লাইন এসে এক বিন্দুতে মিললে এবং সেখান থেকে একটি লাইন বের হলে কোন প্রতীক ব্যবহৃত হয়?

ক) সংযোগকারী (Connector)
খ) সিদ্ধান্ত (Decision)
গ) প্রক্রিয়া (Process)
ঘ) ইনপুট (Input)

সঠিক উত্তর: ক) সংযোগকারী (Connector)

ব্যাখ্যা: একাধিক প্রবাহকে একত্রিত করতে সংযোগকারী বা বৃত্ত প্রতীক ব্যবহৃত হয়।


২১। লুপ বা চক্রের শর্ত মিথ্যা হলে সাধারণত প্রবাহ কোন দিকে যায়?

ক) লুপের শুরুতে
খ) লুপের ভেতরে
গ) লুপ থেকে বের হয়ে যায়
ঘ) প্রোগ্রাম বন্ধ হয়ে যায়

সঠিক উত্তর: গ) লুপ থেকে বের হয়ে যায়

ব্যাখ্যা: শর্ত মিথ্যা (False) হলে লুপ ভেঙে যায় এবং প্রবাহ পরবর্তী ধাপে (লুপের বাইরে) চলে যায়।


২২। ফ্লোচার্ট আঁকার সময় প্রবাহ রেখা (Flow lines) একে অপরকে ছেদ করলে কী হতে পারে?

ক) ফ্লোচার্ট ভুল হবে
খ) লজিক জটিল হবে
গ) কিছুই হবে না
ঘ) ফ্লোচার্ট সুন্দর হবে

সঠিক উত্তর: খ) লজিক জটিল হবে

ব্যাখ্যা: ফ্লোচার্টে রেখা ছেদ করা বা ক্রস করা উচিত নয়, এতে লজিক বুঝতে অসুবিধা হয় এবং জটিলতা বাড়ে। এজন্য সংযোগকারী ব্যবহার করা উত্তম।


২৩। প্রোগ্রাম ডিজাইনের ধাপ কোনটি?
i. সমস্যা বিশ্লেষণ
ii. অ্যালগরিদম ও ফ্লোচার্ট তৈরি
iii. কোডিং

নিচের কোনটি সঠিক?

ক) i ও ii
খ) i ও iii
গ) ii ও iii
ঘ) i, ii ও iii

সঠিক উত্তর: ঘ) i, ii ও iii

ব্যাখ্যা: প্রোগ্রাম ডিজাইনের সম্পূর্ণ প্রক্রিয়ায় সমস্যা বিশ্লেষণ, লজিক ডিজাইন (অ্যালগরিদম/ফ্লোচার্ট) এবং কোডিং বা প্রোগ্রাম লিখন সবই অন্তর্ভুক্ত।


২৪। ১ থেকে ১০ পর্যন্ত বিজোড় সংখ্যার যোগফল নির্ণয়ের লুপে ইনক্রিমেন্ট (Increment) কত হবে?

ক) ১
খ) ২
গ) ৩
ঘ) ৪

সঠিক উত্তর: খ) ২

ব্যাখ্যা: বিজোড় সংখ্যাগুলো হলো ১, ৩, ৫, ৭... এখানে প্রতিটি সংখ্যার ব্যবধান ২, তাই ইনক্রিমেন্ট ২ হবে।


২৫। ফ্লোচার্ট কত প্রকার?

ক) ২ প্রকার
খ) ৩ প্রকার
গ) ৪ প্রকার
ঘ) ৫ প্রকার

সঠিক উত্তর: ক) ২ প্রকার

ব্যাখ্যা: ফ্লোচার্ট প্রধানত ২ প্রকার: সিস্টেম ফ্লোচার্ট (System Flowchart) এবং প্রোগ্রাম ফ্লোচার্ট (Program Flowchart)।