بارگیری...
خانه -> بلاگ
  • Follow Siavash on Twitter
  • Add Siavash on Facebook
  • Follow Siavash on Google+
بات:

مقدمه اي بر PHP - قسمت دوم
(پست شده در تاریخ 2007/09/29, 23:00:56)

توی این قسمت میخوایم یکی از ساده ترین مفاهیم اکثر زبان های برنامه نویسی رو درک کنیم.
مفهوم اگر یا if رو تقریبا شما هر روز بار ها توی حرف زدنتون استفاده می کنید! این مفهوم تو اکثر زبان های برنامه نویسی هم وجود داره که در ادامه با مثال می بینیم که توی php چطوری میشه بکارش برد.

عبارت های if، else و elseif

اول با یه مثال ساده شروع می کنیم. یه نفر از شما می پرسه "آیا 5 بزرگ تر از 6 است؟" شما پیش خودتون میگید اگر با منطق من 5 بزرگتر از 6 هست بگو آره در غیر این صورت بگو خیر، و در نهایت می گی خیر چون 5 بزرگتر از 6 نیست. حالا همین مثال رو توی php مینویسیم:
  1. <?php
  2. //Is 5 greater than 6?
  3. if (5 > 6)
  4. {
  5. echo "Yes!";
  6. }
  7. else
  8. {
  9. echo "No!";
  10. }
  11. ?>
