در سری مقالات آموزش پیاچپی در وبلاگ مهرآستان تقریبا پایه کار برای کدنویسی کاربردیتر را یاد گرفتهاید. در این جلسه میخواهیم کدنویسی شرطی را به شما آموزش دهیم و یاد بگیریم که چگونه شرایط مختلف را در پروژههای خود کنترل کنیم. در ادامه مطلب با ما همراه باشید.
گاهی در برنامهنویسی شرایط پیشآمده را باید بتوانید پیشبینی و کنترل کنید. به عنوان مثال اگر کاربر هر نوع ورودی را وارد کرد، باید بدانید که چه عملیاتی بر روی ورودی انجام شود و تا نتیجه موردنظر به وی نمایش داده شود. این اصول ساده عبارت شرطی در پیاچپی است!
در تمامی کلاسهایی که طی دوران برنامهنویسی برگزار کردهام همیشه یک نکته مهم را یادآوری کردهام؛ همیشه سعی کنید یک الگوریتم مناسب را پیش از شروع کدنویسی در مورد پروژه مدنظرتان آماده کنید. ما در اینجا نمیخواهیم وارد مبحث الگوریتم شویم اما طرح کلی پروژه همراه با پیشبینی شرایط مختلفی که ممکن است رخ دهد را الگوریتم میگوییم. باز هم اشاره میکنیم که این تعریف صرفا به منظور فهم بهتر افراد تازهوارد به دنیای پیاچپی است و بنابراین زیاد به جزئیات آن توجه نکنید. بهتر است کمی در مورد الگوریتمنویسی و اصول آن در گوگل جستجو کنید پیش از هر پروژه، ترجیحا الگوریتم آن را آماده کنید.
دستور شرطی If
همانند تمامی زبانهای برنامهنویسی، دستور شرطی if یکی از مهمترین دستورهایی است که باید آن را یاد بگیرید. بعید به نظر میرسد در یک پروژه به دفعات از این دستور استفاده نکنید و همواره یکی از پراستفادهترین و البته کاربردیترین ابزارها برای کنترل شرایط مختلف در کدنویسی محسوب میشود. همانطور که در بالا اشاره کردیم، کنترل شرطی به کامپایلر پیاچپی میگوید که اگر (if) شرایط خاصی رخ داد آنگاه کدام عملیات را باید انجام داد. پیش از اینکه به سراغ ادامه آموزش برویم بهتر است یادآوری کنیم که این آموزش ادامه و دنباله آموزشهای قبلی است و برای درک این بخش باید سه جلسه قبلی را بهخوبی فرا گرفته باشید.
برای استفاده از این دستور ابتدا if را نوشته و سپس در پرانتز مقابل آن شرط موردنظر را مینویسیم و در نهایت قطعه کدی که در صورت صحیح بودن شرط قرار است اجرا شود را بین علامت } و { مینویسیم. به قطعه کد مثال زیر دقت کنید: (برای استفاده و اجرای این مثال مانند قبل xampp را اجرا کنید و یک فایل php جدید را با نام دلخواه براساس آموزشهای جلسات قبل ایجاد کنید. سپس کدهای زیر را در آن فایل نوشته و نتیجه را در مرورگر تست کنید.)
<?php
//usiing if
$var1 = “weblog”;
$var2 = “mehrastan”;
if ($var1 == “weblog”)
{
echo ‘you will go to weblog’;
}
?>
خب در کد بالا ابتدا دو متغیر را تعریف و مقداردهی کردهایم. سپس دستور if را بکار گرفتهایم و در شرط آن با استفاده از عملگرهای کنترلی که در جلسه قبل به صورت کامل و مفصل آنها را توضیح دادیم، شرط موردنظر را وارد میکنیم. در صورتیکه شرط داخل پرانتز برقرار باشد، کدی که بین } و { قرار گرفته اجرا خواهد شد و در غیر اینصورت هیچ کدی اجرا نمیشود. از آنجا که شرط کد بالا برقرار است و نتیجه آن true است، پس کد بین براکتها اجرا خواهد شد و بنابراین عبارت you will go to weblog در مرورگر کاربر نمایش خواهد یافت.
اما بگذارید شرط را تغییر دهیم تا این بار برقرار نباشد و در نتیجه False را برگرداند.
<!?php
//usiing if
$var1 = “weblog”;
$var2 = “mehrastan”;
if ($var2 == “weblog”)
{
echo ‘you will go to weblog’;
}
?>
از آنجا که مقدار متغیر var2 در کد بالا برابر با weblog نیست پس شرط داخل پرانتز نتیجه false را بر میگرداند و در نتیجه کدی که بین } و { قرار گرفته این بار اجرا نمیشود.
کنترل بیشتر شرط با else
مثالهای بالا در واقع سادهترین شکل استفاده از دستور شرطی if بودند. اما میتوانیم این دستور را در حالت پیشرفتهتری نیز بکار ببریم. مثلا بگوییم اگر شرط موردنظر برقرار بود یک کد و اگر شرط برقرار نبود کد دیگری اجرا شود. برای این منظور باید از else نیز در دستور if استفاده کنیم. به مثال زیر توجه کنید:
<?php
//using if … else
$var1 = “weblog”:
$var2 = “mehrastan”;
if ($var1 == “weblog”)
{
echo “you will go to weblog”;
}else{
echo “you will not go to weblog”:
}
همانطور که میبینید استفاده از else بسیار آسان است و کافی است آن را در دنباله دستور if بنویسیم و شرط موردنظر برای شرایطی که عبارت مقابل if برقرار نباشد را در این بخش وارد کنید. در کد بالا ابتدا توسط دستور if بررسی میکنیم که آیا مقدار متغیر var1 برابر با weblog است یا خیر. اگر شرط برقرار بود عبارت you will go to weblog در مرورگر کاربر نمایش خواهد یافت و اگر شرط برقرار نبود، کدی که در بخش else قرار داده شده اجرا میشود که در اینجا عبارت you will not go to weblog است.
حالا یک تمرین برایتان داریم! در کد بالا چون شرط برقرار است، مشخصا عبارتی که در مرورگر نمایان میشود you will go to weblog خواهد بود. شما کد را به نحوی تغییر دهید که شرط برقرار نباشد و عبارت you will not go to weblog در مرورگر نمایان شود.
روش کلی و استاندارد استفاده از if به همین سادگی بود که خدمتتان توضیح دادیم. اما میتوان از if به صورت مختصرتر و کاربردیتری هم استفاده کرد که فعلا کاری با آن روشها نداریم چراکه قصد ما ارائه روش آموزشی بسیار ساده و به دور از پیچیدگی است. در ادامه دروس و در مثالهای کاربردیتر و عملیتر با این حالات مختلف هم آشنا خواهید شد.
گفتیم که در عبارات شرطی که در دستور if بکار میبریم همیشه دو حالت بیشتر پیش نمیآید: یا شرط برقرار است که در این حالت مقدار true را بر میگرداند یا شرط برقرار نیست که در این حالت مقدار false را بر میگرداند. در برخی مواقع در کدنویسی شرایطی پیش میآید که نیاز دارید از این نکته با یک روش بسیار آسان بهره ببرید. ابتدا طبق معمول توجه شما را به مثال زیر جلب میکنیم و در ادامه آن را به طور دقیق مورد بررسی قرار میدهیم:
<?php
$x = true;
$y = false;
if ($x){
echo “we are ture!”;
}else{
echo “we are false!”;
}
?>
حتما تعجب کردهاید که چرا به جای نوشتن یک شرط در مقابل دستور if فقط نام متغیر x را آوردهایم. بهنظر شما نتیجه اجرای کد بالا چه خواهد بود؟ اگر نکات گفته شده را بهخوبی فرا گرفته باشید باید بدانید که نتیجه کد بالا چاپ عبارت we are ture! در مرورگر خواهد بود. اما چرا؟ گفتیم هدف از شرطی که در پرانتز نوشته میشود نهایتا به دست آمدن یک true یا false یا همان صحیح و غلط بودن است. از آنجا که مقدار متغیر x را true تعیین کردهایم پس دستور if کاری به هیچ چیز ندارد جز خروجی که در این مثال خروجی متغیر x همان true است و در این حالت شرط برقرار بوده و در نتیجه we are true چاپ میشود. اما اگر به جای x در شرط دستور بالا y را قرار دهیم چه میشود؟ عبارت بخش else یعنی we are false! در مرورگر نمایان خواهد شد.
کنترل چند عبارت شرطی با else if
اما باز هم میتوان دستور if را پیشرفتهتر از این هم مورد استفاده قرار داد. فرض کنید در پروژه خود با شرایطی مواجه شدهاید که باید چند حالت مختلف را بررسی کنید و در صورتی که هر کدام از شرایط موردنظر برقرار بود کد خاصی اجرا شود. در اینجا دو سناریو یا به اصطلاح برنامهنویسها، دو سولوشن (solution) یا همان راهحل اصلی برای این منظور وجود دارد. اول اینکه برای هر شرایطی یک دستور if جداگانه بنویسیم و دوم اینکه یک دستور if چند شرطه را مورداستفاده قرار دهیم. در پیاچپی میتوانید چندین شرط را به صورت همزمان با یک دستور if بررسی کنید. بدین منظور دقیقا مانند else باید از دستور else if استفاده کنید با این تفاوت که این بار در مکان else if هم میتوانید مثل if اصلی شرط تعیین کنید. البته دستورات دیگری نیز برای بررسی چند شرط وجود دارند و اصولا در php برای هر مسئلهای تعداد زیادی روش وجود دارد. به کد زیر توجه کنید:
<?php
$site1 = “weblog”;
$site2 = “forum”;
$site3 = “mehrastan”;
if ($site1 == “weblog”)
{
echo “site is weblog”;
}else if ($site1 == “forum”)
{
echo “site is forum”;
}else if ($site1 == “mehrastan”)
{
echo “site is mehrastan”;
}else{
echo “site is not in list”;
}
?>
مثال بالا را به نوعی میتوان حالت استاندارد استفاده از دستور کامل if دانست. در ابتدا سه متغیر معرفی و مقداردهی شدهاند. سپس با دستور if شرط اول را بررسی میکنیم که اگر مقدار متغیر site1 برابر با weblog بود عبارت site is weblog چاپ شود. سپس شرط دیگری را با else if بررسی میکنیم و میگوییم اگر متغیر site1 برابر با forum بود عبارت site is forum چاپ شود. در نهایت شرط سومی را نیز مجددا با دستور else if بررسی کردهایم که اگر site1 برابر با mehrastan بود، عبارت site is mehrastan چاپ شود. سپس در آخر با استفاده از دستور else به پیاچپی اعلام میکنیم که در صورت برقرار نبودن هیچکدام از این شرطها عبارت site is not in list در مرورگر چاپ خواهد شد.
استفاده از if به صورت تو در تو
دستور if را میتوانید به صورت تو در تو نیز استفاده کنید. با بزرگتر شدن پروژهها رفته رفته نیاز به استفاده از if به صورت تو در تو خواهید داشت. همچنین برای ساده سازی برخی کارها میتوان به صورت زیرکانه از if های تو در تو بهره گرفت. البته چون فعلا نیازی به استفاده از چنین حالتی نداریم و نیز نمیخواهیم مبحث را سنگینتر کنیم برای این حالت در حال حاضر یک مثال ساده میآوریم و در بخشهای پیشرفتهتر و انجام کدنویسی برای تمرینات عملی، بیشتر با این حالات و تکنیکها آشنا خواهید شد.
<?php
$fname = “mojtana”;
$lname = “bolhasani”;
if ($fname == “mojtaba”){
if ($lname == “bolhasani”)
{
echo ” your full name is mojtaba bolhasani”:
}
}else{
echo “your are not in list”;
}
سعی کنید کد بالا را ابتدا خودتان تحلیل کنید. در ابتدا دو متغیر تعریف و مقداردهی شدهاند. سپس در شرط اول بررسی میکنیم که آیا متغیر fname برابر با mojtaba است یا خیر. در صورتی که شرط برقرار نباشد کد بخش else اجرا خواهد شد و در صورتی که درست باشد پیاچپی به سراغ if دوم میرود و سپس در این if جدید بررسی میکنیم که آیا متغیر lname برابر با bolhasani است یا نه. اگر این شرط هم برقرار باشد در نهایت عبارت your full name is mojtaba bolhasani در مرورگر نمایان خواهد شد.
این حالت ساده استفاده از if تو در تو بود ولی همانطور که اشاره کردیم پیاچپی آنقدر دست توسعهدهنده را باز میگذارد که برای انجام هر کاری میتوان از روشها و سولوشنهای ابتکاری و پیشفرض زیادی بهره برد.
بررسی چند شرط به صورت همزمان
گاهی نیاز است تا چند شرط به صورت همزمان با هم برقرار باشند تا به کد اجازه دهیم عملیات خاصی را انجام دهد. بیایید ثابت کنیم پیاچپی چرا انقدر محبوب است! خب مثال بخش قبلی را به خاطر بیاورید که دو شرط را به صورت تو در تو بررسی کردیم. میتوان کد بالا را به این صورت هم نوشت:
<?php
$fname = “mojtana”;
$lname = “bolhasani”;
if ($fname == “mojtaba” && $lname == “bolhasani”)
{
echo ” your full name is mojtaba bolhasani”:
}else{
echo “your are not in list”;
}
?>
اگرچه کد بالا نسبت به مثال قبلی بسیار خلاصهتر و خواناتر است اما نتیجه کار یکی است! یکی از دلایل لذتبخش بودن برنامهنویسی با پیاچپی همین موارد است! در جلسه قبلی با عبارات کنترلی آشنا شدید و حالا در این مثال از آنها کمی استفاده کردیم. در دستور if میتوانید هر چقدر که دلتان میخواهد شرایط مختلف را به صورت همزمان با هم بررسی کنید. در کد بالا دو شرط به صورت همزمان بررسی میشوند و در صورتی که هر دو درست باشند، عبارت your full name is mojtaba bolhasani چاپ خواهد شد و در غیر این صورت هم که دیگر خودتان میدانید! البته چون در بین دو شرط نوشته شده عبارت && را قرار دادهایم وضعیت به این صورت پیش میرود چراکه && در صورتی true را بر میگرداند که هر دو طرف آن با هم برابر باشند. زیاد نگران این بخش هم نباشید و فقط سعی کنید آن را برای خود تحلیل کنید.
دیدید که با استفاده از دستور if میتوان شرایط مختلف و وضعیتهای گوناگون را در برنامهنویسی با php پیشبینی و کنترل کرد. برای فراگرفتن هرچه بهتر این مبحث سعی کنید برای خود چند مثال ایجاد کنید. چند شرط را در نظر بگیرید و برای آن کد بزنید! سعی کنید از آرایهها نیز استفاده کنید. همچنین چند شرط را در دستور if بکار بگیرید تا بخوبی این مبحث را هم درک کنید.
اگر سوالی در مورد هر یک از مباحث مطرح شده داشتید، آن را در بخش دیدگاهها بپرسید. ما و سایر کاربران در حد توان پاسخ شما را خواهیم داد.
منبع: زومیت