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

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

রিমা ও শুভ দুটি প্রোগ্রাম লিখেছে-
রিমার প্রোগ্রাম:
#include <stdio.h>
int main()
{
int l, w, area;
scanf("%d %d", &l, &w);
area = l * w;
printf("Area = %d
", area);
return 0;
}
শুভর প্রোগ্রাম (সেলসিয়াস থেকে ফারেনহাইট রূপান্তর, সূত্র: F = 9/5 × C + 32):
#include <stdio.h>
int main()
{
double C, F;
scanf("%lf", &C);
F = 9/5 * C + 32;
printf("%lf
", F);
return 0;
}
শুভ ইনপুট হিসেবে 100 দিল, কিন্তু আউটপুট 212 না এসে অন্য কিছু এল।

  1. ক)

    scanf() ফাংশনের কাজ কী?

    (1)
  2. খ)

    রিমার প্রোগ্রামে #include <stdio.h> লেখা হয়েছে কেন? ব্যাখ্যা করো।

    (2)
  3. গ)

    রিমার প্রোগ্রাম রান করে ইনপুটে 7 এবং 5 দিলে আউটপুট কী হবে? ধাপে ধাপে ব্যাখ্যা করো।

    (3)
  4. ঘ)

    শুভর প্রোগ্রামে আউটপুট কত আসবে? ভুলের কারণ বিশ্লেষণ করে প্রোগ্রামটি সংশোধন করে দেখাও।

    (4)

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

  1. ক)

    AI-তৈরি নমুনা উত্তর scanf() ফাংশন দিয়ে ব্যবহারকারীর কাছ থেকে কি-বোর্ডের মাধ্যমে ইনপুট নেওয়া হয়।

  2. খ)

    AI-তৈরি নমুনা উত্তর printf() ও scanf() ফাংশন কীভাবে ইনপুট নেবে ও আউটপুট প্রিন্ট করবে তা প্রোগ্রামে কোথাও বলা নেই। এগুলো stdio.h নামক হেডার ফাইলে তৈরি করে দেওয়া আছে। হেডার ফাইলের ফাংশন ব্যবহার করতে হলে প্রোগ্রামে সেটি অন্তর্ভুক্ত করতে হয়। তাই #include <stdio.h> লেখা হয়েছে, যাতে ইনপুট-আউটপুট সংক্রান্ত ফাংশনগুলো ব্যবহার করা যায়।

  3. গ)

    AI-তৈরি নমুনা উত্তর scanf("%d %d", &l, &w); স্টেটমেন্টে দুটি int টাইপের মান ইনপুট নেওয়া হয়। ইনপুট 7 ও 5 দিলে l = 7 এবং w = 5 হবে। ভ্যারিয়েবলের আগে & চিহ্ন ব্যবহার করা হয়েছে।

    এরপর area = l * w; স্টেটমেন্টে l * w এক্সপ্রেশন এক্সিকিউট হয়ে 7 × 5 = 35 পাওয়া যাবে এবং তা area ভ্যারিয়েবলে অ্যাসাইন হবে।

    printf("Area = %d
    ", area); স্টেটমেন্টে int টাইপের মান প্রিন্টের জন্য %d ব্যবহৃত হয়েছে। তাই আউটপুট হবে-
    Area = 35

    থাকায় আউটপুটের পর কার্সর নতুন লাইনে যাবে।

  4. ঘ)

    AI-তৈরি নমুনা উত্তর ইনপুট C = 100 হলে প্রোগ্রামে F = 9/5 * C + 32; স্টেটমেন্ট এক্সিকিউট হবে।

    ভুলের কারণ: 9 ও 5 উভয়ই পূর্ণসংখ্যা (int)। দুটি পূর্ণসংখ্যার ভাগফল পূর্ণসংখ্যাই হয়। তাই 9/5 = 1 (দশমিক অংশ বাদ যায়), 1.8 নয়।

    তাই F = 1 * 100 + 32 = 132। printf-এ %lf থাকায় আউটপুট 132.000000 আসবে। সঠিক মান হতো 95×100+32=180+32=212\frac{9}{5} \times 100 + 32 = 180 + 32 = 212।

    এটি অ্যালগরিদমের ভুল নয়, কোড লেখার ভুল অর্থাৎ বাগ। সূত্র ঠিক আছে কিন্তু কোডে পূর্ণসংখ্যার ভাগ হয়ে গেছে।

    সংশোধন: 9 বা 5 কে দশমিকযুক্ত সংখ্যা হিসেবে লিখতে হবে-
    F = 9.0/5.0 * C + 32;
    এখন 9.0/5.0 = 1.8 হবে এবং F = 1.8 × 100 + 32 = 212। আউটপুট হবে 212.000000, যা সঠিক।

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