Sunday, January 19, 2014

Java Tutorial 6

Java Tutorial 6(Control Flow and Condition) part 1

တြက္ခ်က္မွဳေတြလုပ္တဲ့အခါ ဘယ္အခ်ိန္မွာ ဘယ္လိုတြက္ခ်က္မွဳေတြလုပ္မယ္ ဘယ္အေျခအေနမွာ ဘာအလုပ္ေတြလုပ္မယ္ဆိုတာ ကိုထိန္းကြပ္တဲ့နည္းလမ္းရွိပါတယ္။ control flow statement ေတြကိုသံုးၿပီးေတာ့ ထိန္းကြပ္ရမွာပါ၊ control flow statement အေၾကာင္းရွင္းျပပါမယ္။ program တစ္ခုမွာ ကိုယ္ေရးတဲ့ကုဒ္ေတြဟာ အစဥ္အတိုင္းအလုပ္လုပ္ပါတယ္၊ တခါတရံမွာ(အေျခအေနတခုမွာ) တခ်ိဳ႕ကုဒ္ေတြကို ေက်ာ္ၿပီးေတာ့ပဲျဖစ္ျဖစ္ ထပ္ခါထပ္ခါပဲျဖစ္ျဖစ္ run ေစခ်င္တယ္ဆိုရင္ control flow statement ေတြကိုသံုးပါမယ္။ ထပ္ရွင္းျပပါမယ္၊ ကုဒ္ေတြဟာသူ႔ flow ႏွင့္သူအစဥ္အတိုင္း run ေနတာပါ ၊ကုဒ္ေတြကိုေက်ာ္ run တာတို႔ ထပ္ကာထပ္ကာ run တာတို႔ဆိုတာ flow ကိုထိမ္းခ်ဴပ္ေျပာင္းလဲလိုက္တာပါပဲ။ ဒါဆိုဘယ္အခ်ိန္မွာ ေျပာင္းလဲရမလဲ၊ ကိုယ္ျဖစ္ေစခ်င္တဲ့ အေျခအေန အခ်ိန္အခါမွာ control flow statement ေတြကိုအသံုးျပဳၿပီးေျပာင္းလဲရပါမယ္။ ဥပမာျပရင္ပိုရွင္းသြားပါလိမ့္မယ္။

ဆိုပါေတာ့ စာေမးပြဲတစ္ခုရဲ႕ အမွတ္စာရင္းေတြကို manage လုပ္တဲ့ program တစ္ခုမွာေပါ႔၊ ေအာင္တဲ့လူေတြရဲ႕စာရင္းကို သိမ္းထားခ်င္တယ္ဆိုပါေတာ့၊ ေက်ာင္းသားတိုင္းကို ေအာင္စာရင္းထဲထည့္လို႔မရဘူး ေအာင္တဲ့ေက်ာင္းသားကိုပဲထည့္ရမယ္။ဒါဆိုေက်ာင္းသား (Student class) စာေမးပြဲေအာင္တဲ့အေျခအေနမွာ(pass ျဖစ္တဲ့အခ်ိန္၊ pass variable က true ျဖစ္တဲ့ခ်ိန္) ဒီေက်ာင္းသားကိုေအာင္စာရင္းထဲထည့္မယ္။ ေအာက္က program ကိုေလ့လာၾကည့္ပါ။

“Student.java”

public class Student {

public static void main(String[] args) {

boolean pass = true;

if(pass == true) //ဒါကစာေမးပြဲေအာင္လားဆိုတဲ့ အေျခအေနကိုစစ္တာပါ

{

//ဒီေနရာမွာ စာေမးပြဲေအာင္ရင္လုပ္ရမယ့္ကုဒ္ေတြကိုေရးရပါမယ္

}

}

}

ဒီ program ထဲကတစ္ခ်ိဳ႕ကုဒ္ေတြကိုရွင္းျပပါမယ္။ ဒီအပိုင္းကိုၾကည့္ပါ။

if(pass == true)

{

//Here is the code to work when the condition is true

}

