Wednesday, February 22, 2012

PHP 06 - Conditional Statements හඳුනාගනිමු

ඔබ ගමනක් යෑම සඳහා පිටත්වීමට සූදානම් වෙනවා. හිතන්න එළියෙ වහිනවා කියලා. ඔබ මොකද කරන්නෙ? 

වහිනවානම් කුඩයක් ගෙනියන්න කියලා අම්මා හරි තාත්තා හරි කියාවි. නේද? 

කුඩය ගෙනියනවාද නැද්ද කියන තීරණය රඳාපවතින්නේ වහිනවාද නැද්ද යන සාධකය මතයි. 

මෙන්න මේ ආකාරයේ යම් සාධකයක්, කොන්දේසියක් වෙනස් වීම මත යම් යම් දේ පිළිබඳව වෙනස් වෙනස් තීරණ ගන්න අපිට භාවිතා කළ හැකි ක්‍රමවේදයන් 4ක් ගැන තමයි මේ පාඩමෙන් ඔබ ඉගෙනගන්නේ. මේක හරිම ලේසි වැඩක්. කරන්න තියෙන්නේ තර්කානුකූලව හිතන එක විතරයි.

මේ කියාදෙන්න යන්නේ Conditional Statements ගැනයි.

වෙනස් තීරණ වලදී එකිනෙකින් වෙනස් දේ කිරීමට අවශ්‍ය වූ විට අපිට Conditional Statements භාවිතා කරන්න වෙනවා. PHP වල මේ ආකාරයේ Conditional Statements කීපයක් තිබෙනවා.

IF Statement


කිසියම් කොන්දේසියක් ඉටුවීම මත යමක් කිරීමට If  Statements භාවිතා කළ හැකියි. If Statement එකක ආකෘතිය පහත පරිදි වේ.


IF Statement එකක් ඇරඹෙන්නේ If කියන වචනයෙන්. ඉන්පසු ඔබ විසින් වරහන් තුළ Check කළ යුතු Condition එක ලබාදිය යුතුයි. එම කොන්දේසිය ඉටුවෙනවානම් සිදුකළයුත්තේ කුමක්දැයි ඉන්පසුව ඔබට සඟල වරහන් තුළ ලබාදිය හැකියි. ( එක කේත පේළියක් විතරක් තියෙනවානම් සඟලවරහන් නැතිව දුන්නත් වරදක් නැහැ). එසේ සඟල වරහන තුළ ලබාදෙන කේත පේළි තිත් කොමාවකින් අවසන් කරන්නත් අමතක කරන්න එපා.

උදාහරණයක් ගත්තොත් තවත් පැහැදිලි වේවි. මේ කේත සටහන දෙස හොඳින් බලන්න.

මෙහි පළමුවෙන්ම 9 වැනි පේළියේදී $name නමින් variable එකක් හඳුන්වාදී ඒ සඳහා "Kinith" යන අගය ලබාදී තිබෙනවා. ඉන්පසුව If statement එකක් ලියා තිබෙනවා.

11 වැනි පේළියේ තිබෙන If වචනයට පසුව ඇති වරහන තුළ ලබාදී ඇත්තේ විමසා බැලිය යුතු කොන්දේසියයි. එනම්, මෙම IF Statement එකෙන් Check කරන්නේ $name නැමැති Variable එකෙහි ඇත්තේ "Kinith" නැමැති අගයද? කියාය. එහිදි සමාන ලකුණු එකක් නොව දෙකක් භාවිතා කර ඇති බවත් මතක තියාගන්න. 

හේතුව තමයි එක සාමාන ලකුණකින් කරන්නේ සමාන ලකුණට දකුණු පැත්තේ තියෙන අගය වම්පැත්තේ ඇති විචල්‍යයට Assign කිරීමයි. සමානද? යනුවෙන් සසඳා බැලීමටනම් = Assignment Operator එක නොව == Comparison Operator එක භාවිතා කළ යුතුයි. ඔබ = ලකුණ භාවිතා කළා නම් අනිර්යයෙන්ම සඟලවරහන් තුළ තිබෙන දේ Print වේවි. නමුත් ඒකෙන් වෙන්නෙ Assign වීම මිස සැසඳීමක් නොවේ. ඒනිසා අනිවාර්යයෙන්ම සමානද? බැලීමේදී සමාන ලකුණු දෙකකින් යුතු Operator එක භාවිතා කළ යුතුමයි.

