প্রোগ্রাম তৈরির ধাপ ও সংগঠন

এইচএসসি আইসিটি: প্রোগ্রাম তৈরির ধাপসমূহ (সমস্যা বিশ্লেষণ, ডিজাইন, কোডিং, টেস্টিং), ডকুমেন্টেশন ও রক্ষণাবেক্ষণ এবং প্রোগ্রামের সংগঠন।

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

প্রোগ্রাম তৈরির ধাপ ও সংগঠন

  1. প্রোগ্রাম তৈরির ধাপ ও সংগঠন
  2. প্রোগ্রামিং কি শুধুই কোড লেখা?
  3. প্রোগ্রাম উন্নয়নের ধাপসমূহ (Program Development Steps)
  4. ধাপ ১: সমস্যা নির্দিষ্টকরণ (Problem Specification)
  5. ধাপ ২: সমস্যা বিশ্লেষণ (Problem Analysis)
  6. ধাপ ৩: প্রোগ্রাম ডিজাইন (Program Design)
  7. ধাপ ৪: প্রোগ্রাম কোডিং (Coding)
  8. ধাপ ৫: পরীক্ষণ ও ডিবাগিং (Testing & Debugging)
  9. ভুলের প্রকারভেদ (Types of Errors)
  10. ধাপ ৬: ডকুমেন্টেশন (Documentation)
  11. ধাপ ৭: রক্ষণাবেক্ষণ (Maintenance)
  12. প্রোগ্রামের সংগঠন (Program Organization)
  13. সারসংক্ষেপ

প্রোগ্রাম তৈরির ধাপ ও সংগঠন

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

১। প্রোগ্রাম তৈরির ধাপসমূহ ধারাবাহিকভাবে বর্ণনা করতে পারব।
২। সমস্যা বিশ্লেষণ ও ডিজাইনের গুরুত্ব ব্যাখ্যা করতে পারব।
৩। টেস্টিং ও ডিবাগিং-এর পার্থক্য করতে পারব।
৪। প্রোগ্রামের সংগঠন বা স্ট্রাকচার ব্যাখ্যা করতে পারব।

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

প্রোগ্রামিং কি শুধুই কোড লেখা?

একটি বহুতল ভবন নির্মাণের ধাপ:

  • নকশা বা প্ল্যান (Planning): আর্কিটেক্টের ব্লুপ্রিন্ট।
  • ভিত বা স্ট্রাকচার তৈরি: মাটির নিচে পাইলিং।
  • বাস্তবায়ন: ইটের গাঁথুনি ও ফিনিশিং।

প্রশ্ন: আর্কিটেক্ট কি নকশা ছাড়াই ইট সাজানো শুরু করেন? ঠিক তেমনি, প্রোগ্রামিং মানেই সরাসরি কোডিং নয়। কোডিং হলো কেবল বাস্তবায়নের একটি অংশ।

তোমরা কি কখনো কোনো রাজমিস্ত্রিকে দেখেছো কোনো নকশা বা প্ল্যান ছাড়াই বিশাল বিল্ডিং বানাতে শুরু করতে? নিশ্চয়ই না! আগে আর্কিটেক্ট ব্লুপ্রিন্ট বা নকশা তৈরি করেন, তারপর ইঞ্জিনিয়াররা সেটা দেখে কাজ শুরু করেন। প্রোগ্রাম তৈরির বিষয়টিও ঠিক সেরকম। আমরা অনেকেই ভাবি প্রোগ্রামিং মানেই শুধু কম্পিউটার খুলে ধুমধাম কোড টাইপ করা। কিন্তু আসলে তা নয়। কোডিং হলো বিল্ডিংয়ের ইটের গাঁথুনির মতো—যা অনেক পরের ধাপ। তার আগে আমাদের অনেক পরিকল্পনা করতে হয়। চলো দেখি আসল প্রক্রিয়াটা কী।

প্রোগ্রাম উন্নয়নের ধাপসমূহ (Program Development Steps)

প্রোগ্রাম তৈরির ৭টি ধাপ:
১. সমস্যা নির্দিষ্টকরণ (Problem Specification)
২. সমস্যা বিশ্লেষণ (Problem Analysis)
৩. প্রোগ্রাম ডিজাইন (Program Design)
৪. প্রোগ্রাম উন্নয়ন বা কোডিং (Coding)
৫. প্রোগ্রাম পরীক্ষণ ও ডিবাগিং (Testing & Debugging)
৬. ডকুমেন্টেশন (Documentation)
৭. রক্ষণাবেক্ষণ (Maintenance)

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

ধাপ ১: সমস্যা নির্দিষ্টকরণ (Problem Specification)

মূল প্রশ্ন: আসলে কী সমস্যা সমাধান করতে হবে?

এই ধাপে তিনটি বিষয় শনাক্ত করা হয়:
* ইনপুট (Input): কী ডেটা প্রয়োজন?
* আউটপুট (Output): ফলাফল কী চাই?
* প্রসেস (Process): ডেটা কোন উৎস থেকে আসবে এবং কীভাবে ব্যবহার হবে।

উদাহরণ: ত্রিভুজের ক্ষেত্রফল বের করতে হলে ইনপুট লাগবে ভূমি ও উচ্চতা।

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

ধাপ ২: সমস্যা বিশ্লেষণ (Problem Analysis)

সমস্যা চিহ্নিত করার পর তা সমাধানের উপায় বের করা হলো বিশ্লেষণ।

বিশ্লেষণের কাজ:
* গাণিতিক সূত্র বা লজিক নির্ধারণ।
* সমস্যাকে ছোট ছোট অংশে ভাগ করা।
* কীভাবে কম সময়ে সমাধান করা যায় তা ভাবা।

উদাহরণ:
ক্ষেত্রফল বের করার সূত্র: $Area = 0.5 \times Base \times Height$

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

ধাপ ৩: প্রোগ্রাম ডিজাইন (Program Design)

