পঞ্চম অধ্যায় পাঠ-৩ প্রোগ্রামের সংগঠন এবং প্রোগ্রাম তৈরির ধাপসমূহ।

এই পাঠ শেষে যা যা শিখতে পারবে-

  • ১। প্রোগ্রামের সংগঠন ব্যাখ্যা করতে পারবে।
  • ২। আদর্শ প্রোগ্রামের বৈশিষ্ট্যসমূহ বর্ণনা করতে পারবে।
  • ৩। প্রোগ্রাম তৈরির ধাপ সমূহ ব্যাখ্যা করতে পারবে।

 

প্রোগ্রাম সংগঠনঃ প্রতিটি পূর্ণাঙ্গ প্রোগ্রামের তিনটি অপরিহার্য অংশ থাকে, যা পারস্পারিক সম্পর্কের মাধ্যমে একটি পূর্ণাঙ্গ প্রোগ্রাম গঠিত হয়। যেমন-

  • ১। ইনপুট: প্রতিটি প্রোগ্রামে প্রসেস বা প্রক্রিয়া করার জন্য ইনপুট নেওয়ার ব্যবস্থা থাকতে হবে।
  • ২। প্রসেস বা প্রক্রিয়া: ব্যবহারকারীর কাছ থেকে ইনপুট নিয়ে প্রসেস বা প্রক্রিয়া করার ব্যবস্থা থাকতে হবে।
  • ৩। আউটপুট: ইনপুট নিয়ে প্রসেস করে আউটপুট দেখানোর ব্যবস্থাও থাকতে হবে।

 

একটি আদর্শ প্রোগ্রামের নিমোক্ত বৈশিষ্ট্য সমূহ থাকতে হয়ঃ 

  • ১। প্রোগ্রাম অবশ্যই সহজ ও বোধগম্য হতে হবে, যাতে অন্যকোন প্রোগ্রামার পরবর্তীতে আপডেট করতে পারে।
  • ২। প্রোগ্রামটি রান করার জন্য সময় ও মেমোরি নূনতম হতে হবে।
  • ৩। প্রোগ্রাম সহজে সম্প্রসারণযোগ্য হতে হবে।
  • ৪। ডিবাগিং এবং টেস্টিং করা সহজতর হতে হবে।
  • ৫। প্রোগ্রাম সহজে রক্ষণাবেক্ষণযোগ্য হতে হবে।

 

প্রোগ্রাম তৈরির ধাপসমূহঃ  

একটি প্রোগ্রাম তৈরির মাধ্যমে সাধারণত একটি নির্দিস্ট সমস্যার সমাধান করা হয়ে থাকে। তাই একটি প্রোগ্রাম তৈরি করার জন্য কতগুলো ধাপ অনুসরণ করলে সমস্যাটি সহজে সমাধান করা যায়। ধাপগুলো নিমোক্ত আলোচনা করা হল-

  • ১। সমস্যা নির্দিষ্টকরণ
  • ২। সমস্যা বিশ্লেষণ
  • ৩। প্রোগ্রাম ডিজাইন
  • ৪। প্রোগ্রাম উন্নয়ন
  • ৫। প্রোগ্রাম বাস্তবায়ন
  • ৬। ডকুমেন্টশন
  • ৭। প্রোগ্রাম রক্ষণাবেক্ষণ

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

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

  • ১। কোন বিষয়গুলো প্রোগ্রাম ডেভেলপমেন্টের জন্য প্রয়োজন।
  • ২। কোন পদ্ধতিতে প্রোগ্রাম ডিজাইন করা হবে।
  • ৩। প্রোগ্রাম তৈরির ক্ষেত্রে কোন প্রোগ্রামিং ভাষাটি উপযুক্ত হবে।
  • ৪। সমস্যায় কোন ধরনের ইনপুট এবং কোন ধরনের আউটপুট হবে ইত্যাদি।

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