if(pass == true) ဆိုတာ အေျခအေန(condition) ကိုစစ္ေဆးတာပါ၊ ဒီအေျခအေနမွန္ကန္မွ သူ႔ေအာက္မွာရွိတဲ့ တြန္႔ကြင္း ”{}” ထဲက ကုဒ္ေတြကို run မွာပါ။ ဒီေတာ့ if(  ) ရဲ႕အဓိပၸါယ္က “တစ္ကယ္လို႔ လက္သည္းကြင္းထဲမွာရွိတဲ့ အေျခအေနမွန္ရင္” လို႔အဓိပၸါယ္ရပါတယ္။ ဒါဆိုအဲဒီ လက္သည္းကြင္းထဲ ဘယ္လိုကုဒ္ေတြ ေရးလို႔ရလဲဆိုတာထပ္ရွင္းျပပါမယ္။ conditional ႏွင့္ relational operator ေတြသံုးၿပီးေရးရမွာပါ။

 

Relational Operator

တန္ဖိုးေတြကို ႏွိဳင္းယွဥ္တဲ့ေနရာမွာ အေျခအေနကိုဆန္းစစ္တဲ့အခါမွာ ဒီ operator ေတြကိုသံုးရပါတယ္။ အရင္ဆံုး relational operator ေတြကိုရွင္းျပပါမယ္။ variable ႏွစ္ခုသို႔မဟုတ္ တန္ဖိုးႏွစ္ခုကို ႏွိဳင္းယွဥ္တဲ့အခါဒီ relational operator ေတြကိုသံုးရပါတယ္။ “==” ဆိုတာကို တန္ဖိုးႏွစ္ခုညီသလား မညီဘူးလားလို႕စစ္ေဆးခ်င္ရင္သံုးပါတယ္။ variable ‘a’ ရဲ႕တန္ဖိုး ႏွင့္ variable ‘b’ ရဲ႕တန္ဖိုး ညီသလားစစ္ခ်င္ရင္ ဒီလိုေရးပါ “a==b”။ မညီဘူးလားလို႔စစ္ခ်င္ရင္ “!=” ကိုသံုးရပါတယ္။ အေရွ႕မွာရွိတဲ့တန္ဖိုးဟာ အေနာက္မွာရွိတဲ့တန္ဖိုးထက္ ႀကီးသလားလို႔စစ္ခ်င္ရင္ “>” ကိုသံုးၿပီး၊ ႀကီးသလား သို႔မဟုတ္ ညီသလားလို႔စစ္ခ်င္ရင္ “>=” ကိုသံုးရပါတယ္။ ဒီလိုပါပဲ ငယ္သလားဆိုရင္ “<” သံုးၿပီး၊ ငယ္သလား သို႔မဟုတ္ ညီသလားဆိုရင္ “<=” ကိုသံုးရပါတယ္။ ဒါေတြကို if(  ) ထဲမွာထည့္သံုးႏိုင္ပါတယ္၊ ဒီတြက္ခ်က္မွဳေတြမွန္ကန္မွ if(  ) ေအာက္ကကုဒ္ေတြ အလုပ္လုပ္မွာပါ။ ေအာက္မွာနမူနာ program တစ္ပုဒ္ေပးထားပါတယ္၊ စမ္းသပ္ၾကည့္ပါ။

 

RelationalOp.java”

class RelationalOp {

 

public static void main(String[] args){

int value1 = 1;

int value2 = 2;

if(value1 == value2) System.out.println("value1 == value2");

if(value1 != value2) System.out.println("value1 != value2");

if(value1 > value2) System.out.println("value1 > value2");

if(value1 < value2) System.out.println("value1 < value2");

if(value1 <= value2) System.out.println("value1 <= value2");

}

}

