সি প্রোগ্রামিং এইচটিএমএল সিএসএস জাভাস্ক্রিপ্ট পিএইচপি এসকিউএল
ফোরাম
×

 সি টিউটোরিয়াল

সি প্রোগ্রামিং কি? সি এর ইতিহাস সি এর বৈশিষ্ট্যসমূহ কেন সি শিখবেন? সি ইন্সটলেশন প্রথম সি প্রোগ্রাম সি প্রোগ্রামের ফ্লো প্রোগ্রামিং শেখার সঠিক পদ্ধতি সি কীওয়ার্ড সি আইডেন্টিফায়ার সি ভ্যারিয়েবল সি কনস্ট্যান্ট সি ডাটা টাইপ সি মোডিফায়ার সি ইনপুট/আউটপুট সি অপারেটর সি কমেন্ট সি অপারেটর অগ্রাধিকার

সি কন্ট্রোল স্টেটমেন্ট

সি ইফ সি ইফ...ইলস সি ফর লুপ সি হোহাইল লুপ সি ডু...হোহাইল লুপ সি ব্রেক সি কন্টিনিউ সি সুইচ স্টেটমেন্ট সি goto স্টেটমেন্ট

 সি ফাংশন

সি ফাংশন পরিচিতি সি ইউজার কর্তৃক ফাংশন সি ফাংশন টাইপ সি রিকার্সন সি ভ্যারিয়েবল স্কোপ

 সি অ্যারে

সি অ্যারে পরিচিতি সি মালটি-ডাইমেনশনাল অ্যারে সি অ্যারে ফাংশন

 সি স্ট্রিং

সি স্ট্রিং সি স্ট্রিং ফাংশন

 সি পয়েন্টার

সি পয়েন্টার পরিচিত সি পয়েন্টার অ্যারে সি পয়েন্টার ফাংশন সি মেমোরি ম্যানেজমেন্ট

 সি ফাইল এবং স্ট্রাকচার

স্ট্রাকচার পরিচিত স্ট্রাকচার ও পয়েন্টার সি স্ট্রাকচার ও ফাংশন সি ইউনিয়ন ফাইল হ্যান্ডেলিং

 সি অতিরিক্ত টিউটোরিয়াল

সি লাইব্রেরী সি প্রিপ্রোসেসর এবং ম্যাক্রো সি ইনুমিরেশন সি এরর নিয়ন্ত্রণ সি টাইপ কাস্টিং সি বিট ফিল্ড সি ভ্যারিয়েবল আর্গুমেন্ট সি কমান্ড লাইন আর্গুমেন্ট

 

সি প্রোগ্রামিং Array


এই অধ্যায়ে আপনি সি প্রোগ্রামিং এ array নিয়ে কাজ করা শিখবেন। সুতরাং এই অধ্যায় শেষে আপনি array ডিক্লেয়ার(declare), ইনিশিয়ালাইজ(initialize) এবং এক্সেস(access) করা শিখবেন।

Array হলো একটি বিশেষ ধরনের ভেরিয়েবল যার মধ্যে একসঙ্গে একই টাইপের নির্দিষ্ট সংখ্যক ভ্যালু জমা রাখা যায়।

উদাহরণস্বরূপঃ আপনি যদি ১০০০ জন ছাত্রের পরীক্ষার মার্ক সংগ্রহ করে রাখতে চান তাহলে সিঙ্গেল ভ্যারিয়েবলের পরিবর্তে নিচের ন্যায় array ভ্যারিয়েবল তৈরি করুন।

 float mark[1000];
সি প্রোগ্রামিং এ Array ডিক্লেয়ারেশনের পরে array এর টাইপ এবং দৈর্ঘ্য পরিবর্তন করা যায় না।

সি প্রোগ্রামিং এ দুই ধরণের array রয়েছেঃ

  1. One-dimensional array
  2. 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 আসতে পারে।