سی شارپ #C

جلسه 15 - دستور شرطی IF


روند کنترلی و منطق برنامه، از مهم‌ترین قسمت‌های رفتار پویای یک زبان برنامه نویسی است. برای کنترل قسمت‌هایی از کد ، سی شارپ دستورهای مخصوصی را فراهم کرده است تا برنامه نویس بتواند کنترل و منطق برنامه را در دست بگیرد. اکثر عبارت‌های شرطی و حلقه‌ای در #C از C و ++C می‌آیند.

در این بخش ما دستور شرطی if را مورد بررسی قرار می دهیم .

 

 دستور شرطی if

شما با if می‌توانید در صورت درست یا غلط بودن یک عبارت ، یکسری عملیات انجام و دستوراتی را اجرا کنید . دستور if در سی شارپ از لحاظ syntax(املا) به سایر زبان‌ های برنامه نویسی مثل C و ++C و جاوا مشابه است.

ساده ترین شکل دستور if بصورت زیر است:

 ; if(condition) statement  

در اینجا condition یک عبارت بولی (true یا false) است. اگر condition شامل مقدار true باشد، آنگاه statement اجرا می‌شود. اگر condition شامل مقدار false باشد در این‌صورت statement کنار زده شده و اجرا نمی‌شود. statement می تونه شامل چند دستور باشه .

 

به نمونه ی زیر دقت کنید:

 


