ইনক্রিমেন্ট এবং ডিক্রিমেন্ট অপারেটর

আমরা পূর্বের পর্বে জেনেছি সি প্রোগ্রামিং এ ব্যবহৃত Arithmetic Operator (গাণিতিক অপারেটর) নিয়ে। এই পর্বে আমরা Increment and Decrement Operator (ইনক্রিমেন্ট এবং ডিক্রিমেন্ট অপারেটর) নিয়ে বিস্তারিত আলোচনা করব।

Increment and Decrement Operator (ইনক্রিমেন্ট এবং ডিক্রিমেন্ট অপারেটর)

সি প্রোগ্রামিং এ অত্যন্ত গুরুত্বপূর্ন অপারেটর হচ্ছে ইনক্রিমেন্ট (++) এবং ডিক্রিমেন্ট (–) অপারেটর। এই দুটি অপারেটর গাণিতিক অপারেটর যোগ ও বিয়োগ এর সমন্বয়ে গঠিত। এই ইনক্রিমেন্ট এবং ডিক্রিমেন্ট অপারেটর গুলো ভেরিয়েবলের মান বৃদ্ধি বা হ্রাস করতে ব্যবহৃত হয়। এই অপারেটর গুলোর জন্য দুই বা ততোধিক অপারেন্ডের প্রয়োজন হয় না কারন এরা সিঙ্গেল অপারেন্ডকে অপারেট করতে পারে। এই জন্য এদেরকে Unary Operator (ইউনারী অপারেটর) বলে।

সি তে আমরা যখন কোড করি তখন ইনক্রিমেন্ট অপারেটর আমাদের ভেরিয়েবলের মান ১ করে বৃদ্ধি করে আবার আমরা যখন ডিক্রিমেন্ট অপারেটর ব্যবহার করি তখন ভেরিয়েবলের মান ১ করে হ্রাস করে। এই অপারেটর গুলো আমাদের কোডে সর্বোচ্চ অগ্রাধিকার বহন করে। এই অপারেটর গুলো ডিক্লেয়ার করার সিনট্যাক্স হচ্ছে-

সিনট্যাক্স

++ // increment operator (ইনক্রিমেন্ট অপারেটর)
-- // decrement operator (ডিক্রিমেন্ট অপারেটর)

ইনক্রিমেন্ট অপারেটর (increment operator) দুই প্রকার-

  • pre-increment operator (প্রি-ইনক্রিমেন্ট অপারেটর)

  • post-increment operator (পোস্ট-ইনক্রিমেন্ট অপারেটর)

প্রি-ইনক্রিমেন্ট অপারেটর (pre-increment operator)

প্রি-ইনক্রিমেন্ট অপারেটর এক্সপ্রেশন ব্যবহার করার আগে ভেরিয়েবলের মান বাড়ানোর জন্য ব্যবহৃত হয়। অর্থাৎ প্রথমে ভ্যালু এক বৃদ্ধি পায় তারপরে expression এক্সিকিউট হয়। এইভাবে সে পরের expression এর কাজ চালায়।

সিনট্যাক্স

++ variable;

ব্যবহার

x = ++y;

এখানে ভেরিয়েবল y এর মান যদি 4 হয় তাহলে x এর মান হবে 5 কারন যেহেতু এটি প্রি-ইনক্রিমেন্ট অপারেটরের অধীনে সেহেতু এটি প্রথমেই ১ বৃদ্ধি করে নিবে তারপর ভেরিয়েবলের আসল মানের সাথে যোগ করবে। সি তে যেভাবে প্রি-ইনক্রিমেন্ট অপারেটর ব্যবহার করতে হয় তা জানতে নিচের কোডটি লক্ষ্য করুন-

#include<stdio.h>
int main()
{
int x, y = 4;
x = ++y;
printf("Value of x: %d\n", x);
return 0;
}

এখানে আমরা প্রথমে y এর মান 4 ডিক্লেয়ার করেছি এরপর y এর মান x নামক ভেরিয়েবলে রেখেছি। আর যেহেতু এটি প্রি-ইনক্রিমেন্ট অপারেটর, সেহেতু y এর আসল মানের পূর্বে এটি ১ বৃদ্ধি করে ফেলবে তারপর এক্সিকিউট হবে। যার কারনে এটির মান 5 দেখাবে।

পোস্ট-ইনক্রিমেন্ট অপারেটর (post-increment operator)

পোস্ট-ইনক্রিমেন্ট অপারেটর হচ্ছে প্রি-ইনক্রিমেন্ট অপারেটরের সম্পূর্ন বিপরীত। পোস্ট-ইনক্রিমেন্ট এর ক্ষেত্রে ভ্যারিয়েবলের ভ্যালু প্রথমে এক্সপ্রেশনে ব্যবহৃত হয় অথবা অন্য ভ্যারিয়েবলে ইনিশিয়ালাইজ হয়। তারপরে ভ্যালু এক করে বৃদ্ধি পায়।

সিনট্যাক্স

variable ++;

ব্যবহার

x = y++;

এখানে ভেরিয়েবল y এর মান যদি 5 হয় তাহলে তাহলে x এর মান হবে 5। সি তে যেভাবে পোস্ট-ইনক্রিমেন্ট অপারেটর ব্যবহার করতে হয় তা জানতে নিচের কোডটি লক্ষ্য করুন-

#include<stdio.h>
int main()
{
int x, y = 4;
x = y++;
printf("Value of x: %d\n", x);
return 0;
}

