আসুন শিখি পরিপূর্ণ জাভা [পর্ব-৭] :: দেখে নিন জাভার অপারেটরগুলি আর আসুন করি প্রোগ্রামিং

আস সালামু আলাইকুম, আশা করি সবাই ভাল আছেন। আবারো চলে এলাম আপনাদের মূল্যবান সময় থেকে কিছুটা সময় ছিনিয়ে নিতে। কি করবো বলেন? ২৪ঘন্টাকে ২৪মিনিট মনে হয়। এখন যদি আপনাদের কাছ থেকে কিছুটা সময় ছিনিয়ে নিতে পারি তাহলে সেটাই তো আমার লাভ,তাই না??  জানি কেউ বুঝেন নি আসলে আমি যেটা বুঝাতে চেয়েছি। মানে এই সংক্ষিপ্ত সময়ে আপনাদের জন্য কিছুটা সময় দিয়ে এমন কিছু রেখে যেতে চাচ্ছি, যেন আমাকে কিছু মানুষ আজীবন মনে রাখে। আর তাই জাভা নিয়ে লিখতে শুরু করেছি। কারণ এই ল্যাংগুয়েজ অনেকেই শিখতে চায়।কিন্তু ভয় পায়। আসলে আপনি যতটা কঠিন ভাবছেন ঠিক ততটা কঠিন জিনিস না এটা। আর মনে রাখবেন যে, জিনিস যত কঠিন তার মূল্যটাও তত বেশিই হয়। যেমন, সোনা নষ্ট হয় না। তাই অন্যান্য ধাতু থেকে এর দামও অনেক বেশি। ঠিক তেমনি জাভাও শিখতে কিছুটা কঠিন তাই সবাই শিখবে না,আর আপনি শিখে ফেললেই আপনার জ্ঞানের মূল্যও অনেক বেড়ে যাবে। এই লাইটের যুগেও কিছু মানুষ আপনাকে হারিকেন দিয়ে খুঁজবে। জাভা শিখলে কি লাভ সেটা হয়ত এখন সেইভাবে বুঝবেন না যদিও প্রথম দিকে এর প্রয়োজনীয়তা নিয়ে কিছু কথা বলেছি। সময় কিন্তু সামনে। আপনাকে নিয়েই স্বপ্ন দেখতেছে দেশ। তাই চলুন জাভা শিখি আর দেশের সফটওয়্যার বিভাগকে এগিয়ে নেয়ার চেষ্টা করি।

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

চলুন জানি অপারেটরগুলোর শ্রেনীবিভাগ 

জাভাতে বিভিন্ন ধরণের অপারেটর রয়েছে। এগুলো হলঃ

  • ইউনারি অপারেটর
  • অ্যারিথম্যাটিক অপারেটর
  • শিফট অপারেটর
  • রিলেশনাল অপারেটর
  • বিট উয়াইশ অপারেটর
  • লজিক্যাল অপারেটর
  • টার্নারি অপারেটর
  • এসাইনমেন্ট অপারেটর

জাভা অপারেটরগুলোর অগ্রগন্যতা বা প্রাধান্য

জাভা অপারেটর গুলোর অগ্রগণ্যতা বলতে একটি স্ট্যাটমেন্টে একাধিক অপারেটর থাকলে কোন অপারেটরটি আগে আর কোনটি পরে অপারেশনে যাবে তার ধারাবাহিকতাকেই অগ্রগণ্যতা বলা হয়। নিচে একটি অগ্রগন্যতার টেবিল দেয়া হচ্ছে। যেই অপারেটর আগে তার অগ্রগণ্যতা আগে। আর যেটি পরে সেটার অগ্রগণ্যতাও পরে। তো চলুন দেখে নিই...

Operator TypeCategoryPrecedence
Unarypostfixexpr++ expr--
prefix++expr --expr +expr -expr ~ !
Arithmeticmultiplicative* / %
additive+ -
Shiftshift<< >> >>>
Relationalcomparison< > <= >= instanceof
equality== !=
Bitwisebitwise AND&
bitwise exclusive OR^
bitwise inclusive OR|
Logicallogical AND&&
logical OR||
Ternaryternary? :
Assignmentassignment= += -= *= /= %= &= ^= |= <<= >>= >>>=

চলুন ইউনারি অপারেটর এর একটি উদাহারণ দেখে নিই তাহলেই বুঝতে পারবেন খেলা... যারা সি/সি++ পড়েছেন তারা সেগুলো আগে থেকেই জানেন। এরপরও যেন ভুলে না যান তাই আর কি আবার শেয়ার করলাম।যারা সি/সি++ পড়েন নি। তারা দয়া করে বেসিক ধারণা নিয়ে জাভাতে আসুন।

যাইহোক চলুন উদাহারণগুলো দেখিঃ
class OperatorExample{
public static void main(String args[]){
int x=10;
System.out.println(x++);//10 (11)
System.out.println(++x);//12
System.out.println(x--);//12 (11)
System.out.println(--x);//10
}
}

আউটপুটঃ

10
12
12
10

