مسیر
/
Julia
Julia
/
برنامه‌ی درسی
/
دستورهای شرطی
دس

دستورهای شرطی در Julia

7 تمرین

درباره‌ی دستورهای شرطی

عملگرهای مقایسه

عملگرهای مقایسه در جولیا مشابه بسیاری از زبان‌های دیگرند، هرچند چند گزینه‌ی اضافی هم برای علاقه‌مندان به ریاضی دارند.

برای برابری، عملگرها == (برابر) و != یا ≠ (نابرابر) هستند.

txt = "abc"
txt == "abc"  # true
txt != "abc"  # false
txt ≠ "abc"  # false (synonym for !=)

علاوه بر این، انواع عملگرهای بزرگ‌تر/کوچک‌تر را هم داریم.

1 < 3  # true
3 > 3  # false
3 <= 3  # true
3 ≤ 3  # true (synonym for <=)
4 >= 3  # true
4 ≥ 3  # true (synonym for >=)

همان‌طور که در جولیا رایج است، یک ویرایشگر مناسب استفاده از نماد ریاضی را آسان می‌کند. \ne، \le یا \ge را تایپ کنید و بعد TAB را بزنید تا ≠، ≤ یا ≥ به دست بیاید.

مثال قبلی فقط از اعداد استفاده می‌کند، اما در بخش‌های دیگر برنامه‌ی درسی خواهیم دید که انواع دیگری هم مفهوم ترتیب دارند و می‌توان آن‌ها را از نظر بزرگ‌تر/کوچک‌تر بودن بررسی کرد.

عملگرهای مقایسه را می‌توان زنجیره‌ای به کار برد که نحوه‌ی نگارش روشن و موجزی را ممکن می‌کند:

n = 3
1 ≤ n ≤ 5  # true (n "between" two limits)

مثال قبلی معادل 1 ≤ n && n ≤ 5 است.

شاخه‌بندی با if

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

if conditional1
    statements...
elseif conditional2
    statements...
else
    statements...
end

نیازی به پرانتز () یا آکولاد {} نیست و تورفتگی «فقط» برای بهبود خوانایی است (اما خوانایی بسیار مهم است!).

هم elseif و هم else اختیاری‌اند و می‌توانند چندین بلوک elseif وجود داشته باشد. با این حال، end الزامی است.

می‌توان دستورهای if را تودرتو کرد، هرچند ممکن است بخواهید با استفاده‌ی سنجیده از پرانتز، تورفتگی و توضیحات به خوانایی کمک کنید.

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

if n < 0
    n = 0
end

به یاد داشته باشید: تنها عبارت‌هایی را می‌توان به عنوان شرط به کار برد که به true یا false ارزیابی شوند. جولیا به‌عمد از هر مفهوم «درست‌نمایی» پرهیز می‌کند؛ بنابراین مقدار صفر، رشته‌ی خالی و آرایه‌ی خالی معادل false نیستند.

عملگر سه‌تایی

یک موقعیت ساده و رایج، انتخاب یکی از دو مقدار بر اساس یک شرط است.

جولیا هم مانند بسیاری از زبان‌ها یک عملگر سه‌تایی دارد که این کار را موجزتر می‌کند.

نحوه‌ی نگارش آن conditional ? value_if_true : value_if_false است.

پس مثال قبلی را می‌توان این‌طور بازنویسی کرد:

n = n < 0 ? 0 : n

پرانتز برای کامپایلر الزامی نیست، اما ممکن است خوانایی را بهتر کند.

آیا جولیا دستور match دارد؟

در حال حاضر هیچ ساختار match/case بخشی از زبان پایه نیست.

برای موارد ساده، استفاده از if..elseif..else توصیه می‌شود.

برای تطبیق الگوی پیشرفته‌تر، مشابه Scala، بسته‌ی Match.jl محبوب است. با این حال، مانند بیشتر بسته‌های شخص ثالث، Match در اجراکننده‌ی تست Exercism در دسترس نیست.

ویرایش از طریق GitHub این پیوند در پنجره یا زبانه‌ی جدیدی باز می‌شود

دستورهای شرطی را یاد بگیرید

تمرین کردن قفل شده است

برای تمرین دستورهای شرطی قفل 5 تمرین دیگر را باز کنید