حلقه for
یکی دیگر از ساختارهای تکرار حلقه for است. این حلقه عملی شبیه به حلقه while انجام میدهد و فقط دارای چند خصوصیت اضافی است. ساختار حلقه for به صورت زیر است :
for(initialization; condition; operation) { code to repeat; }
مقدار دهی اولیه (initialization) اولین مقداری است که به شمارنده حلقه میدهیم. شمارنده فقط در داخل حلقه for قابل دسترسی است.
شرط (condition) در اینجا مقدار شمارنده را با یک مقدار دیگر مقایسه میکند و تعیین میکند که حلقه ادامه یابد یا نه.
عملگر (operation) که مقدار اولیه متغیر را کاهش یا افزایش میدهد.
در زیر یک مثال از حلقه for آمده است:
using System; public class Program { public static void Main() { for(int i = 1; i <= 10; i++) { Console.WriteLine("Number " + i); } } }
Number 1 Number 2 Number 3 Number 4 Number 5 Number 6 Number 7 Number 8 Number 9 Number 10
برنامه بالا اعداد 1 تا 10 را با استفاده از حلقه for میشمارد. ابتدا یک متغیر به عنوان شمارنده تعریف میکنیم و آن را با مقدار 1 مقدار دهی اولیه میکنیم. سپس با استفاده از شرط آن را با مقدار 10 مقایسه میکنیم که آیا کمتر است یا مساوی؟ توجه کنید که قسمت سوم حلقه (i++) فوراً اجرا نمیشود. کد اجرا میشود و ابتدا رشته Number و سپس مقدار جاری i یعنی 1 را چاپ میکند. آنگاه یک واحد به مقدار i اضافه شده و مقدار i برابر 2 میشود و بار دیگر i با عدد 10 مقایسه میشود و این حلقه تا زمانی که مقدار شرط true شود ادامه مییابد. حال اگر بخواهید معکوس برنامه بالا را پیاده سازی کنید یعنی اعداد از بزرگ به کوچک چاپ شوند باید به صورت زیر عمل کنید :
for (int i = 10; i > 0; i--) { //code omitted }
کد بالا اعداد را از 10 به 1 چاپ میکند (از بزرگ به کوچک). مقدار اولیه شمارنده را 10 میدهیم و با استفاده از عملگر کاهش (–) برنامهای که شمارش معکوس را انجام میدهد ایجاد میکنیم. میتوان قسمت شرط و عملگر را به صورتهای دیگر نیز تغییر داد. به عنوان مثال میتوان از عملگرهای منطقی در قسمت شرط و از عملگرهای تخصیصی در قسمت عملگر افزایش یا کاهش استفاده کرد. همچنین میتوانید از چندین متغیر در ساختار حلقه for استفاده کنید.
for (int i = 1, y = 20; i < 10 && y >= 2; i++, y -= 2) { //some code here }
به این نکته توجه کنید که اگر از چندین متغیر شمارنده یا عملگر در حلقه for استفاده میکنید باید آنها را با استفاده از کاما از هم جدا کنید.
سلام. من میخواستم نتیجه فوق در یک TextBox نمایش داده بشه. ولی نهایت اخرین عدد به من نمایش داده میشه چیکار باید بکنم. ممنون میشم راهنماییم کنید.
سلام،
ممنون میشم سوالتون رو تو بخش پرسش و پاسخ مطرح بفرمایید
http://www.w3-farsi.com/forum
چرا کدها رو تست کردم . میخواستم همونطور که شرط رو در حلقه for تعریف کردیم خروجی هم به همون نحو نشان بده که الان متوجه شدم.
اوکی، در ضمن اگه بخواین هر دو رو داشته باشین می تونید کد رو به صورت زیر بنویسین
یعنی نیازی به چاپ i نیست ؟ خود به خود چاپ میشه ؟؟ ممنون که سریع جواب میدین
بله، مگه شما کدها رو تست نمی کنید؟ ویژوال استودیو رو باز و کد ها رو تست کنید. نتیجه اجرای کد بالا به صورت زیره
با سلام اگر بخواهم آخرین شرطی که نوشتید y , i را به ترتیب چاپ کند باید داخل console چه مقداری را تایپ کنم ؟ ممنون میشم اگه پاسخ بدین
for (int i = 1, y = 20; i < 10 && y >= 2; i++, y -= 2) { Console.WriteLine(y); }
بسیار عالی . در اینجا مکانیزم حلقه خوب توضیح داده شده اما در قسمت do while خیر. موفق باشید
سلام، حلقه do while ، اصلاح شد، دوباره مطالعه بفرمایید.