دراین مقاله، ما قصد داریم نحوه استفاده از حلقه ها در #C، انواع حلقه های موجود و زمان استفاده از آنها را یاد بگیریم. ما برای توضیح دقیق کاربرد هر حلقه در #C از چند مثال استفاده خواهیم کرد.
این مقاله، سرفصلی از دوره آموزشی زیر میباشد:
- راه اندازی محیط توسعه
- Data Type ها، Declaration ها و تعریف متغیرها در #C
- عملگرها در #c
- تبدیل نوع های داده ای
- ورودی و خروجی در #c
- کار با رشته ها
- شرطها در #c
- حلقه ها (While، Do-While، For)
- مدیریت خطاها
- Access Modifier ها
- متدها
- کلمات کلیدی Ref و Out
- بازگشت و متدهای بازگشتی
- آرایه ها (آرایه های تک بعدی و چند بعدی)
- کار با فایلها، StreamWriter و StreamReader
- کار با فایلها، File و Directory
اگر می خواهید محتویات کامل این دوره را ببینید ، می توانید بر روی لینک مبانی #c کلیک کنید.
اگر میخواهید سورس مثالها را دانلود کنید اینجا کلیک کنید.
بریم تو دل کار.
در این مقاله، ما در مورد موضوعات زیر صحبت میکنیم:
حلقه While
حلقه while حلقه ای است با یک شرط از پیش تعیین شده (precondition). به این معنی که، ما اول شرط مورد نظر را چک میکنیم و سپس در صورتیکه نتیجه شرط true بود، سپس expression مان را اجرا میکنیم.
1 2 3 4 |
while(condition) { < expression > ; } |
مثال 1: یک برنامه بنویسید که جمع اعداد از n تا m (ورودی هایی که از کاربر میگیرد) را محاسبه کند:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
class Program { static void Main(string[] args) { Console.WriteLine("Enter the integer n number:"); int n = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("Enter the integer m number"); int m = Convert.ToInt32(Console.ReadLine()); int sum = 0; while(n <= m) { sum += n; n++; } Console.WriteLine($"Sum from n to me is {sum}"); Console.ReadKey(); } } |
حالا اجازه بدید تا کد بالا را شرح دهیم.
به دلیل اینکه ما جمع اعداد از n تا m را محاسبه میکنیم، باید یک متغیر برای ذخیره نتیجه جمع داشته باشیم. این متغیر در ابتدا باید با عدد 0 مقداردهی اولیه شود. بدون مقداردهی اولیه، برنامه ما بدلیل عدم تخصیص متغیر sum ، هنگام build شدن با خطا روبه رو خواهد شد.
در حلقه while، ما کل اعداد از n تا m را پیمایش کرده و هریک از آنها را با مقدار درون متغیر sum جمع میکنیم و نتیجه را مجددا درون متغیر sum میریزیم. ما از این expression برای این کار استفاده میکنیم: ;sum += n که خلاصه شده ;sum = sum + n میباشد.
در آخر ما باید متغیر n را 1 واحد افزایش دهیم. بدون آن ، ما یک حلقه بی نهایت خواهیم داشت زیرا در اینصورت مقدار متغیر n همیشه کمتر از مقدار متغیر m خواهد بود.
زمانیکه تعداد تکرار در حلقه نامشخص است بهتر است از حلقه while استفاده کنیم. این به این معنی است که ما میتوانیم حلقه را تکرار کنیم تا زمانیکه شرطهای مورد نظر تحقق یابد، اما از طرفی هم اطلاعی نداریم که چندمرتبه باید این حلقه تکرار شود تا آن شرطهای مورد نظر تحقق یابد.
حلقه For
حلقه for، حلقه دیگری با یک شرط از پیش تعیین شده (precondition) است. ما از سینتکس زیر برای نوشتن آن در #C استفاده میکنیم:
1 2 3 4 |
for (initialization; condition; progression;) { <loop body > ; } |
ما از initialization در ابتدای حلقه استفاده می کنیم و این به معنای مقداردهی اولیه متغیر با یک مقدار است. از condition برای تعیین زمان کامل شدن حلقه استفاده می شود. Progression قسمتی است که در آن متغیر خود را که در قسمت initialization مقداردهی شده است را افزایش یا کاهش می دهیم. body شامل تمام expression هایی است که باید تا زمانیکه condition برقرار باشد (true باشد) اجرا شوند.
مهم است که ترتیب اجرا را در این نوع حلقه بدانید: Loop Body ،Condition ،Initialization و در آخر Progression به ترتیب اجرا میشوند.
مثال 1: برنامه ای بنویسید که تمام اعداد صحیح بین n تا 1 را در خروجی چاپ کند:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
class Program { static void Main(string[] args) { Console.WriteLine("Enter number n that is greater than 1: "); int n = Convert.ToInt32(Console.ReadLine()); for (int i = n; i >= 1; i--) { Console.WriteLine(i); } Console.ReadKey(); } } |
زمانیکه میدانیم که چه تعداد تکرار قرار است داشته باشیم بهتر است از حلقه for استفغاده کنیم. این بدان معنی است که اگر تمام عناصر موجود در یک collection را پیمایش میکنیم یا یک نقطه پایان برای تکرارهایمان در نظر داریم بهتر است از این حلقه استفاده کنیم.
حلقه Do-While
این حلقه، حلقه ای است که شرط مورد نظر در انتها مشخص میشود (postcondition). این به این معنی است که بدنه لحقه ابتدا اجرا میشود و شرط مورد نظر در انتها چک میشود. این کاملاً مخالف نمونه های قبلی از حلقه ها است.
ما میتوانیم این حلقه را به شیوه زیر پیاده سازی کنیم:
1 2 3 4 |
do { < expression > ; } while (condition); |
مثال 1: برنامه ای بنویسید که جمع اعداد از n تا m (ورودی هایی که از کاربر میگیرد) را محاسبه کند:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
class Program { static void Main(string[] args) { Console.WriteLine("Enter the integer n number:"); int n = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("Enter the integer m number"); int m = Convert.ToInt32(Console.ReadLine()); int sum = 0; do { sum += n; n++; } while (n <= m); Console.WriteLine($"The sum from n to m is {sum}"); Console.ReadKey(); } } |
مثال 2: برنامه ای بنویسید که جمع اعداد زوج تا n را محاسبه کند:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
class Program { static void Main(string[] args) { Console.WriteLine("Enter the upper border number n: "); int n = Convert.ToInt32(Console.ReadLine()); int sum = 2; int startingNumber = 4; do { sum += startingNumber; startingNumber += 2; }while (startingNumber <= n); Console.WriteLine($"Sum of all the even number to n is {sum}"); Console.ReadKey(); } } |
نتیجه گیری
تبریک.
اکنون می توانیم تکرارها را با ترکیبی از همه آنچه از مقالات قبلی یاد گرفتیم را پیاده سازی کنیم، بنابراین برنامه های قدرتمند تری را میتوانیم ایجاد کنیم.
در پست بعدی، ما در مورد نحوه handle کردن خطاها در #C صحبت میکنیم.