آموزش سی شارپ c# درس چهارم

 
ارسال شده در تاریخ 1392/7/22 توسط admin در زمینه آموزش سی شارپ
 
درس چهارم - دستورالعمل های کنترلی، حلقه ها
 
در این درس نحوه استفاده از دستورالع مل های کنترل حلقه در زبان C# را فرا خواهید گرفت . هدف این درس فهم و دری موارد زیر میباشد : حلقه while حلقه do-while حلقه for حلقه foreach
مطالب تکمیلی درباره دستورالعمل break فراگیری نحوه بکارگیری دستورالعمل continue
 
در درس قبل، نحوه ایجاد یک حلقه بسیار ساده را با استفاده از دستور goto را فرا گرفتید . در همان مطلب نیز اشاره کردیم که این روش، روش مناسبی جهت ایجاد حل قه نیست . در این درس با نحوه صحیح ایجاد حلقه ها در زبان C# آشنا خواهید شد . اولین دستوری که با آن آشنا می شوید نیز دستور while است .
 
حلقه while
ابتدا به مثال زیر توجه نمایید .
using System;
 
class WhileLoop
{
public static void Main()
{
int myInt = 0; while (myInt < 10)
{
Console.Write("{0} ", myInt); myInt++;
}
Console.WriteLine();
}
}
مثال 4-1 که در بالا ملاحظه می کنید، یک حلقه while ساده را نشان می دهد . این حلقه با کلمه کلیدی while آغاز شده و سپس به دنبال آن یک عبارت منطقی قرار می گیرد و مورد بررسی قرار می گیرد . تمامی دستورالعمل های کنترلی از یک عبارت منطقی بهره می گیرند و این بدین معناست که ابتدا این عبارت باید بررسی شود تا مشخص شود مقدار این عبارت true است یا .false در این مثال مقدار متغیر myInt مورد بررسی قرار میگیرد تا چک شود آیا مقدارش از 10 کوچکتر هست یا خیر . چون در
ابتدای برنامه به این متغیر مقدار صفر تخصیص داده شده است، عبارت منطقی مقدار true را باز می گرداند و سپس بلوی قرار گرفته بعد از عبارت منطقی مورد اجرا قرار میگیرد .
 
 
www.iranproje.com
درون بلوی while ابتدا مقدار متغیر myInt در کنسول نمایش داده میشود و سپس یک واحد به مقدار این متغیر افزوده می گردد . پس از اتمام بلوی while ، عبارت منطقی مجددا کنترل می شود و در صورتیکه این عبارت مقدار true بازگرداند، حلقه while مجدداً اجرا می شود . زمانیکه عبارت منطقی مقدار false برگرداند، اجرا برنامه به اولین دستور ب عد از بلوی while منتقل می شود . در این مثال اعداد صفر تا 9 بر روی صفحه نمایش داده می شوند و سپس یک خط خالی چاپ شده و اجرای برنامه خاتمه مییابد .
حلقه بعدی که بسیار شبیه به حلقه while می باشد، حلقه do-while است .
 
حلقه do-while
ابتدا به مثال 4-2 توجه نمایید .
using System;
 
class DoLoop
{
public static void Main()
{
string myChoice; do
{
منویی نمایش داده می شود //
Console.WriteLine("My Address Book "); Console.WriteLine("A - Add New Address"); Console.WriteLine("D - Delete Address"); Console.WriteLine("M - Modify Address"); Console.WriteLine("V - View Addresses"); Console.WriteLine("Q - Quit ");
Console.WriteLine("Choice (A,D,M,V,or Q): ");
ورودی کاربر بررسی می شود //
myChoice = Console.ReadLine();
تصمیمی بر اساس ورودی کاربر گرفته می شود //
switch(myChoice)
{
case "A": case "a":
Console.WriteLine("You wish to add an address."); break; case "D": case "d":
Console.WriteLine("You wish to delete an address."); break; case "M": case "m":
Console.WriteLine("You wish to modify an address."); break; case "V":
 
www.Arsanjan.blogfa.com case "v":
Console.WriteLine("You wish to view the address list."); break; case "Q": case "q":
Console.WriteLine("Bye."); break; default:
Console.WriteLine("{0} is not a valid choice", myChoice); break;
}
Console.Write("Press Enter key to continue..."); Console.ReadLine(); Console.WriteLine();
} while (myChoice != "Q" && myChoice != "q");
}
}
مثال 4-2 نحوه استفاده از حلقه do-while را نشان می دهد . ساختار نوشتاری این دستور بصورت زیر است :
do
{ } while ();
 