এটি প্রোগ্রামের ব্লুপ্রিন্ট বা নকশা। কোড লেখার আগে কাগজে-কলমে পরিকল্পনা।

ডিজাইনের টুলস:
১. অ্যালগরিদম (Algorithm): ধাপে ধাপে সমাধানের বর্ণনা।
২. ফ্লোচার্ট (Flowchart): চিত্রের মাধ্যমে প্রবাহ দেখানো।
৩. সুডোকোড (Pseudo code): মানুষের ভাষায় লেখা ছদ্ম কোড।

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

ধাপ ৪: প্রোগ্রাম কোডিং (Coding)

বিবরণ:
* ডিজাইন (অ্যালগরিদম/ফ্লোচার্ট) দেখে নির্দিষ্ট প্রোগ্রামিং ভাষায় নির্দেশ লেখা।
* ভাষা নির্বাচন: C, Python, Java, C++ ইত্যাদি।
* সঠিক সিনট্যাক্স (Syntax) বা ব্যাকরণ মেনে চলা অপরিহার্য।

মনে রেখো: কম্পিউটার মানুষের ভাষা বোঝে না, তাই সঠিক কমান্ড দিতে হয়।

এতক্ষণে আমরা কম্পিউটারের সামনে বসলাম! আমাদের ডিজাইন বা ফ্লোচার্টটা সামনে রেখে আমরা এবার কোড লিখব। একে প্রোগ্রাম কোডিং বা এনকোডিং বলা হয়। তুমি C, Python বা Java—যেকোনো ভাষা ব্যবহার করতে পারো। তবে মনে রাখতে হবে, কম্পিউটারের ভাষা বা সিনট্যাক্স খুব সেনসিটিভ। একটা কমা (,) বা সেমিকোলন (;) ভুল হলেও প্রোগ্রাম কাজ করবে না। তাই খুব সতর্ক হয়ে টাইপ করতে হয়।

ধাপ ৫: পরীক্ষণ ও ডিবাগিং (Testing & Debugging)

টেস্টিং (Testing):
প্রোগ্রাম রান করে দেখা সঠিক উত্তর আসছে কিনা। বিভিন্ন স্যাম্পল ডেটা দিয়ে যাচাই করা।

ডিবাগিং (Debugging):
* বাগ (Bug): প্রোগ্রামের ভুল বা ত্রুটি।
* ডিবাগিং: ভুল খুঁজে বের করে সমাধান করা।

১৯৪৫ সালে গ্রেস হপার কম্পিউটারে প্রথম 'পোকা' বা মথ খুঁজে পান, সেখান থেকেই 'বাগ' শব্দের উৎপত্তি।

কোড তো লিখলাম, কিন্তু সেটা কি সঠিক কাজ করছে? আমরা টেস্ট করব। ধরো ২ আর ২ যোগ করতে দিলাম, উত্তর যদি ৫ আসে—তারমানে নিশ্চয়ই কোনো ভুল আছে! প্রোগ্রামের ভাষায় এই ভুলকে বলা হয় বাগ (Bug)। আর এই বাগ খুঁজে বের করে ঠিক করার প্রক্রিয়াকে বলে ডিবাগিং। মজার তথ্য হলো, ১৯৪৫ সালে গ্রেস হপার নামে একজন বিজ্ঞানী প্রথম কম্পিউটারের ভেতরে সত্যি সত্যি একটা মথ বা পোকা খুঁজে পেয়েছিলেন যা সার্কিটে সমস্যা করছিল, সেখান থেকেই এই 'বাগ' শব্দটি এসেছে!

ভুলের প্রকারভেদ (Types of Errors)

প্রোগ্রামে সাধারণত তিন ধরণের ভুল হয়:

  1. সিনট্যাক্স ভুল (Syntax Error): ভাষার ব্যাকরণগত ভুল (যেমন ; না দেওয়া)। কম্পিউটার এটি ধরিয়ে দেয়।
  2. লজিক্যাল ভুল (Logical Error): যুক্তির ভুল (যেমন + এর জায়গায় - দেওয়া)। কম্পিউটার বোঝে না, কিন্তু ফলাফল ভুল আসে।
  3. রানটাইম ভুল (Runtime Error): প্রোগ্রাম চলার সময় ক্র্যাশ করা (যেমন ০ দিয়ে ভাগ করা)।

ডিবাগিং করতে গেলে দেখবে মূলত তিন ধরণের ভুলের মুখোমুখি হচ্ছো। ১. সিনট্যাক্স এরর—এটা সবচেয়ে সহজ, কারণ বানান ভুল করলে কম্পিউটার নিজেই লাল দাগ দিয়ে দেখিয়ে দেয়। ২. লজিক্যাল এরর—এটা খুব ভয়ানক! প্রোগ্রাম রান করবে, কোনো এরর দেখাবে না, কিন্তু উত্তর ভুল আসবে! যেমন তোমাকে যোগ করতে বলা হলো, তুমি ভুলে বিয়োগ চিহ্ন দিয়ে দিয়েছো। কম্পিউটার তো আর তোমার মনের কথা জানে না! ৩. রানটাইম এরর—যেটা প্রোগ্রাম চলার মাঝপথে বন্ধ হয়ে যায়, যেমন কোনো সংখ্যাকে শূন্য দিয়ে ভাগ করার চেষ্টা করলে।

ধাপ ৬: ডকুমেন্টেশন (Documentation)

কী থাকে?
* প্রোগ্রামের বর্ণনা, ফ্লোচার্ট, অ্যালগরিদম।
* কোডের মধ্যে কমেন্ট (Comments)।
* ব্যবহারকারীর নির্দেশিকা (User Manual)।

কেন জরুরি?
ভবিষ্যতে অন্য কেউ বা প্রোগ্রামার নিজে কোডটি বোঝার জন্য এবং পরিবর্তন করার জন্য।

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

ধাপ ৭: রক্ষণাবেক্ষণ (Maintenance)

