Header Ads

Header ADS

প্রোগ্রামিং সি এর অ্যারে প্রদ্ধতি?

 

প্রাথমিক ধারণা

অ্যারে কি?

যে কোন ধরনের প্রোগ্রামিং এর বেলায় একটি সাধারণ চ্যালেঞ্জ হল একই ধরনের অনেকগুলো ডেটা নিয়ে কাজ করা। যেমন আপনাকে হয়ত তিন হাজার মানুষের হোম ডিস্ট্রিক্ট নিয়ে কাজ করতে হবে বা তিনশত ছাত্র-ছাত্রীর একটি বিষয়ের প্রাপ্ত নম্বর নিয়ে কাজ করতে হবে। অল্প সংখ্যক ডেটা হলে আমরা দুই একটি ভ্যারিয়েবল নিয়ে কাজগুলো করতে পারি। কিন্তু এরকম অজস্র ডেটা হলে তার জন্য অজস্র ভ্যারিয়েবল তৈরি করাটা বেশ ঝামেলার।
এই ধরনের ডেটা নিয়ে কাজ করার জন্য সি প্রোগ্রামিং এ আছে অ্যারে। খুব সহজে বলতে গেলে অ্যারে হল একই ডেটা টাইপের একই ধরনের ডেটার একটি নির্দিস্ট সিরিজ।
যেহেতু অ্যারে একটি সিরিজ, তাই এর শুরু এবং শেষ আছে। অ্যারে বানানোর সময়ই এই সাইজ বলে দিতে হয় কারণ অ্যারের সাইজের সাথে মেমোরি অ্যালোকেশনের ব্যাপার আছে। অ্যারেগুলোর একটি নির্দিষ্ট সাইজ থাকে এবং এদের ইনডেক্সিং শুরু হয় জিরো বা শূণ্য থেকে।
অ্যারে
উপরের চিত্রটিতে অামরা একটি অ্যারের সাধারণ রিপ্রেজেন্টেশন দেখতে পারছি।
সি প্রোগ্রামিং এ অ্যারে দুই প্রকার।
  • ওয়ান ডাইমেনশনাল অ্যারে
  • মাল্টি ডাইমেনশনাল অ্যারে
উপরের ছবিটি একটি ওয়ান ডাইমেনশনাল অ্যারের উদাহরন। এখানে একটি সিরিজে সবগুলো ভ্যারিয়েবল বা এলিমেন্ট রাখা হয়। মাল্টি ডাইমেনশনাল অ্যারে হতে পারে যখন আমরা ম্যাট্রিক্স নিয়ে কাজ করতে চাই বা যদি অ্যারেতে একাধিক ইনডেক্সিং দরকার হয়।
পরের অংশগুলোতে আমরা অ্যরে নিয়ে কীভাবে কাজ করতে তা দেখব।

যারে ডিক্লেয়ারেশন

সি তে অ্যারে ব্যবহার করার আগে সেগুলোকে ডিক্লেয়ার করে নিতে হয় সাধারণ ভ্যারিয়েবলের মতই। অ্যারে ডিক্লেয়ারেশনের সিনট্যাক্স হচ্ছে
    dataType Array_Name [ size ];
এখানে dataType হচ্ছে অ্যারেটি কী ধরনের ডেটা রাখবে তার টাইপ। তারপরে অ্যারের নাম, এবং সবশেষে size হচ্ছে অ্যারেতে এলিমেন্টের সংখ্যা।
অ্যারে অ্যাকসেস করতে হলে অ্যারের ইনডেক্স নাম্বারটি নির্দিস্ট করে বলতে হয়। অ্যারের ইনডেক্সিং শুরু হয় জিরো বা শূণ্য থেকে। আসুন আমরা অ্যারে নিয়ে বেসিক একটি প্রোগ্রাম দেখি। এখানে আরা অ্যারে ডিক্লেয়ার করব, সেটিতে ভ্যালু রাখব, প্রিন্ট করব এবং কয়েকটি সাধারণ অপারেশন দেখব।
#include<stdio.h>

int main(void)
{

int age[5] = {18, 30, 50, 47, 57}; //array declaration and assigning values

printf("%d", age[0]);  //Printing the first element
printf("\n%d", age[3]); //Printing the 4th element

age[2] = 80; //changing a value

printf("\n%d", age[2]); //printing the changed value

printf("\nEnter age of person 1 :");
scanf("%d", &age[0]); //using scanf to insert a value in the array
printf("The newly assigned age for person 1 is : %d", age[0]);

return 0;
}
এখানে আমরা একটি অ্যারে ডিক্লেয়ার করে সেটিতে পাঁচটি ভ্যালু অ্যাসাইন করলাম। এরপর প্রথম ভ্যালুটি প্রিনট করালাম printf("%d", age[0]); দিয়ে। printf("%d", age[3]); দিয়ে আমরা চতুর্থ ভ্যালুটি প্রিন্ট করেছি। এরপর আমরা তৃতীয় ভ্যালু যার ইনডেক্স 2 সেটিকে পাল্টিয়েছি এবং প্রিন্ট করেছি। তারপরে আমরা scanf ব্যবহার করে একটি ভ্যালু নিয়ে প্রথম ইনডেক্সে রেখেছি এবং সেটি প্রিন্ট করেছি।
অ্যারের ভ্যালুগুলোকে অ্যাকসেস করার জন্য for লুপ ব্যবহার করা একটি প্রচলিত প্র্যাকটিস। আমরা আরেকটি উদাহরণ দেখব যেখানে আমরা for লুপ ব্যবহার করে অ্যারে অ্যাকসেস করছি এবং কয়েকটি সংখ্যার গড় বের করছি।
#include<stdio.h>