এই প্রোগ্রামটি রান করলে আউটপুটে আসবে 4 কারন y এর ইনিশিয়াল ভেল্যু হচ্ছে 4.

প্রি-ইনক্রিমেন্ট ও পোস্ট-ইনক্রিমেন্ট অপারেটর একত্রে বুঝার জন্য নিচের কোডটি লক্ষ্য করুন-

#include<stdio.h>
int main()
{
int x = 10, y = 11;
float a = 10.5, b = 11.5;
printf("++X = %d \n", ++x);
printf("Y++ = %d \n", y++);
printf("++A = %f \n", ++a);
printf("B++ = %f \n", b++);
return 0;
}

আউটপুট

++X = 11
Y++ = 11
++A = 11.500000
B++ = 11.500000

এখানে প্রি-ইনক্রিমেন্ট অপারেটর ++X, ++A এর মানের সাথে ১ বৃদ্ধি পেয়েছে কারন আমরা জানি প্রি-ইনক্রিমেন্ট এ আগে থেকে ভেল্যু ১ যোগ করে নেওয়া হয় আর পোস্ট-ইনক্রিমেন্ট অপারেটর Y++, B++ এর ইনিশিয়াল ভেল্যু যা ছিল তাই আছে।

ডিক্রিমেন্ট অপারেটর (decrement operator) আবার দুই প্রকার-

  • pre-decrement operator (প্রি-ডিক্রিমেন্ট অপারেটর)

  • post-decrement operator (পোস্ট-ডিক্রিমেন্ট অপারেটর)

প্রি-ডিক্রিমেন্ট অপারেটর (pre-decrement operator)

প্রি-ডিক্রিমেন্ট অপারেটর এক্সপ্রেশন ব্যবহার করার আগে ভেরিয়েবলের মান কমানোর জন্য ব্যবহৃত হয়। অর্থাৎ প্রথমে ভ্যালু এক হ্রাস পায় তারপরে expression এক্সিকিউট হয়।

সিনট্যাক্স

-- variable;

ব্যবহার

x = --y;

এখানে ভেরিয়েবল y এর মান যদি 4 হয় তাহলে x এর মান হবে 3 কারন যেহেতু এটি প্রি-ডিক্রিমেন্ট অপারেটরের অধীনে সেহেতু এটি প্রথমেই ১ হ্রাস করে নিবে। সি তে যেভাবে প্রি-ডিক্রিমেন্ট অপারেটর ব্যবহার করতে হয় তা জানতে নিচের কোডটি লক্ষ্য করুন-

#include<stdio.h>
int main()
{
int x, y = 4;
x = --y;
printf("Value of x: %d\n", x);
return 0;
}

এখানে আমরা প্রথমে y এর মান 4 ডিক্লেয়ার করেছি এরপর y এর মান x নামক ভেরিয়েবলে রেখেছি। আর যেহেতু এটি প্রি-ডিক্রিমেন্ট অপারেটর, সেহেতু এটি ১ হ্রাস করে ফেলবে তারপর এক্সিকিউট হবে। যার কারনে এটির মান 3 দেখাবে।

পোস্ট-ডিক্রিমেন্ট অপারেটর (post-decrement operator)

পোস্ট-ডিক্রিমেন্ট এর ক্ষেত্রে ভ্যারিয়েবলের ভ্যালু প্রথমে এক্সপ্রেশনে ব্যবহৃত হয় অথবা অন্য ভ্যারিয়েবলে ইনিশিয়ালাইজ হয়। তারপরে ভ্যালু এক করে হ্রাস পায়।

সিনট্যাক্স

variable --;

ব্যবহার

x = y--;

এখানে ভেরিয়েবল y এর মান যদি 5 হয় তাহলে তাহলে x এর মান হবে 5। সি তে যেভাবে পোস্ট-ডিক্রিমেন্ট অপারেটর ব্যবহার করতে হয় তা জানতে নিচের কোডটি লক্ষ্য করুন-

#include<stdio.h>
int main()
{
int x, y = 5;
x = y--;
printf("Value of x: %d\n", x);
return 0;
}

এই প্রোগ্রামটি রান করলে আউটপুটে আসবে 5 কারন y এর ইনিশিয়াল ভেল্যু হচ্ছে 5.

প্রি-ডিক্রিমেন্ট ও পোস্ট-ডিক্রিমেন্ট অপারেটর একত্রে বুঝার জন্য নিচের কোডটি লক্ষ্য করুন-

#include<stdio.h>
int main()
{
int x = 10, y = 11;
float a = 10.5, b = 11.5;
printf("--X = %d \n", --x);
printf("Y-- = %d \n", y--);
printf("--A = %f \n", --a);
printf("B-- = %f \n", b--);
return 0;
}

আউটপুট

--X = 9
Y-- = 11
--A = 9.500000
B-- = 11.500000

Increment and Decrement Operator (ইনক্রিমেন্ট এবং ডিক্রিমেন্ট অপারেটর) এ কখনও কন্সট্যান্স ভেল্যু ব্যবহার করতে পারবেন না। অর্থাৎ আমরা এই ভাবে এই অপারেটর গুলো ডিক্লেয়ার করতে পারবো না । যেমন-

x = ++10; // error increment
x = 10++; // error increment
x = --10; // error decrement
x = 10--; // error decrement

Tags: Increment And Decrements Operator, ইনক্রিমেন্ট এবং ডিক্রিমেন্ট অপারেটর