مقدمه ای بر PHP – قسمت دوم

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

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

اول با یه مثال ساده شروع می کنیم. یه نفر از شما می پرسه “آیا ۵ بزرگ تر از ۶ است؟” شما پیش خودتون میگید اگر با منطق من ۵ بزرگتر از ۶ هست بگو آره در غیر این صورت بگو خیر، و در نهایت می گی خیر چون ۵ بزرگتر از ۶ نیست. حالا همین مثال رو توی php مینویسیم:

<?php
    //Is 5 greater than 6?
    if (5 > 6)
    {
        echo "Yes!";
    }
    else
    {
        echo "No!";
    }
?>

if در واقع همون اگر تو زبان فارسی هست و همیشه جلوش داخل پرانتز یه گزاره قرار می گیره! گزاره یعنی یک عبارت که یا درست باشه (true) یا غلط (false). در صورتی که درست باشه کمپایلر php عبارت های بعد از if رو که بین { و } هستند رو اجرا می کنه در غیر این صورت عبارت های بعد از else رو که توی } و { هستند رو اجرا می کنه. مثلا توی این مثال ما همه می دونیم که ۵ > 6 نیست پس نتیجه ی این گزاره false هست و در نتیجه عبارات بعد از else اجرا می شن. یعنی توی صفحه می نویسه No! که جوابی هست که ما انتظار داشتیم.
حالا اگر به جای ۵ > 6 گزاره ی ۶ > 5 رو داشتیم، جواب گزاره true می شد و در نتیجه نتیجه ی Yes! رو می گرفتیم.
اصلا نگران نباشید اگر هنوز درست متوجه نشدین. با مثال های بیشتر این موضوع کاملا جا میفته.

<?php
$age = 100;
if ($age > 80)
{
    echo "You are old!";
}
?>

توی این مثال ما اول مقدار ۱۰۰ رو توی $age ریختیم . توی خط سوم می به دستور if میرسیم. که میگه اگر $age > 80 یه گزاره ی صحیح بود عبارت You are old! رو به عنوان خروجی بده. همونطوری که می بینیم $age بزرگ تر از ۸۰ هست پس روی خروجی You are old! رو خواهیم دید.

Question level 3 ببخشید چرا اینجا عبارت else رو نداریم؟
Answer ” عبارت else یه عبارت Optional یا اختیاریه و ما می تونیم if بدون else داشته باشیم. “
Question level 3 خوب حالا اگر مقدار $age کمتر از ۸۰ میشد چه اتفاقی میفتاد؟
Answer ” اگر مقدار $age مثلا ۵۰ بود وقتی کمپایلر به خط سوم می رسید می دید گزاره غلط هست و در نتیجه عبارات بین { و } بعد از if رو اجرا نمی کرد و خروجی ما خالی می شد. “

حالا یه مثال دیگه:

<?php
    $grade = 18;
    if ($grade >= 19)
    {
        echo "A";
    }
    elseif ($grade >= 17)
    {
        echo "B";
    }
    elseif ($grade >= 14)
    {
        echo "C";
    }
    else
    {
        echo "D";
    }
    //Output: B
?>

توی این مثال چند تا نکته ی جدید داریم. یکی علامت >= هست که به مفهوم بزرگتر مساویه، همونطوری که حدس زدید <= هم به مفهوم کوچکتر مساویه. و بعدی elseif هست که الان خط به خط جلو می ریم و می بینیم چیه!
خوب کمپالر توی خط دوم مقدار ۱۸ رو توی $grade قرار میده و خط سوم به if میرسه و می بینه که ۱۸ بزرگتر مساوی ۱۹ نیست پس گزاره غلطه و دستور echo “A” اجرا نمیشه. بعد از اون به اولین elseif میرسه. دستور elseif به معنی در غیر این صورت اگر هست. کمپایلر می بینه که $grade بزرگتر از ۱۷ هست پس این شرط درسته و در نتیجه دستورات داخل { و } جلوی این elseif رو اجرا می کنه و دیگه elseif ها و else بعدی رو چک نمی کنه! پس در نتیجه خروجی ما “B” خواهد بود.
این از خاصیت های ساختار if، elseif و else هست. یعنی هر جا شرطی درست بود دیگه شرط های دیگرو چک نمی کنه. که اسمش هم همین رو نشون میده. ما می گیم اگر این گزاره درست بود فلان کار رو بکن، در غیر این صورتاگر این یکی درست بود یکار دیگه بکن و در نهایت هم اگر هیچ کدوم درست نبودن عملیات بین { و } بعد از else رو انجام بده.
حالا می ریم سراغ مثال بعد:

<?php
    $grade = 20;
    if ($grade = = 20)
        echo "Full mark";
    else
        echo "Keep trying";
?>

توی این مثال هم دو تا نکته ی جدید داریم.
همونطور که می بینید توی خط سوم ما از گزاره ی $grade = = 20 استفاده کردیم. حالا این = = یعنی چی؟ توی زبان php و خیلی زبان های دیگه برای اینکه چک کنیم دو تا مقدار با هم مساوی هستند یا نه از = = استفاده می کنیم. پس باید حواستون باشه که از = برای چک کردن اینکه دو مقدار با هم مساوی هستند یا نه استفاده نکنید چون اگر این کار رو بکنید php به شما هیچ errorای هم نمی ده اما شما نتیجه ی مورد انتظارتون رو دریافت نخواهید کرد. مثلا توی همین مثال اگر بجای = =، علامت = رو قرار بدیم همیشه خروجی Full mark رو خواهیم گرفت.

Question level 4 ببخشید میشه بیشتر توضیح بدید که چرا؟
Answer ” اول باید یه نکترو بگم! اکثر زبان های برنامه نویسی ۰ رو به عنوان false یا غلط در نظر می گیرن و هر عدد دیگه بجز اون رو به عنوان true یا درست! php هم جزو همون زبان هاست.حالا اگر به جای = = از = استفاده کنیم کمپایلر به خط سوم که میرسه مقدار ۲۰ رو توی متغیر $grade میریزه بجای اینکه اون دو تارو مقایسه کنه و در نهایت می بینه مقدار $grade عددی بجز صفر هست پس این گزاررو درست در نظر می گیره و Full mark رو اکو می کنه. اگر مقدار $grade بجای ۲۰، ۱۷ یا ۱۸ یا هر عدد دیگه ای هم می بود باز به ما Full mark رو می داد که نتیجه ی مطلوب ما نبود. پس حواستون باشه توی if برای مقایسه باید از = = استفاده کنیم و = برای اینکار غلطه. “

نکته ی دیگری که احتمالا تا الان دیدید اینه که ما تو این مثال از { و } نه بعد از if استفاده کردیم و نه بعد از else. دلیلش اینه که بعد از دستور if و esle فقط یه دستور دیگه وجود داره. در صورتی که بعد از if یا elseif یا else فقط یه دستور وجود داشته باشه می تونیم { و } رو نگذاریم. پس برای تمام مثال های قبل هم می تونستیم { و } رو نگذاریم. اما اگر دو خط دستور یا بیشتر داشته باشیم حتما باید از { و } استفاده کنیم.

<?php
    $name = "Siavash"
    if ($name = = "Siavash")
        echo "Hello Siavash";
    else
    {
        echo "I don't know you!";
        die("bYe");
    }
 
echo "How are you?";
// The rest of the program goes here...
?>

همونطوری که توی این مثال می بینید ما بعد از if از { و } استفاده نکردیم. چون فقط یه خط بعد از if بود اما بعد از else چون دو خط دستور داشتیم باید حتما از { و } استفاده می کردیم.
چیزی که شاید ذهنتون رو مشغول کرده باشه خط هشتم هست. که از دستور die() استفاده کردیم. این دستور هر جا که بیاد ادامه ی برنامرو متوقف می کنه. یعنی کمپایلر به این دستور که میرسه دیگه ادامه ی خط ها رو اجرا نمی کنه علاوه بر اون یه رشته هم جلوی خودش داخل پرانتز می گیره و قبل از اتمام برنامه اون رو چاپ می کنه. مثلا توی این مثال اگر مقدار $name به جای “Siavash” هر چیز دیگه ای بود کمپایلر چون می دید گزاره ی خط سوم درست نیست داخل else رو اجرا می کرد یعنی اول “I don’t know you!” رو اکو می کرد و بعدش می نوشت “bYe” و برنامه تموم می شد. یعنی خط ۱۰ مثلا اجرا نمی شد.
اما اگر مثال به همین شکل بالا باشه یعنی مقدار $name همون “Siavash” باشه خط ۴ اجرا می شه و در نتیجه “Hello Siavash” اکو میشه و بعد از اون هم خط ۱۰ اجرا میشه و “How are you?” هم اکو میشه!
پس دستور die() هر جایی اجرا شه کمپایلر کارش رو متوقف می کنه!
دستور if توی چند زبان دیگه بصورت زیره:
PHP

<?php
    $grade = 20;
    if ($grade = = 20)
        echo "Great!";
    elseif ($grade > 15)
        echo "Good!";
    else
    {
        echo "Bad!<br />";
        echo "Study more!";
    }
?>

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

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

Java

public class test {
    public static void main(String args[]) {
        int grade;
        grade = 20;
        if (grade = = 20)
            System.out.println("Great!");
        else if (grade > 15)
            System.out.println("Good!");
        else
        {
            System.out.println("Bad");
            System.out.println("Study more!");
        }  
    }
}

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

http://www.syavash.com/portal/users/siavash/blogs/introduction-on-php-part-1-fa

 

24 فکر می‌کنند “مقدمه ای بر PHP – قسمت دوم

  1. توت فرنگی

    اوه ، می دونی تو خیلی روون درس می دی دمت قیج ، این آموزشتم مثل اولیش توپ رو رروون بود ولی چون مباحث سنگین تر شد کمی قاطیدم ، ولی مرسی ، می تونی بگی کل پی اچ پی رو چند تا جلسه دیگه تموم می کنی و این که چند روز یک بار آموزش جدید می زاری؟ واالله خبرنامه که نداریی :D

    پاسخ
  2. مهدی

    من شیوه تدریست را می پسندم ولی یک نظر داشتم درباره فارسی نویسی و انگلیسی نویسی در آن، بد نیست عبارات انگلیسی را مانند: Sample English! چپ به راست بنویسی .

    پاسخ
  3. البرز

    دستت درد نکنه، باحال بود. فقط اگه یه جورایی کاربرد عملی این دستورها رو تو طراحی سایت بگی هم خیلی عالی میشه…

    پاسخ
  4. عاطفه

    واقعا حرف نداشت دوست عزیز..
    تا حالا آموزش زبانی به این روونی و دقیقی ندیده بودم.
    آدمایی که دلسوزانه و دقیق اما ساده به دیگران چیزی رو یاد میدن واقعا انسانهای بی نظیری هستن.

    امیدوارم آموزش های دیگه ای از شما، را هم ببینیم.

    پاسخ

پاسخ دادن به البرز لغو پاسخ

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

شما می‌توانید از این دستورات HTML استفاده کنید: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>