"i++"/"++i" অথবা "i--"/"--i" এসব কি? কেন, কোথায়, এবং কিভাবে এসব ব্যবহার করা হয়?

আমরা যারা প্রোগ্রামিং শিখছি তাদের বেশিরভাগ হয়ত সি অথবা সি++ অথবা ইউনিভার্সিটিতে জাভা দিয়ে শুরু করি। যাই হোক, সেসবে কিছু জিনিস আমরা প্রায়ই লক্ষ্য করে থাকি "i++"/"++i" অথবা "i--"/"--i" এসবের ব্যাপারটি।

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

আমি এখানে সি++ প্রোগ্রামিং ল্যাংগুয়েজ ব্যবহার করে দেখাবো কারণ বেশিরভাগ মানুষ হয়ত বুঝতে পারবেন এবং এটি যেহেতু সি এর মতই দেখতে অনেকাংশে তাই হয়ত সুবিধা হবে। কিন্তু মজার ব্যাপার হল যদি কনসেপ্ট বুঝতে পারেন তাহলে যে কোনো প্রোগ্রামিং ল্যাংগুয়েজ (যারা এসব ব্যাপার সাপোর্ট করে, অবশ্যই!) এই এটি ব্যবহার করতে পারবেন।

🎥 ভিডিও থেকে পুরো ব্যাখ্যা ভালোমত বুঝতে চাইলে দেখে আসতে পারেন!

বাংলা চ্যানেলে সাবস্ক্রাইব করতে পারেন যদি এধরণের ভিডিও নিয়মিত পেতে চান। এবং একইসাথে আমার ইন্টারন্যাশনাল চ্যানেলেও সাবস্ক্রাইব করতে পারেন!

++i (প্রি ইনক্রিমেন্ট) কি?

নাম শুনেই বুঝতে পারছেন "প্রিভিয়াস" বা "আগে" এর সাথে কিছু মিল আছে। আসলেই কিন্তু তাই! এখানে ইনক্রিমেন্ট বা ভ্যালু বৃদ্ধি পাবার কাজটি আগেই হয়ে যায় তাই এধরণের নাম।

নিচের কোড দেখুন!

#include <iostream>
using namespace std;

int main()
{
    int x = 100;
    // Pre increment
    int y = ++x;
    cout << "X: " << x << endl;
    cout << "Y: " << y << endl;
}

লক্ষ্য করুন, আমি একটি ইন্টিজার ভ্যারিয়েবল নিয়েছি "x" নামে যার প্রথম বা ইনিশিয়াল ভ্যালু হিসেবে নিয়েছি "100"।

আমি এরপরেই আরেকটি নতুন ইন্টিজার ভ্যারিয়েবল নিয়েছি "y" নামে যেখানে আমি int y = ++x লিখেছি কারন এখানে আমি প্রি ইনক্রিমেন্ট করেছি। এর ফলে সবার প্রথমে "x" এর ভ্যালু ১ ইনক্রিমেন্ট হবে ( ১ বৃদ্ধি পাবে )। এর পরেই তো "x" এর নতুন/আপডেটেড ভ্যালু হয়ে যাবে "101", তাই নয় কি?

এরপরে "x" এর এই নতুন বা আপডেটেড ভ্যালু "y" এর মধ্যে এসাইন বা সেভড হবে। তাহলে বুঝতেই পারছেন, প্রি ইনক্রিমেন্ট এ আগে ইনক্রিমেন্ট হবে (সে কারনেই তো আগে "x" এর ভ্যালু ১ ইনক্রিমেন্ট বা বৃদ্ধি হয়ে "100" থেকে "101" হল!)। তারপরে সে ইনক্রিমেন্টেড বা আপডেটেড "x" এর ভ্যালু টিই "y" এ সেভড হচ্ছে।

এখন যদি কোড টি রান করা হয় তাহলে দেখা যাবে যেমনটি বলছিলাম তেমনটি আউটপুট এ পাওয়া যাচ্ছে।

X: 101
Y: 101

i++ (পোস্ট ইনক্রিমেন্ট) কি?

এখানেও নাম শুনেই বুঝতে পারছেন হয়ত যে এখানে পোস্ট, অর্থাৎ পরে হবে। আসলেই তাই!

