তথ্য ও যোগাযোগ প্রযুক্তি • প্রোগ্রামিং ভাষা
তথ্য ও যোগাযোগ প্রযুক্তি প্রশ্ন
রিমা ও শুভ দুটি প্রোগ্রাম লিখেছে-
রিমার প্রোগ্রাম:
#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() ফাংশনের কাজ কী?
- খ)(2)
রিমার প্রোগ্রামে #include <stdio.h> লেখা হয়েছে কেন? ব্যাখ্যা করো।
- গ)(3)
রিমার প্রোগ্রাম রান করে ইনপুটে 7 এবং 5 দিলে আউটপুট কী হবে? ধাপে ধাপে ব্যাখ্যা করো।
- ঘ)(4)
শুভর প্রোগ্রামে আউটপুট কত আসবে? ভুলের কারণ বিশ্লেষণ করে প্রোগ্রামটি সংশোধন করে দেখাও।
উত্তর ও ব্যাখ্যা
- ক)
AI-তৈরি নমুনা উত্তর scanf() ফাংশন দিয়ে ব্যবহারকারীর কাছ থেকে কি-বোর্ডের মাধ্যমে ইনপুট নেওয়া হয়।
- খ)
AI-তৈরি নমুনা উত্তর printf() ও scanf() ফাংশন কীভাবে ইনপুট নেবে ও আউটপুট প্রিন্ট করবে তা প্রোগ্রামে কোথাও বলা নেই। এগুলো stdio.h নামক হেডার ফাইলে তৈরি করে দেওয়া আছে। হেডার ফাইলের ফাংশন ব্যবহার করতে হলে প্রোগ্রামে সেটি অন্তর্ভুক্ত করতে হয়। তাই #include <stdio.h> লেখা হয়েছে, যাতে ইনপুট-আউটপুট সংক্রান্ত ফাংশনগুলো ব্যবহার করা যায়।
- গ)
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থাকায় আউটপুটের পর কার্সর নতুন লাইনে যাবে।
- ঘ)
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 আসবে। সঠিক মান হতো ।
এটি অ্যালগরিদমের ভুল নয়, কোড লেখার ভুল অর্থাৎ বাগ। সূত্র ঠিক আছে কিন্তু কোডে পূর্ণসংখ্যার ভাগ হয়ে গেছে।
সংশোধন: 9 বা 5 কে দশমিকযুক্ত সংখ্যা হিসেবে লিখতে হবে-
F = 9.0/5.0 * C + 32;
এখন 9.0/5.0 = 1.8 হবে এবং F = 1.8 × 100 + 32 = 212। আউটপুট হবে 212.000000, যা সঠিক।
আরও প্রশ্ন অনুশীলন করতে অ্যাপে যাও