آموزش سی شارپ مقدماتی (بخش هفدهم - حلقه ها):


با عرض سلام و احترام.
پیشاپیش از شما دوست عزیز و گرامی، بابت وقتی که برای مطالعه ی این مطلب خواهید گذاشت، سپاسگزارم.
تقاضا دارم، در صورت مشاهده ی اشتباه متنی یا محتوایی، به اینجانب اطلاع دهید تا (ضمن کمک به یادگیری بنده) در اسرع وقت برای اصلاح متن اقدام نمایم.
شماره ی تماس:
09215149218
نشانی پست الکترونیکی:
RezaQadimi.ir@Gmail.com
آدرس کدها:
Learning-CSharp-Fundamental
آدرس سایت ها:
https://Reza-Qadimi.ir - https://WannaDate.ir

گاهی اوقات، نیاز داریم تا یک عملیات را به طور مرتب تکرار کنیم. اگر قصد داشته باشیم که این کار را بدون استفاده از حلقه ها انجام دهیم، باید یک کد تکراری را n بار بنویسیم!

حلقه ها به ما این قابلیت را میدهند، که دستورات مدِ نظرمان را به تعداد دلخواه تکرار نماییم.

در این مقاله، می خواهیم به بررسی تعدادی از حلقه های موجود در زبان سی شارپ بپردازیم.


حلقه ی for:

این حلقه، از 4 ناحیه تشکیل شده است:

for (Initialize; Condition; Increment or Decrement)
{
    // Statement(s)
}


  • Initialize (شروع شمارش):

در این بخش، متغیری که شمارنده ی حلقه for قرار است بر اساس آن عمل کند را تعریف می نماییم (این بخش فقط یک بار اتفاق می افتد).


  • Condition (شرط حلقه):

در این قسمت، شرطی را تعریف می کنیم که مشخص کننده ی زمان/شرایط به پایان رسیدن عملیات (خروج از) حلقه ی ماست (این قسمت، باید مقدار بازگشتی از نوع bool داشته باشد (یعنی یا مقدار true برمیگرداند، یا مقدار false)).


  • Increment or Decrement (شمارشگر حلقه):

در این بخش، مقداری که با هر بار تکرار، به شمارنده ی حلقه اضافه و یا از آن کم میشود را مشخص می کنیم.


  • Statement (بدنه حلقه یا دستورات):

بدنه ی حلقه ی for، یا دستوراتی که میخواهیم با هر بار تکرار حلقه اجرا شوند را در این قسمت مینویسیم.

نکته: در صورت صادق نبودن شرط، این دستورات اجرا نمیشوند!

ترتیب اجرای دستورات:

for (a; b; c)
{
    // d
}

order:
a → b → c → d → c → b → d → c → b → ...


مثال:

for (int index = 0; index < 5; index ++)
{
    System.Console.WriteLine($&quotHello, World ({ index + 1 })!&quot);
}

System.Console.ReadLine();


  • Result:
Hello, World (1)!
Hello, World (2)!
Hello, World (3)!
Hello, World (4)!
Hello, World (5)!

پی نوشت: می توان از حلقه ها، به صورت تو در تو (Nested) استفاده کرد.


حلقه ی while:

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

while (Condition)
{
    // Statement(s)
}

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


مثال:

int number = 5;

while (number > 0)
{
    System.Console.WriteLine($&quotNumber = { number }&quot);

    number--;
}

System.Console.ReadLine();

حلقه ی for یا while؟

ممکن است، این سوال برای شما پیش آمده باشد، که باید از کدام یک از این دو دستور استفاده کنیم؟! یا استفاده از کدام یک از این دستورات شیک تر است؟؟

لازم به ذکر است که تقریبا هر کاری که می توانیم با حلقه ی for انجام دهیم را، می شود با حلقه ی while نیز انجام داد (و بالعکس).

اگر بخواهیم که یک حلقه n بار تکرار بشود، دستور for شیک تر است و کد کمتری از while خواهد داشت.

اما زمانی که نمی دانیم که یک حلقه، باید چند بار تکرار شود تا به نتیجه ی مد نظرمان برسیم (مثلا برای گرفتن یک ورودی از جنس عدد صحیح، یا...)، استفاده از حلقه ی while شیک تر و منطقی تر است.


حلقه ی do-while:

این حلقه، از نظر ظاهر و عملکرد مشابه حلقه ی while می باشد، با این تفاوت که در ابتدا یک بار مجموعه کدهای درون بلاک اجرا، و بعد از آن شرط حلقه را بررسی میکند.

یعنی حتی اگر شرط داخل پرانتر درست نباشد، دستورات ما حداقل یک بار اجرا خواهند شد (چرا که شرط اتمام loop، در انتهای حلقه نوشته شده است):

do
{
// Statement(s)
} while (Condition);


مثال:

do
{
    System.Console.WriteLine(&quot1 is Greater than 1995!!&quot);
} while (1995 < 1);

System.Console.ReadLine();


  • Result
1 is Greater than 1995!!


پی نوشت: حلقه ی دیگری داریم به نام foreach، که در مقاله ی بعد، به بررسی آن می پردازیم.


دستور break:

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

هر زمان کامپایلر، در هنگام اجرای برنامه به دستور break برخورد کند، از داخلی ترین (یا درونی ترین) حلقه ای که در آن قرار دارد (حلقه، نه بلاک!)، خارج می شود.


دستور continue:

هر وقت در زمان اجرای برنامه، کامپایلر به دستور continue برخورد کند، به ابتدای آخرین (یا درونی ترین) حلقه ی آن وارد شده، و شرط آن را چک می کند.

این دستور باعث خارج شدن از حلقه نمی شود، و صرفا باعث می شود که حلقه، تکرار بعدی خود را (در صورت برقرار بودن شرطِ مربوطه) اجرا نماید.


پی نوشت: در مقاله ی بعد، به سراغ آشنایی با آرایه ها، در زبان سی شارپ می رویم.


معرفی:
رضا قدیمی هستم. برنامه نویس و دانش آموزِ حوزه ی وب، بسیار مشتاق در یادگیری مفاهیم و اطلاعات جدید در این حوزه.