আসুন শিখি পরিপূর্ণ জাভা [পর্ব-৮] :: আসুন জেনে নিই if, if else, if-else-if ladder এবং switch সম্পর্কে বিস্তারিত

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

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

আসলে এতদিন তো আমরা ইতিহাস আর পাতিহাস পড়তেছিলাম। বলুন তো শর্ত ছাড়া কি কোনো খেলা জমে?? মনে হয় না। যেই খেলার কোনো রুলস না থাকে সেই খেলা হয় গায়ের জোরের খেলা। রুলস থাকলে খেলাটা একটু ভালই জমবে। তেমনি আমরা এখন প্রোগ্রামিং এর যেসব শর্ত দিয়ে কাজ করা হয় যেমন if statement,if-else statement,nested if statement,if-else-if ladder ইত্যাদি।

তো চলুন প্রথমেই জেনে নিই জাভা if statemenT এ চলে যাই। আসলে এগুলো সি/সি++ এ একই রকম।

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

  1. if(condition){
  2. //code to be executed
  3. }

আগেও বলেছি 1,2,3 এগুলো কিন্তু লাইন নম্বর কোডের কোনো অংশ না।

আসুন এবার একটু ফ্লোচার্ট টা দেখে নিই

ফ্লোচার্ট দেখে একটা গান মনে পড়ে গেল... পড়ে না চোখের পলক... কি তোমার রুপের ঝলক... থাক পরের টূকু ইউটিউব থেকে শুনে নিন। আশা করি চিত্র দেখে বুঝে ফেলেছেন। না বুঝলে আমি বুঝিয়ে দিবো কোনো সমস্যা নেই।

চলুন একটু প্রোগ্রামিং এ যাওয়া যাক...

  1. public class IfExample {  
  2. public static void main(String[] args) {  
  3.     int age=20;  
  4.     if(age>18){  
  5.         System.out.print("Age is greater than 18");  
  6.     }  
  7. }  
  8. }  

আশা করি সবাই বুঝতে পেরেছেন যে, এই প্রোগ্রামে যে শর্ত দেয়া আছে সেটা হচ্ছে, যদি age ভেরিয়েবলটির মান ১৮ এর থেকে বেশি হয় তাহলে age is greater than 18 প্রিন্ট করবে। আর যদি কম হয় তাহলে কিছু প্রিন্ট না করে প্রোগ্রাম টার্মিনেট করবে।

Java IF-else Statement সম্পর্কে জেনে নেয়া যাক 

এটা হচ্ছে এমন এক প্রকার শর্ত যেটা সত্য হলে এক রকম রেজাল্ট দেখাবে আর মিথ্যা হলে আরেক রকম দেখাবে। অর্থাৎ এই if-else স্ট্যাটমেন্ট এর মাধ্যমে আপনি শর্ত সত্য হলে কি দেখাবে আর মিথ্যা হলে কি দেখাবে সেটা সেট করে দিতে পারবেন।

সিনটেক্স দেখে নিই চলুন...

  1. if(condition){  
  2. //code if condition is true  
  3. }
  4. else{  
  5. //code if condition is false  
  6. }  

আসুন একটু প্রোগ্রাম করে প্র্যাক্টিক্যালী দেখি...

  1. public class IfElseExample {  
  2. public static void main(String[] args) {  
  3.     int number=13;  
  4.     if(number%2==0){  
  5.         System.out.println("even number");  
  6.     }
  7. else{  
  8.         System.out.println("odd number");  
  9.     }  
  10. }  
  11. }  

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

java if-else- if ladder স্ট্যাটমেন্ট সম্পর্কে একটু জেনে নিই চলুন।

লেডার শব্দের অর্থ সিঁড়ি বা মই। এটা অনেকটা সিড়ি বা মইয়ের মতই। চলুন প্রথমেই এর সিনটেক্স দেখে নিই...

  1. if(condition1){  
  2. //code to be executed if condition1 is true  
  3. }else if(condition2){  
  4. //code to be executed if condition2 is true  
  5. }  
  6. else if(condition3){  
  7. //code to be executed if condition3 is true  
  8. }  
  9. ...  
  10. else{  
  11. //code to be executed if all the conditions are false  
  12. }  

এটা এমন শর্ত যে, প্রথমেই ১নম্বর শর্তটি চ্যাক করবে যদি সত্য হয় তবে ঐটা এক্সিকিউট করবে আর মিথ্যা হলে ২নাম্বার কন্ডিশন চেক করার জন্য চলে যাবে। সত্য হলে এক্সিকিউট আর মিথ্যা হলে পরের কন্ডিশনে চলে যাবে। এভাবে else if এর মাধ্যমে যেতে যেতে যখন দেখবে যে ভেরিয়েবল এর ভেলু কোনো শর্তের মধ্যেই পড়ে না তখন else স্ট্যাটমেন্ট এক্সিকিউট করবে। আশা করি নিচের ফ্লোচার্ট আর প্রোগ্রাম দেখলেই বুঝতে পারবেন।

ফ্লোচার্ট

চলুন এবার একটু প্রোগ্রামিং এ যাওয়া যাক।

  1. public class IfElseIfExample {  
  2. public static void main(String[] args) {  
  3.     int marks=65;  
  4.       
  5.     if(marks<50){  
  6.         System.out.println("fail");  
  7.     }  
  8.     else if(marks>=50 && marks<60){  
  9.         System.out.println("D grade");  
  10.     }  
  11.     else if(marks>=60 && marks<70){  
  12.         System.out.println("C grade");  
  13.     }  
  14.     else if(marks>=70 && marks<80){  
  15.         System.out.println("B grade");  
  16.     }  
  17.     else if(marks>=80 && marks<90){  
  18.         System.out.println("A grade");  
  19.     }else if(marks>=90 && marks<100){  
  20.         System.out.println("A+ grade");  
  21.     }else{  
  22.         System.out.println("Invalid!");  
  23.     }  
  24. }  
  25. }  

এই প্রোগ্রামে ইন্টিজার টাইপের একটি ভেরিয়েবল mark এর মান দেয়া হয়েছে ৬৫। এরপর if-else -if লেডার স্ট্যাটমেন্ট এর মাধ্যমে প্রথমেই শর্ত দেয়া হয়েছে  যদি mark এর মান ৫০ এর নিচে হয় তাহলে প্রিন্ট করবে fail,যদি ৫০ এবং ৬০ এর মাঝামাঝি হয় তাহলে D grade, যদি ৬০ এবং ৭০ এর মাঝামাঝি হয় তাহলে C grade, এভাবে বাকি গুলো। আর এই শর্ত গুলোর কোনোটির সাথে যদি mark এর ভেলু না মিলে তাহলে else স্ট্যাটমেন্ট এক্সিকিউট হয়ে প্রিন্ট করবে Ivalid. যেহেতু এই প্রোগ্রামে mark এর মান ৬৫ তাই প্রিন্ট হবে c grade.

চলুন এবার একটু Switch স্ট্যাটমেন্ট সম্পর্কে ধারণা নিয়ে নিই 

যেভাবে সুইচে চাপ দিলে বাতি জ্বলে ঠিক তেমনিভাবে এইবার প্রোগ্রামিং এও বাতি জ্বালাবে এই সুইচ স্ট্যাটমেন্ট। এটি এমন এক ধরণের স্ট্যাটমেন্ট যেটা সুইচের মতই কাজ করবে। আমরা এটাকে অপশন বাটনের সাথে তুলণা করতে পারি। আমরা যেই ভেলু দিয়ে সুইচ করবো,সে  তার ভিতরে থাকা case গুলোকে চ্যাক করবে যে কোনো case এর সাথে মিলে কি না। যদি মিলে যায় তাহলে সেটা এক্সিকিউট করবে। আর প্রতিটা case এর পর ব্রেক চেপে সুইচ থেকে বের হয়ে যেতে হবে। নাহলে কি ঘটবে সেটা একটু পর দেখাবো। তো চলুন সুইচ এর সিনটেক্স টা একটু দেখে নিইঃ

  1. switch(expression){    
  2. case value1:    
  3.  //code to be executed;    
  4.  break;  //optional  
  5. case value2:    
  6.  //code to be executed;    
  7.  break;  //optional  
  8. ...   
  9.     
  10. default:     
  11.  code to be executed if all cases are not matched;    
  12. }    

চলুন একটু ফ্লোচার্ট দেখে নিইঃ 

আশা করি বুঝে ফেলেছেন। তারপরও নিচের প্রোগ্রামটা দেখলে বুঝতে পারবেন...

  1. public class SwitchExample {  
  2. public static void main(String[] args) {  
  3.     int number=20;  
  4.     switch(number){  
  5.     case 10: System.out.println("10");break;  
  6.     case 20: System.out.println("20");break;  
  7.     case 30: System.out.println("30");break;  
  8.     default:System.out.println("Not in 10, 20 or 30");  
  9.     }  
  10. }  
  11. }  

আমরা প্রথমেই number নামে একটা ভেরিয়েবল নিয়েছি এবং সেখানে ২০ ইনিশিয়ালাইজ করে দিয়েছি।

এইবার switch এর মাধ্যমে নাম্বারকে সুইচ করেছি, এইবার সেই নাম্বারের যে ভেলু ছিল সেটার সাথে কোন case টি ম্যাচ করে। যেটা ম্যাচ করে সেটা এক্সিকিউট হয়ে ব্রেক করবে। আর যদি কোনোটাই ম্যাচ না করে তাহলে ডিফল্ট যেই স্ট্যাটমেন্ট দেয়া হয়েছে সেটা এক্সিকিউট করবে অর্থাৎ Not in 10, 20 or 30 প্রিন্ট করবে। 

যেহেতু নাম্বারের ভেলু ছিল ২০ তাই এখানে ২০ ই প্রিন্ট করবে।

আর যদি আমরা কেস এর পর  ব্রেক স্ট্যাট্মেন্ট ইউজ না করি  তাহলে কি ঘটবে সেটা নিচের প্রোগ্রাম দেখলেই বুঝতে পারবেন।

  1. public class SwitchExample2 {  
  2. public static void main(String[] args) {  
  3.     int number=20;  
  4.     switch(number){  
  5.     case 10: System.out.println("10");  
  6.     case 20: System.out.println("20");  
  7.     case 30: System.out.println("30");  
  8.     default:System.out.println("Not in 10, 20 or 30");  
  9.     }  
  10. }  
  11. }  

যেহেতু আমরা ব্রেক ইউজ করি নাই তাই এখানে ২০,৩০এবং Not in 10, 20 or 30 প্রিন্ট করবে। প্রশ্ন তাহলে ১০ প্রিন্ট করলো না কেন? কারণ আমরা সুইচ করেছি ২০। তাই যেহেতু ২০ ম্যাচ করেছে তাই প্রোগ্রাম ভেবে নিয়েছে ২০ এর পর বাকি সব স্ট্যাটমেন্ট সত্য তাই সব প্রিন্ট করে দিয়েছে। ব্রেক দিলে সে সুইচ থেকে বেরিয়ে যেত। কিন্তু দেয়া হয় নাই। মানে পাগলা ঘোড়াকে ছেড়ে দিলে সে তো দৌড়াবেই। তাই সুইচে অবশ্যই ব্রেক ব্যবহার করবেন।

আজকের মত এই পর্যন্তই দেখা হবে ইনশাআল্লাহ পরবর্তী টিউনে। ততক্ষণ পর্যন্ত ভাল থাকুন,সুস্থ থাকু্‌ন, প্রযুক্তিকে ভালবাসুন আর প্রযুক্তির সাথেই থাকুন।

আল্লাহ হাফিজ

ফেসবুকে আমি

Level 1

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

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


টিউনস


আরও টিউনস


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


টিউমেন্টস