ဒီမွာတစ္ခုေျပာခ်င္တာကေတာ့ if(  ) ေနာက္မွာကုဒ္တစ္ေၾကာင္းပဲ ေရးမယ္ဆိုရင္ တြန္႔ကြင္း {} ထည့္စရာမလိုပါဘူး၊ ကုဒ္တစ္ေၾကာင္းထက္ပိုေရးမွ လိုတာပါ၊ ဒါေပမဲ့ တစ္ေၾကာင္းပဲေရးေရး တစ္ေၾကာင္းထက္ပဲပိုေရးေရး တြန္႔ကြင္းထည့္လည္းကိစၥမရွိပါဘူး။

 

Conditional Operator
boolean expression(boolean တြက္ခ်က္မွဳ) ႏွစ္ခုႏွင့္သံုးရတာပါ။ operator ႏွစ္ခုရွိပါတယ္၊ ပထမက conditional-AND တဲ့ သူ႔ကိုဒီလိုေရးရတယ္၊ expression && expression၊ ဆိုလိုတာက ေရွ႕ကတြက္ခ်က္မွဳေရာ ေနာက္ကတြက္ခ်က္မွဳေရာ မွန္ကန္မွ အေျဖကမွန္ကန္တယ္(true) လို႔ထြက္မွာပါ။ relational operator တုန္းကတြက္ခ်က္မွဳတစ္ခုကမွန္ရင္ အေျခအေနကမွန္ပါတယ္၊ ဒီ conditional-AND operator မွာေတာ့ တြက္ခ်က္မွဳႏွစ္ခုလံုး မွန္မွရမွာပါ။ နမူနာတစ္ခုျပပါမယ္ “if(var1==20 && var2==30)” ဒီကုဒ္မွာ “var1” ဆိုတဲ့ variable ရဲ႕တန္ဖိုးက ၂၀ ျဖစ္ၿပီး “var2” ကရဲ႕တန္ဖိုးက ၃၀ ျဖစ္မွ if(  ) ေအာက္ကကုဒ္ေတြက အလုပ္လုပ္မွာပါ။ ဆိုလုိတာက အေျခအေနႏွစ္ခုလံုးမွန္ကန္မွ if(  ) ေအာက္ကကုဒ္ေတြ run မွာပါ။ အခုကြ်န္ေတာ္ေျပာတာ conditional-AND အေၾကာင္းပါ ဆက္လက္ၿပီး conditional-OR အေၾကာင္းေျပာပါမယ္။

Conditional-OR ကေတာ့ AND ႏွင့္သိပ္မကြာပါဘူး၊ AND ကႏွစ္ခုလံုးမွန္ရၿပီး၊ OR ကေတာ့ႏွစ္ခုထဲက တစ္ခုမွန္ရင္ရပါတယ္၊ OR ကို “||” သေကၤတနဲ႔ေရးရပါတယ္။ “if(var1==20 || var2==30)” ဆိုတဲ့ကုဒ္မွာ အေျခအေနႏွစ္ခုထဲက တစ္ခုမွန္ကန္တာနဲ႔ if(  ) ရဲ႕ကုဒ္ေတြ run ပါတယ္။ conditional operator ေတြနဲ႔ပတ္သတ္တဲ့ နမူနာေအာက္မွာေပးထားပါတယ္။

“ConditionalOp.java”

class ConditionalOp {


     public static void main(String[] args){

          int value1 = 1;

          int value2 = 2;

          int result;

          boolean someCondition = true;

          result = someCondition ? value1 : value2;


          System.out.println(result);


     }

}


အကယ္၍… if()

Conditional operator ေတြကိုအသံုးျပဳၿပီး if() ထဲက condition ကိုစစ္ေဆးရပါမယ္၊ condition က true ျဖစ္ရင္ တြန္႔ကြင္းထဲကကုဒ္ေတြ အလုပ္လုပ္ပါမယ္၊ condition က false ျဖစ္ရင္ေတာ့ တြန္႔ကြင္းထဲကကုဒ္ေတြကို မ run ပဲနဲ႔ ေက်ာ္သြားပါမယ္။ ဒါေပမဲ့ဒီ if(  ) ကcondition ကိုတစ္ဆင့္ထဲစစ္တာပါ၊ condition ကိုအဆင့္ဆင့္ စစ္ေဆးခ်င္တယ္ဆိုရင္ “if(  ) { } else { }” ဆိုတဲ့ေဖာ္ျမဴလာကိုသံုးပါမယ္။ သူ႔သေဘာက “if()” အကယ္၍ဒါမွန္လွ်င္၊ “{ }” ဒါလုပ္ပါ၊ “else” ဒါမမွန္လွ်င္၊ “{ }” ဒါေျပာင္းလုပ္ပါ။ ေအာက္ကကုဒ္ကိုၾကည့္ပါ။

