সি ভেরিয়েবল

আমরা পূর্বের পর্বে জেনেছি সি প্রোগ্রামিং এর ইনপুট/আউটপুট অর্থাৎ scanf & printf, getchar & putchar সহ আরো অনেক কিছু। এই পর্বে আমরা ভেরিয়েবল (Variable) নিয়ে বিস্তারিত আলোচনা করব।

ভেরিয়েবল শব্দের সহজ অর্থ হচ্ছে চলক। আরেকটু সহজ ভাবে বললে ভেরিয়েবল হচ্ছে এক ধরনের স্টোরেজ কন্টেইনার। যেখানে বিভিন্ন ধরনের ডেটা স্টোর করে রাখা হয়। অর্থাৎ আমাদের কম্পিউটারের মেমরিতে যে ধরনের ডেটা সংরক্ষণ হয়, প্রত্যেকটি ডেটার জন্য আলাদা আলাদা মেমরি লোকেশন দিতে হয়। আর ভেরিয়েবল হচ্ছে কম্পিউটারের মেমরি লোকেশনের একটি নাম মাত্র।

ভেরিয়েবলের মান পরিবর্তনশীল অর্থাৎ ক্ষেত্রভেদে ভেরিয়েবলের মান পরিবর্তিত হয়। আরেকটু সহজভাবে বলি, আমরা জানি বাস গাড়ী যাত্রী বহনের কাজে ব্যবহৃত হয়। ধরুন একটি বাসে ৪০ জন যাত্রী ধারন করতে পারে, এর মাঝে কিছু যাত্রী নেমে যাচ্ছে আবার কিছু যাত্রী উঠতেছে। এই ক্ষেত্রে বাস কিন্তু ঠিকই আছে শুধু বাসের যাত্রী পরিবর্তিত হচ্ছে। বাসের এই পরিবর্তিত যাত্রীকে যদি প্রোগ্রামের ভাষায় হিসেব করি তাহলে বাস হচ্ছে ভেরিয়েবল আর যাত্রী হচ্ছে বাস নামক ভেরিয়েবলের ভেল্যু বা মান, যা পরিবর্তনশীল।

ভেরিয়েবলের সিনট্যাক্স হচ্ছে-

data_type variable_name;

data_type হচ্ছে ভেরিয়েবলটি কোন ধরনের ডেটা স্টোর করতে চাচ্ছে তার ধরণ আর variable_name হচ্ছে ভেরিয়েবলটির একটি ভেলিড যেকোনো নাম। variable কিভাবে declare করতে হয় তা জানতে নিচের কোডটি লক্ষ্য করুনঃ

int bus = 40;

এখানে int হচ্ছে ডাটাটাইপ, bus হচ্ছে ভেরিয়েবল বা আইডেন্টিফায়ার আর 40 হচ্ছে bus নামক ভেরিয়েবলের ভেল্যু বা মান। ডাটাটাইপ নিয়ে একটু পর বিস্তারিত বলছি, আবাদত স্কিপ করেন।

এখন আমরা যদি বিভিন্ন ধরনের ভেরিয়েবল একই প্রোগ্রামে ডিক্লেয়ার করতে চাই, তখন এইভাবে ডিক্লেয়ার করা যাবে-

int id, roll, number;
float total;
char grade, letter;

এখানে প্রথমেই আমরা int অর্থাৎ ডিসিমাল ডাটাটাইপের অধীনে ভেরিয়েবল id, roll, number নিয়েছি। আমরা চাইলে একই লাইনে কমা দিয়ে ভেরিয়েবল ডিক্লেয়ার করতে পারি, তবে ভেরিয়েবলটি সেইম ডাটাটাইপ হতে হবে। এরপর float ডাটাটাইপ total নামে ভেরিয়েবল নিয়েছি। এরপর char মানে ক্যারেক্টার ডাটাটাইপ grade, letter নিয়েছি। ভেরিয়েবল ডিক্লেয়ারের সিনট্যাক্সটি সবসময় শেষ হয় সেমিকোলন দিয়ে।

ভেরিয়েবল বুঝার জন্য নিচের কোডটি ভাল করে লক্ষ্য করুন-

#include <stdio.h>
int main()
{
int id = 10; //Integer variable
float salary = 100092.50; //float variable
char ch = 'M'; //char variable
printf("ID is: %d\n", id);
printf("Salary is: %f\n", salary);
printf("Character is: %c\n", ch);
return 0;
}

আউটপুট:

ID is: 10
Salary is: 100092.500000
Character is: M

সি তে বিভিন্ন টাইপের ভেরিয়েবল রয়েছে-

  • লোকাল ভেরিয়েবল (local variable)

  • গ্লোবাল ভেরিয়েবল (global variable)

  • স্ট্যাটিক ভেরিয়েবল (static variable)

  • কন্সট্যান্ট ভেরিয়েবল (constant variable)

লোকাল ভেরিয়েবল (local variable)

যে ভেরিয়েবল কোন ফাংশন কিংবা ব্লকের মাঝে নির্ধারণ করে দেওয়া হয়, তাকে লোকাল ভেরিয়েবল বলে। অর্থাৎ একটি প্রোগ্রামের যেকোনো ফাংশনে তৈরিকৃত ভেরিয়েবলই হচ্ছে লোকাল ভেরিয়েবল। এটি ব্লকের শুরুতে লিখতে হয়। যেমন-