වරහන් තුළ ඇති කොන්දේසියෙන් පසුව ඇත්තේ එම කොන්දේසිය සත්‍ය නම් කළයුත්තේ කුමක්ද යන්නයි. උදාහරණයේ හැටියට නම් $name එක "Kinith" නම් Hello! I am your PHP teacher යන්න ඔබේ බ්‍රව්සරයේ පෙන්වීම සිදු කරයි.

හොඳයි! නම Kinith නොවුණානම් මොකද වෙන්නේ. X variable එකට වෙන අගයක්/වචනයක් දීලා වෙනස් කරලා බලන්න. බ්‍රව්සර් එකේ මොකුත්ම පෙන්වන එකක් නැහැ. ඇයි ඒ?

If statement එකේ අපි කියලා තියෙන්නෙ නම Kinith නම් පහළ තියෙන වාක්‍යය පෙන්වන්න කියලා විතරයිනේද? නම Kinith නොවේනම් මොකද කරන්නෙ කියලා අපි කියලා නැහැනේ! ඒක කරනහැටි අපි ඉගෙනගන්නවා ඊළඟ Statement එකෙන්.

IF....ELSE Statement


කිසියම් කොන්දේසියක් ඉටුවීම මත එක් දෙයකුත් එම කොන්දේසිය ඉටු නොවීම මත වෙනත් දෙයකුත් කිරීමට අවශ්‍ය තැන් වලදී IF...Else Statements භාවිතා කළ හැකියි.

උදාහරණයක්...

කලින් උදාහරණයේදී මම කීව අඩුපාඩුව දැන් සම්පූර්ණ වෙනවා. මෙතනදි බලන්නේ $name කියන variable එකේ තියෙන value එක Kinith ද? කියලයි. එහෙමනම් "Hello! I am your PHP teacher" කියන වාක්‍යය Print කරන්න කියලා කියනවා. Else විධානයෙන් කියන්නේ නම Kinith නොවී වෙන එකක් වුණොත්, එහෙමත් නැත්නම් අපි විමසාබලන කොන්දේසිය ඉටු නොවුණොත් කළයුත්තේ කුමක්ද කියන එකයි. මෙතැන හැටියටනම් “Hello! I am your best student“ කියන වාක්‍යය පෙන්වන්න කියලයි කියන්නෙ.

මේක ක්‍රියාත්මක වෙන්නෙ මෙහෙමයි. $name variable එකේ දැන් තියෙන්නෙ "Amal" කියන value එක. If statement එකෙන් check කරනවා $name කියන variable එකේ තියෙන්නේ "Kinith" කියන value එකද? කියලා. නමුත් ඒ කොන්දේසිය ඉටුවෙන්නෙ නැහැනෙ! ඒනිසා කෙළින්ම යන්නේ Else විධානයෙන් පස්සෙ තියෙන කේත වලටයි. ඒනිසයි මේ කේතය මේ පහළින් තියෙන දේ Print කරන්නේ.


පැහැදිලියි නේද?

හොඳයි... දැන් මේ දක්වා අපි විමසා බැලුවේ එක කොන්දේසියයි. හිතන්න කොන්දේසී කීපයක් තියෙනවා කියලා. ඒ එක් එක් කොන්දේසිය ඉටු වීම හෝ නොවීම මත වෙනස් වෙනස් දේ කරන්නත් ඕන කියලා. එතනදී අපිට IF...Else ප්‍රමාණවත් නැහැ. ඒ නිසයි අපි ඊළඟ පියවරය යා යුත්තේ.

IF....ELSEIF.....ELSE Statement


කිසියම් කොන්දේසියක් ඉටු වීම මත එක් දෙයකුත්, තවත් කොන්දේසියක් ඉටුවීම මත තවත් දෙයකුත්, කොන්දේසී කිසිවක් ඉටු නොවේනම් වෙනත් දෙයකුත් කිරීමට අවශ්‍ය තැන් වලදී If'...Elseif...Else Statements භාවිතා කළ හැකියි.

උදාහරණයක් මේ...