কিছু না শুধু ইউনারি অপারেটর ব্যবহার করেছি আর প্রিন্ট করেছি। x এর মান ১০ নিয়েছি। তাই প্রথমে ১০ প্রিন্ট করবে। যেহেতু প্রিন্ট করার কাজ শেষ এবং টিউন ইঙ্ক্রিমেন্ট ইউনারি অপারেটর আছে  তাই অটোমেটিক এক বেড়ে যাবে এবং x এর মান হবে ১১। কিন্তু আমরা x এর মান প্রিন্ট সরাসরি প্রিন্ট করি নি। তাই আবার যেহেতু প্রি ইঙ্ক্রিমেন্ট ব্যবহার করেছি মানে ++x তাই আগে x এর মান ১১থেকে ১২ হবে এরপর ১২ প্রিন্ট করবে। মানে কি বুঝলেন? টিউন ইঙ্ক্রিমেন্ট(x++) হলে x এর মান কোনো কাজ একবার শেষ হওয়ার পর বাড়বে। আর প্রি ইনক্রিমেন্ট হলে আগে x এর মান ১ বাড়বে এরপর প্রিন্ট করবে।

ঠিক একইভাবে ডিক্রিমেন্ট ও হবে। প্রথমে (x--) প্রিন্ট করা হয়ছে। যেহেতু টিউন ইনক্রিমেন্ট তাই আগে প্রিন্ট হবে ১২।  এরপর x এর মান ১ কমবে। কমার পর যেহেতু আবার প্রি ইনক্রিমেন্ট আছে (--x) তাই x এর মান আবারও ১ কমবে এবং ১০ প্রিন্ট করবে।

যারা এখনও বুঝেন নি, তারা দয়া করে প্রোগ্রাম টি আপনার কম্পিউটারে রান করান। এরপরও না বুঝলে প্রয়োজনে উপরের লাইনগুলো ১০বার পড়ুন। কিন্তু অনুরোধ না বুঝে স্কিপ করে যাবেন না। যদি বলেন পরে বুঝে নিবো। তাহলে আর কখনো বুঝা হবে না। কারণ আমিও একজন ছাত্র। পরে পরে করতে করতে কোন দিক দিয়ে যে, সেমিস্টার শেষ হয়ে যায় সেটাই টের পাই না।

নিচের উদাহারণ দেখলে ইউনারি অপারেটর আরও ক্লিয়ার হয়ে যাবে।

  1. class OperatorExample{
  2. public static void main(String args[]){
  3. int a=10;
  4. int b=10;
  5. System.out.println(a++ + ++a);//10+12=22
  6. System.out.println(b++ + b++);//10+11=21
  7. }
  8. }

এইবারের খেলা টা একটু মজার খেলা। দেখুন উপরে কি ঘটনা ঘটলো... ভয় পাবার কিছু নেই। আমি আছি তো আপনার সাথে। আপনিও খেলুন। আমি বুঝিয়ে দেয়ার চেষ্টা করছি...

লাইন নাম্বার ৫ এ যাই প্রথমেই। আগেই বলে দিচ্ছি যারা নতুন তাদের জন্য। উপরের লাইন নাম্বারগুলো কিন্তু ভুল করেও লিখবেন না। ঐটা netbin বা eclips বা notepad++ এর কোড লেখার উইন্ডোতে কিন্তু দেয়া থাকে।

প্রথমে আমরা a এর মান ১০ নিয়েছি। এরপর ৫নাম্বার লাইনে দেখুন টিউন ইনক্রিমেন্ট আছে। মানে কাজ শেষ করার পর ১ বাড়বে। কিন্তু প্রিন্ট লাইনে দেখা গেল ইনক্রিমেন্টের পর এরিথম্যাটিক এডিটিভ অপারেটর +(প্লাস) দেয়া আছে। তার মানে পূর্বে যে ১০ ছিল তার প্রিন্ট করার দরকার নেই। কিন্তু যেহেতু এডিটিভ + অপারেটর আছে তাই প্লাস চিহ্নের ডান পাশে যাওয়ার পর ১ইনক্রিমেন্ট হয়ে ১১হয়ে গেছে। তার মানে বাম পাশে রয়েছে ১০। আর ডানপাশে গিয়ে  হয়ে গেছে ১১।

ডান পাশে আবার যেহেতু প্রি ইনক্রিমেন্ট হয়েছে মানে a এর মান ১১ছিল এখন যেহেতু প্রি ইনক্রিমেন্ট তাই আগেই ১ বেড়ে ১২ হয়ে যাবে। তাহলে ডানপাশের ++a এর মান ১২।

এবার বাম+ডান=১০+১২= ২২

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

আজ আর বাড়তি কথা বলবো না। দেখা হবে পরের টিউনে।

ততদিন পর্যন্ত ভাল থাকুন,সুস্থ থাকুন, প্রযুক্তিকে ভালবাসুন আর প্রযুক্তির সাথেই থাকুন।

আল্লাহ হাফিজ

ফেসবুকে আমি  

 

Level 1

আমি মোঃ আশিকুর রহমান সরল। বিশ্বের সর্ববৃহৎ বিজ্ঞান ও প্রযুক্তির সৌশল নেটওয়ার্ক - টেকটিউনস এ আমি 8 বছর 9 মাস যাবৎ যুক্ত আছি। টেকটিউনস আমি এ পর্যন্ত 83 টি টিউন ও 102 টি টিউমেন্ট করেছি। টেকটিউনসে আমার 12 ফলোয়ার আছে এবং আমি টেকটিউনসে 0 টিউনারকে ফলো করি।

আমি একজন প্রযুক্তি প্রেমী।কম্পিউটার ইঞ্জিনিয়ারিং এ লেখাপড়া করছি।পৃথিবীকে নতুন কিছু করে দেখাতে চাই। My Website


টিউনস


আরও টিউনস


টিউনারের আরও টিউনস


টিউমেন্টস