কাজসমূহ:
* সময়ের সাথে সফটওয়্যার আপডেট করা।
* নতুন ফিচার বা সুবিধা যোগ করা।
* নতুন কোনো ভুল ধরা পড়লে তা ঠিক করা।

উদাহরণ: মোবাইলের অ্যাপ আপডেট (App Update)।

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

প্রোগ্রামের সংগঠন (Program Organization)

যেকোনো প্রোগ্রামের মূল গঠন ৩টি অংশের সমন্বয়ে গঠিত:

  1. ইনপুট মডিউল (Input): ডেটা গ্রহণ করে মেমোরিতে রাখে।
  2. প্রসেসিং মডিউল (Processing): মেমোরি থেকে ডেটা নিয়ে গাণিতিক বা যৌক্তিক কাজ করে।
  3. আউটপুট মডিউল (Output): প্রক্রিয়াকৃত ফলাফল প্রদর্শন করে।

এবার আমরা দেখব একটা প্রোগ্রামের ভেতরটা দেখতে আসলে কেমন হয়। মানুষের শরীরের সাথে তুলনা করতে পারো—চোখ বা কান দিয়ে আমরা ইনপুট নেই, ব্রেইনে প্রসেস বা চিন্তা করি, আর মুখ দিয়ে বা হাত দিয়ে আউটপুট দেই। প্রোগ্রামের স্ট্রাকচারও ঠিক তাই। ইনপুট মডিউল ডেটা নেয়, প্রসেসিং মডিউল (যেমন CPU) সেটা নিয়ে কাজ করে, আর আউটপুট মডিউল মনিটরে বা প্রিন্টারে ফলাফল দেখায়। বড় প্রোগ্রামকে এরকম ছোট ছোট মডিউলে ভাগ করাকে 'মডুলার প্রোগ্রামিং' বলে।

সারসংক্ষেপ

  1. প্রোগ্রাম তৈরির জন্য ৭টি ধাপ অনুসরণ করা জরুরি।
  2. অ্যালগরিদম ও ফ্লোচার্ট হলো প্রোগ্রামের নকশা।
  3. কোডিংয়ের পর টেস্টিং ও ডিবাগিং করে ত্রুটিমুক্ত করতে হয়।
  4. সিনট্যাক্স ও লজিক্যাল ভুলের পার্থক্য।
  5. ডকুমেন্টেশন ভবিষ্যতে কোড বুঝতে সাহায্য করে।

'পরিকল্পনাই হলো সফল প্রোগ্রামিংয়ের চাবিকাঠি।'

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

প্রোগ্রাম তৈরির ধাপ ও সংগঠন

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

এইচএসসি আইসিটি: প্রোগ্রাম তৈরির ধাপ ও সংগঠন - পূর্ণাঙ্গ পাঠ সহায়িকা

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

প্রোগ্রাম তৈরির ধাপসমূহ (Steps of Program Development)

একটি মানসম্মত প্রোগ্রাম তৈরির জন্য যে ধারাবাহিক ধাপগুলো অনুসরণ করা হয়, তাকে প্রোগ্রাম উন্নয়ন চক্র বা SDLC (System Development Life Cycle) বলা হয়। এই ধাপগুলো চক্রাকারে আবর্তিত হয়, অর্থাৎ একটি ধাপ শেষ হলে পরেরটি শুরু হয় এবং রক্ষণাবেক্ষণের মাধ্যমে আবার নতুনের সূচনা হয়। ধাপগুলো নিম্নরূপ:

Program Development Steps Cycle

গুরুত্বপূর্ণ (Important): পরীক্ষার খাতায় ধাপগুলোর ক্রম হুবহু মনে রাখা জরুরি। এলোমেলো হলে নম্বর কাটা যাবে।
১. সমস্যা নির্দিষ্টকরণ (Problem Specification)
২. সমস্যা বিশ্লেষণ (Problem Analysis)
৩. প্রোগ্রাম ডিজাইন (Program Design)
৪. প্রোগ্রাম কোডিং (Program Coding)
৫. প্রোগ্রাম বাস্তবায়ন (Implementation/Testing & Debugging)
৬. ডকুমেন্টেশন (Documentation)
৭. রক্ষণাবেক্ষণ (Program Maintenance)

প্রতিটি ধাপ একে অপরের সাথে গভীরভাবে সম্পর্কিত। যেমন—সমস্যা ঠিকমতো বিশ্লেষণ না করলে ডিজাইন ভুল হবে, আর ডিজাইন ভুল হলে কোডিং কখনোই সঠিক আউটপুট দেবে না।

ধাপ ১-৩: পরিকল্পনা ও ডিজাইন পর্ব

প্রোগ্রাম তৈরির প্রথম তিনটি ধাপ মূলত চিন্তাভাবনা এবং কাগজ-কলমের কাজ। কম্পিউটারে হাত দেওয়ার আগেই এই ধাপগুলো সম্পন্ন করতে হয়।

১. সমস্যা নির্দিষ্টকরণ (Problem Specification)

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

২. সমস্যা বিশ্লেষণ (Problem Analysis)

সমস্যা চিহ্নিত করার পর সেটিকে ছোট ছোট অংশে ভাগ করে সমাধানের পথ বের করা হয়। এই ধাপে গাণিতিক মডেল বা সূত্র নির্ধারণ করা হয়। বড় সফটওয়্যার কোম্পানিতে এই কাজটি করেন সিস্টেম অ্যানালিস্ট (System Analyst)

৩. প্রোগ্রাম ডিজাইন (Program Design)

বিশ্লেষণ করার পর সমাধানের পথটিকে চিত্রের মাধ্যমে বা লিখিত ধাপে রূপ দেওয়া হয়। এটিই হলো প্রোগ্রামের ব্লু-প্রিন্ট। মূলত অ্যালগরিদম ও ফ্লোচার্ট তৈরি করা হয় এই ধাপে।

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

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