(if(10 < 15  

}  

 ; (" عدد 10 از 15 کوچکتر است ") MessageBox.Show        

{  


 

در این مورد، تا زمانی که ۱۰ از ۱۱ کوچک‌تر باشد، condition برابر مقدار true است و متن را داخل جعبه پیغام نمایش می دهد . 

 حال اگر دستور به صورت زیر باشد ، به دلیل اینکه 15 از 10 کوچکتر نیست ، پیغام جلوی شرط اجرا نمی شد . یعنی وقتی شرطی درست نباشد کامپایلر عبارات داخل براکت بعد از آن را اجرا نمی کند و دستورات بعد از براکت بسته شده را اجرا می کند .


  (10 > 15) if  

}  

; ("15 از 10 کوچکتر است .")MessageBox.Show        

{  


 

 می‌توان از عملگرهای مقایسه ای برای عبارت شرطی (condition) نیز استفاده کرد:

یک مثال برای چگونگی کار کردن با دستور شرطی if : می توانید برنامه زیر را در یک Button بنویسید .

نکته : چند متغیر از یک نوع را می توان پشت سرم هم تعریف کرد . مانند خط اول برنامه .

نکته : اگر تعداد دستورات بعد از شرط  if یکی باشه ، می تونیم براکت باز و بسته نگذاریم ، واون یک خط دستور را بلافاصله بعد از شرط قرار دهیم . در این صورت کامپایلر فقط دستور بعد از شرط را متعلق به if می داند . مانند شرط های زیر :

 


     ; int a , b, c  

        ; a = 4  

        ; b = 3  

  

          ; ( " عدد a از عدد b کوچکتر است " )if (a < b)  MessageBox.Show  

 

    ; ( " هر دو عدد با هم برابر هستند " )if (a = b)  MessageBox.Show  



 ; ( " عدد a از عدد b بزرگتر است " )if (a > b)  MessageBox.Show  

       

خروجی تولید شده توسط این برنامه:

 عدد a از عدد b بزرگتر است 

 


همان‌طور که مشاهده می‌کنید با توجه به مقادیر متغیرها محاسباتی انجام می‌شود و سپس با توجه به مقدار بولینی که در قسمت condition قرار می‌گیرد، statement ها اجرا می‌شوند.

 

خب در بالا نمونه ساده ی دستور if را دیدیم . حال

فرم کلی دستور if بدین شکل است:


; if(condition) statement

; else statement

این در صورتی است که شما برای قسمت‌های if یا else تنها یک statement دارید و نیازی نیست از بلاک (براکت باز و بسته) استفاده کنید. عبارت else اختیاری است. همچنین قسمت‌های if و else می‌توانند در یک بلاک قرار بگیرند. اگر برای هر کدام، یک statement داشته باشیم استفاده از بلاک اختیاری است، اما اگر برای هر کدام، بیشتر از یک statement داشته باشیم استفاده از بلاک اجباری است و فرم کلی آن بشکل زیر است:


 
("شرط")if

}

   دستورات، در صورت درست بودن شرط

{

else

}

    دستورات در صورت false بودن شرط

{

اگر جواب شرط ، مقدار True باشد ، آنگاه بلوک  if اجرا می شود و اگر false باشد بلاک else اجرا می شود . به هیچ عنوان هر دو آن ها با هم اجرا نخواهند شد .

 

به نمونه‌ی زیر توجه کنید:


 

        ; int num1 = 6  

        ; int num2 = 23  

      ;  int result = num1 + num2  

 

       ( if (result > 25  

      }  

            ; (" MessageBox.Show(" Result is more then 25       

   {  

        else  

        {  

           ; (" MessageBox.Show(" Result is less then 25       

     {  

در این مثال، مقدار متغیر num1 و num2 با هم جمع می‌شوند و نتیجه ی آن‌ها در متغیر result ذخیره می‌شود که نهایتاً result شامل مقدار ۲۹ می‌شود. همان‌ طور که می‌بینید مقدار result با ۲۵ مقایسه شده است و می‌دانیم که پاسخ true است. بدلیل اینکه مقدار condition برابر با true شده است، بلاک if اجرا می‌شود و بلاک else نادیده گرفته شده و هیچگاه اجرا نخواهد شد.

 

به نمونه ی بعدی توجه کنید:



       ( if ( 3 + 3 == 5

           ;(" حاصل جمع درست است ")MessageBox.Show

        else

        ; (" حاصل اشتباه است ")MessageBox.Show


    

در این مثال، در قسمت condition ، حاصل 3 + 3 که برابر با 6 است، توسط عملگر مقایسه ای == با 5 مقایسه می‌شود و همان‌طور که می‌دانید 6 و 5 باهم برابر نیستند، بنابراین مقدار condition برابر با false می‌شود. با این حساب بلاک دستور if اجرا نمی‌شود و بلاک دستور else اجرا خواهد شد.

 

نکته: همین‌طور که می‌بینید، هم if و هم else، به دلیل اینکه یک statement بیشتر ندارند، استفاده از بلاک (براکت باز و بسته) اختیاری است. 

شما دستور if را برای یک تصمیم‌گیری به‌کار می‌برید. به‌عبارت دیگر، شما از دستور if برای اینکه مشخص کنید یک عمل اتفاق بیفتد یا خیر، استفاده می‌کنید. همچنین دانستید که در قسمت condition دستور if یک مقدار بولین قرار دارد که اگر true باشد statement اجرا می‌شود و اگر false باشد statement اجرا نخواهد شد.

 

if های تو در تو ( Nested ifs )

 

if تودرتو، if ای است که در قسمت statement یک if  دیگر قرار دارد.

 

به مثال زیر دقت کنید:


     ;  int i = 6  

 

      (  if ( i < 8  

      }  

           ( if ( i == 6       

           }       

               ; (" دستورات if  داخلی ") MessageBox.Show            

            {       

        {

 

همان‌طور که می‌بینید، یک if در درون if دیگری واقع شده است. اگر if اول شامل مقدار true باشد، کامپایلر وارد بلاک آن شده که با if دیگری مواجه می‌شود. اگر if دوم هم شامل مقدار true باشد، پیغام مربوطه نمایش داده می شود . در غیر این‌صورت هیچ خروجی چاپ نمی‌شود.

 

نکته اصلی که در مورد if های تودرتو باید به‌خاطر بسپارید این است که، عبارت else همیشه مربوط به نزدیک‌ترین if بالای خودش است که هر دو آن‌ها در یک بلاک هستند.

 به مثال زیر دقت کنید:


 

( if ( i == 10  

}  

; if (j < 20) a = b       

 ; if (k > 100) c = d       

; else a = c       

{  

; else a = d

 

در مثال بالا، آخرین else مربوط به (if(j < 20 نیست به‌دلیل این‌که این‌ها در یک بلاک یکسان نیستند (هرچند که این نزدیک‌ترین if بدون else است). بلکه آخرین else مربوط به (if(i == 10 است. else داخلی مربوط به (if(k > 100 است زیرا این نزدیک‌ترین if به آن است و هر دوی آن‌ها در یک بلاک هستند.

 

( else if ( The if-else-if Ladder

اگر شما به یک مقایسه‌ی پیچیده‌تر نیاز داشته باشید، می‌توانید چندین شرط را چک کنید. این روش که به روش نردبانی معروف است، یکی از رایج‌ ترین روش‌ها در برنامه‌ نویسی است و فرم کلی آن به‌ شکل زیر است:




( if( condition

   ; statement

( else if ( condition

    ; statement

( else if ( condition

  ; statement
.    

.

.

else

    ; statement

در این مدل ، condition ها از بالا به پایین چک می‌ شوند و به‌ محض این‌ که یک condition با مقدار true پیدا شد ، statement مربوط به آن اجرا می‌شود و بقیه‌ ی این ساختار نردبانی نادیده گرفته می‌شود. اگر هیچ‌ یک از condition ها درست نبود، عبارت else پایانی اجرا می‌شود. else پایانی غالباً به‌عنوان condition پیش‌فرض عمل می‌کند و هرگاه که همه‌ ی condition ها شامل مقدار false باشند ، else پایانی اجرا می‌شود . اگر else پایانی را قرار ندهید و همه‌ ی condition ها مقدار false داشته باشند، آنگاه هیچ اتفاقی نمی‌افتد.

 

به مثال جالب زیر توجه کنید:

 

; int fasl = 3



  ; ( if ( fasl == 1


    ;(" بهار ")  MessageBox.Show



; ( else if ( fasl == 2

    ;(" تابستان ")  MessageBox.Show



; ( else if ( fasl == 3

    ;(" پاییز ")  MessageBox.Show


else

    ;(" زمستان ")  MessageBox.Show

 

   در برنامه ی بالا پس از اجرا داخل MessageBox کلمه ی ( پاییز ) نمایش داده می شود .

 این بخش یکی از مهمترین بخش ها بود . درسته در این قسمت دستور شرطی if را توضیح دادم ولی در کنار اون با چند تا از قوانین و نکته ها که درون کد ها نهفته بود آشنا شدید. این بستگی به شما داره که از تو دل متن نکته هارو دریافت کردید یا نه . قبلا هم گفتم که برنامه نویسی ذهن خلاق می خواد و وقتی که برنامه نویس شدید باید خیلی از مسائل رو خودتون کشف کنید ، تحقیق کنید و تحلیل کنید . من تو آموزشا سعی می کنم یه چیزایی رو به عهده خودتون بذارم تا ذهنتون آماده بشه ، پس مطالب رو با دقت بخونید و حتما خودتون تست کنید . 

اما با این حال اگه سوالی پیش اومد حتما بپرسید .

 

اضافه کردن نظر