دستورالعملهای مورد استفاده در بلوی این دستور، هر دستورالعمل معتبر زبان C# می تواند باشد . عبارت منطقی نیز همانند نمونه هائیست که تا کنون با آنها آشنا شدیم و یکی از دو مقدار true یا false را بر می گرداند .
 
یکی از مصارف عمده حلقه do به جای حلقه while ، مواردی است که می خواهیم یکسری دستورالعمل خاص، که آنها را درون بلوی do قرار می دهیم، حداقل یکبار اجرا شون د . در این مثال ابتدا یک منو برای کاربر نمایش داد ه میشود و سپس ورودی از وی دریافت می گردد . چون حلقه while عبارت منطقی خود در ابتدای اجرای حلقه بررسی می نماید، از اینرو تضمینی برای اجرای دستورات درون بلوی وجود نخواهد داشت، مگر شما بطور صریح برنامه را طوری طراحی نمایید که این عمل اتفاق بیفتد .
 
یک نگاه کلی به مثال 4-2 بیندازیم . در متد Main() متغیر myChoice را از نوع رشته ای تعریف نموده ایم . سپس یکسری دستورات را بر روی کنسول چاپ نموده ایم . این دستورات منوهای انتخاب برای کاربر هستند . ما باید ورودی از کاربر دریافت کنیم
که چون این عمل از طریق Console.ReadLine() صورت گرفته، باید در متغیری از نوع رشت ه ای قرار گیرد و از اینرو این ورودی را در myChoice قرار داده ایم . ما باید ورودی را از کاربر دریافت کنیم و بر روی آن پردازش انجام دهیم . یک روش کارآمد
برای این منظور استفاده از دستورالعمل switch است . همانطور که در دستور switch ملاحظه می کنید، بری default نیز دستوری در نظر گرفته شده است که نشان میدهد مقدار ورودی معتبر نیست .
 
حلقه for
به مثال 4-3 توجه کنید .
using System;
 
class ForLoop
{
public static void Main()
 
{
for (int i=0; i < 20; i++)
{
if (i == 10) break; if (i % 2 == 0) continue;
Console.Write("{0} ", i);
}
Console.WriteLine();
}
}
مثال 4-3 یک حلقه for را نشان می دهد . استفاده از حلقه for برای زمانی مناسب است که دقیقاً بدانید که حلقه چندبار باید تکرا شود . محتویات درون پرانتزهای حلقه for از سه قسمت تشکیل شده است :
(; ; )
 
initializer list لیستی از عبارات است که بوسیله کاما از یکدیگر جدا می شوند . این عبارات تنها یکبار در طول دوره کاری حلقه for پردازش می شوند . همانطور که در مثال 4-3 نیز ملاحظه می کنید، این قسمت معمولا برای تعیین متغیری عددی جهت آغاز عمل شمارش مورد استفاده قرار می گیرد .
 
پس از اینکه عبارتهای دورن initializer list پردازش شد، حلقه for به سراغ قسمت بعدی، یعنی عبارات منطقی (boolean
expression) می رود . در این قسمت تنها یک عبارت منطقی می توان قرار داد ولی هر اندازه که بخواهید می توانید این عبار ت منطقی را پیچیده نمایید، فقط توجه نمایید که این عبارت باید بگون ه ای شود که مقدار true یا false برگرداند . از این عبارت منطقی معمولا جهت کنترل متغیر شمارشی استفاده می شود .
 
هنگامیکه عبارت منطقی مقدار true بازگرداند، دستورالعمل های بلوی for اجرا می شوند . در مثال 4-3 ما از دو دستور if درون حلقه for نیز استفاده کرده ایم . اولین دستور if بررسی می کند که آیا مقدار متغیر i برابر با 10 هست یا نه . در اینجا یک نمونه دیگر از استفاده دستور break را ملاحظه می کنید . عملکرد دستور break در اینجا نیز همانند مورد استفاده آن در دستور switch است . در صورت اجرای دستور break اجرای حلقه for خاتمه یافته و اجرای برنامه به اولین دستور بعد از حلقه for منتقل می شود .
 
دومین دستور if با اسقتاده از عملگر باقیمانده (%) بررسی می کند که آیا متغیر i بر 2 بخش پذیر هست یا نه . در صورتیکه متغیر i بر 2 بخش پذیر باشد، دستور continue اجرا می شود . پس از اجرای دستور continue از سایر دستورات حلقه for که بعد از continue قرار گرفتهاند صرف هنظر می شود و اجرای برنامه به اول حلقه for باز میگردد .
 
قسمت سوم در حلقه for ، قسمت postloopaction list است . پس از اینکه تمامی دستورات درون حلقه for اجرا شد، اجرای
حلقه به این قسمت باز می گردد . این قسمت لیستی از عملیاتی است که می خواهید پس از اجرای دستورات درون بلوی حلقه for انجام شوند . در مثال 4-3 این عمل، اضافه کردن یک واحد به متغیر شمارشی است . پس از افزوده شدن یک واحد به متغیر شمارشی، عبارت منطقی مجددًا مورد بررسی قرار می گیرد و در صورتیکه مقدار این عبارت برابر با true باشد، حلقه for مجدداً اجرا می گردد . حلقه for تا زمانیکه عبارت منطقی برابر با true باشد اجرا میشود .
 
www.iranproje.com
 
حلقه foreach به مثال 4-4 توجه کنید .
using System;
 
class ForEachLoop
{
public static void Main()
{
string[] names = {"Meysam", "Ghazvini", "C#", "Persian"}; foreach (string person in names)
{
Console.WriteLine("{0} ", person);
}
}
}
حلقه foreach برای پیمایش مجمو عه ها بسیار مناسب است . یک نمونه از مجموعه ها در C# ، آرایه ها هستند که در مثال 4-4 نیز
مورد استفاده قرار گرفته است . اولین کاری که در متد Main() صورت گرفته، اعلان آرایه names از نوع رش ته ای و مقدار دهی آن است .
 
درون پرانتزهای foreach عبارتی متشکل از دو المان قرار دارد که این الما ن ها بوسیله کلمه کلیدی in از یکدیگر جدا شده اند . المان سمت راست، مجمو عه ایست که می خواهید اعضای آنرا مورد پیمایش قرار د هید . المان سمت چپ، متغیری از نوع مجموع ه مورد نظر است که مقادیر پیمایش شده را بر میگرداند .
 
در هربار پیمایش، عنصری جدیدی از مجموعه درخواست می شود . این درخواستها از طریق متغیر فقط خواندنی تعریف شده درون پرانتزهای foreach بازگردانده می شوند . تا زمانیکه عنصری در مجموعه وجود داشته باشد که مورد پ یمایش قرار نگرفته است، حلقه foreach به کار خود ادامه خواهد داد زیرا عبارت منطقی حلقه foreach مقدار true را باز می گرداند . به محض اینکه تمامی عناصر مجموعه پیمایش شد، عبارت منطقی برابر با false شده و اجرای حلقه foreach خاتمه می یابد . در این حالت اجرای برنامه به اولین دستور بعد از حلقه foreach منتقل می گردد .
 
در مثال 4-4 ، متغیری از نوع رشت ه با نام person برای نگهداری عناصری که از آرایه names خوانده می شود، تعریف کرد ه ایم . تا زمانیکه اسمی در آرایه names وجود داشته باشد، در متغیر person قرار می گیرد و درون حلقه foreach بوسیله دستور Console.WriteLine() در خروجی نمایش داده می شود .
 
نکته : یکی از مهمترین ویژگیهای حلقه foreach در آنست که فقط میتواند عناصر یک مجموعه را بخواند و نم یتواند تغییری در آنها ایجاد نماید . مزیت دیگر آن، پیمایش تمامی عناصر مجموعه بدون اطلاع از تعداد عناصر موجود در آن است .
 
خلاصه
در این درس با نحوه کار با دستورالع مل های for ، while ، do-while و foreach آشنا شدید . حلقه while تا زمانیکه شرطش صحیح باشد انجام می شود بدین معنی که تا زمانیکه عبارت منطقی آن دارای مقدار true باشد، دستورات درون بلو ی آن اجرا
 
می شوند . حلقه do ، دستورات بلوی خود را حداقل یکبار اجرا می کند و سپس شرط مورد نظر را بررسی می نماید و در صورتیکه عبارت منطقی آن مقدار true بازگرداند، دستورات بلوی خود را تکرا ر مینماید . حلقه for دستورات بلوی خود را به تعداد دفعات مشخص اجرا می نماید و حلقه foreach عناصر یک مجموعه را مورد پیمایش قرار میدهد . در نهایت نیز اشاره میشود که روند اجرای حلقه ها با استفاده از دستورات break و continue تغییر می نماید .
Copyright © 2014 icbc.ir