int main(void)
{

int expenses[5];
int i;
int sum = 0;
float average = 0;

printf("Enter your expenses for last 5 days: ");

for(i=0; i<=4; i++) {
scanf("%d", &expenses[i]); //assigning all the values
}

for (i=0; i<=4; i++) {
sum = sum + expenses[i];
}

average = sum/5;

printf("Your average expenses for last five days is : %f", average);

return 0;
}
এই প্রোগ্রামটিতে আমরা আমাদের গত পাঁচদিনের গড় ব্যয় বের করছি। আমরা expenses নামের একটি অ্যারে এখানে ডিক্লেয়ার করেছি এবং এরপর একটি for লুপ ব্যবহার করে scanf() দিয়ে আমরা ভ্যালুগুলো অ্যারেতে নিয়েছি। আবার আরেকটি for লুপ দিয়ে আমরা sum বের করেছি এবং তারপরে average বের করে প্রিন্ট করেছি। এখানে একটি বিষয় লক্ষ্যনীয় যে আমরা for লুপের ইনডেক্স i কে অ্যারের ইনডেক্স হিসেবে ব্যবহার করেছি expenses[i] দিয়ে।

মাল্টি ডাইমেনশনাল অ্যারে

মাল্টি ডাইমেনশনাল অ্যারে নামটিই বলে দেয় যে এই অ্যারেগুলোতে একের অধিক ডাইমেনশন বা ইনডেক্সিং আছে। আমাদের সুবিধার জন্য আমরা টু-ডাইমেনশনাল অ্যারে নিয়ে কাজ করব এই অধ্যায়ে। অ্যারেতে এর চাইতে বেশি ডিরেকশনও থাকতে পারে, কিন্তু সেগুলো একটু অ্যাডভান্সড লেভেলের কাজ হয়ে যায়। টু-ডাইমেনশনাল অ্যারেকে আমরা এরকম টেবল বা ম্যাট্রিক্স আকারেও দেখাতে পারি। এবং স্বাভাবিকভাবেই এই অ্যারের ইনডেক্সিংও শুরু হয় 0,0 থেকে। নিচের টেবলটি একটি টু-ডাইমেনশনাল অ্যারের রিপ্রেজেন্টেশন হিসেবে ধরা যায়।
a [0,0] a[0,1] a[0,2]
a [1,0] a [1,1] a [1,2]
a [2,0] a [2,1] a [2,2]
a [3,0] a [3,1] a [3,2]
এবার আসুন আমরা দেখি এধরনের অ্যারে নিয়ে আমরা কিভাবে কাজ করব। এই অ্যারে ডিক্লেয়ার করতে হয় সাধারণ অ্যারের মতই। আসুন দেখে নিই কিভাবে মাল্টি ডাইমেনশনাল অ্যারে ডিক্লেয়ার ও ভ্যালু অ্যাসাইন করতে হয়।
int a[3][4] = {
 {0, 1, 2, 3} ,   // values for first row, index 0
 {4, 5, 6, 7} ,   // values for second row, index 1
 {8, 9, 10, 11}   // values for third row, index 2
};


int b[3][4] = {0,1,2,3,4,5,6,7,8,9,10,11};  // this works too
উপরের কোডগুলোতে আমরা দেখলাম কিভাবে মাল্টি ডাইমেনশনাল অ্যারে বানাতে হয়। এই অ্যারে অ্যাকসেস করার নিয়ম ওয়ান ডাইমেনশনাল অ্যারের মতই। আসুন দেখি for লুপ ব্যবহার করে কিভাবে আমরা এই ধরনের অ্যারে অ্যাকসেস করতে পারি।
#include <stdio.h>

int main (void)
{

int a[3][4] = {
 {0, 1, 2, 3} ,   // values for first row, index 0
 {4, 5, 6, 7} ,   // values for second row, index 1
 {8, 9, 10, 11}   // values for third row, index 2
};
int i, j;

// output each array element's value
for ( i = 0; i < 3; i++ )
{
    for ( j = 0; j < 4; j++ )
    {
        printf("a[%d][%d] = %d", i,j, a[i][j] );
    }

    printf("\n");
}
   return 0;
}
এই উদাহরণে আমরা দেখতে পাচ্ছি আমরা কিভাবে for লুপ ব্যবহার করে আমরা টু-ডাইমেনশনাল অ্যারে অ্যাকসেস করছি।

কোন মন্তব্য নেই

Blogger দ্বারা পরিচালিত.