if در واقع همون اگر تو زبان فارسی هست و همیشه جلوش داخل پرانتز یه گزاره قرار می گیره! گزاره یعنی یک عبارت که یا درست باشه (true) یا غلط (false). در صورتی که درست باشه کمپایلر php عبارت های بعد از if رو که بین { و } هستند رو اجرا می کنه در غیر این صورت عبارت های بعد از else رو که توی } و { هستند رو اجرا می کنه. مثلا توی این مثال ما همه می دونیم که 5 > 6 نیست پس نتیجه ی این گزاره false هست و در نتیجه عبارات بعد از else اجرا می شن. یعنی توی صفحه می نویسه No! که جوابی هست که ما انتظار داشتیم.
حالا اگر به جای 5 > 6 گزاره ی 6 > 5 رو داشتیم، جواب گزاره true می شد و در نتیجه نتیجه ی Yes! رو می گرفتیم.
اصلا نگران نباشید اگر هنوز درست متوجه نشدین. با مثال های بیشتر این موضوع کاملا جا میفته.
  1. <?php
  2. $age = 100;
  3. if ($age > 80)
  4. {
  5. echo "You are old!";
  6. }
  7. ?>
توی این مثال ما اول مقدار 100 رو توی $age ریختیم . توی خط سوم می به دستور if میرسیم. که میگه اگر $age > 80 یه گزاره ی صحیح بود عبارت You are old! رو به عنوان خروجی بده. همونطوری که می بینیم $age بزرگ تر از 80 هست پس روی خروجی You are old! رو خواهیم دید.
Question level 3 ببخشید چرا اینجا عبارت else رو نداریم؟
Answer " عبارت else یه عبارت Optional یا اختیاریه و ما می تونیم if بدون else داشته باشیم. "
Question level 3 خوب حالا اگر مقدار $age کمتر از 80 میشد چه اتفاقی میفتاد؟
Answer " اگر مقدار $age مثلا 50 بود وقتی کمپایلر به خط سوم می رسید می دید گزاره غلط هست و در نتیجه عبارات بین { و } بعد از if رو اجرا نمی کرد و خروجی ما خالی می شد. "
حالا یه مثال دیگه:
  1. <?php
  2. $grade = 18;
  3. if ($grade >= 19)
  4. {
  5. echo "A";
  6. }
  7. elseif ($grade >= 17)
  8. {
  9. echo "B";
  10. }
  11. elseif ($grade >= 14)
  12. {
  13. echo "C";
  14. }
  15. else
  16. {
  17. echo "D";
  18. }
  19. //Output: B
  20. ?>
توی این مثال چند تا نکته ی جدید داریم. یکی علامت >= هست که به مفهوم بزرگتر مساویه، همونطوری که حدس زدید <= هم به مفهوم کوچکتر مساویه. و بعدی elseif هست که الان خط به خط جلو می ریم و می بینیم چیه!
خوب کمپالر توی خط دوم مقدار 18 رو توی $grade قرار میده و خط سوم به if میرسه و می بینه که 18 بزرگتر مساوی 19 نیست پس گزاره غلطه و دستور echo "A" اجرا نمیشه. بعد از اون به اولین elseif میرسه. دستور elseif به معنی در غیر این صورت اگر هست. کمپایلر می بینه که $grade بزرگتر از 17 هست پس این شرط درسته و در نتیجه دستورات داخل { و } جلوی این elseif رو اجرا می کنه و دیگه elseif ها و else بعدی رو چک نمی کنه! پس در نتیجه خروجی ما "B" خواهد بود.
این از خاصیت های ساختار if، elseif و else هست. یعنی هر جا شرطی درست بود دیگه شرط های دیگرو چک نمی کنه. که اسمش هم همین رو نشون میده. ما می گیم اگر این گزاره درست بود فلان کار رو بکن، در غیر این صورت اگر این یکی درست بود یکار دیگه بکن و در نهایت هم اگر هیچ کدوم درست نبودن عملیات بین { و } بعد از else رو انجام بده.
حالا می ریم سراغ مثال بعد:
  1. <?php
  2. $grade = 20;
  3. if ($grade = = 20)
  4. echo "Full mark";
  5. else
  6. echo "Keep trying";
  7. ?>
توی این مثال هم دو تا نکته ی جدید داریم.
همونطور که می بینید توی خط سوم ما از گزاره ی $grade = = 20 استفاده کردیم. حالا این = = یعنی چی؟ توی زبان php و خیلی زبان های دیگه برای اینکه چک کنیم دو تا مقدار با هم مساوی هستند یا نه از = = استفاده می کنیم. پس باید حواستون باشه که از = برای چک کردن اینکه دو مقدار با هم مساوی هستند یا نه استفاده نکنید چون اگر این کار رو بکنید php به شما هیچ errorای هم نمی ده اما شما نتیجه ی مورد انتظارتون رو دریافت نخواهید کرد. مثلا توی همین مثال اگر بجای = =، علامت = رو قرار بدیم همیشه خروجی Full mark رو خواهیم گرفت.
Question level 4 ببخشید میشه بیشتر توضیح بدید که چرا؟
Answer " اول باید یه نکترو بگم! اکثر زبان های برنامه نویسی 0 رو به عنوان false یا غلط در نظر می گیرن و هر عدد دیگه بجز اون رو به عنوان true یا درست! php هم جزو همون زبان هاست.حالا اگر به جای = = از = استفاده کنیم کمپایلر به خط سوم که میرسه مقدار 20 رو توی متغیر $grade میریزه بجای اینکه اون دو تارو مقایسه کنه و در نهایت می بینه مقدار $grade عددی بجز صفر هست پس این گزاررو درست در نظر می گیره و Full mark رو اکو می کنه. اگر مقدار $grade بجای 20، 17 یا 18 یا هر عدد دیگه ای هم می بود باز به ما Full mark رو می داد که نتیجه ی مطلوب ما نبود. پس حواستون باشه توی if برای مقایسه باید از = = استفاده کنیم و = برای اینکار غلطه. "
نکته ی دیگری که احتمالا تا الان دیدید اینه که ما تو این مثال از { و } نه بعد از if استفاده کردیم و نه بعد از else. دلیلش اینه که بعد از دستور if و esle فقط یه دستور دیگه وجود داره. در صورتی که بعد از if یا elseif یا else فقط یه دستور وجود داشته باشه می تونیم { و } رو نگذاریم. پس برای تمام مثال های قبل هم می تونستیم { و } رو نگذاریم. اما اگر دو خط دستور یا بیشتر داشته باشیم حتما باید از { و } استفاده کنیم.
  1. <?php
  2. $name = "Siavash"
  3. if ($name = = "Siavash")
  4. echo "Hello Siavash";
  5. else
  6. {
  7. echo "I don't know you!";
  8. die("bYe");
  9. }
  10.  
  11. echo "How are you?";
  12. // The rest of the program goes here...
  13. ?>
همونطوری که توی این مثال می بینید ما بعد از 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
  1. <?php
  2. $grade = 20;
  3. if ($grade = = 20)
  4. echo "Great!";
  5. elseif ($grade > 15)
  6. echo "Good!";
  7. else
  8. {
  9. echo "Bad!<br />";
  10. echo "Study more!";
  11. }
  12. ?>

C++
  1. #include <iostream.h>
  2. void main()
  3. {
  4. int grade;
  5. grade = 20;
  6. if ($grade = = 20)
  7. cout << "Great!";
  8. else if ($grade > 15)
  9. cout << "Good!";
  10. else
  11. {
  12. cout << "Bad!n";
  13. cout << "Study more!";
  14. }
  15. }

Pascal
  1. var
  2. grade : integer;
  3. begin
  4. grade := 20;
  5. if grade = 20 then
  6. writeln('Great!')
  7. else if grade > 15 then
  8. writeln('Good!')
  9. else begin
  10. writeln('Bad!');
  11. writeln('Study more!');
  12. end;
  13. end.

Visual Basic
  1. Dim grade As Integer
  2. Private Sub Form_Load()
  3. grade = 100
  4. If grade = 100 Then
  5. MsgBox "Great"
  6. ElseIf grade > 15 Then
  7. MsgBox "Good"
  8. Else
  9. MsgBox "Bad"
  10. MsgBox "Study more!"
  11. End If
  12. End Sub
Java
  1. public class test {
  2. public static void main(String args[]) {
  3. int grade;
  4. grade = 20;
  5. if (grade = = 20)
  6. System.out.println("Great!");
  7. else if (grade > 15)
  8. System.out.println("Good!");
  9. else
  10. {
  11. System.out.println("Bad");
  12. System.out.println("Study more!");
  13. }
  14. }
  15. }

لینک های داخلی

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 "