سطح مقاله: تخصصي
منبع: انجمن هاي فارس وب ([ جهت مشاهده لينك عضو شويد ! ])
تو این قسمت می خوام در مورد شرط ها با هم صحبت کنیم . به نظر من شرط ها پا های هر زبان برنامه نویسی هستند که بدون اونها راه رفتن غیر ممکن و زندگی مشکله !
در نظر بگیرید ، شما برای خرید یک لباس سلیقه ای دارید و برای رسیدن به لباس مورد نظرتون شرط هايی می ذارید : "اگه" سفید باشه ، سیاه نباشه ، نازک نباشه ، کلفت اما گشاد نباشه ، از کلمات "باشه" و "نباشه" استفاده می کنید و گاهاً دوست دارید در صورتی لباس رو بخرید که هم سبز "و" هم کوتاه باشه و گاهاً حالا اگه سبز "یا" سرمه ای "هست" موردی نداره بخریدش یا "نه" مشکی باشه و "نه" آبی ، اگه سیاه "نيست" می خرم ، "وگر نه" آبی رو بر می دارم. ما در تمام زبان هاي برنامه نويسي برای کلمات بالا که داخل کوتیشن نوشتم معادلی داریم که در php به صورت زیر هستش :
اگه : if
باشه : ==
نباشه : =!
و : and (&&)
یا : or (||)
نه : not (!)
وگر نه : else
هست: true
نيست: false
به طور كلي همه ي شرط ها داراي عبارت شرط و بدنه ي شرط هستن كه عبارت شرط ، شرط رو اعلام و در صورت درست بودن ، دستورات داخل بدنه اجرا مي شن. دو كلمه ي كليدي true و false هم هستند كه همانند معناشون true به صحت يا ادامه ي كار اطلاق مي شه و false هم به نادرستي و يا اتمام كار. براي مثال ؛ اگه فارس وب از نظر شما سايت خوبي باشه ، مقدار true و در غير اين صورت مقدارfalse برگردونده مي شه! انواع شرط ها رو با هم بررسي مي كنيم:
1- شرط ساده با if : اين شرط زماني كاربرد داره كه بيشتر مقدار درستي و يا نادرستي چيزي رو چك مي كنيم يا اينكه مد نظر ما فقط يك گزينه هستش.
if ($pirhan == "ghermez")
echo "oh man ke perspolisi nistam !";
تحلیل کد : در اينجا اگه متغير pirhan$ برابر با مقدار رشته ي "ghermez" باشه ، دستور echo اجرا مي شه (مقدار درست يا true) و اگر نباشه (مقدار نادرست يا false) هيچ اتفاقي نمي افته ، لازمه كه شما قبلاً به متغير pirhan$ مقداري رو اختصاص بدين ، در غير اين صورت متغير pirhan$ حاوي مقدار صفر (0) يا تهي هستش.
نکته 1: در اين مدل به دليل اينكه تنها يك دستور بعد از شرط آورده شده ، نيازي نيست كه دستور حتماً بين { } قرار بگيره ، ولي وقتي كه لازمه در صورت برقرار بودن شرط ، چندين دستور اجرا بشه ، حتماً دستورات بايد بين { } قرار بگيرن ، در غير اين صورت ، در صورت برقراري شرط تنها دستور اول اجرا مي شه و دستورات بعدي بدون توجه به شرط اجرا مي شن ، به مثال زير نگاه كنيد:
if ($pirhan == "ghermez") {
echo "oh man ke perspolisi nistam !";
echo "bazam migam nistaaaaaaamm!";
}
در كد بالا در صورت برقراري شرط هر دو دستور echo اجرا مي شن و در اگه شرط برقرار نباشه هيچ كدوم اجرا نمي شن ؛ ولي در كد پايين در هر صورت دستور echo دوم اجرا و دستور echo اول تابع شرط هستش:
if ($pirhan == "ghermez")
echo "oh man ke perspolisi nistam !";
echo "bazam migam nistaaaaaaamm!";
نکته 2: همونطور كه ديدين بدنه ي شرط ({ }) ؛ قسمتي كه دستورات نوشته مي شن با آكولاد باز و بسته مي شه ، شما مي تونيد به جاي باز و بسته كردن آكولاد از : و ;endif استفاده كنيد ، مثال بالا رو بنا به اين نوع نگارش مي بينيم (در هر صورت دستور echo دوم اجرا و دستور echo اول تابع شرط هستش):
if ($pirhan == "ghermez") :
echo "oh man ke perspolisi nistam !";
endif;
echo "bazam migam nistaaaaaaamm!";
نکته 3: به نحوه ي قرار گيري ; (سمي كولن - semicolon) ها در انتهاي دستورات تمام مثال ها دقت كنيد.
2- شرط ساده if به همراه else : اين شرط زماني كاربرد داره كه حتماً يك نتيجه رو لازم داريم .
if ($pirhan == "ghermez") {
print "pirhan ghermez hast!";
} else {
print "pirhan ghermez nist!";
}
تحلیل کد : اين اسكريپت مفهومش اينه كه اگه متغير pirhan$ برابر با رشته ي "ghermez" باشه عبارت !pirhan ghermez hast رو براي ما چاپ مي كنه ؛ در غير اين صورت عبارت !pirhan ghermez nist چاپ خواهد شد.
نکته: اينجا هم چون بعد از if و بعد از else تنها يك دستور داشتيم ، نيازي به استفاده از بلاك شرط ({}) نبود ، همينطور مي تونيم بعد از else (اگر نه) يك شرط يا چند شرط ديگه بذاريم ، حالا اين مثال رو جور ديگه اي نشون مي دم:
if (!($adad)) {
echo "adad ta'rif nashode!";
} else {
if ($adad == 1) echo "adad = 1 hast!";
if ($adad == 2) echo "adad = 2 hast!";
if ($adad == 3) echo "adad = 3 hast!";
}
تحلیل کد : شرط ((if (!($adad معنيش اينه كه "اگه متغير adad$ وجود نداره" ، همونطور كه گفتم علامت ! يا عبارت not به معني نفي شرط هستش "اگر وجود نداره" ، خوب واضح هستش در صورت عدم وجود متغير adad$ و يا صفر (0) بودنش عبارت شرط true مي شه و عبارت "adad ta'rif nashode" نمايش داده مي شه و در غير اينصورت ، يعني false بودن عبارت شرط و زماني كه متغير adad$ حاوي مقدار ياشه ، 3 شرط ديگه بررسي مي شه.
3- شرط با الگوي else if : زماني از اين الگو استفاده مي كنيم كه در يك شرط نياز به استفاده از يك يا چند شرط زير مجموعه باشه.
if ($pirhan == 'ghermez') {
echo 'pirhan ghermez ast!';
} else if ($pirhan == 'abi') {
echo 'pirhan abi ast!';
} else {
print 'range pirhan moshakhas nist!';
}
تحلیل کد : اگه متغير pirhan$ برابر با رشته ي "ghermez" باشه عبارت !pirhan ghermez ast چاپ مي شه ، ولي اگه اين شرط برقرار (true) نباشه باز با يك شرط ديگه كه شبيه شرط نوع دوم هست روبرو مي شيم كه فكر مي كنم به راحتي قابل درك باشه ، شما مي تونين شرط ها رو تا جايي كه لازمه تو در تو بنويسيد.
نکته: عبارت else if رو مي شه با هم يعني به صورت elseif هم نوشت.
4- شرط با دستور switch : اين نوع شرط به نظر من يك if و چندين else if و در نهايت يك else هستش ؛ ولي به صورت سازماندهي شده كه كار رو براي برنامه نويس راحت مي كنه ، به مثال زير نگاه كنيد:
switch ($pirhan) {
case "aabi":
echo "taraf esteghlaliye!";
break;
case "ghermez":
echo 'taraf perspolisiye!';
break;
case "sefid":
echo 'taraf malavaniye!';
break;
default:
echo "range pirhan ma'loom nist!";
}
تحلیل کد : عبارت (switch ($pirhan يعني مقصود ما متغير pirhan$ هستش ، عبارت :"case "aabi يعني "اگه متغير pirhan$ برابر با عبارت aabi باشه" و به عبارتي يعني ("if($pirhan=="aabi ، بعد از اين عبارت دستور echo اومده كه مي شه چندين دستور به كار برد ، كلمه ي كليدي break هم به معناي انتهاي دستورات اون شرط هستش و عبارت :default هم مي شه گفت مفهوم else رو داره كه اگه هيچ كدوم از دستوراي به كار برده شده درست يا true نبودند و اجرا نشدن ، دستور يا دستورات بعد از :default اجرا بشه. حالا همين دستور رو با فرم if و elseif و else مي نويسم:
if($pirhan=="aabi") echo "taraf esteghlaliye!";
elseif ($pirhan=="ghermez") echo 'taraf perspolisiye!';
elseif ($pirhan=="sefid") echo 'taraf malavaniye!';
else echo "range pirhan ma'loom nist!";
نکته: دستور switch مي تونه چند تا case داشته باشه ، به اين ترتيب هر كدوم از گزبنه هاي case كه برقرار باشن ، اون بلوك دستورات اجرا و از اجراي ادامه ي دستورات صرفنظر مي شه (break) .
5- شرط با الگوي ? و : : اين نوع خلاصه شده ي if و else ساده هستش كه تنها كارش اينه كه با توجه به شرط ، مقادير خاصي رو به يك متغير اختصاص مي ده .
$perspolisi = ($pirhan == 'ghermez') ? 'yes' : 'no';
تحلیل کد : در صورتي كه شرط ('pirhan == 'ghermez$) بر قرار باشه ، يعني متغير pirhan$ برابر با رشته ي "ghermez" باشه ، اولين مقدار بعد از ? به متغير perspolisi$ اختصاص پيدا مي كنه و در غير اين صورت ، يعني عدم برقراري شرط ، عبارت بعد از : به متغير perspolisi$ نسبت داده مي شه. براي روشن شدن بهتر موضوع من همين شرط رو با الگوي if و else تكرار مي كنم:
if($pirhan == 'ghermez') $perspolisi = 'yes'; else $perspolisi = 'no';
توابع ()isset و ()empty : اين دو تابعي هستد كه معمولاً در شروط براي صحت وجود و يا عدم وجود يك متغير و يا يك مقدار استفاده مي شن ، اين توابع به صورت محض عمل مي كنند ، يعني حتي به مقدار false و يا صفر (0) هم حساس هستن و فقط زماني كه متغيرها تهي بوده و يا تعريف نشده باشن به حساب نميان و مقدار false برگردونده مي شه ، طريقه ي استفاده ي اين دو تابع به صورت زير هستش:
$Bonyanalam = false;
if (isset($Bonyanalam)) echo "Bonyanalam is alive!";
elseif (empty($Bonyanalam)) echo "Bonyanalam is not alive!";
تحلیل کد : شرط ((isset($Bonyanalam) به اين معني هستش كه "اگه متغير Bonyanalam$ مقداري رو در بر داره" همونطور كه گفتم ؛ مقادير صفر و يا false هم براي اين توابع يك مقدار به حساب مياد ، پس اين شرط برقرار و عبارت !Bonyanalam is alive برگردوده مي شه ، همينطور شرط ((empty($Bonyanalam) به معني اينه كه "اگه متغير Bonyanalam$ تهي يا تعريف نشده باشه" . دقت داشته باشيد كه شرط (if (isset($Bonyanalam با (if ($Bonyanalam و همونطور شرط (if (empty($Bonyanalam با (if (!($Bonyanalam تفاوت هايي دارند.
مثال هاي تكميلي: براي آشنايي بيشتر شما چند نمونه مثال مي زنم :
مثال 1: فرض كنيم كدي لازم داريم كه با توجه به سن وارد شده ، رده ي سني رو به ما اعلام كنه:
$age = 55;
if (empty($age)) echo "سن مشخص نشده !";
elseif ($age < 6) echo "اين سن كودك است !";
elseif ($age < 9) echo "اين سن نو نهال است !";
elseif ($age < 17) echo "اين سن نوجوان است !";
elseif ($age < 40) echo "اين سن جوان است !";
elseif($age < 50) echo "اين سن ميانسال است !";
elseif($age < 100) echo "اين سن پيرمرد است !";
else echo "خدا بيامرزه !";
تحلیل کد : همونطور كه مي دونيد ((if (empty($age به اين معنيه كه "اگه متغير age$ تعريف نشده باشه" و در شرط ها هم از علامت كوچكتر (>) استفاده شده ، (elseif($age < 100 يعني اگر نه ، اگه متغير age$ كوچكتر از 100 باشه . به عنوان تمرين پيشنهاد مي كنم همچين برنامه اي رو با اوقات روز (ظهر ، عصر ، شب و ...) بنويسيد و دوباره كد رو با استفاده از دستور شرطي switch بازنويسي كنيد.
مثال 2: حالا فرض كنيم ما لازم داريم كه فقط بفهميم سن وارد شده ، سن يك نوجوان هست يا نه ، به اسكريپت زير نگاه كنيد:
$age = 15;
if (($age >= 9) && ($age < 18)) echo "اين سن نوجوان است !";
else echo "اين سن نوجوان نيست !";
تحلیل کد : در صورتي كه متغير age$ بزرگتر مساوي 9 و كوچكتر از 18 باشه ، عبارت شرط درست يا true خواهد شد و عبارت "اين سن نوجوان است !" براي شما ظاهر مي شه. همونطور كه در اول اين مقاله توضيح دادم ، علامت && يا عبارت and به معني "و" يا اجتماع چند شرط هستش . شما مي تونين بقيه ي علائم و عبارات شرطي رو به همين صورت به جهت تمرين امتحان كنيد .
تا به حال شروط ما شامل اعمال مقايسه اي و دستورات ما شامل دستور echo بودن ! شما مي تونين از دستورات ، توابع و حتي شرط ها براي دستورات شرطي استفاده كنيد! رفته رفته شرط ها رو به نسبت بسط مي دم و اونها رو با توابع و دستورات تكرار تركيب مي كنم ، فقط اگه شما تمرين و مطالعه ي كافي نداشته باشين ، مطمئناً نمي تونين اونطور كه بايد پيش برين!
اين بود بخش چهارم ! اميدوارم تو زندگي فقط براي موفقيت خودتون شرط بذاريد و براي ديگران از شرط و شروط استفاده نكنيد !
موفق باشيد.
این مقاله آموزشی برای اولین بار در انجمن هاي فارس وب ([ جهت مشاهده لينك عضو شويد ! ]) و به زبان شيرين فارسي نوشته شده است . لطفا" با کپی های بدون منبع مطالب ، زحمات نویسنده ی آن مطلب را خدشه دار نکنید .



: