সি প্রোগ্রামিং অ্যারে - C programming Array
Array হলো একটি বিশেষ ধরনের ভেরিয়েবল যার মধ্যে একসঙ্গে একই টাইপের নির্দিষ্ট সংখ্যক ভ্যালু জমা রাখা যায়।
উদাহরণস্বরূপঃ আপনি যদি ১০০০ জন ছাত্রের পরীক্ষার মার্ক সংগ্রহ করে রাখতে চান তাহলে সিঙ্গেল ভ্যারিয়েবলের পরিবর্তে নিচের ন্যায় array ভ্যারিয়েবল তৈরি করুন।
float mark[1000];
সি প্রোগ্রামিং এ দুই ধরণের array রয়েছেঃ
- One-dimensional array
- Multidimensional array
Array ডিক্লেয়ারেশনের সিনট্যাক্স
dataType arrayName[arraySize];
উদাহরণস্বরূপ
float mark[5];
এখানে mark নামের এবং ফ্লোটিং পয়েন্ট টাইপের একটি array ভ্যারিয়েবল ডিক্লেয়ার করা হয়েছে যার সাইজ ৫। সুতরাং ইহা ৫ টি দশমিক(float) ভ্যালু গ্রহণ করতে পারে।
Array এর এলিমেন্টকে এক্সেস করার নিয়ম
ইনডেক্স(index) ব্যবহার করে Array এর এলিমেন্টকে এক্সেস করা হয়।
ধরুন, আপনি উপরের mark অ্যারেটি ডিক্লেয়ার করেছেন। তাহলে mark এর এলিমেন্ট-সমূহকে এক্সেস করার জন্য প্রথম এলিমেন্টের ক্ষেত্রে mark[0], দ্বিতীয় এলিমেন্টের ক্ষেত্রে mark[1] লিখতে হবে এবং এভাবে চলতে থাকবে।
Array সম্মন্ধে কিছু গুরুত্বপূর্ন টিপস
- Array এর ইনডেক্সিং 1 এর পরিবর্তে 0 দিয়ে শুরু হয়। উপরের উদাহরণে array এর প্রথম এলিমেন্টটি হলোঃ mark[0]
- Array এর সাইজ যদি n হয় তাহলে এর শেষ এলিমেন্টকে এক্সেস করার জন্য
(n-1)
ইনডেক্স ব্যবহার করা হয়। উপরের উদাহরণে array এর সাইজ ৫ তাই শেষ এলিমেন্টকে mark[4] এর মাধ্যমে এক্সেস করা হয়েছে। - ধরুন
mark[0]
এর এড্রেস 8024a দ্বারা শুরু হয়েছে তাহলেmark[1]
এর এড্রেস হবে 8028a এবংmark[2]
এর এড্রেস হবে 8032a, কারণ ফ্লোট ভ্যারিয়েবলের সাইজ ৪(চার) বাইট।
সি প্রোগ্রামিং এ array কিভাবে ইনিশিয়ালাইজড হয়?
ডিক্লেয়ারেশনের সময়ও array ভ্যারিয়েবলকে ইনিশিয়ালাইজড(initialize) করা যায়। অর্থাৎ ডিক্লেয়ারেশনের সময় array তে ভ্যালু এসাইন করা যায়।
উদাহরণস্বরূপঃ
ডিক্লেয়ারেশনের সময় সাইজসহ array ইনিশিয়ালাইজেশন(initialization)
int mark[5] = {89, 80, 88, 83, 90};
ডিক্লেয়ারেশনের সময় সাইজ ছাড়া array ইনিশিয়ালাইজেশন(initialization)
int mark[] = {89, 80, 88, 83, 90};
array ইনিশিয়ালাইজেশন এর ডায়াগ্রাম
এখানে
mark[0] হলো 89 এর সমান mark[1] হলো 80 এর সমান mark[2] হলো 88 এর সমান mark[3] হলো 83 এর সমান mark[4] হলো 90 এর সমান
Array এলিমেন্ট কিভাবে ইনসার্ট(insert) এবং প্রিন্ট করা হয়?
int mark[5] = {89, 80, 88, 83, 90}
// তৃতীয় এলিমেন্টের জায়গায় ভিন্ন ভ্যালু ইনসার্ট(insert)
mark[2] = 9;
// ইউজার কর্তৃক ইনপুট নিয়ে তৃতীয় এলিমেন্টে ভ্যালু ইনসার্ট
scanf("%d", &mark[2]);
// ইউজার কর্তৃক ইনপুট নিয়ে (i+1) তম এলিমেন্টে ভ্যালু ইনসার্ট
scanf("%d", &mark[i]);
// array এর প্রথম এলিমেন্ট প্রিন্ট করবে
printf("%d", mark[0]);
// array এর i তম এলিমেন্ট প্রিন্ট করবে
printf("%d", age[i-1]);
উদাহরনঃ সি প্রোগ্রামিং এ Array এর ব্যবহার
// n (n < 10) সংখ্যক পূর্ণ সংখ্যার গড় নির্ণয়ের প্রোগ্রাম
#include <stdio.h>
int main()
{
int marks[10], i, n, sum = 0, average;
printf("Enter n: ");
scanf("%d", &n);
for(i=0; i<n; ++i)
{
printf("Enter number%d: ",i+1);
scanf("%d", &marks[i]);
sum += marks[i];
}
average = sum/n;
printf("Average marks = %d", average);
return 0;
}
আউটপুট
Enter n: 5 Enter number1: 45 Enter number2: 35 Enter number3: 38 Enter number4: 31 Enter number5: 49 Average marks = 39
সি array নিয়ে কাজের সময় কিছু গুরুত্বপূর্ণ বিষয় যা মাথায় রাখা উচিৎ!
ধরুন, আপনি নিচের ন্যায় ১০টি এলিমেন্ট বিশিষ্ট একটি array ডিক্লেয়ার করেছেনঃ
int testArray[10];
আপনি testArray[0]
থেকে testArray[9]
ব্যবহার করে array এর মেম্বার-সমূহকে এক্সেস করতে পারবেন।
আপনি যদি array এলিমেন্টকে এই রেঞ্জের বাইরে থেকে যেমন - testArray[15]
এভাবে এক্সেস করতে চান তাহলে কম্পাইলার কোনো error দেখাবেনা ঠিকই। কিন্তু এই কারণে অপ্রত্যাশিত ফলাফল যেমন-undefined আসতে পারে।