তথ্য ও যোগাযোগ প্রযুক্তি • প্রোগ্রামিং ভাষা

তথ্য ও যোগাযোগ প্রযুক্তি প্রশ্ন

ফারিহা একটি সমকোণী ত্রিভুজের ভূমি a ও লম্ব b দিয়ে অতিভুজ নির্ণয়ের জন্য নিচের প্রোগ্রামটি লিখেছে।

#include <stdio.h>
#include <math.h>
double hypotenuse(double a, double b);
int main()
{
    double x, y, h;
    scanf("%lf %lf", &x, &y);
    h = hypotenuse(x, y);
    printf("%lf
", h);
    return 0;
}
double hypotenuse(double a, double b)
{
    return sqrt(pow(a, 2) + pow(b, 2));
}

সে প্রোগ্রামটি আলাদাভাবে (3, 4) এবং (5, 12) মান দিয়ে চালায়।

  1. ক)

    হেডার ফাইল কী?

    (1)
  2. খ)

    int main() ফাংশনের শেষে return 0; লেখা হয় কেন? ব্যাখ্যা কর।

    (2)
  3. গ)

    ফারিহা ইনপুট হিসেবে 6 এবং 8 দিলে উদ্দীপকের প্রোগ্রামের আউটপুট কী হবে? ধাপসহ দেখাও।

    (3)
  4. ঘ)

    ফারিহার প্রোগ্রামে ফাংশন ব্যবহারের যৌক্তিকতা বিশ্লেষণ কর। (3, 4) এবং (5, 12) মান দিয়ে প্রোগ্রামটি চালালে কী আউটপুট পাওয়া যাবে, তা-ও দেখাও।

    (4)

উত্তর ও ব্যাখ্যা

  1. ক)

    AI-তৈরি নমুনা উত্তর যে ফাইলে আগে থেকে তৈরি করা বিভিন্ন লাইব্রেরি ফাংশন থাকে এবং প্রোগ্রামে ইনক্লুড করে সেই ফাংশনগুলো ব্যবহার করা যায়, তাকে হেডার ফাইল বলে। যেমন stdio.h, math.h।

  2. খ)

    AI-তৈরি নমুনা উত্তর main() ফাংশন int main() হিসেবে ডিক্লেয়ার করলে কম্পাইলার ধরে নেয় ফাংশনটির এক্সিকিউশন শেষ হলে একটি ইন্টিজার মান রিটার্ন করবে। তাই ফাংশনের শেষে একটি ইন্টিজার রিটার্ন করতে হয়। প্রচলিত নিয়মে 0 রিটার্ন করা হয়, যা বোঝায় প্রোগ্রামটি কোনো সমস্যা ছাড়াই ঠিকভাবে চলেছে। তবে 0-ই রিটার্ন করতে হবে এমন বাধ্যবাধকতা নেই, যেকোনো ইন্টিজার রিটার্ন করা যায়।

  3. গ)

    AI-তৈরি নমুনা উত্তর ইনপুট: x = 6, y = 8। main() ফাংশন থেকে hypotenuse(x, y) কল করা হলে আর্গুমেন্ট 6 ও 8 যথাক্রমে প্যারামিটার a ও b তে যাবে।
    ফাংশনের ভেতরে pow(a, 2) = 6² = 36 এবং pow(b, 2) = 8² = 64।
    36 + 64 = 100।
    sqrt(100) = 10। ফাংশনটি double টাইপের 10 রিটার্ন করবে এবং তা h ভ্যারিয়েবলে জমা হবে।
    printf() এ %lf ব্যবহার করায় দশমিকের পর ছয় ঘর পর্যন্ত দেখাবে।
    অতএব আউটপুট হবে: 10.000000

  4. ঘ)

    AI-তৈরি নমুনা উত্তর ফাংশন হলো কোনো নির্দিষ্ট কাজের জন্য লেখা কোডের একটি অংশ, যা একবার লিখে বারবার কল করে ব্যবহার করা যায়।
    উদ্দীপকে hypotenuse() ফাংশনটি double টাইপের দুটি প্যারামিটার a, b নেয় এবং double টাইপ রিটার্ন করে। main() এর আগে ফাংশনের প্রোটোটাইপ লেখা হয়েছে এবং main() এর পরে ফাংশনটি ইমপ্লিমেন্ট করা হয়েছে। ফাংশনের ভেতরে math.h হেডার ফাইলের pow() ও sqrt() লাইব্রেরি ফাংশন ব্যবহার করা হয়েছে। pow() ও sqrt() এর ভেতরের কোড ফারিহাকে নতুন করে লিখতে হয়নি। শুধু ফাংশনটি কী কাজ করে, কী ডেটা নেয় ও কী রিটার্ন করে জানাই যথেষ্ট ছিল।
    (3, 4) এর জন্য: pow(3, 2) = 9, pow(4, 2) = 16, যোগফল 25, sqrt(25) = 5। আউটপুট 5.000000।
    (5, 12) এর জন্য: pow(5, 2) = 25, pow(12, 2) = 144, যোগফল 169, sqrt(169) = 13। আউটপুট 13.000000।
    আলাদা মান দিয়ে একই ফাংশন বারবার কল করে ভিন্ন ভিন্ন ফল পাওয়া গেছে। ফাংশন ব্যবহার না করলে প্রতিবার sqrt(pow(a, 2) + pow(b, 2)) গণনার কোড আবার লিখতে হতো, ফলে কোডের আকার বাড়ত এবং ভুলের সম্ভাবনাও বাড়ত। ফাংশন ব্যবহারে কোড ছোট ও সহজে বোধগম্য হয়েছে এবং কোনো পরিবর্তনের প্রয়োজন হলে কেবল ফাংশনের ভেতরে করলেই হয়। অতএব ফারিহার প্রোগ্রামে ফাংশন ব্যবহার যুক্তিসংগত হয়েছে।

আরও প্রশ্ন অনুশীলন করতে অ্যাপে যাও