প্রোগ্রাম উন্নয়নঃ সমস্যা সমাধানের জন্য যে অ্যালগরিদম বা ফ্লোচার্ট তৈরি করা হয়েছে তা কোনো একটি উচ্চস্তরের প্রোগ্রামিং ভাষা ব্যবহার করে প্রোগ্রামে রূপদান করাকে বলা হয় প্রোগ্রাম উন্নয়ন। এক্ষেত্রে উচ্চস্তরের প্রোগ্রামিং ভাষা হিসেবে C, C++, java, python ইত্যাদি ব্যবহৃত হয়।

প্রোগ্রাম বাস্তবায়নঃ প্রোগ্রাম বাস্তবায়ন ধাপে প্রোগ্রাম এর টেস্টিং এবং ডিবাগিং করা হয়ে থাকে।

  • ১। টেস্টিং
  • ২। ডিবাগিং

১। টেস্টিংঃ প্রোগ্রাম টেস্টিং হচ্ছে, কোনো প্রোগ্রাম উন্নয়ন বা কোডিং সম্পন্ন করার পর প্রোগ্রামটির যে ধরনের আউটপুট বা ফলাফল হওয়া উচিৎ তা ঠিকমতো আসছে কিনা বা রান করছে কিনা তা যাচাই করা। এই ধাপে ভিন্ন ভিন্ন ইনপুট দিয়ে আউটপুটের অবস্থা পর্যবেক্ষণ করা হয়। এক্ষেত্রে যদি কোন অসঙ্গতি পাওয়া যায় তবে বুঝতে হবে প্রোগ্রাম কোডিংয়ের কোথাও ভুল হয়েছে। প্রোগ্রামে সাধারণত নিচের ভুলগুলো পরিলক্ষিত হয়। যথা:

  • ১। ব্যাকরণগত ভুল
  • ২। যৌক্তিক ভুল
  • ৩। রান টাইম বা এক্সিকিউশন টাইম ভুল

সিনট্যাক্স ভুল/ব্যাকরণগত ভুলঃ প্রোগ্রামের মধ্যে প্রোগ্রামিং ভাষার ব্যাকরণগত যেসব ভুল থাকে তাকে বলা হয় সিনট্যাক্স ভুল। যেমন- বানান ভুল,কমা, ব্র্যাকেট ঠিকমতো না দেয়া, কোনো চলকের মান না জানানো প্রভৃতি। এসব ভুল সংশোধন করা খুবই সহজ, কারণ সিনট্যাক্স ভুল হলে অনুবাদক প্রোগ্রাম ভুলের বার্তা ছাপায়। যেমন- প্রোগ্রামে printf()  কমান্ডের পরিবর্তে print() লেখা। সিনট্যাক্স ভুলকে কম্পাইল টাইম ভুলও বলা হয়।

লজিক্যাল  বা যৌক্তিক ভুলঃ প্রোগ্রামে যুক্তির ভুল থাকলে তাকে বলে লজিক্যাল ভুল। সাধারণত সমস্যা ঠিকমতো না বুঝার জন্যই এ ভুল হয়। যেমন- a>b এর স্থলে a<b বা s=a+b এর স্থানে s=a-b লিখলে লজিক্যাল ভুল হয়।  লজিক্যাল  ভুলের ক্ষেত্রে একটি উত্তর পাওয়া যায় যদিও তা ভুল। এক্ষেত্রে অনুবাদক প্রোগ্রাম কোনো ভুলের বার্তা ছাপায় না বলে লজিক্যাল  ভুল সংশোধন করা খুব কঠিন।