ধাপ ৪-৫: কোডিং এবং ভুল সংশোধন (Coding, Testing & Debugging)

ডিজাইন চূড়ান্ত হওয়ার পর শুরু হয় আসল কাজ—কোডিং। এটি প্রোগ্রাম তৈরির সবচেয়ে দৃশ্যমান অংশ।

৪. প্রোগ্রাম কোডিং (Program Coding)

ডিজাইন করা অ্যালগরিদম বা ফ্লোচার্টকে কম্পিউটার বুঝতে পারে এমন কোনো উচ্চস্তরের ভাষায় (যেমন C, Python, Java) রূপান্তর করাকে কোডিং বলা হয়। এই ধাপে প্রোগ্রামার সক্রিয় ভূমিকা পালন করেন।

৫. প্রোগ্রাম বাস্তবায়ন (Implementation)

কোড লেখার পর সেটি চালিয়ে দেখা হয় যে তা সঠিক কাজ করছে কিনা। এই ধাপে মূলত দুটি গুরুত্বপূর্ণ কাজ করা হয়: টেস্টিং (Testing) এবং ডিবাগিং (Debugging)

সংজ্ঞা (Definition): প্রোগ্রামের যেকোনো ভুল বা ত্রুটিকে বলা হয় বাগ (Bug)। আর এই বাগ খুঁজে বের করে সমাধান করার প্রক্রিয়াকে বলা হয় ডিবাগিং (Debugging)

শিক্ষার্থীরা প্রায়ই টেস্টিং এবং ডিবাগিং গুলিয়ে ফেলে। নিচের পার্থক্যটি ভালোভাবে লক্ষ্য করো:

বৈশিষ্ট্য টেস্টিং (Testing) ডিবাগিং (Debugging)
মূল কাজ ভুল বা এরর খুঁজে বের করা। খুঁজে পাওয়া ভুল সমাধান বা সংশোধন করা।
কারা করে? সাধারণ ব্যবহারকারী বা টেস্টার করতে পারেন। এটি কেবল দক্ষ প্রোগ্রামার বা ডেভেলপার করেন।
উদ্দেশ্য প্রোগ্রামটি রিকোয়ারমেন্ট অনুযায়ী কাজ করছে কিনা যাচাই করা। প্রোগ্রামের কোডকে ত্রুটিমুক্ত করা।
প্রোগ্রামের ভুল বা এরর (Errors)

প্রোগ্রাম তৈরির সময় সাধারণত তিন ধরণের ভুল হতে পারে। পরীক্ষার জন্য এটি অত্যন্ত গুরুত্বপূর্ণ:

১. সিনট্যাক্স ভুল (Syntax Error):
প্রোগ্রামিং ভাষার ব্যাকরণ বা নিয়ম না মানলে এই ভুল হয়। কম্পাইলার এই ভুল ধরিয়ে দেয় এবং ভুল সংশোধন না করা পর্যন্ত প্রোগ্রাম রান করে না।
উদাহরণ: সেমিকোলন (;) না দেওয়া, বা বানান ভুল করা।

printf("Hello World")  // ভুল: শেষে সেমিকোলন নেই
print("Hello");        // ভুল: printf এর বদলে print লেখা (C ভাষায়)

২. লজিক্যাল ভুল (Logical Error):
প্রোগ্রামের যুক্তি বা ফর্মুলায় ভুল থাকলে এটি হয়। কম্পিউটার এই ভুল ধরতে পারে না, প্রোগ্রাম রান করে কিন্তু ভুল উত্তর দেয়। এটি সবচেয়ে বিপজ্জনক ভুল।
উদাহরণ: গড় নির্ণয়ে (a+b)/2 এর বদলে a+b/2 লেখা।

avg = a + b / 2; // ভুল লজিক: আগে b/2 হবে, তারপর a যোগ হবে।
// সঠিক হবে: avg = (a + b) / 2;

৩. রানটাইম ভুল (Runtime Error):
প্রোগ্রাম চলার সময় বা এক্সিকিউশনের সময় কোনো অবৈধ ডেটা ইনপুট দিলে এই ভুল হয়।
উদাহরণ: কোনো সংখ্যাকে শূন্য (0) দিয়ে ভাগ করার চেষ্টা করা।

int a = 10, b = 0;
int result = a / b; // ভুল: শূন্য দিয়ে ভাগ করা গাণিতিকভাবে অসম্ভব।

ধাপ ৬-৭: ডকুমেন্টেশন ও রক্ষণাবেক্ষণ

সফটওয়্যার তৈরি হয়ে গেলেই কাজ শেষ নয়; এর ভবিষ্যৎ ব্যবহারের জন্য সংরক্ষণ ও যত্ন প্রয়োজন।

৬. ডকুমেন্টেশন (Documentation)

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

৭. প্রোগ্রাম রক্ষণাবেক্ষণ (Program Maintenance)

সময়ের সাথে সাথে প্রোগ্রামের আধুনিকায়ন, নতুন ফিচার যুক্ত করা বা ছোটখাটো ভুল সংশোধন করাকে রক্ষণাবেক্ষণ বলে।
উদাহরণ: ২০০০ সালে 'Y2K' বা মিলেনিয়াম বাগ সমস্যার সমাধানের জন্য পুরোনো অনেক সফটওয়্যার আপডেট করতে হয়েছিল—এটি রক্ষণাবেক্ষণের একটি ধ্রুপদী উদাহরণ।

পরীক্ষার টিপস (Exam Tip): সৃজনশীল প্রশ্নে প্রায়ই একটি দৃশ্যকল্প থাকে যেখানে বলা হয়, "করিম সাহেব ১ বছর আগে একটি সফটওয়্যার বানিয়েছিলেন, কিন্তু এখন তিনি সেটি আপডেট করতে গিয়ে কোড বুঝতে পারছেন না।" প্রশ্ন হবে—"করিম সাহেব কোন ধাপটি এড়িয়ে গিয়েছিলেন?" উত্তর হবে—ডকুমেন্টেশন