මේ උදාහරණයේදී If සඳහා එක් condition එකකුත් නැවත elseif සමග තවත් condition එකකුත් අවසානයේදී else සමග (condition එකක් නැතිව) කේතයකුත් ලබාදී තිබෙනවා. මෙතනදි වෙන්නේ මුලින්ම පළමු කොන්දේසිය හරිද කියලා බලන එක. පළමු කොන්දේසිය ඉටුවෙනවානම් ඒ යටතේ ඇති කේතය ක්‍රියාවට නංවනවා. පළමු කොන්දේසිය ඉටුනොවේනම් දෙවැන් කොන්දේසිය ඉටුවෙනවාදැයි බලනවා. ඉටුවෙනවානම් ඒ යටතේ ඇති කේතය ක්‍රියාත්මක කරනවා. IF සහ ඉන්පසුව ELSEIF සමග දී ඇති කොන්දේසි කිසිවක් ඉටු නොවේනම් අවසානයේ Else සමග දී ඇති කේතය ක්‍රියාත්මක කරනවා.

IFට පසු ELSEIF ගණනාවත් අපිට භාවිතා කරන්න පුලුවන්. ඒ හැම ELSEIF එකකටම Condition එකක් තිබිය යුතු බවත් මතක තියාගන්න. ඒවගේම ELSE සඳහා Condition එකක් අනවශ්‍ය බවත්.

ඒ වගේම If Condition එකක් ඇතුළට තවත් If Conditions දාලා (Nested IF) තවත් සංකීර්ණ විදියට මේ Logic එක ඔයාට දියුණු කරන්න පුලුවනි.


පැහැදිලියි නේද?

මේ පාඩමේ අන්තිම කොටසට යමු.

SWITCH Statement


සීමිත, හොඳින් දන්නා විකල්ප කොන්දේසි කීපයක් ලබාදී ඒවායින් ඕනෑම එකක් ඉටුවීම මත යමක් කිරීමට අවශ්‍ය තැන් වලදී Switch Statements භාවිතා කළ හැකියි.

උදාහරණයක් ගනිමු.

හිතන්න ඔයා Variable එකක් Declare කරනවා Month කියල. ඔයා මේකෙ Store කරනවා මාසයක නමක් ඉංග්‍රීසි ක්‍රමයට. ඉන්පස්සෙ ඔයාට ඕන ඒ Assign කරලා තියෙන මාසයේ නම අනුව ඒ මාසයට කියන සිංහල නම Browser එකේ පෙන්වන්න. කරලා බලමුද?

මේ තියෙන්නෙ ඒ සඳහා ලියන්න පුලුවන් SWITCH Statement එකක්. ඉස්සෙල්ලා බලන්නකො, ඉන්පස්සෙ පැහැදිලි කරලා දෙන්නම්.



















මුලින්ම 9 වැනි පේළියේදී මම $month නමින් variable එකක් හඳුන්වාදී එයට "January" කියන අගය assign කර තිබෙනවා. අපි ඉගෙන ගන්න යන Switch Statement එක 11 වැනි පේළියෙන් ඇරඹෙනවා.

එහි මුලින්ම SWITCH කියන වචනයත් ඉන්පසු වරහන් තුළ ඔබ විසින් විමසාබැලිය යුතු විචල්‍යය ලබාදිය යුතුයි. ඉන්පසුව සඟල වරහන් තුළ ඔබ Check කරනු ලබන අගයන් සහ එම අගය ලැබේනම් කළයුත්තේ කුමක්ද යන්නත් ලබාදිය යුතුයි.

එහිදී විමසා බලන හැම අගයක් සඳහාම CASE යන පදයත් ඉන්පසුව අප විමසාබලන value එකත් ලබාදී ඉන්පසුව එක් එක් අවස්ථාවේ සිදුවිය යුතු කේතයන් ලබාදිය හැකියි. Break යන පදයෙන් ගැලපෙන අවස්ථාවක් ලද පසු අපේ Switch Statement එක නවතා දැමීම සිදුවෙනවා. Default පදයෙන් Cases වල සඳහන් කිසිවක් හමු නොවේනම් කළ යුතු දේ දැක්වෙනවා.

මේ කේත සටහන, එහි නිල්පාටින් පෙනෙන keywords සහ සලකුණු කෙරෙහි විශේෂ අවධානය යොමුකරන්න. වෙනස් විදියකට කරලා බලන්න.

පාඩම ටිකක් දිග වුණත් Practice කරනකොට රසවත් වෙන්න ඇති කියලා හිතනවා. 
ඊළඟ පාඩමෙන් අපි Arrays ගැන ඉගෙනගනිමු. ටිකක් මොළය වෙහෙසන්න ඕන වැදගත් පාඩමක්. නමුත් අමාරු නැහැ.

ඔබ මේ ලිපියෙන් යමක් ඉගෙනගත්තානම් Comment එකකින් මා දිරිමත් කරන්නත් අමතක කරන්න එපා.
ස්තුතියි!