নিচের কোড দেখুন!

#include <iostream>
using namespace std;

int main()
{
    int x = 100;
    // Post increment
    int y = x++;
    cout << "X: " << x << endl;
    cout << "Y: " << y << endl;
}

এখানে আমি int y = x++; নিয়েছি, তাই "x" এর ভ্যালু ইনক্রিমেন্টের কাজটি হবে পরে। আগে "x" এর ইনিশিয়াল বা আগের ভ্যালু "100" সেভড বা এসাইন করা হবে "y" এ। তাই "y" এর ভ্যালু হবে "100"। এর পরে "x" এর ভ্যালু ১ বৃদ্ধি পাবে। সুতরাং, "x" এর ভ্যালু হবে "101" কিন্তু "y" এর ভ্যালু হবে "100"।

কোডটি রান করতে দিলেও আমি যেমনটি বলছিলাম তেমনটি আউটপুট দেখতে পাবেন!

X: 101
Y: 100

--i (প্রি ডিক্রিমেন্ট) কি?

প্রি ইনক্রিমেন্ট এর ব্যাপারটি যদি বুঝে থাকেন তাহলে এটিও একইরকম, শুধু পার্থক্য হল ইনক্রিমেন্ট এ ১ করে ইনক্রিমেন্ট করে আরে এখানে ১ করে ডিক্রিমেন্ট করে।

নিচের কোড দেখুন!

#include <iostream>
using namespace std;

int main()
{
    int x = 100;
    // Pre decrement
    int y = --x;
    cout << "X: " << x << endl;
    cout << "Y: " << y << endl;
}

এখানে "x" এর ইনিশিয়াল বা আগের ভ্যালু "100"। যেহেতু আমি প্রি ডিক্রিমেন্ট int y = --x ব্যবহার করছি, তাই আগে ডিক্রিমেন্ট এর কাজ হবে। এজন্য প্রথমেই "x" এর ভ্যালু ১ ডিক্রিমেন্ট হবে। এজন্য "x" এর ভ্যালু হয়ে যাবে "99"। এরপরে "x" এর আপডেটেড ভ্যালু "99" টিই "y" এ সেভড বা এসাইন হয়ে যাবে। তাই "x" এবং "y" দুইটির ভ্যালু হবে "99"।

আউটপুট দেখুন!

X: 99
Y: 99

i-- (পোস্ট ডিক্রিমেন্ট) কি?

পোস্ট ইনক্রিমেন্ট এর ব্যাপারটি বুঝে থাকলে এটিও বুঝতে পারবেন। শুধু পার্থক্য হল ইনক্রিমেন্ট এ ১ করে ইনক্রিমেন্ট করে আরে এখানে ১ করে ডিক্রিমেন্ট করে।

নিচের কোড দেখুন!

#include <iostream>
using namespace std;

int main()
{
    int x = 100;
    // Post decrement
    int y = x--;
    cout << "X: " << x << endl;
    cout << "Y: " << y << endl;
}

এখানে "x" এর ইনিশিয়াল বা আগের ভ্যালু "100"। যেহেতু আমি পোস্ট ডিক্রিমেন্ট int y = x-- ব্যবহার করছি, তাই পরে ডিক্রিমেন্ট এর কাজ হবে। এজন্য আগে "x" এর ইনিশিয়াল ভ্যালু "100" কপি হয়ে "y" এ সেভড বা এসাইন হবে, তাই "y" এর ভ্যালু হবে "100"।

এরপরে ডিক্রিমেন্ট এর কাজ শুরু হবে তাই তখন "x" এর ভ্যালু ১ কমে যাবার কারনে "x" এর নতুন ভ্যালু হবে "99"।

আউটপুট দেখুন!

X: 99
Y: 100

অবশেষে!

আশা করি এবারে এসব ব্যাপারে আপনাদের ধারণা কিছুটা হলেও শক্তিশালী হয়েছে!

আমাকে ফলো করতে চাইলেঃ

গিটহাবঃ FahimFBA
টুইটারঃ Fahim_FBA
লিংকডইনঃ fahimfba
ওয়েবসাইটঃ fahimbinamin.com

Happy Coding! 🥳