প্রোগ্রামের সংগঠন (Program Organization)

যেকোনো আদর্শ প্রোগ্রামের অভ্যন্তরীণ কাঠামো তিনটি প্রধান অংশের সমন্বয়ে গঠিত হয়। একে প্রোগ্রামের সংগঠন বলা হয়।

  1. ইনপুট (Input): ব্যবহারকারীর কাছ থেকে ডেটা গ্রহণ করা।
  2. প্রক্রিয়াকরণ (Process): গৃহিত ডেটার ওপর গাণিতিক বা যৌক্তিক অপারেশন চালানো।
  3. আউটপুট (Output): প্রক্রিয়াজাত ফলাফল প্রদর্শন করা।

$$ \text{Input} \rightarrow \text{Process} \rightarrow \text{Output} $$

বড় বা জটিল প্রোগ্রামের ক্ষেত্রে পুরো কাজটিকে একটি ফাইলে না লিখে ছোট ছোট অংশে ভাগ করা হয়। এই ছোট অংশগুলোকে বলা হয় সাব-প্রোগ্রাম বা মডিউল। এভাবে প্রোগ্রাম তৈরি করাকে মডুলার প্রোগ্রামিং বলে। মডুলার প্রোগ্রামিংয়ের সুবিধা হলো, প্রোগ্রামের কোনো এক অংশে ভুল হলে শুধু সেই অংশটি ঠিক করলেই চলে, পুরো প্রোগ্রাম ঘাঁটতে হয় না।

সৃজনশীল প্রশ্ন ও উত্তর লেখার কৌশল

সংক্ষিপ্ত সারাংশ (Quick Revision):
- ধাপের ক্রম: স্পেসিফিকেশন -> অ্যানালাইসিস -> ডিজাইন -> কোডিং -> টেস্টিং -> ডকুমেন্টেশন -> মেইনটেইনেন্স।
- সবচেয়ে কঠিন ভুল: লজিক্যাল এরর (কারণ কম্পিউটার এটি ধরতে পারে না)।
- সবচেয়ে সহজ ভুল: সিনট্যাক্স এরর (কম্পাইলার নিজেই বলে দেয় কোথায় ভুল)।
- ডকুমেন্টেশন কেন জরুরি: ভবিষ্যৎ রক্ষণাবেক্ষণ সহজ করার জন্য।

গুরুত্বপূর্ণ পরিভাষা (Glossary)

পরিভাষা (Term) সংজ্ঞা (Definition)
ডিবাগিং (Debugging) প্রোগ্রামের ভুল বা বাগ (Bug) খুঁজে বের করে তা সমাধান করার প্রক্রিয়া।
সিনট্যাক্স এরর (Syntax Error) প্রোগ্রামিং ভাষার ব্যাকরণ বা নিয়ম না মানলে যে ভুল হয় (যেমন সেমিকোলন না দেওয়া)।
লজিক্যাল এরর (Logical Error) প্রোগ্রামের যুক্তি বা ফর্মুলায় ভুল থাকা, যার ফলে প্রোগ্রাম রান করে কিন্তু ভুল উত্তর দেয়।
ডকুমেন্টেশন (Documentation) প্রোগ্রামের কার্যপ্রণালী, কোডের বিবরণ এবং ব্যবহারের নির্দেশিকা লিখিত আকারে সংরক্ষণ করা।
অ্যালগরিদম (Algorithm) কোনো সমস্যা সমাধানের ধাপে ধাপে লিখিত বর্ণনা।
রানটাইম এরর (Runtime Error) প্রোগ্রাম চলার সময় অবৈধ ইনপুট বা গাণিতিক অসঙ্গতির কারণে প্রোগ্রাম বন্ধ হয়ে যাওয়া।

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

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

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

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

ক) ডিবাগিং কী?
খ) প্রোগ্রাম রক্ষণাবেক্ষণ কেন প্রয়োজন?
গ) উদ্দীপকে ম্যানেজারের কাজের ধাপগুলো প্রোগ্রাম তৈরির ধাপের সাথে সাদৃশ্যপূর্ণ—ব্যাখ্যা কর।
ঘ) "কোডিং শুরু করার আগে সমস্যা বিশ্লেষণ ও ডিজাইন ধাপটি উপেক্ষা করলে প্রজেক্টটি ব্যর্থ হতে পারে"—উক্তিটি মূল্যায়ন কর।

উত্তর

(ক) প্রোগ্রামে বিদ্যমান ভুল বা ইরর (Error) খুঁজে বের করে তা সমাধান করার প্রক্রিয়াকে ডিবাগিং (Debugging) বলা হয়।

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

(গ) উদ্দীপকে ম্যানেজারের কাজের ধাপগুলো প্রোগ্রাম তৈরির ‘সমস্যা নির্দিষ্টকরণ’, ‘সমস্যা বিশ্লেষণ’ এবং ‘প্রোগ্রাম ডিজাইন’ ধাপের সাথে সাদৃশ্যপূর্ণ।

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

(ঘ) উদ্দীপকের উক্তিটি যথার্থ। প্রোগ্রাম তৈরির ক্ষেত্রে সরাসরি কোডিংয়ে চলে গেলে অনেক গুরুত্বপূর্ণ বিষয় বা লজিক বাদ পড়ে যেতে পারে।

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


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

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

ক) সুডোকোড কী?
খ) স্ট্রাকচার্ড প্রোগ্রামিং বলতে কী বোঝ?
গ) উদ্দীপকে শিক্ষকের পরামর্শটি প্রোগ্রাম তৈরির কোন সংগঠনকে নির্দেশ করে? ব্যাখ্যা কর।
ঘ) "একক বড় প্রোগ্রামের চেয়ে উদ্দীপকের নির্দেশিত পদ্ধতিটি বেশি সুবিধাজনক"—মতামতটি বিশ্লেষণ কর।

উত্তর