if(var1 == 10) {

System.out.print(“IF”);

} else {

System.out.print(“ELSE”);

}

 

var1 ရဲ႕တန္ဖိုးက ၁၀ ျဖစ္မယ္ဆိုရင္ “IF” ဆိုတဲ့စာသားထြက္လာၿပီး၊ ၁၀ မဟုတ္ရင္ေတာ့ “ELSE” ဆိုတဲ့စာသားထြက္လာပါမယ္။

ေနာက္ထက္ if() တစ္မ်ိဴးက်န္ပါေသးတယ္၊ “if() else if()” ပါပဲ။ သူ႔သေဘာက ပထမ condition ကိုစစ္ေဆးၿပီး မမွန္ရင္ေနာက္ condition ကိုစစ္ပါတယ္။ ေအာက္ကကုဒ္ကိုၾကည့္ပါ။

if(var1 == 10) {

System.out.print(“IF”);

} else if(var1 == 20) {

System.out.print(“ELSE IF”);

}

 

var1 ရဲ႕တန္ဖိုးက ၁၀ ျဖစ္မယ္ဆိုရင္ “IF” ဆိုတဲ့စာသားထြက္လာၿပီး၊ ၂၀ ဆိုရင္ “ELSE” စာသားထြက္လာပါမယ္။ ေနာက္ထက္နမူနာတစ္ခုထက္ၾကည့္ပါဦး။

if(var1 == 10) {

System.out.print(“IF”);

} else if(var1 == 20) {

System.out.print(“ELSE IF”);

} else {

System.out.print(“ELSE”);

}

 

ထိပ္ကစစ္ေဆးမွဳေတြမမွန္ရင္ေနာက္ဆံုး မွာ else ကို run ပါတယ္။ အဆင့္ဆင့္ condition စစ္တဲ့အခါမွာ၊ condition တစ္ခုမွန္ၿပီဆို္တာနဲ႔ ေနာက္ condition ေတြကိုဆက္ၿပီး မ စစ္ေဆးေတာ့ပါဘူး။

 

?: or If-then-else

“?:” သူက conditional operator တစ္မ်ိဴးပါပဲ၊ သူ႔ကိုေရးသားနည္းကဒီလိုပါ၊ “condition ? value1 : value2;” ။ သေဘာတရားကဒီလိုပါ၊ condition မွန္ရင္ value1 ကိုထုတ္ေပးၿပီး မမွန္ရင္ value2 ကိုထုတ္ေပးပါတယ္။ နမူနာ program တစ္ခုေပးထားပါတယ္။

“ConditionalOp2.java”
class ConditionalOp2 {


     public static void main(String[] args){

          int value1 = 1;

          int value2 = 2;

          int result;

          boolean someCondition = true;

          result = someCondition ? value1 : value2;


          System.out.println(result);


     }

}


“someCondition ? value1 : value2;” ဆိုတဲ့ကုဒ္ဟာ “if(someCondition){value1;} else{value2;}” ဆိုတဲ့ကုဒ္ႏွင့္သေဘာတရားျခင္းတူပါတယ္။

Previous Java Tutorial 5
Next : Java Tutorial 7

2 comments:

  1. […] Java Tutorial 6Having fun with web development – web server (chapter 2)Having fun with web development […]

    ReplyDelete
  2. […] [ battery problem and sleep problem ]Samsung Galaxy S5 ရဲ႕ tile-based home screen အသစ္Java Tutorial 6Having fun with web development – web server (chapter 2)Having fun with web development […]

    ReplyDelete