#include <stdio.h>
int main()
{
//local variable
int num = 100;
char ch = 'S';
printf("ID is: %d\n", num);
printf("Character is: %c\n", ch);
return 0;
}

গ্লোবাল ভেরিয়েবল (global variable)

যে ভেরিয়েবলকে কোনো নির্দিষ্ট ফাংশন অথবা ব্লকের মাঝে সীমাবদ্ধ না রেখে ডিক্লেয়ার করার উপায়কে গ্লোবাল ভেরিয়েবল বলে অর্থাৎ আমাদের প্রোগ্রামের স্বার্থে একাধিক ফাংশন যাতে একই ভেরিয়েবলকে বারবার ব্যবহার করতে পারে, সেই জন্যই গ্লোবাল ভেরিয়েবল ব্যবহার করা হয়। যেমন-

#include <stdio.h>
//global variable
int num = 100;
char ch = 'S';
int main()
{
printf("ID is: %d\n", num);
printf("Character is: %c\n", ch);
return 0;
}

স্ট্যাটিক ভেরিয়েবল (static variable)

যেসব ভেরিয়েবলের শুরুতে static কিওয়ার্ড লেখা থাকে, সেগুলোকে স্ট্যাটিক ভেরিয়েবল বলে। তবে স্ট্যাটিক ভেরিয়েবল লোকাল অথবা গ্লোবাল উভয়ই হতে পারে। স্ট্যাটিক ভেরিয়েবলের সিনট্যাক্স-

static datatype variable_name = value;

একটি উদাহরণ লক্ষ্য করুন-

#include <stdio.h>
//static global variable
static int num = 100;
int main()
{
//static local variable
static char ch = 'S';
printf("ID is: %d\n", num);
printf("Character is: %c\n", ch);
return 0;
}

কন্সট্যান্ট ভেরিয়েবল (constant variable)

কন্সট্যান্ট ভেরিয়েবল হচ্ছে সেই সকল ভেরিয়েবল যাদের শুরুতে #define অথবা const এই কিওয়ার্ডটি থাকবে এবং যাদের ভেল্যু বা মান কখনও পরিবর্তন করা যায় না। যেমন আপনি চাইলেই পাই এর মান ৩.১৪১৬ এটাকে পরিবর্তন করতে পারবেন না। const কিওয়ার্ড ব্যবহার করলে অবশ্যই সেই ভেরিয়েবলের সাথে তার মান দিয়ে দিতে হবে। অর্থাৎ আপনি কখনই নিচের মত ভেল্যু এসাইন করতে পারবেন না-

const int height;
const int height;
height = 100;
const int height, weight, area;

আপনাকে অবশ্যই সাথে ভেরিয়েবলের মান দিয়ে দিতে হবে-

const int height = 100;
const int weight = 50;

একটি উদাহরণ লক্ষ্য করুন-

#include <stdio.h>
#define PI 3.1416 //define constant variable
int main()
{
const int height = 100; //constant variable
printf("PI Value: %f\n", PI);
printf("Height Value: %d\n", height);
return 0;
}

ভেরিয়েবলের Initial Default ভেল্যু বা মান-

DataType

Default Value

int

0

char

'\u0000'

float

0.0f

double

0.0d

pointer

NULL

ভেরিয়েবল ডিক্লেয়ার এর সুনির্দিষ্ট কিছু নিয়ম রয়েছে-

  • প্রোগ্রামিং সি একটি কেইস সেনসিটিভ ভাষা। এর অর্থ হলো meem, Meem ও MEEM এই তিনটি শব্দ স্বাভাবিকভাবে একই বুঝালেও, প্রোগ্রামিং সি এর ভেরিয়েবল হিসেবে এই তিনটি শব্দ তিন রকমের অর্থ বুঝায় অর্থাৎ এই তিনটি শব্দ কখনই এক না।

  • ভেরিয়েবলের নামে যেকোনো alphabet (A-Z, a-z), digit (0-9) এবং underscores (_) এর combination ব্যবহার করা যাবে।

  • ভেরিয়েবলের নাম অবশ্যই যেকোনো alphabet অথবা underscore দিয়ে শুরু করা যাবে, ডিজিট দিয়ে শুরু করা যাবে না।

  • ভেরিয়েবলের নাম সি প্রোগ্রামিং এর কোনো রিজার্ভ কিওয়ার্ড দিয়ে রাখা যাবে না।

  • ভেরিয়েবলের নামের মধ্যে অবশ্যই comma(,) অথবা space থাকবে না।

  • সি তে ভেরিয়েবলের নামের মধ্যে Underscore ছাড়া অন্য কোনো স্পেশাল চিহ্ন ব্যবহার করা যাবে না।

  • ভেরিয়েবলের নাম গুলোতে ছোট হাতের অক্ষর ব্যবহার ও এর অর্থবোধক নাম দেওয়া সবচেয়ে ভাল।

  • কিছু কিছু compiler variable এর নাম 247 অক্ষর পর্যন্ত লেখতে দেয়। তবে ASCII C নিয়ম অনুযায়ী সকল compiler ই 31 অক্ষর পর্যন্ত support করে।

Tags: কন্সট্যান্ট ভেরিয়েবল Constant Variable, গ্লোবাল ভেরিয়েবল Global Variable, লোকাল ভেরিয়েবল Local Variable, সি প্রোগ্রামিং ভেরিয়েবল, স্ট্যাটিক ভেরিয়েবল Static Variable