(ক) সুডোকোড হলো প্রোগ্রামের লজিক বা ধাপগুলো সহজ ইংরেজি ভাষায় বা মানুষের বোধগম্য ভাষায় বর্ণনা করা, যা সরাসরি কোনো প্রোগ্রামিং ভাষা নয় তবে কোডিংয়ের পূর্বশর্ত।

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

(গ) উদ্দীপকে শিক্ষকের পরামর্শটি প্রোগ্রাম সংগঠনের ‘মডুলার প্রোগ্রামিং’ (Modular Programming) বা ‘সাব-রুটিন’ এর ব্যবহারকে নির্দেশ করে।

মডুলার প্রোগ্রামিং পদ্ধতিতে একটি বৃহৎ প্রোগ্রামকে ছোট ছোট লজিক্যাল অংশে বা মডিউলে ভাগ করা হয়। প্রতিটি মডিউল একটি নির্দিষ্ট কাজ সম্পন্ন করে। উদ্দীপকে রিয়াজকে তার শিক্ষক প্রোগ্রামটিকে ছোট ছোট অংশে ভাগ করে আলাদা ফাংশন তৈরি করতে বলেছেন, যা হুবহু মডুলার প্রোগ্রামিংয়ের ধারণা। এতে মূল প্রোগ্রামটি ছোট ও সরল হয়ে যায় এবং প্রতিটি ফাংশন বা সাব-প্রোগ্রাম স্বাধীনভাবে কাজ করতে পারে।

(ঘ) একক বড় প্রোগ্রামের চেয়ে উদ্দীপকের নির্দেশিত পদ্ধতিটি (মডুলার প্রোগ্রামিং) নিঃসন্দেহে বেশি সুবিধাজনক ও কার্যকর। নিচে এর কারণ বিশ্লেষণ করা হলো:

  1. ভুল শনাক্তকরণ সহজ: বড় প্রোগ্রামে হাজার হাজার লাইনের মধ্যে ভুল খুঁজে বের করা কঠিন। কিন্তু মডিউলে ভাগ করা থাকলে, যে অংশে ভুল হয়েছে শুধু সেই ফাংশনটি পরীক্ষা করলেই চলে।
  2. পুনঃব্যবহারযোগ্যতা: একই ফাংশন প্রোগ্রামের বিভিন্ন জায়গায় বা অন্য কোনো প্রোগ্রামে পুনরায় ব্যবহার (Code Reusability) করা যায়, যা সময় ও শ্রম বাঁচায়।
  3. দলগত কাজ: বড় প্রজেক্টে একাধিক প্রোগ্রামার কাজ করলে, একেকজন একেকটি মডিউল নিয়ে স্বাধীনভাবে কাজ করতে পারেন।
  4. সহজ রক্ষণাবেক্ষণ: ভবিষ্যতে প্রোগ্রামের কোনো পরিবর্তন করতে হলে পুরো কোড না ঘেঁটে নির্দিষ্ট মডিউল আপডেট করলেই হয়।

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

এমসিকিউ

১. প্রোগ্রাম তৈরির ধাপগুলোর সঠিক ক্রম কোনটি?

ক) সমস্যা নির্দিষ্টকরণ → বিশ্লেষণ → ডিজাইন → কোডিং
খ) বিশ্লেষণ → সমস্যা নির্দিষ্টকরণ → ডিজাইন → কোডিং
গ) ডিজাইন → বিশ্লেষণ → সমস্যা নির্দিষ্টকরণ → কোডিং
ঘ) সমস্যা নির্দিষ্টকরণ → ডিজাইন → বিশ্লেষণ → কোডিং

সঠিক উত্তর: ক) সমস্যা নির্দিষ্টকরণ → বিশ্লেষণ → ডিজাইন → কোডিং

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


২. ডিবাগিং (Debugging) কোন ধাপে করা হয়?

ক) প্রোগ্রাম ডিজাইন
খ) প্রোগ্রাম কোডিং
গ) প্রোগ্রাম টেস্টিং
ঘ) প্রোগ্রাম রক্ষণাবেক্ষণ

সঠিক উত্তর: গ) প্রোগ্রাম টেস্টিং

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


৩. সুডোকোড (Pseudocode) প্রোগ্রাম তৈরির কোন ধাপের অংশ?

ক) সমস্যা বিশ্লেষণ
খ) প্রোগ্রাম ডিজাইন
গ) প্রোগ্রাম কোডিং
ঘ) প্রোগ্রাম বাস্তবায়ন

সঠিক উত্তর: খ) প্রোগ্রাম ডিজাইন

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


৪. প্রোগ্রামের ভুল সংশোধনের প্রক্রিয়াকে কী বলা হয়?

ক) এনকোডিং
খ) ডিকোডিং
গ) ডিবাগিং
ঘ) কম্পাইলিং

সঠিক উত্তর: গ) ডিবাগিং

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


৫. প্রোগ্রাম রক্ষণাবেক্ষণের প্রধান কাজ কী?

ক) নতুন হার্ডওয়্যার কেনা
খ) প্রোগ্রামের ভুল সংশোধন ও আপডেট করা
গ) প্রোগ্রাম ডিজাইন পরিবর্তন করা
ঘ) নতুন প্রোগ্রাম তৈরি করা

সঠিক উত্তর: খ) প্রোগ্রামের ভুল সংশোধন ও আপডেট করা

ব্যাখ্যা: ব্যবহারকারীর পরিবর্তিত চাহিদার সাথে খাপ খাওয়ানো এবং ভুল সংশোধন বা আপডেট করাই রক্ষণাবেক্ষণের মূল কাজ।


৬. অ্যালগরিদম ও ফ্লোচার্ট তৈরির উদ্দেশ্য কী?

ক) প্রোগ্রাম রান করা
খ) প্রোগ্রামের লজিক বা ধাপগুলো সাজানো
গ) ভুল সংশোধন করা
ঘ) প্রোগ্রাম ডকুমেন্টেশন করা

