এই পাঠ শেষে যা যা শিখতে পারবে-
১। প্রোগ্রামের সংগঠন ব্যাখ্যা করতে পারবে।
২। আদর্শ প্রোগ্রামের বৈশিষ্ট্যসমূহ বর্ণনা করতে পারবে।
৩। প্রোগ্রাম তৈরির ধাপ সমূহ ব্যাখ্যা করতে পারবে।
Go for English Version
প্রোগ্রাম সংগঠন
প্রতিটি পূর্ণাঙ্গ প্রোগ্রামের তিনটি অপরিহার্য অংশ থাকে, যা পারস্পারিক সম্পর্কের মাধ্যমে একটি পূর্ণাঙ্গ প্রোগ্রাম গঠিত হয়। যেমন-
ইনপুট: প্রতিটি প্রোগ্রামে প্রসেস বা প্রক্রিয়া করার জন্য ইনপুট নেওয়ার ব্যবস্থা থাকতে হবে।
প্রসেস বা প্রক্রিয়া: ব্যবহারকারীর কাছ থেকে ইনপুট নিয়ে প্রসেস বা প্রক্রিয়া করার ব্যবস্থা থাকতে হবে।
আউটপুট: ইনপুট নিয়ে প্রসেস করে আউটপুট দেখানোর ব্যবস্থাও থাকতে হবে।
আদর্শ প্রোগ্রামের বৈশিষ্ট্যসমূহ
১। প্রোগ্রাম অবশ্যই সহজ ও বোধগম্য হতে হবে, যাতে অন্যকোন প্রোগ্রামার পরবর্তীতে আপডেট করতে পারে।
২। প্রোগ্রামটি রান করার জন্য সময় ও মেমোরি নূনতম হতে হবে।
৩। প্রোগ্রাম সহজে সম্প্রসারণযোগ্য হতে হবে।
৪। ডিবাগিং এবং টেস্টিং করা সহজতর হতে হবে।
৫। প্রোগ্রাম সহজে রক্ষণাবেক্ষণযোগ্য হতে হবে।
প্রোগ্রাম তৈরির ধাপসমূহ
একটি প্রোগ্রাম তৈরির মাধ্যমে সাধারণত একটি নির্দিস্ট সমস্যার সমাধান করা হয়ে থাকে। তাই একটি প্রোগ্রাম তৈরি করার জন্য কতগুলো ধাপ অনুসরণ করলে সমস্যাটি সহজে সমাধান করা যায়। ধাপগুলো নিমোক্ত আলোচনা করা হল-
১। সমস্যা নির্দিষ্টকরণ
২। সমস্যা বিশ্লেষণ
৩। প্রোগ্রাম ডিজাইন
৪। প্রোগ্রাম উন্নয়ন
৫। প্রোগ্রাম বাস্তবায়ন
৬। ডকুমেন্টশন
৭। প্রোগ্রাম রক্ষণাবেক্ষণ
সমস্যা নির্দিষ্টকরণঃ
একটি প্রোগ্রাম তৈরির মূল লক্ষ হল কোন একটি সমস্যার সমাধান করা। তাই প্রোগ্রাম তৈরির মাধ্যমে কোন সমস্যা সমাধানের পূর্বে সমস্যাটি অবশ্যই ভালোভাবে চিহ্নিত করতে হবে। সমস্যা নির্দিষ্টকরণের ক্ষেত্রে সমস্যাটি কী, সমস্যার বিষয়বস্তু কী ইত্যাদি বিষয়ে জানতে হবে। ভালভাবে সমস্যা নির্দিষ্ট করতে না পারলে প্রোগ্রাম যতই উন্নত হোক না কেন কাংখিত সমাধান পাওয়া সম্ভব না।
সমস্যা বিশ্লেষণঃ
সমস্যা নির্দিষ্ট করার পরের ধাপটি হল সমস্যা বিশ্লেষণ। সমস্যাটি কীভাবে সমাধান করা যায়, কতভাবে সমাধান করা যায়, যদি একাধিক ভাবে সমাধান করা যায় তাহলে কোনটি সবচেয়ে ইফেক্টিভ সমাধান তা বিশ্লেষণ করাই হল সমস্যা বিশ্লেষণ। এক্ষেত্রে সমস্যাটিকে ছোট ছোট অংশে ভাগ করে সমাধান করার চেষ্টা করা হয়। সমস্যা সমাধানের ক্ষেত্রে কতকগুলো বিষয় এই ধাপে বিবেচনা করা হয়ে থাকে। বিষয়গুলো হল-
১। কোন বিষয়গুলো প্রোগ্রাম ডেভেলপমেন্টের জন্য প্রয়োজন।
২। কোন পদ্ধতিতে প্রোগ্রাম ডিজাইন করা হবে।
৩। প্রোগ্রাম তৈরির ক্ষেত্রে কোন প্রোগ্রামিং ভাষাটি উপযুক্ত হবে।
৪। সমস্যায় কোন ধরনের ইনপুট এবং কোন ধরনের আউটপুট হবে ইত্যাদি।
প্রোগ্রাম ডিজাইনঃ
প্রোগ্রাম ডিজাইন বলতে বুঝায়- সমস্যা বিশ্লেষণ ধাপে সমস্যাটিকে যে ছোট ছোট অংশে ভাগ করা হয়েছে তাদের পারস্পরিক সম্পর্ক ও সামগ্রিক সমাধান বের করে তার সূডোকোড বা অ্যালগোরিদম অথবা ফ্লোচার্ট তৈরি করা।
এক্ষেত্রে নিম্নলিখিত বিষয়গুলো বিবেচনা করা হয়-
- ইনপুট ডিজাইন
- আউটপুট ডিজাইন
- ইনপুট ও আউটপুটের মধ্যে সম্পর্ক ডিজাইন ইত্যাদি
প্রোগ্রাম উন্নয়নঃ
সমস্যা সমাধানের জন্য যে অ্যালগরিদম বা ফ্লোচার্ট তৈরি করা হয়েছে তা কোনো একটি উচ্চস্তরের প্রোগ্রামিং ভাষা ব্যবহার করে প্রোগ্রামে রূপদান করাকে বলা হয় প্রোগ্রাম উন্নয়ন। এক্ষেত্রে সমস্যার ধরণ অনুযায়ী উচ্চস্তরের প্রোগ্রামিং ভাষা হিসেবে C, C++, java, python ইত্যাদি ব্যবহৃত হয়।
প্রোগ্রাম বাস্তবায়নঃ
প্রোগ্রাম বাস্তবায়ন ধাপে প্রোগ্রাম এর টেস্টিং এবং ডিবাগিং করা হয়ে থাকে।
১। টেস্টিং
২। ডিবাগিং
টেস্টিংঃ প্রোগ্রাম টেস্টিং হচ্ছে, কোনো প্রোগ্রাম উন্নয়ন বা কোডিং সম্পন্ন করার পর প্রোগ্রামটি রান করছে কিনা বা যে ধরনের আউটপুট বা ফলাফল হওয়া উচিৎ তা ঠিকমতো আসছে কিনা তা যাচাই করা। এই ধাপে ভিন্ন ভিন্ন ইনপুট দিয়ে আউটপুটের অবস্থা পর্যবেক্ষণ করা হয়। এক্ষেত্রে যদি কোন অসঙ্গতি পাওয়া যায় তবে বুঝতে হবে প্রোগ্রাম কোডিংয়ের কোথাও ভুল হয়েছে। প্রোগ্রামে সাধারণত নিচের ভুলগুলো পরিলক্ষিত হয়। যথা:
১। ব্যাকরণগত ভুল (Syntax Error)
২। যৌক্তিক ভুল (Logical Error)
৩। রান টাইম বা এক্সিকিউশন টাইম ভুল (Run Time or Execution Time Error)
সিনট্যাক্স ভুল/ব্যাকরণগত ভুলঃ প্রোগ্রামের মধ্যে প্রোগ্রামিং ভাষার ব্যাকরণগত যেসব ভুল থাকে তাকে বলা হয় সিনট্যাক্স ভুল। যেমন- বানান ভুল,কমা, ব্র্যাকেট ঠিকমতো না দেয়া, কোনো চলকের মান না জানানো প্রভৃতি। এসব ভুল সংশোধন করা খুবই সহজ, কারণ সিনট্যাক্স ভুল হলে অনুবাদক প্রোগ্রাম ভুলের বার্তা ছাপায়। যেমন- প্রোগ্রামে printf() কমান্ডের পরিবর্তে print() লেখা। সিনট্যাক্স ভুলকে কম্পাইল টাইম ভুলও বলা হয়।
লজিক্যাল বা যৌক্তিক ভুলঃ প্রোগ্রামে যুক্তির ভুল থাকলে তাকে বলে লজিক্যাল ভুল। সাধারণত সমস্যা ঠিকমতো না বুঝার জন্যই এ ভুল হয়। যেমন- a>b এর স্থলে a<b বা s=a+b এর স্থানে s=a-b লিখলে লজিক্যাল ভুল হয়। লজিক্যাল ভুলের ক্ষেত্রে একটি উত্তর পাওয়া যায় যদিও তা ভুল। এক্ষেত্রে অনুবাদক প্রোগ্রাম কোনো ভুলের বার্তা ছাপায় না বলে লজিক্যাল ভুল সংশোধন করা খুব কঠিন।
রান টাইম বা এক্সিকিউশন টাইম ভুলঃ রান টাইম ভুল প্রোগ্রাম এক্সিকিউশনের সময় ঘটে। যেমন- শূন্য দিয়ে ভাগ করা কিংবা ঋণাত্বক সংখ্যার বর্গমূল বা লগারিদম বের করা, ডাইনামিক মেমোরি অ্যালোকেশনের সময় অপর্যাপ্ত মেমোরি থাকা ইত্যাদি। অনুবাদক প্রোগ্রাম অনুবাদ করার সময় এই ধরণের ভুল নির্নয় করতে পারে না। এই ধরণের ভুল সম্বলিত প্রোগ্রাম রান করবে কিন্তু প্রোগ্রাম বন্ধ হয়ে যেতে পারে। রান টাইম ভুল নির্নয় এবং সংশোধন করা কঠিন। যৌক্তিক ভুল এক ধরণের রান-টাইম ভুল কারণ এই ধরণের ভুল কম্পাইলার নির্নয় করতে পারে না বা ডিবাগিং এর মাধ্যমে নির্নয় করা যায় না।
ডিবাগিংঃ আমরা প্রোগ্রাম টেস্টিং এর ক্ষেত্রে প্রোগ্রামে বিভিন্ন ধরনের ভুল সম্পর্কে জেনেছি। প্রোগ্রামে যেকোনো ভুল চিহ্নিত করতে পারলে সেই ভুলকে বলা হয় বাগ (Bug)। উক্ত ভুল বা Bug কে সমাধান করাকে বলা হয় ডিবাগ (Debug)। অর্থাৎ প্রোগ্রামের ভুল-ত্রুটি(Error) খুঁজে বের করে তা সমাধান করার প্রক্রিয়াকে বলা হয় ডিবাগিং।
এক্ষেত্রে ডিবাগিং এর মাধ্যমে Syntax Error সমাধান করা সহজ কিন্তু Logical Error এবং Run-time Error সমাধান করা তুলনামূলক জটিল।
১৯৪৫ সালে মার্ক-১ কম্পিউটারের ভিতরে একটি মথপোকা প্রবেশ করে বাসা বাধে, ফলে কম্পিউটারটি অকার্যকর হয়ে পড়ে। তখন থেকে কম্পিউটার বিজ্ঞানে Bug কথাটির অর্থ ত্রুটি(Error)।
ডকুমেন্টেশনঃ
প্রোগ্রাম ডেভেলপমেন্টের সময় ভবিষ্যতে প্রোগ্রাম রক্ষণাবেক্ষণের কথা ভেবে প্রোগ্রামের বিভিন্ন অংশের বিবরণ কমেন্ট হিসেবে লিখে রাখতে হয়। প্রোগ্রামের বিভিন্ন অংশের বিবরণ কমেন্ট হিসেবে লিপিবদ্ধ করাকে প্রোগ্রাম ডকুমেন্টেশন বলে। প্রোগ্রামের ডকুমেন্টেশন লেখা থাকলে যেকোন প্রোগ্রামার খুব সহজেই প্রোগ্রাম আপডেট করতে পারে। প্রোগ্রাম রক্ষণাবেক্ষণে ডকুমেন্টেশনের গুরুত্ব অপরিসীম।
ডকুমেন্টেশনে নিম্নলিখিত বিষয়সমূহ অন্তর্ভুক্ত করা হয়ঃ
১। প্রোগ্রামের বর্ণনা।
২। অ্যালগোরিদম বা ফ্লোচার্ট
৩। নির্বাহের জন্য প্রয়োজনীয় কাজের তালিকা
৪। প্রোগ্রামের আউটপুট
প্রোগ্রাম ডকুমেন্টেশন এর কয়েকটি সুবিধা –
১। একটি প্রোগ্রামের সমস্ত অংশের উপর নজর রাখে
২। প্রোগ্রাম রক্ষণাবেক্ষণ সহজ
৩। ডেভেলোপার ছাড়া অন্য প্রোগ্রামাররা প্রোগ্রামের সমস্ত দিক বুঝতে পারে
৪। প্রোগ্রামের সামগ্রিক মানের উন্নতি করে
প্রোগ্রাম রক্ষণাবেক্ষণঃ
সময়ের সাথে পরিবেশ-পরিস্থিতি পরিবর্তনের কারণে প্রোগ্রামের পরিবর্তন বা আধুনিকীকরণ করা প্রয়োজন হয়। নিমোক্ত আউটকাম অর্জনের জন্য প্রোগ্রাম রক্ষণাবেক্ষণ করার প্রয়োজন হয়-
১। ভুল সংশোধন
২। কর্মক্ষমতা বৃদ্ধি
৩। প্রোগ্রামের নতুন ফিচার যুক্ত করা
৪। অপ্রয়োজনীয় অংশ বাদ দেওয়া ইত্যাদি।
পাঠ মূল্যায়ন-
জ্ঞানমূলক প্রশ্নসমূহঃ
ক) টেস্টিং কী?
ক) বাগ(bug) কী?
ক) ডিবাগিং(debugging) কী?
ক) সিনট্যাক্স বা ব্যাকরণগত ভূল কী?
ক) লজিক্যাল বা যৌক্তিক ভূল কী?
ক) রান টাইম বা এক্সিকিউশন টাইম ভূল কী?
অনুধাবনমূলক প্রশ্নসমূহঃ
খ) অ্যালগোরিদম বা ফ্লোচার্ট প্রোগ্রাম তৈরির কোন ধাপের সাথে সম্পর্কিত? ব্যাখ্যা কর।
খ) ডিবাগিং বা টেস্টিং প্রোগ্রাম তৈরির কোন ধাপের সাথে সম্পর্কিত? ব্যাখ্যা কর।
সৃজনশীল প্রশ্নসমূহঃ
নিচের উদ্দীপকটি পড় এবং প্রশ্নের উত্তর দাওঃ
মনির ICT শিক্ষকের নিকট লিপ-ইয়ার সম্পর্কে জানতে চাইল। ফলে ICT শিক্ষক চিত্রের মাধ্যমে ধাপে ধাপে বুঝিয়ে দিলেন। চিত্র অনুসরণ করে মনির লিপ-ইয়ার নির্নয়ের একটি প্রোগ্রাম লিখলো কিন্তু প্রোগ্রামটি সঠিকভাবে কাজ করছিলো না। তাই তার বন্ধু রোকনকে দেখায়। রোকন প্রোগ্রামটি দেখে এবং ভুল সংশোধন করে দেয়।
গ) উদ্দীপকে উল্লিখিত ICT শিক্ষকের সমাধান প্রক্রিয়া প্রোগ্রাম তৈরির কোন ধাপের সাথে সম্পর্কিত? ব্যাখ্যা কর।
ঘ) উদ্দীপকে রোকন এর কার্যক্রমটি প্রোগ্রাম তৈরির একটি গুরুত্বপূর্ণ ধাপ – বিশ্লেষণ কর।
বহুনির্বাচনি প্রশ্নসমূহঃ
১। প্রোগ্রাম কোডিং এর পূর্ববর্তী ধাপ কোনটি?
ক) সমস্যা বিশ্লেষণ খ) প্রোগ্রাম ডিজাইন
গ) প্রোগ্রাম বাস্তবায়ন ঘ) প্রোগ্রাম রক্ষণাবেক্ষণ
২। প্রোগ্রামে কোন ধরনের ভূলের জন্য কম্পিউটার বার্তা দেয়?
ক) সিনট্যাক্স ভুল খ) লজিক্যাল ভুল
গ) ডেটা ভুল ঘ) যেকোন ভুল
৩। প্রোগ্রামের ভুলত্রুটি(error) খুঁজে বের করে তা সংশোধনের পদ্ধতিকে কী বলে?
ক) কোডিং খ) ডিকোডিং
গ) এনকোডিং ঘ) ডিবাগিং
৪। প্রোগ্রাম রচনার জন্য প্রয়োজন-
i. সমস্যা শনাক্তকরণ
ii. প্রোগ্রাম বাগ করা
iii. প্রোগ্রাম ডিবাগিং করা
নিচের কোনটি সঠিক?
ক) i ও ii খ) i ও iii
গ) ii ও iii ঘ) i, ii ও iii
৫। প্রোগ্রাম ডিজাইনের অন্তর্ভুক্ত কাজ হচ্ছে-
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
Your writing is helpful to me.