তথ্য ও যোগাযোগ প্রযুক্তি • প্রোগ্রামিং ভাষা
তথ্য ও যোগাযোগ প্রযুক্তি প্রশ্ন
আবহাওয়া অফিসের একজন কর্মকর্তা সাত দিনের সর্বোচ্চ তাপমাত্রা (ডিগ্রি সেলসিয়াস) একটি অ্যারেতে রেখে নিচের প্রোগ্রামটি রান করল।
#include <stdio.h>
int main()
{
int t[] = {28, 31, 33, 30, 29, 27, 32};
int i, sum, key;
sum = 0;
key = 30;
for (i = 0; i < 7; i += 1) {
sum += t[i];
}
printf("%d %d
", sum, sum / 7);
for (i = 0; i < 7; i += 1) {
if (t[i] == key) {
printf("Found");
break;
}
}
if (i == 7) {
printf("Not found");
}
return 0;
}
- ক)(1)
অ্যারে কী?
- খ)(2)
t অ্যারেটিতে সাতটি উপাদান থাকলেও t[7] ব্যবহার করা ঠিক নয় কেন? ব্যাখ্যা কর।
- গ)(3)
উদ্দীপকের প্রোগ্রামের প্রথম printf() স্টেটমেন্টের আউটপুট নির্ণয় কর।
- ঘ)(4)
উদ্দীপকের দ্বিতীয় লুপটি কীভাবে কাজ করে তা ধাপে ধাপে দেখাও। key এর মান 35 হলে প্রোগ্রামের আউটপুট কী হবে তা যুক্তিসহ বিশ্লেষণ কর।
উত্তর ও ব্যাখ্যা
- ক)
AI-তৈরি নমুনা উত্তর অ্যারে হলো সি প্রোগ্রামিং ভাষার একটি বিশেষ ডেটা স্ট্রাকচার, যেখানে একই ধরনের একাধিক ডেটা একটি নামের অধীনে ক্রমানুসারে রাখা যায়।
- খ)
AI-তৈরি নমুনা উত্তর সি ভাষায় অ্যারের ইনডেক্স 0 থেকে শুরু হয়। তাই অ্যারেতে n সংখ্যক উপাদান থাকলে প্রথম উপাদান 0-তম ঘরে এবং শেষ উপাদান (n-1)-তম ঘরে থাকে। উদ্দীপকে সাতটি উপাদান থাকায় ইনডেক্স হবে 0 থেকে 6 পর্যন্ত। t[7] অ্যারের সীমার বাইরের ঘর নির্দেশ করে, যেখানে কোনো বৈধ উপাদান নেই। তাই t[7] ব্যবহার করা ঠিক নয়।
- গ)
AI-তৈরি নমুনা উত্তর প্রথম for লুপে i এর মান 0 থেকে 6 পর্যন্ত চলে এবং প্রতিবার sum += t[i] অর্থাৎ sum = sum + t[i] এক্সিকিউট হয়।
sum = 0 + 28 + 31 + 33 + 30 + 29 + 27 + 32 = 210।
আবার sum / 7 = 210 / 7 = 30।
অতএব প্রথম printf() এর আউটপুট হবে: 210 30 - ঘ)
AI-তৈরি নমুনা উত্তর দ্বিতীয় লুপটি লিনিয়ার সার্চ পদ্ধতিতে কাজ করে।
key = 30 হলে: i = 0 এ t[0] = 28, 28 == 30 মিথ্যা। i = 1 এ t[1] = 31, মিথ্যা। i = 2 এ t[2] = 33, মিথ্যা। i = 3 এ t[3] = 30, 30 == 30 সত্য। তাই Found ছাপা হবে এবং break স্টেটমেন্টের কারণে লুপ থেকে বের হয়ে যাবে। এ সময় i এর মান 3, অর্থাৎ ৪টি তুলনার পর সংখ্যাটি পাওয়া গেছে। লুপের বাইরে i == 7 শর্তটি মিথ্যা (i = 3), তাই Not found ছাপা হবে না।
key = 35 হলে: অ্যারেতে 35 নেই, তাই কোনো তুলনাতেই t[i] == key সত্য হবে না। break একবারও এক্সিকিউট হবে না, লুপ চলতে চলতে i এর মান বাড়বে 7 পর্যন্ত। i = 7 হলে i < 7 শর্ত মিথ্যা হয়ে লুপ শেষ হবে। লুপের বাইরে i == 7 শর্তটি সত্য হওয়ায় আউটপুট হবে: Not found।
অতএব break এক্সিকিউট হয়েছে কি না তা i == n পরীক্ষা করে জানা যায়। সংখ্যা পাওয়া গেলে i এর মান n এর চেয়ে কম থাকে, আর না পাওয়া গেলে i এর মান n এর সমান হয়।
আরও প্রশ্ন অনুশীলন করতে অ্যাপে যাও