সঠিক উত্তর: খ) প্রোগ্রামের লজিক বা ধাপগুলো সাজানো

ব্যাখ্যা: প্রোগ্রাম ডিজাইন ধাপে লজিক্যাল ধাপগুলো সাজাতে অ্যালগরিদম ও ফ্লোচার্ট ব্যবহৃত হয়।


৭. নিচের কোনটি সিনট্যাক্স ভুল (Syntax Error)?

ক) ২ + ২ = ৫ লেখা
খ) প্রিন্ট ফাংশনের বানান ভুল করা
গ) ভুল ইনপুট দেওয়া
ঘ) প্রোগ্রামের লজিক ভুল করা

সঠিক উত্তর: খ) প্রিন্ট ফাংশনের বানান ভুল করা

ব্যাখ্যা: প্রোগ্রামিং ভাষার ব্যাকরণ বা নিয়ম না মানলে সিনট্যাক্স এরর হয়, যেমন ফাংশনের নাম বা কিওয়ার্ড ভুল লেখা।


৮. প্রোগ্রাম ডকুমেন্টেশনের অন্তর্ভুক্ত বিষয় কোনটি?

ক) ব্যবহারকারীর ম্যানুয়াল
খ) হার্ডওয়্যার তালিকা
গ) প্রোগ্রামারদের তালিকা
ঘ) সবকটি

সঠিক উত্তর: ক) ব্যবহারকারীর ম্যানুয়াল

ব্যাখ্যা: ডকুমেন্টেশনে প্রোগ্রামের বর্ণনা, ফ্লোচার্ট, সোর্স কোড এবং ব্যবহারকারীর নির্দেশিকা বা ম্যানুয়াল থাকে।


৯. "Top-down Design" পদ্ধতি কোন প্রোগ্রামিং কৌশলের সাথে সম্পর্কিত?

ক) অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং
খ) স্ট্রাকচার্ড প্রোগ্রামিং
গ) ফাংশনাল প্রোগ্রামিং
ঘ) অ্যাসেম্বলি প্রোগ্রামিং

সঠিক উত্তর: খ) স্ট্রাকচার্ড প্রোগ্রামিং

ব্যাখ্যা: স্ট্রাকচার্ড বা মডুলার প্রোগ্রামিংয়ে একটি বড় সমস্যাকে ছোট ছোট অংশে ভাগ করে সমাধান করা হয়, যা টপ-ডাউন ডিজাইন।


১০. প্রোগ্রাম টেস্টিংয়ের সময় কী যাচাই করা হয়?

ক) প্রোগ্রামের গতি
খ) সঠিক ফলাফল বা আউটপুট
গ) মেমোরি ব্যবহার
ঘ) কোডের দৈর্ঘ্য

সঠিক উত্তর: খ) সঠিক ফলাফল বা আউটপুট

ব্যাখ্যা: টেস্টিং ধাপে ইনপুট দিয়ে দেখা হয় প্রোগ্রামটি প্রত্যাশিত সঠিক আউটপুট দিচ্ছে কিনা।


১১. নিচের কোনটি প্রোগ্রাম তৈরির সর্বশেষ ধাপ?

ক) প্রোগ্রাম ডিজাইন
খ) প্রোগ্রাম কোডিং
গ) প্রোগ্রাম রক্ষণাবেক্ষণ
ঘ) প্রোগ্রাম টেস্টিং

সঠিক উত্তর: গ) প্রোগ্রাম রক্ষণাবেক্ষণ

ব্যাখ্যা: প্রোগ্রাম ব্যবহারকারীর হাতে পৌঁছানোর পর বা প্রজেক্ট শেষের পর রক্ষণাবেক্ষণ ধাপ শুরু হয় এবং এটি চলমান প্রক্রিয়া।


১২. প্রোগ্রাম ডিজাইনের অন্তর্ভুক্ত নয় কোনটি?

ক) ইনপুট-আউটপুট ডিজাইন
খ) অ্যালগরিদম প্রণয়ন
গ) ফ্লোচার্ট অংকন
ঘ) সোর্স কোড লেখা

সঠিক উত্তর: ঘ) সোর্স কোড লেখা

ব্যাখ্যা: সোর্স কোড লেখা হলো প্রোগ্রাম কোডিং ধাপের কাজ, ডিজাইনের নয়।


১৩. নিচের কোনটি লজিক্যাল ভুল (Logical Error)?

ক) সেমিকোলন মিস করা
খ) ভুল ভেরিয়েবল নাম ব্যবহার করা
গ) যোগের পরিবর্তে বিয়োগ চিহ্ন দেওয়া
ঘ) ব্র্যাকেট ঠিকমতো না দেওয়া

সঠিক উত্তর: গ) যোগের পরিবর্তে বিয়োগ চিহ্ন দেওয়া

ব্যাখ্যা: প্রোগ্রামের যুক্তিতে বা ফর্মুলায় ভুল থাকলে তা লজিক্যাল এরর, যেমন যোগ করতে গিয়ে বিয়োগ করা। কম্পাইলার এটি ধরতে পারে না।


১৪. মডুলার প্রোগ্রামিং এর সুবিধা কোনটি?

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

সঠিক উত্তর: খ) ভুল খুঁজে বের করা সহজ হয়

ব্যাখ্যা: প্রোগ্রামকে ছোট ছোট মডিউলে ভাগ করলে নির্দিষ্ট অংশের ভুল দ্রুত শনাক্ত ও সংশোধন করা যায়।


১৫. প্রোগ্রাম তৈরির কোন ধাপে হার্ডওয়্যার রিকোয়ারমেন্টস ঠিক করা হয়?

ক) সমস্যা বিশ্লেষণ
খ) প্রোগ্রাম ডিজাইন
গ) প্রোগ্রাম কোডিং
ঘ) প্রোগ্রাম টেস্টিং

