با عرض سلام و احترام.
پیشاپیش از شما دوست عزیز و گرامی، بابت وقتی که برای مطالعه ی این مطلب خواهید گذاشت، سپاسگزارم.
تقاضا دارم، در صورت مشاهده ی اشتباه متنی یا محتوایی، به اینجانب اطلاع دهید تا (ضمن کمک به یادگیری بنده) در اسرع وقت برای اصلاح متن اقدام نمایم.
شماره ی تماس:
09215149218
نشانی پست الکترونیکی:
RezaQadimi.ir@Gmail.com
آدرس کدها:
Learning-CSharp-Fundamental
آدرس سایت ها:
https://Reza-Qadimi.ir - https://WannaDate.ir
گاهی اوقات، نیاز داریم تا یک عملیات را به طور مرتب تکرار کنیم. اگر قصد داشته باشیم که این کار را بدون استفاده از حلقه ها انجام دهیم، باید یک کد تکراری را n بار بنویسیم!
حلقه ها به ما این قابلیت را میدهند، که دستورات مدِ نظرمان را به تعداد دلخواه تکرار نماییم.
در این مقاله، می خواهیم به بررسی تعدادی از حلقه های موجود در زبان سی شارپ بپردازیم.
این حلقه، از 4 ناحیه تشکیل شده است:
for (Initialize; Condition; Increment or Decrement) { // Statement(s) }
در این بخش، متغیری که شمارنده ی حلقه for قرار است بر اساس آن عمل کند را تعریف می نماییم (این بخش فقط یک بار اتفاق می افتد).
در این قسمت، شرطی را تعریف می کنیم که مشخص کننده ی زمان/شرایط به پایان رسیدن عملیات (خروج از) حلقه ی ماست (این قسمت، باید مقدار بازگشتی از نوع bool داشته باشد (یعنی یا مقدار true برمیگرداند، یا مقدار false)).
در این بخش، مقداری که با هر بار تکرار، به شمارنده ی حلقه اضافه و یا از آن کم میشود را مشخص می کنیم.
بدنه ی حلقه ی 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($"Hello, World ({ index + 1 })!"); } System.Console.ReadLine();
Hello, World (1)!
Hello, World (2)!
Hello, World (3)!
Hello, World (4)!
Hello, World (5)!
پی نوشت: می توان از حلقه ها، به صورت تو در تو (Nested) استفاده کرد.
برای استفاده کردن از این حلقه، کافیست یک شرط برای مشخص کردن شرایط خروج از حلقه مشخص نماییم.
while (Condition) { // Statement(s) }
نکته: با هر بار اجرای دستورات داخل حلقه، کامپایلر به شرط تعیین شده مراجعه میکند، و در صورت برقرار بودن شرط، مجددا دستورات را اجرا می نماید، وگرنه از حلقه خارج می شود.
مثال:
int number = 5; while (number > 0) { System.Console.WriteLine($"Number = { number }"); number--; } System.Console.ReadLine();
ممکن است، این سوال برای شما پیش آمده باشد، که باید از کدام یک از این دو دستور استفاده کنیم؟! یا استفاده از کدام یک از این دستورات شیک تر است؟؟
لازم به ذکر است که تقریبا هر کاری که می توانیم با حلقه ی for انجام دهیم را، می شود با حلقه ی while نیز انجام داد (و بالعکس).
اگر بخواهیم که یک حلقه n بار تکرار بشود، دستور for شیک تر است و کد کمتری از while خواهد داشت.
اما زمانی که نمی دانیم که یک حلقه، باید چند بار تکرار شود تا به نتیجه ی مد نظرمان برسیم (مثلا برای گرفتن یک ورودی از جنس عدد صحیح، یا...)، استفاده از حلقه ی while شیک تر و منطقی تر است.
این حلقه، از نظر ظاهر و عملکرد مشابه حلقه ی while می باشد، با این تفاوت که در ابتدا یک بار مجموعه کدهای درون بلاک اجرا، و بعد از آن شرط حلقه را بررسی میکند.
یعنی حتی اگر شرط داخل پرانتر درست نباشد، دستورات ما حداقل یک بار اجرا خواهند شد (چرا که شرط اتمام loop، در انتهای حلقه نوشته شده است):
do { // Statement(s) } while (Condition);
مثال:
do { System.Console.WriteLine("1 is Greater than 1995!!"); } while (1995 < 1); System.Console.ReadLine();
1 is Greater than 1995!!
پی نوشت: حلقه ی دیگری داریم به نام foreach، که در مقاله ی بعد، به بررسی آن می پردازیم.
به وسیله ی این دستور، می توانیم در شرایطی که مد نظر داریم، از حلقه خارج شویم.
هر زمان کامپایلر، در هنگام اجرای برنامه به دستور break برخورد کند، از داخلی ترین (یا درونی ترین) حلقه ای که در آن قرار دارد (حلقه، نه بلاک!)، خارج می شود.
هر وقت در زمان اجرای برنامه، کامپایلر به دستور continue برخورد کند، به ابتدای آخرین (یا درونی ترین) حلقه ی آن وارد شده، و شرط آن را چک می کند.
این دستور باعث خارج شدن از حلقه نمی شود، و صرفا باعث می شود که حلقه، تکرار بعدی خود را (در صورت برقرار بودن شرطِ مربوطه) اجرا نماید.
پی نوشت: در مقاله ی بعد، به سراغ آشنایی با آرایه ها، در زبان سی شارپ می رویم.
معرفی:
رضا قدیمی هستم. برنامه نویس و دانش آموزِ حوزه ی وب، بسیار مشتاق در یادگیری مفاهیم و اطلاعات جدید در این حوزه.