مفهوم شرط در برنامه نویسی چیست؟!
if, else و switch چیست؟!
فرض کنید شخصی از مدیر یک سایت درخواست میکند تا مقالهای را منتشر کند. و مدیر سایت به آن شخص میگوید که «اگر» مقاله با قوانین ما تناقض نداشته باشد، آن را منتشر میکنیم! بنابراین مدیر سایت برای انتشار مقاله یک شرطی تعیین کرده است و آن نقض نکردن قوانین سایت توسط مقاله میباشد.
شرط در لغت به معنای عهد و پیمان است! قول و قراری که کسی با کس دیگری گذاشته و بر اساس آن رفتار میکند. یعنی شما چیزی را تعیین کرده و مشخص میکنید که در صورت درست بودن آن چیز تعیین شده، به مفاد (محتوای) این شرط عمل خواهید کرد.
شما در زندگی روزمرهی خود، همواره به صورت شرطی رفتار میکنید و شاید متوجه این نشده باشید! چرا که شما برای گرفتن تصمیمات، شروطی را در نظر میگیرید! برای مثال لیوان را برداشته و پر میکنید و سر میکشید و وقتی تشنگیتان برطرف شد دیگر نمینوشید که بنابراین شرط دیگر آب نخوردن شما رفع شتنگی است! و ناگفته نماند که در طول ریختن و پر کردن چه اتفاقاتی میافتد! برای مثال شما وقتی لیوان پر میشود دیگر چیزی داخل آن نمیریزید! البته احتمالا بگویید من وقتی تشنگیم برطرف شود باز هم آب میخورم یا …! که خب در اینجا این نکتهی مهم را فراموش کردهاید که دادههای ذهن شما چه شروطی را برای شما میسازند! در واقع شروط شما با توجه به دادههای ذهن شما مقداردهی شده و سپس بررسی میشوند!
بنابراین میبینید که برای تصمیم گیری، چقدر شرایط را بررسی میکنیم! آن هم شرایطی که همواره یکسان نیستند و با توجه به دادههای محیط ما، تغییر پذیرند! و اینجاست که شگفتی سیستم انسان مفهوم دیگری را در ذهن شما ایجاد میکند! حالا به توضیح بشرط در برنامهنویسی میپردازیم.
شرط در برنامه نویسی
ویکیپدیا، شرط در برنامهنویسی را چنین تعریف میکند:
اما شاید این تعریف، کمی گنده به نظر برسد و نیاز به توضیح دقیق به همراه مثالی باشد تا آن را درک کنیم!
فرض کنید در حال نوشتن برنامهای هستید تا یک ورودی از کاربر دریافت کنید و این ورودی بایستی حتما یک شماره تلفن همراه باشد! حالا کاربر میآید و یک عددی مثل 5471 را وارد میکند! به نظرتان این شماره تلفن است؟! و در اینجاست که نیاز به شرط حس میشود و ما تعیین میکنیم که براساس فلان الگوریتم، اگر این شماره تلفن بود چه اتفاقی بیفتد و اگر نبود چه اتفاقی بیفتد!
در واقع بدون شرط گذاری نمیتوان هیچ برنامهی کاربردی نوشت و اگر شخصی میگوید برای مثال من بدون برنامه نویسی کدی نوشتم که فایلی را از فلان آدرس به یک مسیر دیگر انتقال میدهد، بازهم در اینجا شرایطی در لایههای پایینتر و داخل آنکدهایی که استفاده شده است، وجود دارند و البته این برنامه نیز در هنگام انتتقال فایل از یک آدرس به یک آدرس دیگر هم باید شرایطی از جمله وجود داشتن فایل را بررسی کند تا اگر فایل وجود داشت، فایل انتقال داده شود (جلوگیری از خطا)! یا اگر در مسیر هدف فایل دیگری وجود داشت، آن را پاک کرده و جایگزین کند و شرایط دیگر.
لذا با این تفاسیر، اهیمت شرط در برنامهنویسی جهت تصمیمگیری برنامه، بسیار با ارزش است و بدون آن برنامهنویسی عملی غیرممکن میباشد. و تعریفی که ما در فول کده برای شرط در برنامهنویسی در نظر میگیریم به صورت زیر میباشد»
در منطق زبانهای برنامهنویسی، ساختار شرطی با دستورات if به همراه else وجود دارد و در اکثر آنها، ساختار شرطی switch نیز وجود دارد. و بهتر است بدانید که شرط در برنامهنویسی، جزء ساختار کنترلی به حساب میآید. یعنی به کمکم آن ما روی روند اجرایی برنامه کنترل و اشراف کامل داریم.
دستورات if و else
همانطور که گفته شد، در منطق زبانهای برنامهنویسی، دستوراتی به نام «if» و «else» وجود دارند. البته شکل نوشتاری و سینتکس آنها در تمام زبانهای برنامهنویسی یکسان نیست؛ اما منطق آنها یکسان است.
ما در برنامهنویسی به کمک «if» شرطی را بررسی میکنیم و در صورت اینکه آن موارد بررسی شده در شرط، مطابق چیزی باشد که تعیین کردهایم، کد موجود در بدنهی «if» اجرا خواهد شد! و اگر چنانچه بخواهیم کدی را نیز به همراه «if» برای خلاف آن تنظیم کنیم، میتوانیم از «else» در ادامهی «if» استفاده کنیم. همچنین ساختار «else if» نیز وجود دارد که در صورت صحیح نبودن شرط اولیه، شرط دیگری بررسی میشود و سپس به همین صورت میتوان «else if» های پشت سرهمی راهم نوشت تا درصورت صحیح نبودن یک شرط، شرط دیگری بررسی شود و در نهایت که else را تنها نوشتیم، دیگر نمیتوان بعد از آن چیزی نوشت.
بنابراین اگر بخواهیم به صورت زبان فارسی مثالی بزنیم، میتوان گفت:
- «اگر فلان چیزها فلان شرط را داشتند»، «آنگاه فلان کد را اجرا کن» و «در غیر اینصورت فلان کد دیگر را اجرا کن»
- «اگر فلان چیزها فلان شرط را داشتند»، «آنگاه فلان کد را اجرا کن» و «در غیر اینصورت اگر فلان چیزهای دیگر فلان شرط را داشتند»، «آنگاه فلان چیز را اجرا کن»
- و …
برای درک این گفته به مثالهای زیر که به زبان جاوا و سیشارپ میباشد دقت کنید:
// مثال اول if (x == 20) { // بدنهی شرط } // مثال دوم if (x == 20) { // بدنهی شرط } else { // بدنهی خلاف شرط } // مثال سوم if (x == 20) { // بدنهی شرط } else if (x == 10) { // بدنهی خلاف شرط اول } else { // بدنهی خلاف تمام شرایط }
دستورات switch و case
دستور «switch» در زبانهای برنامهنویسی برای جلوگیری از نوشتن «if» و «else» های پشت سرهم میباشد و اجازه میدهد تا آن را به شکل سادهتری بنویسیم. به این صورت که برای «switch» یک متغیری در نظر گرفته میشود و سپس در «case» های مختلفی، مقدارهای متفاوتی قرار داده میشوند تا در صورت برابر بودن مقدار متغیر با مقدار تعیین شده برای «case»، بدنهی آن اجرا شود. و همچنین خلاف تمام آنها یعنی «else» نیز با استفاده از دستور «default» نوشته میشود. ما در ادامه این مورد را به صورت کلیشیهای در یک نمونه کد به زبان جاوا و سیشارپ نشان دادهایم:
switch(x) { case 20: // کد break; case 10: // کد break; default: // کد }
از «break» تیز برای شکستن «switch» استفاده میشود؛ چرا که اگر برای یک «case»، شکستی نباشد، «case» بعدی نیز بررسی میشود! و چون ممکن است مقدار «x» داخل «case» قبلی تغییر کند، شاید case های بعدی هم اجرا شوند. همچنین برای «default» نیازی به «break» نیست و ممکن است در آن زبانبرنامهنویسی هم ارور بگیرد یا نگیرد.
عالی ??????
تشکر