টেস্ট কেস : ইহা কি এবং ইহার কাজ কি?

কম্পিটিটিভ প্রোগ্রামিং এ যারা আমার মত নতুন তারা একটা জিনিস সহজে বুঝতে পারেন না আর সেটা হল Test Case

টেস্ট কেস জিনিসটা খুব ঝামেলার কিছু না। আপনাকে প্রব্লেম স্টেটমেন্ট এ যে সমস্যাটা সমাধান করতে বলেছে সেটাই মোট কতগুলো ইনপুট দিয়ে চেক করা হবে, সেটা হল টেস্ট কেস সংখ্যা। একটা উদাহরণ দেওয়া যাক।

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

মোট কথা, টেস্ট কেস সংখ্যা হচ্ছে কত গুলো ইনপুট এর জন্য প্রোগ্রামটা টেস্ট করে দেখা হবে সেটা। টেস্ট কেসের সমান সংখ্যক ইনপুট ও আউটপুট হবে।

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

#include<stdio.h>

int main()
{
    int a, b, i, sum, T;

    scanf("%d", &T); /* টেস্টকেস ইনপুট নেওয়া হল*/

    for (i =1; i <=T; i++) /* টেস্ট কেসে লুপ */
    {
/* মূল সমস্যার কাজ শুরু এখানে */
        scanf("%d%d", &a, &b);
        sum= a+b;
        printf("%d\n", sum);
/* মূল সমস্যার কাজ শেষ এখানে */
    }
    return 0;
}

এই কাজটা while স্টেটমেন্ট দিয়েও করা যায়। যেমন,
#include<stdio.h>

int main()
{
    int a, b, sum, T;

    scanf("%d", &T); /* টেস্টকেস ইনপুট নেওয়া হল*/

    while (T--) /* টেস্ট কেসে লুপ */
    {
/* মূল সমস্যার কাজ শুরু এখানে */
        scanf("%d%d", &a, &b);
        sum= a+b;
        printf("%d\n", sum);
/* মূল সমস্যার কাজ শেষ এখানে */
    }
    return 0;
}

কাজেই টেস্ট কেস এর জন্য আমাদের একটা লুপ নিতে হবে যার মধ্যে প্রব্লেম স্টেটমেন্ট এ উল্লিখিত সমস্যার সমাধান এর কোড (ইনপুট, প্রসেসিং এবং আউটপুট)  থাকবে।

আশা করি এবার অনুশীলন করার মত জ্ঞান সবার হয়েছে। কয়েকবার অনুশীলন করলেই ব্যাপার টা পরিষ্কার হয়ে যাবে।

Related Posts:

  • এক্সেকিউশান ও রান : Execution ও Run প্রোগ্রামিং ল্যাংগুয়েজ এর জগতে execution কথাটির অর্থ হচ্ছে কোন কোড সেগমেন্ট বা কোন স্টেটমেন্ট এ যে ইন্সট্রাকশন বা নির্দেশনা থাকে তা মেশিন কর্তৃক সম্প… Read More
  • C কন্ট্রোল স্টেটমেন্ট : return প্রত্যেকটা ফাংশনকেই ডিক্লেয়ার করার সময় (prototype লিখা বা একেবারে ডিফাইন করার সময়) তার একটা রিটার্ন টাইপ ডিক্লেয়ার করতে হয়। আর রিটার্ন দেওয়ার জন্য re… Read More
  • C এর উপাদান সমূহঃ ফাংশন .১ - ফাংশন কি? ফাংশন হচ্ছে যে কোন প্রসিডিউরাল প্রোগ্রামিং ল্যাংগুয়েজ এর বিল্ডিং ব্লক বা গঠনগত একক। C যেহেতু একটি প্রসিডিউরাল ল্যাংগুয়েজ সেহেতু C ও ত… Read More
  • স্কোপ : C ভাষায় Scope এর ধারণা যারা প্রোগ্রামিং ভাল করে বুঝতে চান স্কোপ সম্পর্কে ধারণা থাকা তাদের জন্য আবশ্যিক। স্কোপ হচ্ছে একটি এলাকা। স্কোপ হচ্ছে এমন একটি এলাকা যে এলাকায় কোন ভ্… Read More
  • C স্টেটমেন্ট : statement কি? C ভাষায় কোন প্রোগ্রামে উপস্থিত একটি পূর্ণ নির্দেশনাকে বলা হয় স্টেটমেন্ট। স্টেটমেন্ট হচ্ছে অনেকটা C ভাষার বাক্যের মত। অর্থাৎ, একটি স্টেটমেন্ট দ্বারা … Read More

0 comments:

Post a Comment