0

دستورالعمل‌هاي كنترلي، حلقه‌ها در #c- بخش اول

 
amirpetrucci0261
amirpetrucci0261
کاربر طلایی1
تاریخ عضویت : تیر 1388 
تعداد پست ها : 27726
محل سکونت : http://zoomstar.ir/

دستورالعمل‌هاي كنترلي، حلقه‌ها در #c- بخش اول

حلقه ها در زبان های برنامه نویسی در مواقعی استفاده میشوند که بخواهیم عملیات خاصی به طور مداوم تکرار شود. مثلا فرض نمایید می خواهیم مشخصات 20 دانشجو را دریافت و در آرایه ای ذخیره نماییم. در حقیقت میخواهیم عمل دریافت و ذخیره سازی اطلاعات یک دانشجو را 20 بار مداوم تکرار نماییم. در چنین مواقعی از حلقه ها استفاده میکنیم. تعدا دفعات تکرار یک حلقه میتواند از قبل مشخص با نامشخص باشد. در مثال قبل به دلیل مشخص بودن تعداد دانشجوها ، تعداد دفعات تکرار حلقه مشخص بود. در چنین حالتی از حلقه های for استفاده می نماییم. ممکن است شرایطی پیش آید که بخواهیم تا زمانی که شرط خاصی برقرار است عمل خاصی انجام شود ، مثلا از دانشجویی میخواهیم نمره های خود را وارد کند.حال چنانچه دانشجو عددی منفی وارد نماید ، کار به پایان رسد. در این حالتها در حلقه های while یا do while استفاده می نماییم.

حلقه while

ابتدا به مثال زير توجه نماييد.

using System;
class WhileLoop
{
public static void Main()
{
int myInt = 0;
while (myInt < 10)
{
Console.Write("{0} ", myInt);
myInt++;
}
Console.WriteLine();
}
}

مثال 1-7-1

مثال1-7-1 كه در بالا ملاحظه مي‌كنيد، يك حلقه while ساده را نشان مي‌دهد. اين حلقه با كلمه كليدي while آغاز شده و سپس به دنبال آن يك عبارت منطقي قرار مي‌گيرد و مورد بررسي قرار مي‌گيرد. تمامي دستورالعمل‌هاي كنترلي از يك عبارت منطقي بهره مي‌گيرند و اين بدين معناست كه ابتدا اين عبارت بايد بررسي شود تا مشخص شود مقدار اين عبارت true است يا false. در اين مثال مقدار متغير myInt مورد بررسي قرار مي‌گيرد تا چك شود آيا مقدارش از 10 كوچكتر هست يا خير. چون در ابتداي برنامه به اين متغير مقدار صفر تخصيص داده شده است، عبارت منطقي مقدار true را باز مي‌گرداند و سپس بلوك قرار گرفته بعد از عبارت منطقي مورد اجرا قرار مي‌گيرد.


درون بلوك while ابتدا مقدار متغير myInt در كنسول نمايش داده مي‌شود و سپس يك واحد به مقدار اين متغير افزوده مي‌گردد. پس از اتمام بلوك while، عبارت منطقي مجددا كنترل مي‌شود و در صورتيكه اين عبارت مقدار true بازگرداند، حلقه while مجدداً اجرا مي‌شود. زمانيكه عبارت منطقي مقدار false برگرداند، اجرا برنامه به اولين دستور بعد از بلوك while منتقل مي‌شود. در اين مثال اعداد صفر تا 9 بر روي صفحه نمايش داده مي‌شوند و سپس يك خط خالي چاپ شده و اجراي برنامه خاتمه مي‌يابد.


حلقه بعدي كه بسيار شبيه به حلقه while مي‌باشد، حلقه do-while است.

حلقه do-while

ابتدا به مثال زیر توجه نماييد.

using System;
class DoLoop
{
public static void Main()
{
string myChoice;
do
{
// منويي نمايش داده مي‌شود
Console.WriteLine("My Address Book\n");
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\n");
Console.WriteLine("Choice (A,D,M,V,or Q): ");
// ورودي كاربر بررسي مي‌شود
myChoice = Console.ReadLine();
// تصميمي بر اساس ورودي كاربر گرفته مي‌شود
switch(myChoice.ToLower())
{
case "a":
Console.WriteLine("You wish to add an address.");
break;
case "d":
Console.WriteLine("You wish to delete an address.");
break;
case "m":
Console.WriteLine("You wish to modify an address.");
break;
case "v":
Console.WriteLine("You wish to view the address list.");
break;
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.ToLower() != "Q");
}
}

 

مثال 2-7-1 نحوه استفاده از حلقه do-while را نشان مي‌دهد. ساختار نوشتاري اين دستور بصورت زير است :

do
{ <statements> } while (<boolean expression>);

دستورالعملهاي مورد استفاده در بلوك اين دستور، هر دستورالعمل معتبر زبان C# مي‌تواند باشد. عبارت منطقي نيز همانند نمونه‌هائيست كه تا كنون با آنها آشنا شديم و يكي از دو مقدار true يا false را بر مي‌گرداند.


يكي از مصارف عمده حلقه do به جاي حلقه while، مواردي است كه مي‌خواهيم يكسري دستورالعمل خاص، كه آنها را درون بلوك do قرار مي‌دهيم، حداقل يكبار اجرا شوند. در اين مثال ابتدا يك منو براي كاربر نمايش داده مي‌شود و سپس ورودي از وي دريافت مي‌گردد. چون حلقه while عبارت منطقي خود در ابتداي اجراي حلقه بررسي مي‌نمايد، از اينرو تضميني براي اجراي دستورات درون بلوك وجود نخواهد داشت، مگر شما بطور صريح برنامه را طوري طراحي نماييد كه اين عمل اتفاق بيفتد.


يك نگاه كلي به مثال 2-7-1 بيندازيم. در متد Main() متغير myChoice را از نوع رشته‌اي تعريف نموده‌ايم. سپس يكسري دستورات را بر روي كنسول چاپ نموده‌ايم. اين دستورات منوهاي انتخاب براي كاربر هستند. ما بايد ورودي از كاربر دريافت كنيم كه چون اين عمل از طريق Console.ReadLine() صورت گرفته، بايد در متغيري از نوع رشته‌اي قرار گيرد و از اينرو اين ورودي را در myChoice قرار داده‌ايم. ما بايد ورودي را از كاربر دريافت كنيم و بر روي آن پردازش انجام دهيم. يك روش كارآمد براي اين منظور استفاده از دستورالعمل switch است. همانطور كه در دستور switch ملاحظه مي‌كنيد، بري default نيز دستوري در نظر گرفته شده‌ است كه نشان مي‌دهد مقدار ورودي معتبر نيست.

چهارشنبه 10 آذر 1389  11:12 PM
تشکرات از این پست
دسترسی سریع به انجمن ها