সঠিক উত্তর: ক) সমস্যা বিশ্লেষণ

ব্যাখ্যা: সমস্যা বিশ্লেষণ ধাপে ইনপুট-আউটপুট ও প্রসেসিং এর জন্য প্রয়োজনীয় হার্ডওয়্যার ও সফটওয়্যার নির্ধারণ করা হয়।


১৬. নিচের কোনটি প্রোগ্রাম ডকুমেন্টেশনের অংশ নয়?

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

সঠিক উত্তর: ঘ) কম্পাইলার

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


১৭. প্রোগ্রাম তৈরির সময় কোনটি আগে করা উচিত?

ক) কোডিং
খ) টেস্টিং
গ) ডিজাইন
ঘ) ডিবাগিং

সঠিক উত্তর: গ) ডিজাইন

ব্যাখ্যা: কোডিং বা টেস্টিং করার আগে অবশ্যই ডিজাইন সম্পন্ন করতে হবে।


১৮. রান-টাইম এরর (Run-time Error) কখন ঘটে?

ক) কম্পাইল করার সময়
খ) প্রোগ্রাম চলাকালীন সময়ে
গ) কোড লেখার সময়
ঘ) ডিজাইন করার সময়

সঠিক উত্তর: খ) প্রোগ্রাম চলাকালীন সময়ে

ব্যাখ্যা: প্রোগ্রাম চলার সময় বা এক্সিকিউশন টাইমে কোনো ভুল হলে (যেমন শূন্য দিয়ে ভাগ করা) তাকে রান-টাইম এরর বলে।


১৯. প্রোগ্রাম তৈরির ধাপগুলোর মধ্যে কোনটি সবচেয়ে বেশি সময়সাপেক্ষ হওয়া উচিত?

ক) কোডিং
খ) বিশ্লেষণ ও ডিজাইন
গ) টেস্টিং
ঘ) রক্ষণাবেক্ষণ

সঠিক উত্তর: খ) বিশ্লেষণ ও ডিজাইন

ব্যাখ্যা: একটি ভালো বিশ্লেষণ ও ডিজাইন কোডিং এবং টেস্টিং এর সময় ও জটিলতা কমিয়ে দেয়, তাই এতেই বেশি গুরুত্ব দেওয়া উচিত।


২০. সাব-রুটিন বা সাব-প্রোগ্রাম ব্যবহারের মূল উদ্দেশ্য কী?

ক) প্রোগ্রামের আকার বৃদ্ধি করা
খ) কোড পুনরায় ব্যবহার করা (Code Reusability)
গ) মেমোরি বেশি ব্যবহার করা
ঘ) কোডিং জটিল করা

সঠিক উত্তর: খ) কোড পুনরায় ব্যবহার করা (Code Reusability)

ব্যাখ্যা: একই কোড বারবার না লিখে একটি ফাংশন বা সাব-রুটিন বানিয়ে প্রয়োজনমতো কল করা যায়।


২১. প্রোগ্রাম টেস্টিং এর প্রকারভেদ কোনটি?

i. আলফা টেস্টিং
ii. বিটা টেস্টিং
iii. গামা টেস্টিং

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

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

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

ব্যাখ্যা: প্রোগ্রাম টেস্টিং সাধারণত আলফা ও বিটা—এই দুই ভাগে ভাগ করা হয়। গামা টেস্টিং নামে প্রচলিত কোনো ধাপ নেই।


২২. স্ট্রাকচার্ড প্রোগ্রামিংয়ের বৈশিষ্ট্য হলো—

i. টপ-ডাউন ডিজাইন পদ্ধতি
ii. মডুলার প্রোগ্রামিং সমর্থন
iii. গ্লোবাল ভেরিয়েবলের অধিক ব্যবহার

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

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

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

ব্যাখ্যা: স্ট্রাকচার্ড প্রোগ্রামিং টপ-ডাউন এবং মডুলার পদ্ধতি সমর্থন করে। গ্লোবাল ভেরিয়েবল ব্যবহার নিরুৎসাহিত করা হয়।


২৩. প্রোগ্রাম ডকুমেন্টেশন গুরুত্বপূর্ণ কারণ—

i. ভবিষ্যতে প্রোগ্রাম আপডেট করতে সাহায্য করে
ii. নতুন প্রোগ্রামারদের কোড বুঝতে সাহায্য করে
iii. প্রোগ্রামের গতি বৃদ্ধি করে

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

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

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

ব্যাখ্যা: ডকুমেন্টেশন প্রোগ্রামের রক্ষণাবেক্ষণ ও বোঝার জন্য জরুরি, কিন্তু এটি সরাসরি প্রোগ্রামের রান-টাইম গতি বাড়ায় না।


নিচের উদ্দীপকটি পড় এবং ২৪ ও ২৫ নং প্রশ্নের উত্তর দাও:

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

২৪. উদ্দীপকে নিশি কোন প্রোগ্রামিং কৌশল ব্যবহার করেছে?

ক) অবজেক্ট ওরিয়েন্টেড
খ) মডুলার প্রোগ্রামিং
গ) ইভেন্ট ড্রাইভেন
ঘ) ভিজ্যুয়াল প্রোগ্রামিং

সঠিক উত্তর: খ) মডুলার প্রোগ্রামিং

ব্যাখ্যা: প্রোগ্রামকে ছোট ছোট ফাংশন বা মডিউলে ভাগ করা মডুলার প্রোগ্রামিংয়ের কৌশল।


২৫. নিশির এই কৌশল ব্যবহারের ফলে—

i. প্রোগ্রামের আকার ছোট হবে
ii. ডিবাগিং করা সহজ হবে
iii. মেমোরি অপচয় কমবে

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

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

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

ব্যাখ্যা: মডুলার প্রোগ্রামিংয়ে কোড পুনরায় ব্যবহার করায় আকার ছোট হয়, ভুল ধরা সহজ হয় এবং মেমোরি ব্যবস্থাপনা উন্নত হয়।