if و else
bool ready = true; کلمهٔ true را نگه میدارد. بعد if (ready) به آن کلمه نگاه میکند و فقط یک گروه از خطها را اجرا میکند. وقتی ready برابر true است، Console.WriteLine("pass") مقدار pass را مینویسد. وقتی ready برابر false است، گروه else اجرا میشود و wait مینویسد. صفحه یک خط است. نام کلاس عمومی را Pine نگه دارید.
یک bool تصمیم میگیرد کدام بلوک اجرا شود
فایل Pine را باز کنید. نام کلاس Pine میماند. این صفحه نوع را عوض نام نمیکند. اگر خط bool both هنوز آنجاست، پاکش کنید، از جمله true && true، true || false، !true، و هر علامت ترکیبی میان دو کلمهٔ true یا false. اگر خط bool match هنوز آنجاست، پاکش کنید. اگر خط int total هنوز آنجاست، پاکش کنید. هر خط ReadLine را هم پاک کنید. فایلی که نگه میدارید منتظر تایپ نیست، both ندارد، match ندارد، و نوشتن لختِ یک کلمهٔ ترکیبشده بهتنهایی هم ندارد. صفحه فقط با خط نوشتنی داخل آکولاد انتخابشده نوشته میشود.
درون Main، پیش از انتخاب مسیر یک bool نگه دارید: bool ready = true;. bool کلمهٔ نوع است. ready نام است و با r کوچک شروع میشود. دور true گیومه نیست. سمیکالن خط نگهداری را تمام میکند. آن خط صفحه را نمینویسد. بعد از آن خود انتخاب میآید:
if (ready) {
Console.WriteLine("pass");
} else {
Console.WriteLine("wait");
}
کلمهٔ if با حرف کوچک است: i، بعد f. نامی نیست که خودتان بسازید. فاصله بعد از if مجاز است؛ if(ready) بدون فاصله هم build میشود. داخل پرانتز نام ready نشسته — گیومه نیست، == نیست، && نیست. وقتی ready مقدار true دارد، C# وارد جفت اول آکولاد میشود و Console.WriteLine("pass"); را اجرا میکند. گیومه دور pass حرفها را برای صفحه مشخص میکند. همان حرفها — p، a، s، s — چیزی است که باید ببینید، یک خط. بلوک else در این اجرا بهکلی رد میشود. فایل را ذخیره کنید.
فایلی که نگه میدارید
این شکل آموزشی را نگه دارید. یک کلمهٔ نوع، bool. یک نام، ready، نگهداشته بهصورت true. یک if با پرانتز دور ready. یک خط نوشتن که داخل آکولاد اول pass مینویسد. یک else با خط نوشتنی که wait مینویسد. خط both نیست، خط match نیست، و نوشتن کلمهٔ لخت true بیرون آکولاد هم نیست.
using System;
public class Pine
{
public static void Main()
{
bool ready = true;
if (ready)
{
Console.WriteLine("pass");
}
else
{
Console.WriteLine("wait");
}
}
}
از بالا بخوانید. using System; نامهای کوتاه را آماده میکند. public class Pine نوع را نام میگذارد. public static void Main() جایی است که زمان اجرا شروع میکند. bool ready = true; مقدار true را نگه میدارد. چیزی نمینویسد. if (ready) میپرسد آیا آن کلمهٔ نگهداشته true است. هست، پس Console.WriteLine("pass"); اجرا میشود. آکولادهای else رد میشوند. روی صفحه یک خط: pass. گیومه روی صفحه نیست. خط دوم نیست. در فایلی که نگه میدارید خط bool both نیست.
با dotnet run اجرا کنید. برنامه مقدار pass را مینویسد. منتظر نمیماند که شما چیزی تایپ کنید. کلمهٔ نگهداشته و انتخاب از قبل داخل فایل بودند. اگر dotnet run منتظر ماند، هنوز ReadLine داخل فایل است. آن خط را پاک کنید و bool ready = true; و همان if / else بالا را نگه دارید. برنامه بعد از خط نوشتن انتخابشده تمام میشود. صفحه pass را نشان میدهد. یک خط. اگر صفحه true را نشان دهد، هنوز خود bool را مینویسید، یا ترکیب صفحهٔ منطقی هنوز داخل Main است. آن را با Console.WriteLine("pass") داخل آکولاد if عوض کنید وقتی ready برابر true است. اگر صفحه wait را نشان دهد، ready برابر false است؛ آن فایل دوم این صفحه است، نه فایلی که نگه میدارید. اگر صفحه حرفهای if (ready) را نشان دهد، خط نوشتن دور همان نویسهها گیومه دارد. برای صفحهای که خط اشتباه نشان میدهد SDK داتنت را دوباره نصب نکنید.
چرا pass و نه wait؟ چون آزمون داخل پرانتز true بود. C# در این اجرا کلمهٔ true را نمینویسد. همان خط نوشتنی را مینویسد که داخل آکولاد انتخابشده اجرا میشود. سه کار را جدا فکر کنید: پرانتز آزمون را نگه میدارد، آکولاد خطهایی را که با هماند گروه میکند، و فقط Console.WriteLine به صفحه مینویسد. صفحهای که pass نشان میدهد، بهتنهایی if را ثابت نمیکند. در فایل if (ready) و آکولادها را ببینید. فایل را فقط از روی صفحه قضاوت نکنید.
وقتی ready برابر false است
فقط مقدار نگهداشته را عوض کنید: bool ready = false;. ساختار if / else همان بماند. حالا آزمون شکست میخورد، پس C# آکولاد اول را رد میکند و آکولادهای else را اجرا میکند. صفحه باید wait را نشان دهد، یک خط.
using System;
public class Pine
{
public static void Main()
{
bool ready = false;
if (ready)
{
Console.WriteLine("pass");
}
else
{
Console.WriteLine("wait");
}
}
}
این فایل دوم است. فایلی که نگه میدارید نیست. dotnet run را اجرا کنید. صفحه wait را نشان میدهد. یک خط. pass را نشان نمیدهد. کلمهٔ false را هم بهعنوان کلمهٔ صفحه نشان نمیدهد مگر آن را عمداً بنویسید. اگر صفحه pass را نشان دهد، هنوز روی فایلی هستید که نگه میدارید، جایی که ready برابر true است. بعد از دیدن wait، فایل نگهداشته را برگردانید: bool ready = true; و همان if / else که روی مسیر true مقدار pass مینویسد. هر دو نسخه C# معتبرند. همان شکل if / else را با آزمون مخالف آموزش میدهند.
اجرای false را یکبار دیگر به ترتیب بخوانید. ready مقدار false دارد. if (ready) پرسیده میشود. جواب false است، پس هر خط میان { اول و } جورش رد میشود — از جمله Console.WriteLine("pass");. کنترل به else میرسد. خطهای میان آکولاد else اجرا میشوند، پس Console.WriteLine("wait"); اجرا میشود. روی صفحه یک خط. خط دوم نیست. خود کلمهٔ false ظاهر نمیشود مگر عمداً بنویسیدش.
قاعدههایی که انتخاب را روشن نگه میدارند
پرانتز دور آزمون لازم است. نوشتن if ready { … } بدون پرانتز باعث میشود build خطا بنویسد. آزمون این صفحه یک bool است: نامی مثل ready، یا خود کلمههای true یا false بدون گیومه. if ("true") حرف را جایی میگذارد که آزمون bool باید باشد؛ build خطا مینویسد. گیومهها را پاک کنید، یا از نام bool استفاده کنید. یک عدد صحیح تنها مثل if (1) شکل نگهداری آمادگی این درس نیست؛ با true، false، یا نام bool بمانید.
آکولاد برای خواندن درس مهم است. این صفحه همیشه هر مسیر را داخل { } میپیچد. C# یک if یکخطی بدون آکولاد را اجازه میدهد، اما بهمحض آن که خط دومی زیر همان if بگذارید، فقط خط اول به آزمون وصل میماند مگر آکولاد باشد. مبتدیها آن جزئیات را آسان از دست میدهند. در هر دو دمو آکولاد نگه دارید تا هر مسیر روشن باشد: یک آکولاد باز بعد از آزمون، یک آکولاد بسته پیش از else، بعد یک جفت دیگر برای else.
else به یک if تعلق دارد. یک else تنها باعث میشود build خطا بنویسد. در این صفحه یک if یک else دارد. وقتی فقط مسیر true برایتان مهم است میتوانید if بدون else بنویسید؛ فایلی که نگه میدارید هنوز هر دو سمت را نشان میدهد تا دوشاخه را ببینید. انتخاب میان چند مقدار ثابت، switch در صفحهٔ بعد است — اینجا شاخهٔ سوم با else دیگر نسازید.
میتوانید آزمون را بدون نام جدا هم بنویسید: if (true) { … } else { … }. آن شکل build و اجرا میشود. دموها از ready استفاده میکنند تا ببینید یک bool نگهداشته انتخاب را راه میبرد، همانطور که برنامهها بعد از دانستن نگهداری true و false به نظر میرسند. مقایسههایی مثل if (score > 10) بعد از راحتی با این دوشاخهٔ true / false میآیند؛ این صفحه آزمون را همان مقدار boolی نگه میدارد که از قبل میفهمید.
📊 ready and the screen
| ready | Screen |
|---|---|
| true | pass |
| false | wait |
جدول را بعد از یک اجرا برای چک به کار ببرید، نه بهجای اجرا. true با فایلی که نگه میدارید pass مینویسد. false با فایل دوم wait مینویسد. اگر هر دو خط نوشتن بهنوعی اجرا شوند، آکولاد یا جفتشدن if / else اشتباه است — ساختار را درست کنید، نه این که SDK داتنت را دوباره نصب کنید.
اشتباه رایج نوشتن خود نحو است: Console.WriteLine("if (ready)");. آن خط نویسههای if (ready) را مینویسد. مسیری انتخاب نمیکند. اشتباه دیگر گذاشتن دموهای && یا == در همان Main است و تعجب از این که صفحه true نشان میدهد نه pass. Main این جلسه باید فقط همان bool و همان if / else را نگه دارد.
حالا میتوانید یک bool نگه دارید، آن را داخل if (…) بگذارید، و به هر نتیجه بلوک آکولاد خودش را بدهید. وقتی آزمون true است یک خط نوشتن اجرا میشود؛ وقتی false است خط نوشتن else اجرا میشود. صفحهٔ بعد switch است، جایی که چند مقدار ثابت هر کدام case خودشان را دارند، نه یک دوشاخهٔ true / false تنها.
صفحه همان مسیر انتخابشده است
فایلی که نگه میدارید pass مینویسد. نام ready داخل پرانتز است، و ready روی صفحه نیست. کلمهٔ true روی خط نگهداری است، و true روی صفحه نیست. مسیر else داخل فایل است، و در اجرای نگهداشته اجرا نمیشود. گیومه دور if (ready) حرف مینویسد، نه مسیر انتخابشده را.
🧠 دانش خود را بیازمایید
دانش خود را بیازمایید
خود را با این آزمون تعاملی به چالش بکشید و ببینید موضوع را چقدر خوب درک کردهاید
📝 دستورالعملها
- هر سوال را با دقت بخوانید
- بهترین پاسخ را برای هر سوال انتخاب کنید
- میتوانید آزمون را هر چند بار که میخواهید تکرار کنید
- پیشرفت شما در بالا نمایش داده میشود