10. Flow Control and Looping
PHP போன்ற நிரல்மொழிகளைப் பயன்படுத்துவதன் நோக்கமே, வலை (web) அடிப்படையிலான தகவல்களில் தர்க்கம் மற்றும் நுண்ணறிவு நுணுக்கங்களை கட்டமைக்க வேண்டும் என்பதாகும். தர்க்கம், நுண்ணறிவு என்று வந்துவிட்டாலே சூழலுக்கு ஏற்ப தகவல்களின் அடிப்படையில் அடிக்கடி முடிவுகளை எடுக்க வேண்டி வரும்.
உதாரணமாக, நிரலினுடைய ஒரு குறிப்பிட்ட பகுதியை பலமுறை இயக்க வேண்டிய அவசியம் ஏற்படலாம் அல்லது குறிப்பிட்ட நிபந்தனை பொருந்தும் போது மட்டும் நிரலை இயக்க வேண்டிய அவசியம் ஏற்படலாம் அல்லது நிபந்தனைகள் பொருந்தாத போது மட்டும் நிரல் வரியை இயக்க வேண்டிய சூழல் ஏற்படலாம். (சரியான பயனர் பெயர் மற்றும் கடவுச்சொல்லை மட்டும் உள்ளிட்டால் மட்டுமே தகவலை அணுக முடியும் என்ற நிபந்தனையை இதற்கு உதாரணமாக கூறலாம்). நிரல் மொழியில் இதை flow control and looping என்று அழைப்பார்கள்.
நிபந்தனைக் கூற்றுகள் (conditional Statements)
- if statements
- if … else … statements
கண்ணி கூற்றுகள் (looping Statements)
- while loops
- do … while loops
Switch Statements
இந்தப் பகுதியில் இவைகளைப் பற்றி விரிவாக, உதாரணங்களுடன் பார்ப்போம்.
Conditional Statements
வாழ்க்கையில் ஒவ்வொரு விஷயமும் முடிவுகளைச் சுற்றியே சுழல்கிறது. ஒரு நாளில் நாம் எத்தனை முடிவுகளை எடுக்கிறோம் என்று கணக்குப் பார்த்தால் நமக்கே ஆச்சர்யமாக இருக்கும். ஒரு நாளில் நாம் எத்தனையோ முடிவுகளை எடுக்கிறோம், அவை சின்ன முடிவுகளிலிருந்து பெரிய முடிவுகளை வரை இருக்கலாம். எந்த ஆடையை அணிய வேண்டும்? என்ன சாப்பிட வேண்டும்? எந்த சாலையின் வழியாக பயணிக்க வேண்டும்? இது போன்ற எத்தனையோ முடிவுகளை நாம் தினம் தினம் எடுத்துக் கொண்டிருக்கிறோம்.
இதுபோன்று கணினியை முடிவு எடுக்க வைப்பதற்காக அதற்கென தனியாக ஆணைகள் (instructions) இருக்கின்றது. நிபந்தனைக் கூற்று (conditional statements) முடிவுகளை உருவாக்க உதவுகிறது. Conditional statements ஒரு குறிப்பிட்ட கோவையின் (expression) முடிவுகளின் அடிப்படையில் நிரலின் பகுதியை இயக்க வேண்டுமா அல்லது வேண்டாமா என்று கட்டுப்படுத்துகிறது. கோவையானது (expression) true அல்லது false இந்த இரண்டு பூலியன் மதிப்புகளில் ஏதாவது ஒன்றை அளிக்கும்.
PHP யில் இரண்டு வகையான நிபந்தனை கட்டமைப்புகள் இருக்கின்றது. அவைகள் if மற்றும் if … else.
If statement (கூற்று)
நிபந்தனைகளைக் கொண்ட நிரல்களை எழுதுவதற்கான அடிப்படை if கூற்றிலிருந்தே தொடங்குகிறது. If கூற்றின் முதல் வரி if கூற்றையும் அதனைத் தொடர்ந்து பிறை வளைக்குள் (parentheses) கோவைகளையும் (expressions) கொண்டிருக்கும்.
உதாரணம்:
$myMark = 98;
if ($myMark < 100)
மேற்காணும் உதாரணத்தில், $myMark எனும் மாறி (variable)யின் மதிப்பு 2 ஐ காட்டிலும் குறைவாக இருக்கிறதா? என சோதிக்கப்படுகிறது. இருந்தால் true எனவும் இல்லையென்றால் false எனவும் மதிப்பீடு செய்யப்படுகிறது.
If கூற்றில் இரண்டாவது படி என்னவென்றால், கோவை (expression) true (சரி) என்றால் என்ன செய்ய வேண்டும் என்பதைக் குறிப்பதாகும். அவ்வாறு கோவை சரி என்றால் செய்ய வேண்டிய வேலைகள் if கூற்றைத் தொடர்ந்து வரும் open and closing braces க்குள் கொடுக்கப்படும். braces க்குள்தான் கொடுக்க வேண்டும் என்பது கட்டாயமல்ல. Braces இல்லாமல் கொடுத்தாலும் அது ஏற்றுக் கொள்ளப்படும். ஆனாலும் if கூற்றைத் தொடர்ந்து ஒற்றை வரி நிரல் இருந்தாலும் அதை braces க்குள் கொடுப்பதையே பரிந்துரைக்கின்றனர். அப்பொழுதுதான் நிரல்கள்களை எளிமையாக படிக்கவும், பொதுவாக ஏற்படும் தவறுகளை தவிர்க்கவும் முடியும்.
கீழ்காணும் நிரலைப் பாருங்கள்
<?php
$yourMark = 98;
if( $yourMark > 90 ) {
echo “You have obtained ( “.$yourMark.” marks ) Good marks.”;
}
?>
வெளியீடு:
if … else கூற்று (if … else statements)
நாம் மேலே பார்த்த if கூற்றில் கோவை (expression) true (சரி) என்றால் என்ன செய்ய வேண்டும் என்பதை மட்டும்தான் அனுமதிக்கிறது. கோவை (expression) false (தவறு) என்றால் என்ன செய்ய வேண்டும் என்பதை நாம் if கூற்றில் சொல்ல முடியாது. அதற்காகத்தான் if…else கூற்று. கோவை சரி என்றால் என்ன செய்ய வேண்டும் என்பதையும் மற்றும் கோவை தவறு என்றால் என்ன செய்ய வேண்டும் என்பதையும் if…else கூற்றில் நாம் சொல்ல முடியும்.
கீழ்காணும் நிரலைப் பாருங்கள்
<?php
$milkPacketColor = ‘blue’;
if ( $milkPacketColor == ‘blue’ ) {
$milkPrice = 45;
echo “Milk Price is Rs.”.$milkPrice.” p/l”;
echo “<br>”;
}
else {
$milkPrice = 40;
echo “Milk Price is Rs.”.$milkPrice.” p/l”;
echo “<br>”;
}
?>
வெளியீடு
if … else கூற்றை if … else … if கூற்றாகவும் நீட்டிக்க முடியும்.
கீழ்காணும் நிரலைப் பாருங்கள்
<?php
$customerName = “Kathirvel”;
if ( $customerName == “Kathir” ) {
echo “Customer Name : “.$customerName;
echo “<br>”;
}
else if ( $customerName == “Kathirvel” ) {
echo “Customer Name : “.$customerName;
echo “<br>”;
}
else {
echo “Sorry!”;
echo “<br>”;
}
?>
வெளியீடு
கண்ணி கூற்றுகள் ( Looping Statements)
கணினி ஒரே வேலையை எத்தனை முறை வேண்டுமானாலும் திரும்ப திரும்ப அலுக்காமல் செய்யும் என்பது அனைவரும் அறிந்ததே. கணினியைப் பற்றி படிக்கும் அனைவருக்கும் இது தெரிந்ததுதான். அதேபோல் நிரலில் ஒரு குறிப்பிட்ட பகுதியை நிபந்தனையை எட்டும் வரையில் திரும்ப திரும்ப செய்வதற்கு looping statements (கண்ணி கூற்றுகள்) பயன்படுகிறது.
PHP – யில் மூன்று வகையான கண்ணி கூற்றுகள் இருக்கின்றது. அவைகள்
- for loop
- while loop
- do … while loop
for loops (for கண்ணி)
ஒரு எண் தன்னைத்தானே பத்து முறை கூட்டிக்கொள்ள வேண்டுமெனில் அதற்கான PHP நிரல் கீழ்கண்டவாறு இருக்கும்.
<?php
$myInterest = 1;
$myInterest += $myInterest;
$myInterest += $myInterest;
$myInterest += $myInterest;
$myInterest += $myInterest;
$myInterest += $myInterest;
$myInterest += $myInterest;
$myInterest += $myInterest;
$myInterest += $myInterest;
$myInterest += $myInterest;
$myInterest += $myInterest;
echo “My Interest Amount Rs.”.$myInterest;
echo “<br>”;
?>
வெளியீடு
நாம், மேலே உள்ள ஒரு எண்ணை 10 முறை தன்னைத்தானே கூட்டிக்கொள்ளும்படி அமைத்துள்ளோம். ஒரு வேளை 1000 முறை கூட்ட வேண்டும் அல்லது 10000 முறை கூட்ட வேண்டுமெனில். மேலே உள்ளது போன்று நிரலை எழுதிக் கொண்டிருந்தால் நிலைமை என்னவாகும்? நிரலினுடைய வரிகள் அதிகமாவதோடு, முக்கியமாக அதிகமான நேரம் வீணாகும். இதுபோன்ற சூழலை தவிர்ப்பதற்குத்தான் for கண்ணி பயன்படுகிறது.
For கண்ணியினுடைய (loop) தொடரியல் (syntax):
for ( initializer; conditional expression; loop expression )
{
//PHP statements to be executed go here
}
initializer வழக்கமாக counter variable ஐ initialize செய்கிறது. இதற்கு $i மாறியே வழக்கமாக பயன்படுத்தப்படுகிறது. உதாரணமாக $i = 0 ஐ சொல்லலாம். இது $i இன் மதிப்பை 0 என அமைக்கிறது.
எத்தனை முறை loop இயங்க வேண்டும் என்பதை conditional expression நிர்ணயிக்கிறது. Loop 1000 முறை இயங்க வேண்டுமென்றால் $i < 1000 என கொடுக்க வேண்டும்.
இறுதியாக, loop expression counter variable மீது நடக்க வேண்டிய செயலைப் பற்றி கூறுகிறது. உதாரணத்திற்கு counter variable இன் மதிப்பு ஒவ்வொரு முறையும் 1 அதிகமாவதைக் கூறலாம்.
$i++
நாம் மேலே பார்த்த அனைவற்றையும் ஒருங்கிணைத்து ஒரு நிரல் எழுதுவோமா? கீழே உள்ள நிரலைப் பாருங்கள்.
<?php
$myInterest = 1;
for ( $i=0 ; $i < 10 ; $i++ ) {
$myInterest += $myInterest;
}
echo “My Interest Rs.”.$myInterest;
echo “<br>”;
?>
வெளியீடு
While loops (while கண்ணி)
for loop இல் loop ஆனது நிபந்தனையைத் தொடுவதற்கு எத்தனை முறை திரும்ப திரும்ப இயங்க வேண்டும் என்பதை முன்னாடியே சொல்லிவிடுகிறோம். ஒரு வேளை நிபந்தனையைத் தொட எத்தனை முறை loop ஆனது இயங்க வேண்டும் என்பது நமக்கு தெரியவில்லையென்றால் என்ன செய்வது? இங்குதான் while loop பயன்படுகிறது.
While loop –இன் தொடரியல் (syntax of while loop)
<?php
while ( condition )
{
// PHP statements go here
}
?>
condition true ஆக இருக்கும் வரை while loop வேலை செய்யும். false ஆகும் போது loop இயங்காது.
கீழ்காணும் உதாரண நிரலை பாருங்கள்
<?php
$myInterest = 1;
$j = 1;
while ( $j <= 10 ) {
$myInterest += $myInterest;
$j++;
}
echo “My Interest Rs.”.$myInterest;
echo “<br>”;
?>
வெளியீடு
do … while loops(do … while கண்ணி)
do … while loop என்பது while –க்கு அப்படியே நேரெதிரானதாக இருக்கும் என நீங்கள் நினைக்கலாம். while loop ஆனது while loopற்குள் இருக்கும் நிரலை இயக்குவதற்கு முன் முதலில் while loop இல் கொடுக்கப்பட்டிருக்கும் நிபந்தனையை மதிப்பீடு செய்து சோதித்துப் பார்க்கிறது. முதல் சோதனையிலேயே நிபந்தனை தவறு என்றால் அதன் பின்பு loopற்குள் இருக்கும் நிரல்களை இயக்காமல் loop ஐ விட்டு வெளியேறிவிடும். இந்நிலையில், ஒருமுறையேனும் loop ஆனது இயங்க வேண்டும் அல்லது நிபந்தனை இறுதியாகத்தான் சோதிக்கப்பட வேண்டும் என்ற தேவை உங்களுக்கு வரும்போது அதை do … while loop நிறைவேற்றி வைக்கிறது. Do … while loop இன் செயல்பாடும் அதுதான்.
do … while கண்ணியின் இன் தொடரியல் (do … while loop syntax):
<?php
do
{
PHP statements
}
while (conditional expression)
?>
கீழ்காணும் நிரலைப் பாருங்கள்
<?php
$myInit = 0;
do
{
echo “$myInit.Hello PHP!”;
echo “<br>”;
$myInit++;
}
while($myInit < 5);
echo “Thank You!”;
?>
வெளியீடு
PHP switch கூற்று (switch statements)
நாம் ஏற்கனவே if…else கூற்றுகளைப் பற்றி பார்த்துள்ளோம். குறைவான நிபந்தனைகள் என்றால் if…else கூற்றுகளைப் பயன்படுத்தலாம். அதே நேரத்தில் நிபந்தனைகள் அதிகமாக இருக்கும் போதும் if…else கூற்றைக் கொண்டு அதைச் செய்யும்போது, நேரம் வீணாவதோடு அவ்வாறு செய்து கொண்டிருப்பது தேவையில்லாத செயலாகவும் அமையும். ஆகையால் நிபந்தனைகள் அதிகமாகும்போது நாம் தாரளமாக switch கூற்றைப் பயன்படுத்தி அந்த வேலையை எளிமையாக முடிக்கலாம்.
switch கூற்றின் தொடரியல் (syntax)
switch (”value”)
{
case “match1”:
PHP statements
break;
case “match2”:
PHP statements
break;
case “match3”:PHP Essentials
PHP statements
break;
case “match4”:
PHP statements
break;
case “match5”:
PHP statements
break;
default:
PHP statements
break;
}
switch (‘value’) என்பதற்குள் நாம் சோதிக்க வேண்டிய உள்ளீடு அல்லது நிபந்தனையைக் கொடுக்க வேண்டும். எத்தனை case கூற்று (statements) வேண்டுமானாலும் நீங்கள் கொடுத்துக் கொள்ளலாம். case கூற்றுக்குள் இருக்கும் நிபந்தனையோடு உள்ளீடு பொருந்தினால், அதன்பின் இருக்கக்கூடிய நிரல் வரிகள் இயக்கப்படும். பொருந்தாவிட்டால் அடுத்த case கூற்றை ஆராய்துப் பார்க்கும். இது இறுதியாக இருக்கும் case கூற்று வரை தொடரும். எதுவுமே பொருந்தவில்லை என்றால் இறுதியாக இருக்கும் default கூற்றின் கீழ் உள்ள நிரல்கள் இயக்கப்படும். இங்கு முக்கியமாக கவனிக்க வேண்டியது என்னவென்றால் break கூற்றைத்தான். break இல்லாமல் கொடுத்தால் எந்த கூற்று பொருந்தியதோ அதற்கு அடுத்து உள்ள கூற்றும் செயல்படுத்தப்படும்.
உதாரணமாக, ஆங்கிலத்தில் இருக்கக்கூடிய a,e,i,o,u எழுத்துக்கள் வந்தால் அது உயிரெழுத்து என்று நமக்கு செய்தி கிடைக்க வேண்டும். இதற்கு if…else ஐ வைத்து ஒரு நிரல் எழுதினால் எப்படி இருக்கும் என்பதைப் பார்ப்போம்.
<?php
$inputChar = “e”;
if ( $inputChar == “a” ) {
echo “‘$inputChar’ is vowel.”;
echo “<br>”;
}
elseif ( $inputChar == “e” ) {
echo “‘$inputChar’ is vowel.”;
echo “<br>”;
}
elseif ( $inputChar == “i” ) {
echo “‘$inputChar’ is vowel.”;
echo “<br>”;
}
elseif ( $inputChar == “o” ) {
echo “‘$inputChar’ is vowel.”;
echo “<br>”;
}
elseif ( $inputChar == “u” ) {
echo “‘$inputChar’ is vowel.”;
echo “<br>”;
}
else {
echo “Input Character is not a vowel”;
}
?>
இதன் வெளியீடு
மேற்காணும் நிரலை switch கூற்று கொண்டு எழுதும் போது அது எவ்வளவு எளிமையாக அமைகிறது என்று பாருங்கள்.
<?php
$inputChar = “e”;
switch ($inputChar) {
case “a”:
echo “‘$inputChar’ is a vowel”;
break;
case “e”:
echo “‘$inputChar’ is a vowel”;
break;
case “i”:
echo “‘$inputChar’ is a vowel”;
break;
case “o”:
echo “‘$inputChar’ is a vowel”;
break;
case “u”:
echo “‘$inputChar’ is a vowel”;
break;
default:
echo “‘$inputChar’ is not a vowel”;
break;
}
?>
வெளியீடு
கண்ணி முறிப்பு (Breaking a Loop):
loop ஐ break பண்ண வேண்டிய அவசியம் நமக்கு எப்போதாவது ஏற்படலாம். இந்த தேவையை நாம் break கூற்று மூலமாக நிறைவேற்றி கொள்ளலாம்.
1000 வரை எண்களை அச்சிடும்படி கீழ்காணும் நிரலை எழுதியிருக்கிறோம். ஆனாலும் loop ஆனது 10 என்ற எண்ணை அடைந்தவுடன் break கூற்று மூலமாக முறிக்கப்படுகிறது.
நிரல்:
<?php
for ( $i = 0; $i < 1000; $i++) {
if ($i == 10) {
break;
}
echo “<b>$i</b><br>”;
}
?>
வெளியீடு:
Breaking out of Nested Loops
<?php
for ( $i = 1; $i < 20; $i++) {
echo “<h1>$i</h1><br>”;
for ( $j = 1; $j < 50; $j++)
{
echo “$j<br>”;
if ($j == 5) {
break;
}
}
}
?>
வெளியீடு: