بات:
مقدمه اي بر PHP - قسمت دوم(پست شده در تاریخ 2007/09/29, 23:00:56)
توی این قسمت میخوایم یکی از ساده ترین مفاهیم اکثر زبان های برنامه نویسی رو درک کنیم.مفهوم اگر یا if رو تقریبا شما هر روز بار ها توی حرف زدنتون استفاده می کنید! این مفهوم تو اکثر زبان های برنامه نویسی هم وجود داره که در ادامه با مثال می بینیم که توی php چطوری میشه بکارش برد.
عبارت های if، else و elseif
اول با یه مثال ساده شروع می کنیم. یه نفر از شما می پرسه "آیا 5 بزرگ تر از 6 است؟" شما پیش خودتون میگید اگر با منطق من 5 بزرگتر از 6 هست بگو آره در غیر این صورت بگو خیر، و در نهایت می گی خیر چون 5 بزرگتر از 6 نیست. حالا همین مثال رو توی php مینویسیم:if در واقع همون اگر تو زبان فارسی هست و همیشه جلوش داخل پرانتز یه گزاره قرار می گیره! گزاره یعنی یک عبارت که یا درست باشه (true) یا غلط (false). در صورتی که درست باشه کمپایلر php عبارت های بعد از if رو که بین { و } هستند رو اجرا می کنه در غیر این صورت عبارت های بعد از else رو که توی } و { هستند رو اجرا می کنه. مثلا توی این مثال ما همه می دونیم که 5 > 6 نیست پس نتیجه ی این گزاره false هست و در نتیجه عبارات بعد از else اجرا می شن. یعنی توی صفحه می نویسه No! که جوابی هست که ما انتظار داشتیم.
حالا اگر به جای 5 > 6 گزاره ی 6 > 5 رو داشتیم، جواب گزاره true می شد و در نتیجه نتیجه ی Yes! رو می گرفتیم.
اصلا نگران نباشید اگر هنوز درست متوجه نشدین. با مثال های بیشتر این موضوع کاملا جا میفته.
توی این مثال ما اول مقدار 100 رو توی $age ریختیم . توی خط سوم می به دستور if میرسیم. که میگه اگر $age > 80 یه گزاره ی صحیح بود عبارت You are old! رو به عنوان خروجی بده. همونطوری که می بینیم $age بزرگ تر از 80 هست پس روی خروجی You are old! رو خواهیم دید.
<?php $age = 100; if ($age > 80) { echo "You are old!"; } ?>
- ببخشید چرا اینجا عبارت else رو نداریم؟
- " عبارت else یه عبارت Optional یا اختیاریه و ما می تونیم if بدون else داشته باشیم. "
- خوب حالا اگر مقدار $age کمتر از 80 میشد چه اتفاقی میفتاد؟
- " اگر مقدار $age مثلا 50 بود وقتی کمپایلر به خط سوم می رسید می دید گزاره غلط هست و در نتیجه عبارات بین { و } بعد از if رو اجرا نمی کرد و خروجی ما خالی می شد. "
توی این مثال چند تا نکته ی جدید داریم. یکی علامت >= هست که به مفهوم بزرگتر مساویه، همونطوری که حدس زدید <= هم به مفهوم کوچکتر مساویه. و بعدی elseif هست که الان خط به خط جلو می ریم و می بینیم چیه!
خوب کمپالر توی خط دوم مقدار 18 رو توی $grade قرار میده و خط سوم به if میرسه و می بینه که 18 بزرگتر مساوی 19 نیست پس گزاره غلطه و دستور echo "A" اجرا نمیشه. بعد از اون به اولین elseif میرسه. دستور elseif به معنی در غیر این صورت اگر هست. کمپایلر می بینه که $grade بزرگتر از 17 هست پس این شرط درسته و در نتیجه دستورات داخل { و } جلوی این elseif رو اجرا می کنه و دیگه elseif ها و else بعدی رو چک نمی کنه! پس در نتیجه خروجی ما "B" خواهد بود.
این از خاصیت های ساختار if، elseif و else هست. یعنی هر جا شرطی درست بود دیگه شرط های دیگرو چک نمی کنه. که اسمش هم همین رو نشون میده. ما می گیم اگر این گزاره درست بود فلان کار رو بکن، در غیر این صورت اگر این یکی درست بود یکار دیگه بکن و در نهایت هم اگر هیچ کدوم درست نبودن عملیات بین { و } بعد از else رو انجام بده.
حالا می ریم سراغ مثال بعد:
توی این مثال هم دو تا نکته ی جدید داریم.
همونطور که می بینید توی خط سوم ما از گزاره ی $grade = = 20 استفاده کردیم. حالا این = = یعنی چی؟ توی زبان php و خیلی زبان های دیگه برای اینکه چک کنیم دو تا مقدار با هم مساوی هستند یا نه از = = استفاده می کنیم. پس باید حواستون باشه که از = برای چک کردن اینکه دو مقدار با هم مساوی هستند یا نه استفاده نکنید چون اگر این کار رو بکنید php به شما هیچ errorای هم نمی ده اما شما نتیجه ی مورد انتظارتون رو دریافت نخواهید کرد. مثلا توی همین مثال اگر بجای = =، علامت = رو قرار بدیم همیشه خروجی Full mark رو خواهیم گرفت.
- ببخشید میشه بیشتر توضیح بدید که چرا؟
- " اول باید یه نکترو بگم! اکثر زبان های برنامه نویسی 0 رو به عنوان false یا غلط در نظر می گیرن و هر عدد دیگه بجز اون رو به عنوان true یا درست! php هم جزو همون زبان هاست.حالا اگر به جای = = از = استفاده کنیم کمپایلر به خط سوم که میرسه مقدار 20 رو توی متغیر $grade میریزه بجای اینکه اون دو تارو مقایسه کنه و در نهایت می بینه مقدار $grade عددی بجز صفر هست پس این گزاررو درست در نظر می گیره و Full mark رو اکو می کنه. اگر مقدار $grade بجای 20، 17 یا 18 یا هر عدد دیگه ای هم می بود باز به ما Full mark رو می داد که نتیجه ی مطلوب ما نبود. پس حواستون باشه توی if برای مقایسه باید از = = استفاده کنیم و = برای اینکار غلطه. "
همونطوری که توی این مثال می بینید ما بعد از if از { و } استفاده نکردیم. چون فقط یه خط بعد از if بود اما بعد از else چون دو خط دستور داشتیم باید حتما از { و } استفاده می کردیم.
چیزی که شاید ذهنتون رو مشغول کرده باشه خط هشتم هست. که از دستور die() استفاده کردیم. این دستور هر جا که بیاد ادامه ی برنامرو متوقف می کنه. یعنی کمپایلر به این دستور که میرسه دیگه ادامه ی خط ها رو اجرا نمی کنه علاوه بر اون یه رشته هم جلوی خودش داخل پرانتز می گیره و قبل از اتمام برنامه اون رو چاپ می کنه. مثلا توی این مثال اگر مقدار $name به جای "Siavash" هر چیز دیگه ای بود کمپایلر چون می دید گزاره ی خط سوم درست نیست داخل else رو اجرا می کرد یعنی اول "I don't know you!" رو اکو می کرد و بعدش می نوشت "bYe" و برنامه تموم می شد. یعنی خط 10 مثلا اجرا نمی شد.
اما اگر مثال به همین شکل بالا باشه یعنی مقدار $name همون "Siavash" باشه خط 4 اجرا می شه و در نتیجه "Hello Siavash" اکو میشه و بعد از اون هم خط 10 اجرا میشه و "How are you?" هم اکو میشه!
پس دستور die() هر جایی اجرا شه کمپایلر کارش رو متوقف می کنه!
دستور if توی چند زبان دیگه بصورت زیره:
PHP
C++
#include <iostream.h> void main() { int grade; grade = 20; if ($grade = = 20) cout << "Great!"; else if ($grade > 15) cout << "Good!"; else { cout << "Bad!n"; cout << "Study more!"; } }
Pascal
var grade : integer; begin grade := 20; if grade = 20 then writeln('Great!') else if grade > 15 then writeln('Good!') else begin writeln('Bad!'); writeln('Study more!'); end; end.
Visual Basic
Java
Dim grade As Integer Private Sub Form_Load() grade = 100 If grade = 100 Then MsgBox "Great" ElseIf grade > 15 Then MsgBox "Good" Else MsgBox "Bad" MsgBox "Study more!" End If End Sub
public class test { int grade; grade = 20; if (grade = = 20) else if (grade > 15) else { } } }
لینک های داخلی
http://www.syavash.com/portal/users/siavash/blogs/introduction-on-php-part-1-faتگ ها
programming, tutorials, phpنظرها
- نام:
- ایمیل:
- وبگاه:
- نظر:
- تور مشهد:
- پست شده در تاریخ 2017/02/23, 07:52:45
- " برای من لینک های داخلی خیلی مهمه "
- روژیار:
- پست شده در تاریخ 2013/04/16, 12:07:24
- " سلام،دوست عزیز خسته نباشید،آقا سیاوش عزیز کاش شما آموزش برنامه نویسی php رو روز به روز ادامه میدادین،نحوه ی آموزش دادنتون خیلی قشنگه،ما کسایی که علاقه مند به php هستیم خیلی به شما نیاز داریم؛امیدوارم لطف بفرمایید و آموزش پی اچ پی رو ادامه بدید،خیلی ممنونم،بیصبرانه مشتاقیم تا ادامه ی آموزش رو افتخار بدید به ما شاگردای پر و پا قرصتون. "
- a:
- پست شده در تاریخ 2012/01/02, 20:22:14
- " asdasd asda sdas dasda "
- عاطفه:
- پست شده در تاریخ 2009/12/29, 18:48:59
- " واقعا حرف نداشت دوست عزیز.. تا حالا آموزش زبانی به این روونی و دقیقی ندیده بودم. آدمایی که دلسوزانه و دقیق اما ساده به دیگران چیزی رو یاد میدن واقعا انسانهای بی نظیری هستن. امیدوارم آموزش های دیگه ای از شما، را هم ببینیم. "
- سید سعید:
- پست شده در تاریخ 2009/09/08, 01:50:28
- " حتی قسمت ارسال نظرت هم با ایجکس کار میکنه ایول حالا خودت این سایتو طراحی کردی ؟ "
- maryam:
- پست شده در تاریخ 2009/08/18, 13:58:58
- " ravesh tadriset fogholadast , mamnun "
- SHahab:
- پست شده در تاریخ 2008/03/18, 11:55:22
- " salam agha mishe baz ham amoozeshe PHP bezari ? "
- البرز:
- پست شده در تاریخ 2008/01/12, 08:26:47
- " دستت درد نکنه، باحال بود. فقط اگه یه جورایی کاربرد عملی این دستورها رو تو طراحی سایت بگی هم خیلی عالی میشه... "
- علی:
- پست شده در تاریخ 2008/01/06, 22:45:58
- " این کد اشنباه نوشتی بین دوتا = فاصله گذاشتی ولی خـــــــــــــــــــــــــــــــیلی خوب بود "
- elham:
- پست شده در تاریخ 2007/12/10, 16:21:18
- " www.php.net "
- بابک:
- پست شده در تاریخ 2007/12/01, 10:45:36
- " ممنون. قسمت اولش خوب بود، امیدوارم قسمت دومش هم خوب باشه. "
- ساسان:
- پست شده در تاریخ 2007/11/06, 03:09:25
- " این یکی هم عالی بود منتظر ادامش ایم :دی موفق باشی "
- امین:
- پست شده در تاریخ 2007/11/05, 11:47:15
- " اقا دستت درد نکنه...خیلی عالیه. ولی به قول far "پس بقیش کو.."؟؟؟ "
- far:
- پست شده در تاریخ 2007/11/04, 09:37:37
- " اقا کارت خیلی درسته ... پس بقییش کو.. "
- Miklootler:
- پست شده در تاریخ 2007/11/03, 15:35:32
- " Dude, Where's the rest? how often are you going to give out a part of this tutorial?? "
- ساقی:
- پست شده در تاریخ 2007/11/02, 22:34:10
- " مث آموزش اول توووووپ و عالی... "
- moein:
- پست شده در تاریخ 2007/11/02, 02:11:31
- " آقا دمت گرم ولی بقیش کو؟!!!! "
- رضا:
- پست شده در تاریخ 2007/11/01, 20:03:35
- " آقا مث مقاله قبلی خیلی توپ بود خدا عجرت بده دمت گرم فقط ادامه بدید ممنون . "
- امير:
- پست شده در تاریخ 2007/11/01, 13:49:01
- " "لطفا ادامه بديد. بسيار عاليه ممنون" "
- bamdad:
- پست شده در تاریخ 2007/10/27, 01:36:50
- " دوست خوبم برات آرزوی موفقیت می کنم "
- توت فرنگی:
- پست شده در تاریخ 2007/10/23, 01:03:07
- " آخه نمیشه که ما هی بگیم ولی جوابی نشنویم!! "
- arash:
- پست شده در تاریخ 2007/10/12, 03:08:44
- " بسیار عالی بود ممنون "
- HassaN:
- پست شده در تاریخ 2007/10/10, 21:18:36
- " دمت گرم داش سیاوش آخرشی ببخشید دیر به دیر سر میزنم چاکرتیم "
- مهدی:
- پست شده در تاریخ 2007/10/06, 23:54:20
- " من شیوه تدریست را می پسندم ولی یک نظر داشتم درباره فارسی نویسی و انگلیسی نویسی در آن، بد نیست عبارات انگلیسی را مانند: <span dir="ltr">Sample English!</span> چپ به راست بنویسی . "
- توت فرنگی:
- پست شده در تاریخ 2007/10/05, 18:47:04
- " راستی ، مرسی "
- توت فرنگی:
- پست شده در تاریخ 2007/10/05, 18:46:35
- " اوه ، می دونی تو خیلی روون درس می دی دمت قیج ، این آموزشتم مثل اولیش توپ رو رروون بود ولی چون مباحث سنگین تر شد کمی قاطیدم ، ولی مرسی ، می تونی بگی کل پی اچ پی رو چند تا جلسه دیگه تموم می کنی و این که چند روز یک بار آموزش جدید می زاری؟ واالله خبرنامه که نداریی :D "