শুক্রবার, ৯ মে, ২০১৪

অ্যারে-১




কোন একটা প্রোগ্রাম লিখতে অত্যাবশ্যকীয় উপাদান গুলোর মধ্যে ভেরিয়েবল একটা। কারন প্রোগ্রামের আসল কাজই হল কিছু ডাটা নিয়ে প্রসেস করে অউটপুট দেখানো। ডাটা ইনপুট নিয়ে সেগুলো  ভেরিয়েবলে রাখতে হয়। প্রোগ্রামে আমাদের ১ টা ভেরিয়েবলও লাগতে পারে আবার ১০০ টা ভেরিয়েবলও লাগতে পারে। ১ টা ভেরিয়েবল লাগলে আমরা সেটাকে সাধারনভাবে ডিক্লেয়ার করে দেই। কিন্তু ১০০ টা ভেরিয়েবল লাগলে??? আমাদের পক্ষে কি সম্ভব ১০০ টা ভেরিয়েবল আলাদা আলাদা করে ডিক্লেয়ার করা? নিশ্চয়ই না। এক্ষেত্রে আমরা অ্যারে ব্যাবহার করে কাজ টা সহজ করতে পারি। সেক্ষেত্রে ১০০ টা ভেরিয়েবল একই ডাটা টাইপের হতে হবে। ধরো আমাদের int টাইপের ১০০ টা ভেরিয়েবল দরকার। আমরা নিচের মত করে ১০০ টা ভেরিয়েবল আলাদা আলাদা  ডিক্লেয়ার করবো না।
int var1,var2,var3…………..var100;

এক্ষেত্রে আমরা অ্যারে ব্যাবহার করবো। 
int var[100];
আমাদের int টাইপের ১০০ টা ভেরিয়েবল ডিক্লেয়ার করা হয়ে গেল। ভেরিয়েবল গুলো হল var[0],var[1]……….var[99]. একটা বিষয় আমাদের মনে রাখতে হবে যে উপরের declaration var[100] বলে কিছু নাই। আমরা এগুলোকে সাধারন ভেরিয়েবলের মত ব্যাবহার করতে পারি।
এখন আমি তোমাকে বললাম, তুমি তো অ্যারে শিখলে, এমন একটা প্রোগ্রাম লেখ যেটা ১০০ টা ডাটা ইনপুট নেবে এবং ষ্টোর করে রাখবে। তো তুমি নিচের মত করে একটা কোড লিখতেই পার।

int main()
{
   int var[100];
   scanf("%d%d..........%d",&var[0],&var[1],.........,&var[99]);
   return 0;
}

এখানে দেখ তোমাকে ১০০ টা %d লিখতে হচ্ছে আবার ১০০ টা &var[index] লিখতে হচ্ছে। লুপ ব্যাবহার করে কাজটাকে সহজ করা যায়। 

int main()
{
   int var[100],i;
   for(i=0; i<100; i++)
   scanf("%d",&var[i]);
   return 0;
}

আমি কি করেছি দেখ, একটা লুপ চালিয়েছি 0 থেকে 100 পর্যন্ত আর প্রত্যেকটা iteration এ একটা করে ইনপুট নিচ্ছি। কন্ট্রোল ভেরিয়েবল i এর মান তো 0 থেকে 99 পর্যন্ত।তাই আমরা ইনপুট নিয়েছি var[i] এ।
প্রোগ্রামে এখন যদি আমাদের ১০০ টা ভেরিয়েবলের মান initialize করার দরকার হয় 0 দিয়ে তাহলে কি করবে? সহজ। ঝটপট এমন একটা কোড তুমি লিখতেই পার-

int main()
{
   int var[100],i;
   for(i=0; i<100; i++)
      var[i]=0;
   return 0;
}

সাধারন ভেরিয়েবলের মত একটা একটা করেও করা যায়। কিন্তু এতসব কাহিনী আমরা করবো না। আমরা জানি যে কোন ভেরিয়েবলকে globally ডিক্লেয়ার করলে তার মান অটোমেটিক 0 হয়ে যায়। আমরা globally ডিক্লেয়ার ও করবো না। অ্যারে initialization এর সাধারন নিয়ম হল-
int var[100]={0};
১০০ টা ভেরিয়েবলের মান 0 হয়ে যাবে। আমরা যদি প্রথম ভেরিয়েবলের মান 1 এবং তার পরের গুলোর মান 0 করতে চাই সেক্ষেত্রে নিচের মত করে লিখতে হবে-

int var[100]={1};

প্রথম ভেরিয়েবলের মান 1 হয়ে যাবে এবং তার পরের গুলোর মান অটোমেটিক 0 হয়ে যাবে। আর যদি ১০০ টা ভেরিয়েবলের মান দিতে চাই তাহলে একটু কষ্ট করতেই হবে।
আমরা যদি অ্যারে কে অন্য ফাংশন এ পাঠাতে চাই ফাংশন কলিং এর মাধ্যমে তাহলে কলিং ফাংশন হবে নিচের মত-

function_name(array_name);

আর রিসিভিং ফাংশনের চেহারা হবে এরকম-

return type function_name(array_data_type array_name[])

এখন তোমাকে যেটা করতে হবে সেটা হল, একটা সি প্রোগ্রাম লিখবা যেটাতে ইনপুট হিসেবে দেয়া হবে ৫০ টা সংখ্যা। সেখান থেকে জোড় সংখ্যাগুলোকে আলাদা করে একটা অ্যারে তে রাখবা আর বিজোড় সংখ্যাগুলোকে আলাদা করে অন্য একটা অ্যারে তে রাখবা।
এতক্ষণ আমরা শিখলাম 1D অ্যারে।
আগামী কোন পর্বে 2D অ্যারে নিয়ে লিখব ইনশাল্লাহ।
আজ এ পর্যন্তই।
হ্যাপি কোডিং !!! :)




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