در زبان های برنامه نویسی مواقعی وجود دارد که نیاز است قسمتی از کد ها به صورت تکراری تا زمانی مشخص اجرا شوند. در این مواقع میتوان از حلقه for در زبان سی شارپ استفاد کرد. در این فصل با حلقه ی for آشنا خواهیم شد.
حلقه for
کلمه رزرو شده for به یک حلقه در زبان برنامه نویسی سی شارپ اشاره دارد. حلقه ی for مجموعهای از دستورات را تا زمانی که شرط مشخص شده در آن صحیح ارزیابی میشود به صورت تکراری اجرا میکند.
در زیر قاعده نوشتاری حلقه for آمده است :
for (variable initialization; condition; steps) { //execute this code block as long as condition is satisfied }
همانطور که در قاعده نوشتاری بالا آمده است حلقه for شامل سه قسمت است. مقدار اولیه (initialization)، عبارت شرطی (condition)، گام یا شمارنده (steps) که هر کدام از آن ها با علامت سمی کالن(;) از هم جدا شده اند. توضیحی از هر قسمت در زیر آمده است :
- مقداردهی متغیر : در این قسمت یک متغیر اعلان و مقدار دهی میشود. این متغیر در قسمتهای شرطی و شمارنده استفاده می شود.
- شرط : قسمت شرطی در حلقه for شامل یک عبارت بولین است که یک مقدار صحیح و یا ناصحیح را برمیگرداند.
- گام یا شمارنده : در این قسمت یک کاهنده و یا افزایش دهنده قرار می گیرد.
در زیر نمونه مثال ساده ای از حلقه for آورده شده است :
using System; public class Program { public static void Main() { for (int i = 0; i < 10; i++) { Console.WriteLine("Value of i: {0}", i); } } }
خروجی نمونه مثال بالا به شکل زیر است :
Value of i: 0 Value of i: 1 Value of i: 2 Value of i: 3 Value of i: 4 Value of i: 5 Value of i: 6 Value of i: 7 Value of i: 8 Value of i: 9
شکل زیر اجرای گام به گام مثال بالا را نشان میدهد :
همانطور که در شکل بالا مشخص است اولین گام تعریف و مقدار دهی متغیری از نوع int است. گام دوم بررسی شرط بوده و در صورتی که صحیح ارزیابی شود در گام سوم دستورات موجود در بدنه حلقه اجرا خواهد شد. در گام چهارم به مقدار متغیر یکی افزوده شده و در نهایت دوباره شرط حلقه ارزیابی می شود.
قرار دادن قسمت های مقدار دهی اولیه، عبارت شرطی و شمارنده در حلقه for اجباری نیست. می توانید یک متغیر را قبل از حلقه for مقدار دهی کنید و قسمتهای شرط و شمارنده را در بدنه حلقه for تعریف کنید.
using System; public class Program { public static void Main() { int i = 0; for(;;) { if (i < 10) { Console.WriteLine("Value of i: {0}", i); i++; } else break; } } }
خروجی به شکل زیر خواهد بود :
Value of i: 0 Value of i: 1 Value of i: 2 Value of i: 3 Value of i: 4 Value of i: 5 Value of i: 6 Value of i: 7 Value of i: 8 Value of i: 9
در مورد حلقه های بینهایت مراقب باشید. در صورتی که برای حلقه ی for مقدار دهی اولیه ، شرط و شمارنده در نظر گرفته نشود ، می تواند به یک حلقه ی بی نهایت تبدیل شود. بنابراین اطمینان حاصل کنید که عبارت شرطی در حلقه for در نقطه ای ، مقدار false را برای اتمام حلقه برمیگرداند.
مثالی از حلقه بی نهایت :
for ( ; ; ) { Console.Write(1); }
خروجی به شکل زیر است :
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1.....
نکته : حلقه های بی نهایت بعد از اجرا باعث خطا و سر ریز در حافظه میشوند.
متغیری که در حلقه for به کار برده میشود میتواند از هر نوعی از داده نوع های شمارنده مانند double ، decimal و ... باشد :
for (double d = 1.01D; d < 1.10; d+= 0.01D) { Console.WriteLine("Value of i: {0}", d); }
خروجی :
Value of i: 1.01 Value of i: 1.02 Value of i: 1.03 Value of i: 1.04 Value of i: 1.05 Value of i: 1.06 Value of i: 1.07 Value of i: 1.08 Value of i: 1.09
قسمت شمارنده در حلقه for میتواند مقدار متغیر را کاهش یا افزایش دهد :
for(int i = 10; i> 0;i--) { Console.WriteLine("Value of i: {0}", i); }
خروجی :
Value of i: 10 Value of i: 9 Value of i: 8 Value of i: 7 Value of i: 6 Value of i: 5 Value of i: 4 Value of i: 3 Value of i: 2 Value of i: 1
کلمه رزرو شده break
شما می توانید در هر زمانی با استفاده از کلمه رزرو شده break از حلقه های for خارج شوید :
for (int i = 0; i < 10; i++) { if( i == 5 ) break; Console.WriteLine("Value of i: {0}", i); }
خروجی :
Value of i: 0 Value of i: 1 Value of i: 2 Value of i: 3 Value of i: 4
حلقه های تو در توی for
در زبان برنامه نویسی سی شارپ می توان حلقه های for را به صورت تو در تو به کار برد :
for (int i = 0; i < 10; i++) { for(int j =i; j< 10; j++) Console.WriteLine("Value of i: {0}, J: {1} ", i,j); }
خروجی نمونه مثال بالا به شکل زیر است :
Value of i: 0 , j: 0 Value of i: 0 , j: 1 Value of i: 0 , j: 2 Value of i: 0 , j: 3 Value of i: 0 , j: 4 Value of i: 0 , j: 5 Value of i: 0 , j: 6 Value of i: 0 , j: 7 Value of i: 0 , j: 8 Value of i: 0 , j: 9 Value of i: 1 , j: 1 Value of i: 1 , j: 2 Value of i: 1 , j: 3 Value of i: 1 , j: 4 Value of i: 1 , j: 5 Value of i: 1 , j: 6 Value of i: 1 , j: 7 Value of i: 1 , j: 8 Value of i: 1 , j: 9 Value of i: 2 , j: 2 Value of i: 2 , j: 3 Value of i: 2 , j: 4 Value of i: 2 , j: 5 Value of i: 2 , j: 6 Value of i: 2 , j: 7
به خاطر داشته باشد که :
- حلقه ی for بلاکی از کد ها را به صورت تکراری اجرا میکند.
- حلقه ی for شامل سه قسمت است : مقدار دهی اولیه ، قسمت شرطی و گام یا شمارنده.
- از کلمه ی break برای خروج از هر قسمتی از حلقه for میتوان استفاده کرد.
- در زبان برنامه نویسی سی شارپ حلقه های for را میتوان تو در تو به کاربرد