অ্যালগরিদম ও ফ্লোচার্ট: ধারণা ও উদাহরণ
এইচএসসি আইসিটি: অ্যালগরিদম ও ফ্লোচার্ট কী? ফ্লোচার্টের প্রতীকসমূহ এবং গুরুত্বপূর্ণ উদাহরণ (গড়, বড় সংখ্যা, সিরিজ, ফ্যাক্টরিয়াল)।
অ্যালগরিদম ও ফ্লোচার্ট: ধারণা ও উদাহরণ
- অ্যালগরিদম ও ফ্লোচার্ট: ধারণা ও উদাহরণ
- লেখা নাকি ছবি: কোনটি সহজ?
- অ্যালগরিদম (Algorithm) কী?
- ফ্লোচার্ট (Flowchart) কী?
- ফ্লোচার্টের প্রতীকসমূহ (পর্ব ১)
- ফ্লোচার্টের প্রতীকসমূহ (পর্ব ২)
- উদাহরণ ১: দুটি সংখ্যার যোগফল নির্ণয়
- উদাহরণ ২: সিদ্ধান্ত গ্রহণ (Selection)
- উদাহরণ ৩: লুপ বা চক্র (Iteration)
- অ্যালগরিদম বনাম ফ্লোচার্ট
- নিজে চেষ্টা করি (Classwork)
- সারসংক্ষেপ ও আগামী ক্লাসে যা শিখব
অ্যালগরিদম ও ফ্লোচার্ট: ধারণা ও উদাহরণ
লেকচারের আসবাবপত্র সংযোজনের উদাহরণটি মনে আছে? একটি আসবাব বা যন্ত্রাংশ কেনার পর সাথে যে ম্যানুয়াল বা নির্দেশিকা থাকে, সেখানে ছবি এবং লেখা—উভয় মাধ্যমেই ধাপে ধাপে সংযোজন প্রক্রিয়াটি বোঝানো হয়। প্রোগ্রামিংয়ের জগতেও বিষয়টি ঠিক তেমনই। একটি সফটওয়্যার বা প্রোগ্রাম তৈরি করার আগে, সেটি কীভাবে কাজ করবে তার একটি নীল-নকশা বা ব্লু-প্রিন্ট তৈরি করতে হয়। এই ব্লু-প্রিন্ট তৈরির দুটি প্রধান হাতিয়ার হলো অ্যালগরিদম (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) | তথ্য গ্রহণ ও ফলাফল প্রদান প্রক্রিয়া। |