জাভা পর্ব পাঁচঃ যদি, অথবা যদি এবং নাহলে!
যদি (দেশকে ভালবাস) {
বেঁচে থাক!
}
আর না বাসলে {
দূরে গিয়া মর।
}
এভাবেই কাজ করে জাভা এবং অন্যান্য অনেক ল্যাংগুয়েজে প্রোগ্রামিং-এর শর্তাধীন কার্যাবলী। প্রোগ্রামের “ফ্লো”নিয়ন্ত্রণ করার জন্য খুব কার্যকর একটা উপায় হল এই if…else স্টেটমেন্ট। বেশি কথা না বলে শুরু করে দেওয়া যাক!
শুরুতেই জাভা ক্লাস ক্রিয়েট করে ফেলুন। আমি আমার ক্লাসের নাম দিলাম AdultTest। :p
// জাভা ক্লাস কিভাবে ক্রিয়েট করে মনে আছে তো? src-এর উপর রাইট ক্লিক করতে হবে।
class AdultTest {
}
আমরা যে কোডটি লিখব তার কাজ হবে কেউ ১৮-এর উপর হলে বলা “Allah biyar boyosh hoi geche!”
আর না হলে বলা “tumi ekhono choto. jao bashai giye muri vajo”
আমরা এখনো জাভা-তে ইনপুট নিতে শিখি নাই এখনো। তাই আপাতত বয়সটা আমরা নিজেরাই অ্যাসাইন করে দিব। ধরা যাক বয়সটা ১৭।
static int age = 18;
এবার আমরা আমাদের মেইন ফাংশন শুরু করবো।
class AdultTest {
static int age = 18;
public static void main(string[] args) {
}
}
এখন আমাদের যা করতে হবে তা হল বয়স ১৮-এর বেশি না কম তা চেক করতে হবে। এজন্য আমরা ব্যবহার করবো if… else
One example is worth a thousand words! তাই বেশি কথা না বলে সরাসরি কোডটাই দেখিয়ে দিচ্ছি।
class AdultTest {
static int age = 18;
public static void main(string[] args) {
if (age >=18) {
System.out.println(“Allah biyar boyosh hoi geche!”);
}
else {
System.out.println(“tumi ekhono choto. jao bashai giye muri vajo”);
}
}
}
এটা কপি-পেস্ট করে রান করেন। লাভ নাই! :p
আমি কোডে খুব ছোট্ট একটা ভুল করে রাখছি। আপনি আগের চাপ্টার গুলা মন দিয়ে না পারলে ধরতে পারবেন না! এখন আপনার কাজ হল ভুলটা খুঁজে বের করে। অন্তত ১০ মিনিট চেষ্টা করেও যদি না পান, তাহলেই আমার সমাধানটা দেখবেনঃ
আমি String-এর S-টা ক্যাপিটাল না লিখে ছোট হাতের অক্ষরে লিখে দিছি। ওইটা ঠিক করে দেন, তাহলেই হবে!
আচ্ছা এখানে যাদের বয়স ১৭, তাদের তো এক বছর পরই বিয়ের বয়স হয়ে যাবে! শুধু শুধু মুড়ি ভাজতে বলে বেচারাদের মন খারাপ করে দেওয়ার কি দরকার। তার চেয়ে বলে দেওয়া ভাল না যে তাদের আর মাত্র একটি বছর অপেক্ষা করতে হবে! আসেন এবার এই কোডটাও লিখে ফেলি!
আগের কোডে আমরা কেবল একটি শর্ত চেক করে দেখেছি। এবার আমরা যা করবো তা হল, একটি শর্ত পূর্ণ না হলে আরেকটা শর্ত চেক করে দেখব। এজন্য ব্যবহার করা হয় একাধিক if. অথবা একবার if ব্যবহার করে পরে বাকিগুলাতে else if ও ব্যবহার করতে পারেন। আর কথা না বাড়িয়ে কোডটা লিখে ফেলি!
class AdultTest {
static int age = 18;
public static void main(String[] args) {
if (age > 17) {
System.out.println(“Allah biyar boyosh hoi geche!”);
}
else if (age == 17) {
System.out.println(“Ar ekta bochor kosto kore muri vajen!”);
}
else {
System.out.println(“tumi ekhono choto. jao bashai giye muri vajo”);
}
}
}
এই কোডে প্রথমে চেক করা হচ্ছে বয়স ১৭-এর উপর কি না।
যদি না হয়, তাহলে else if দিয়ে চেক করা হচ্ছে বয়স ১৭ কি না।
যদি তাও না হয়, তাহলে সরাসরি প্রিন্ট করে দেওয়া হচ্ছে “tumi ekhono choto. jao bashai giye muri vajo”
এখানে আপনি চাইলে আরেকটা else if দিয়ে চেক করতে পারতেন বয়স ১৭ এর কম কি না।
else if (age < 17) {
System.out.println(“Ar ekta bochor kosto kore muri vajen!”);
}
কেন করি নাই বুঝতে পারছেন?
করি নাই কোডের এফিসিয়েন্সি বাড়াতে। কারণ বয়স ১৭-এর সমান কিংবা ১৭-এর চেয়ে বেশি না হলে সেটা অবশ্যই ১৭-এর কমই হবে। তাই এটা চেক করে আর সময় নষ্ট করার মানে হয় না!
আবার else যদি else if-এর আগে দিতেন, তাহলে কিন্তু if সত্য না হলে else-এর শর্তের কাজটাই প্রোগ্রামটি করে ফেলতো। else if কন্ডিশনটা সত্য কিনা, চেক করার প্রয়োজন মনে করতো না!
// একটা শর্ত পূরণ হয়ে গেলে অন্য শর্তগুলো আর চেক করা হবে না!
অর্থাৎ ব্যাপারটি দাঁড়াচ্ছে এমন…
if (প্রথম শর্ত) {
শর্ত পূর্ণ থাকলে এটা কর;
}
// প্রথম শর্ত পূরণ না হলে দ্বিতীয়টি চেক করবে
else if (দ্বিতীয় শর্ত) {
শর্ত পূর্ণ থাকলে এটা কর;
}
// প্রথম এবং দ্বিতীয় কোনো শর্তই পূরণ না হলে তৃতীয়টি চেক করবে
else if (তৃতীয় শর্ত) {
শর্ত পূর্ণ থাকলে এটা কর;
}
else {
শর্ত পূর্ণ থাকলে এটা কর;
// আগের তিনটি শর্তের কোনোটাই পূর্ণ না হলে else দেওয়াটা কেস যাই হোক না কেন এই কাজটিই করে ফেলবে!
}
আশা করি ব্যাপারটা বুঝতে পেরেছেন। না বুঝলে জিজ্ঞেস করতে দ্বিধা করবেন না। দরকার হলে বাসায় গিয়ে বুঝাই দিয়ে আসবো। :p
আরেকটা জিনিস কি খেয়াল করেছেন? আমরা এখানে বয়স ১৭ কিনা সেটা দেখতে কন্ডিশন হিসেবে ব্যবহার করেছিলামঃ if (age == 17)
এই ব্যাপারটা খুব গুরুত্বপূর্ণ। জাভা(এবং অন্যান্য) কোডে = হল অ্যাসাইনমেন্ট ক্যারেক্টার আর == দিয়ে চেক করা হয় দুটি ভ্যালু সমান কি না।
এবার একটা কাজ করে ফেলেন। প্রথমে একটা ইন্টিজার ভ্যারিয়েবল ডিক্লেয়ার করে মান অ্যাসাইন করেন আপনার। এবার এটা জোড় না বিজোড় সেটা বের করে “The number is odd” কিংবা “The number is even” প্রিন্ট করার কোড লিখে ফেলেন।
পারবেন? নিজে চেষ্টা করেন। না পারলে আমি হিন্টস দিয়ে যাচ্ছি।
আপনি নিশ্চয় জানেন জোড় সংখ্যাকে ২ দিয়ে ভাগ করলে ভাগশেষ থাকে ০ আর বিজোড়কে ২ দিয়ে ভাগ করলে ভাগশেষ থাকে ১। আর আমি আগের কোনো এক চাপ্টারে ভাগশেষ বের করার জন্য দরকারী অপারেটরটিও দেখিয়েছিলাম! সেটা হল %। এবার আশা করি পারবেন। আর না পারলে কোনো সমস্যা নাই, আমাকে বলতে দ্বিধা করবেন না!
কোড লিখতে পারলে আপনার ভ্যারিয়েবলে যেই মানটা অ্যাসাইন করেছিলেন সেটা বদলে বিভিন্ন মান দিয়ে দেখুন কোড ঠিকভাবে কাজ করে কিনা!
_________________________________________________________________________________________________
আজকের মত এখানেই শেষ। আগামী লেসনে আমরা if…else দিয়ে গেইম বানাতে শিখে যাব!
ততদিন পর্যন্ত ভাল থাকবেন, সুস্থ থাকবেন। আর কোনো প্রশ্ন থাকলে এখানে করতে পারেন!