এই পাঠ শেষে যা যা শিখতে পারবে-
১। অ্যালগোরিদম ও ফ্লোচার্ট ব্যাখ্যা করতে পারবে।
২। অ্যালগোরিদম তৈরির শর্ত সমূহ বর্ণনা করতে পারবে।
৩। অ্যালগোরিদম ও ফ্লোচার্ট তৈরির সুবিধাসমূহ বর্ণনা করতে পারবে।
৪। ফ্লোচার্ট তৈরির নিয়মসমূহ বর্ণনা করতে পারবে।
৫। ফ্লোচার্টে ব্যবহৃত প্রতীক সমূহের ব্যবহার বর্ণনা করতে পারবে।
Go for English Version
অ্যালগোরিদম কী?
কোনো একটি নির্দিষ্ট সমস্যা সমাধানের জন্য যুক্তিসম্মত সসীম সংখ্যক পর্যায়ক্রমিক ধারা বর্ণনাকে একত্রে অ্যালগোরিদম বলা হয়। নিচের উদাহরণটি লক্ষ্য কর-
দুটি সংখ্যার গড় নির্ণয়ের অ্যালগোরিদমঃ
ধাপ-১: শুরু
ধাপ-২: a ও b এর মান গ্রহণ
ধাপ-৩: avg = (a+b)/2 নির্নয়
ধাপ-৪: avg এর মান প্রদর্শন
ধাপ-৫: শেষ
কোনো সমস্যাকে কম্পিউটার প্রোগ্রামিং দ্বারা সমাধান করার পূর্বে কাগজে-কলমে সমাধান করার জন্যই অ্যালগোরিদম ব্যবহার করা হয়।
আরব গনিতবিদ ‘আল খারিজমী’ তার গণিত বইয়ে সর্বপ্রথম অ্যালগোরিদমের ধারণা দেন এবং তার নাম অনুসারে অ্যালগোরিদম নামকরন করা হয়েছে।
অ্যালগোরিদম তৈরির শর্তঃ
১। অ্যালগোরিদম সহজবোধ্য হতে হবে।
২। ইনপুট এবং আউটপুট স্পষ্টভাবে নির্ধারন করতে হবে।
৩। অ্যালগোরিদমের কোন ধাপের পুনরাবৃত্তি হবে না এবং প্রত্যেকটি ধাপ স্পষ্ট হতে হবে যাতে সহজে বুঝা যায়।
৪। প্রত্যেকটি ধাপের লজিক্যাল ক্রম থাকতে হবে।
৫। সসীম সংখ্যক ধাপে সমস্যার সমাধান হতে হবে।
৬। অ্যালগোরিদম ব্যাপকভাবে প্রয়োগ উপযোগী হতে হবে।
৭। অ্যালগোরিদমে কোন কম্পিউটার কোড থাকা যাবে না বা লিখতে কোন প্রোগ্রামিং ভাষা ব্যবহার করা যাবে না। বরং অ্যালগোরিদম এমনভাবে লিখতে হবে যা একই ধরণের প্রোগ্রামিং ভাষার জন্য ব্যবহার করা যায়।
অ্যালগোরিদম তৈরির সুবিধাঃ
১। এটি একটি ধাপ-ভিত্তিক উপস্থাপনা ফলে সহজে প্রোগ্রামের উদ্দেশ্য বোঝা যায়।
২। একটি অ্যালগোরিদম একটি নির্দিষ্ট পদ্ধতি ব্যবহার করে।
৩। এটি কোনও প্রোগ্রামিং ভাষার উপর নির্ভরশীল নয়, তাই প্রোগ্রামিং জ্ঞান ছাড়াই যেকারো পক্ষে এটি বোঝা সহজ।
৪। একটি অ্যালগোরিদমের প্রতিটি ধাপের নিজস্ব লজিকাল ক্রম আছে তাই এটি ডিবাগ করা সহজ।
৫। প্রোগ্রাম পরিবর্তন ও পরিবর্ধনে সহায়তা করে।
ফ্লোচার্ট কী? বা প্রবাহ চিত্র কী?
যে চিত্রভিত্তিক পদ্ধতিতে বিশেষ কতকগুলো চিহ্নের সাহায্যে একটি নির্দিষ্ট সমস্যার সমাধান করা হয় তাকে ফ্লোচার্ট বলা হয়।অন্যভাবে বলা যায়, অ্যালগোরিদমের চিত্ররূপই হল ফ্লোচার্ট। নিচের উদাহরণটি লক্ষ্য কর-
দুটি সংখ্যার গড় নির্ণয়ের ফ্লোচার্ট:
1945 সালে ফ্লোচার্টের প্রথম নকশাটি ডিজাইন করেছিলেন “জন ভন নিউমান(John Von Neumann)” ।
প্রোগ্রাম লেখা এবং প্রোগ্রামটি অন্যদের কাছে ব্যাখ্যা করতে ফ্লোচার্টগুলো খুব সহায়ক। ফ্লোচার্ট দেখে কোনও সিস্টেমের ক্রিয়াকলাপ(Operation) এবং ক্রিয়াকলাপের ক্রম সহজেই বুঝা যায়। নির্দিষ্ট সমস্যা সমাধানের জন্য ব্যবহৃত ডিজাইনের নীলনকশা(blueprint) হিসাবে ফ্লোচার্ট ব্যবহৃত হয়।
ফ্লোচার্ট তৈরির নিয়মাবলীঃ
১। প্রতিটি ফ্লোচার্টের অবশ্যই একটি শুরু এবং শেষ অবজেক্ট থাকবে।
২। নিয়ন্ত্রণ প্রবাহ অবশ্যই টপ থেকে শুরু হবে।
৩। নিয়ন্ত্রণ প্রবাহ অবশ্যই বটম থেকে শেষ হবে।
৪। প্রচলিত চিহ্ন বা প্রতীক ব্যবহার করে ফ্লোচার্ট তৈরি করতে হবে।
৫। তীর(Arrow) চিহ্ন দিয়ে নিয়ন্ত্রণ প্রবাহ দেখাতে হবে।
৬। ফ্লোচার্টে কোন প্রোগ্রামিং ভাষা ব্যবহার করা যাবে না।
৭। চিহ্নগুলো ছোট বড় হলে সমস্যা নেই তবে আকৃতি ঠিক থাকতে হবে।
৮। অতিরিক্ত সংযোগ রেখা ও প্রতীক ব্যবহার করা যাবে না।
ফ্লোচার্টের সুবিধাঃ
১। একটি প্রোগ্রামের যুক্তির মধ্যে যোগাযোগের চমৎকার উপায় হলো ফ্লোচার্ট ।
২। ফ্লোচার্ট ব্যবহার করে সমস্যা বিশ্লেষণ করা সহজ।
৩। প্রোগ্রাম উন্নয়নের সময়, ফ্লোচার্ট একটি নীলনকশা(blueprint) এর ভূমিকা পালন করে, যা প্রোগ্রাম উন্নয়ন প্রক্রিয়াকে আরও সহজ করে তোলে।
৪। ফ্লোচার্ট এর সাহায্যে প্রোগ্রাম বা সিস্টেম রক্ষণাবেক্ষণ সহজ হয়।
৫। ফ্লোচার্টকে যেকোন প্রোগ্রামিং ভাষার কোডে রূপান্তর করা সহজ।
ফ্লোচার্টের প্রকারভেদঃ
ফ্লোচার্টকে প্রধানত দুইভাগে ভাগ করা যায়। যথা-
সিস্টেম ফ্লোচার্টঃ কোন একটি জটিল সিস্টেমের কার্যপ্রনালী (Operation) বুঝাতে সিস্টেম ফ্লোচার্ট ব্যবহৃত হয়। সিস্টেম ফ্লোচার্টে ডেটা গ্রহণ, প্রক্রিয়াকরণ, সংরক্ষণ এবং ফলাফল প্রদর্শনের প্রবাহ দেখানো হয়।
প্রোগ্রাম ফ্লোচার্টঃ প্রোগ্রাম ফ্লোচার্ট হল একটি অ্যালগোরিদমের চিত্র ভিত্তিক উপস্থাপনা, যা প্রায়শই কোনও প্রোগ্রামের যৌক্তিক প্রবাহকে কার্যকর করার জন্য প্রোগ্রাম ডিজাইন পর্যায়ে ব্যবহৃত হয়। এটি দেখায় যে, কোনও সিস্টেমের মধ্যে একটি প্রোগ্রাম কীভাবে কাজ করে। অর্থাৎ প্রোগ্রাম ফ্লোচার্টে একটি প্রোগ্রামের বিভিন্ন ধাপের বিস্তারিত বিবরণ দেওয়া হয়। এছাড়া প্রোগ্রামের ভূল নির্ণয় ও সংশোধনে প্রোগ্রাম ফ্লোচার্ট ব্যবহৃত হয়।
ফ্লোচার্টে ব্যবহৃত প্রতিক সমূহ ও ব্যবহারঃ
অ্যালগোরিদম এবং ফ্লোচার্ট গঠনের মৌলিক ধরণ বা স্ট্রাকচারঃ
সরল অনুক্রম (Simple Sequence): এই স্ট্রাকচারে নির্দেশগুলো সরল অনুক্রমে ধারাবাহিকভাবে নির্বাহ হয়ে থাকে।
নির্বাচন বা সিলেকশন (Selection): কোন একটি শর্তের সত্য বা মিথ্যার উপর ভিত্তি করে সিদ্ধান্ত নিয়ে কার্য নির্বাহের ক্ষেত্রে এই স্ট্রাকচার ব্যবহৃত হয়।
পুনরাবৃত্তি বা লুপ (Loop): একই ধরণের কাজ পুনরাবৃত্তি করার জন্য এই স্ট্রাকচার ব্যবহৃত হয়।
জাম্প (Jump): এই স্ট্রাকচারে প্রবাহ সরল অনুক্রমের পরিবর্তে কোন শর্তের সত্য বা মিথ্যার উপর ভিত্তি করে উপরের বা নিচের নির্দিস্ট কোন নির্দেশ নির্বাহ হতে থাকে।
সূডোকোড কী? (Pseudo Code)
সূডো (Pseudo) একটি গ্রীক শব্দ যার অর্থ হচ্ছে ছদ্ম বা ফেইক(fake)। সূডোকোড শব্দটি বোঝায় এটি কোন কোড নয়।
সূডোকোড হল কোনও প্রোগ্রাম বর্ণনার একটি ইনফরমাল উপায় যাতে প্রোগ্রামিং ভাষার সিনট্যাক্স বা কোনও প্রযুক্তি ব্যবহৃত হয় না। এটি কোনও প্রোগ্রামের একটি রূপরেখা বা খসড়া তৈরির জন্য ব্যবহৃত হয়। সূডোকোড একটি প্রোগ্রাম প্রবাহের ধারণা দেয়, তবে বিস্তারিত কিছু প্রকাশ করে না। সিস্টেম ডিজাইনারগণ সূডোকোড লিখে যাতে প্রোগ্রামাররা কোনও সফ্টওয়্যার প্রকল্পের প্রয়োজনীয়তা বুঝতে পারে এবং সে অনুযায়ী কোড লিখতে পারেন।
একটি প্রোগ্রামের কার্যপ্রণালী বর্ণনা বা উপস্থাপনার জন্য ইনফরমাল উপায়ে ইংরেজি ভাষায় লেখা কতগুলো নির্দেশনার সমষ্টিকে একত্রে সূডোকোড বলে। নিচের উদাহরণটি লক্ষ্য কর-
দুটি সংখ্যার গড় নির্ণয়ের সূডোকোড:
Start
Input a & b
avg = (a+b)/2
Print avg
Stop
সূডোকোডকে অ্যালগোরিদমের পূর্ব-পস্তুতি বা অনেক সময় অ্যালগোরিদমের বিকল্প হিসেবে বিবেচনা করা হয়।
সূডোকোডের সুবিধা:
১. সূডোকোড সকল ধরণের প্রোগ্রামার বুঝতে পারে।
২. এটি প্রোগ্রামারকে কেবল অ্যালগোরিদম অংশে মনোনিবেশ করতে সক্ষম করে।
পাঠ মূল্যায়ন-
জ্ঞানমূলক প্রশ্নসমূহঃ
ক) অ্যালগোরিদম কী?
ক) ফ্লোচার্ট কী?
ক) সূডোকোড কী?
অনুধাবনমূলক প্রশ্নসমূহঃ
খ) প্রোগ্রাম কোডিং এ অ্যালগোরিদমের গুরুত্ব লেখ।
খ) “অ্যালগোরিদম কোডিং-এর পূর্বশর্ত” -ব্যাখ্যা কর।
খ) প্রবাহচিত্রে ব্যবহৃত প্রতীকগুলো ব্যাখ্যা কর।
খ) “ফ্লোচার্ট হলো চিত্রভিত্তিক অ্যালগরিদম” – ব্যাখ্যা কর।
খ) “অ্যালগোরিদমের চেয়ে ফ্লোচার্টের মাধ্যমে সমস্যা সমাধান করা সহজ” – ব্যাখ্যা কর।
সৃজনশীল প্রশ্নসমূহঃ
নিচের উদ্দীপকটি পড় এবং প্রশ্নের উত্তর দাওঃ
মাহিন ও রকিব দুই বন্ধু। মাহিন একটি সমস্যা সমাধান করলো কতোগুলো চিত্র ব্যবহার করে এবং রকিব একই সমস্যা সমাধান করলো ধারাবাহিক বর্ণনার মাধ্যমে। অবশেষে তারা তাদের সমাধান অনুসরণ করে ‘সি’ প্রোগ্রামিং ভাষায় প্রোগ্রাম লিখল।
গ) উদ্দীপকে উল্লিখিত প্রোগ্রামিং ভাষা কোন স্তরের? ব্যাখ্যা কর।
ঘ) উদ্দীপকে উল্লিখিত মাহিন ও রকিবের সমস্যা সমাধানের প্রক্রিয়ার মধ্যে কোনটি অধিক সুবিধাজনক? বিশ্লেষণ কর।
বহুনির্বাচনি প্রশ্নসমূহঃ
ক) সিদ্ধান্ত গ্রহণ খ) প্রক্রিয়াকরণ
গ) ডেটা ইনপুট ঘ) ডেটা আউটপুট
২। ফ্লোচার্ট কত প্রকার?
ক) ২ খ) ৪
গ) ৬ ঘ) ৮
i. ইনপুট
ii. আউটপুট
iii. প্রক্রিয়াকরণ
নিচের কোনটি সঠিক?
ক) i ও ii খ) i ও iii
গ) ii ও iii ঘ) i, ii ও iii
Written by,
- Mizanur Rahman (Mizan)
- Lecturer in ICT, Shaheed Bir Uttam Lt. Anwar Girls’ College , Dhaka Cantonment
- Founder & Author at www.edupointbd.com
- Software Engineer at mands IT
- Former Lecturer in ICT, Cambrian College, Dhaka
- Contact: 01724351470