রান টাইম বা এক্সিকিউশন টাইম ভুলঃ রান টাইম ভুল প্রোগ্রাম এক্সিকিউশনের সময় ঘটে। যেমন- শূন্য দিয়ে ভাগ করা কিংবা ঋণাত্বক সংখ্যার বর্গমূল বা লগারিদম বের করা, ডাইনামিক মেমোরি অ্যালোকেশনের সময় অপর্যাপ্ত মেমোরি থাকা ইত্যাদি। অনুবাদক প্রোগ্রাম অনুবাদ করার সময় এই ধরণের ভুল নির্নয় করতে পারে না। এই ধরণের ভুল সম্বলিত প্রোগ্রাম রান করবে কিন্তু প্রোগ্রাম বন্ধ হয়ে যেতে পারে। রান টাইম ভুল নির্নয় এবং সংশোধন করা কঠিন। যৌক্তিক ভুল এক ধরণের রান-টাইম ভুল কারণ এই ধরণের ভুল কম্পাইলার নির্নয় করতে পারে না বা ডিবাগিং এর মাধ্যমে নির্নয় করা যায় না।

২। ডিবাগিংঃ আমরা প্রোগ্রাম টেস্টিং এর ক্ষেত্রে প্রোগ্রামে বিভিন্ন ধরনের ভুল সম্পর্কে জেনেছি। প্রোগ্রামে যেকোনো ভুল চিহ্নিত করতে পারলে সেই ভুলকে বলা হয় বাগ (Bug)। উক্ত ভুল বা Bug কে সমাধান করাকে বলা হয় ডিবাগ (Debug)। অর্থাৎ প্রোগ্রামের ভুল খুঁজে বের করে তা সমাধান করার পদ্ধতিকে বলা হয় ডিবাগিং। এক্ষেত্রে ডিবাগিং এর মাধ্যমে Syntax Error সমাধান করা সহজ কিন্তু Logical Error এবং Run-time Error সমাধান করা তুলনামূলক জটিল। ১৯৪৫ সালে মার্ক-১ কম্পিউটারের ভিতরে একটি মথপোকা ঢুকে বাসা বাধে ফলে কম্পিউটারটি অকার্যকর হয়ে যায়। তখন থেকে ডিবাগিং কথাটির উৎপত্তি।

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

  • ১. প্রোগ্রামের বর্ণনা।
  • ২. অ্যালগোরিদম বা ফ্লোচার্ট
  • ৩. লিখিত প্রোগ্রাম
  • ৪. নির্বাহের জন্য প্রয়োজনীয় কাজের তালিকা
  • ৫. ফলাফল

প্রোগ্রাম রক্ষণাবেক্ষণঃ সময়ের সাথে পরিবেশ-পরিস্থিতি পরিবর্তনের কারণে প্রোগ্রামের পরিবর্তন বা আধুনিকীকরণ করা প্রয়োজন হয়। এ ধরনের কাজ রক্ষণাবেক্ষণ ধাপের অন্তর্ভুক্ত। যেমন-

  • ১।ভুল সংশোধন
  • ২।কর্মক্ষমতা বৃদ্ধি
  • ৩।প্রোগ্রামের নতুন ফিচার যুক্ত করা
  • ৪।অপ্রয়োজনীয় অংশ বাদ দেওয়া ইত্যাদি।

পাঠ মূল্যায়ন- 

জ্ঞানমূলক প্রশ্নসমূহঃ

  • ক। টেস্টিং কী?
  • ক। বাগ(bug) কী?
  • ক। ডিবাগিং(debugging) কী?
  • ক। সিনট্যাক্স বা ব্যাকরণগত ভূল কী?
  • ক। লজিক্যাল  বা যৌক্তিক ভূল কী?
  • ক। রান টাইম বা এক্সিকিউশন টাইম ভূল কী?

অনুধাবনমূলক প্রশ্নসমূহঃ

  • খ। অ্যালগোরিদম বা ফ্লোচার্ট প্রোগ্রাম তৈরির কোন ধাপের সাথে সম্পর্কিত? ব্যাখ্যা কর।
  • খ। ডিবাগিং বা টেস্টিং প্রোগ্রাম তৈরির কোন ধাপের সাথে সম্পর্কিত? ব্যাখ্যা কর।

সৃজনশীল প্রশ্নসমূহঃ

বহুনির্বাচনি প্রশ্নসমূহঃ

 


Written by,

Leave a Reply

Your email address will not be published. Required fields are marked *