آموزش سی شارپ (#C) قسمت 13 : دستورات کنترلی و حلقه ها چهار

با سلام به دوستان عزیز در سایت ITPRO، بخش چهارم از قسمت هشتم سری آموزشی سی شارپ را با هم آغاز می کنیم. در بخش قبلی به بررسی کلی حلقه ها و دستور for پرداختیم. در بخش چهارم که بخش آخر قسمت هشتم می باشد، به بررسی دستورات while و do-while پرداخته و حلقه های نامحدود یا infinite-loops را با هم بررسی خواهیم کرد.همانطور که در بخش قبلی گفتیم، حلقه ها برای تکرار اجرای یک یا چند دستور مورد استفاده قرار می گیرند. یکی از دستوراتی که با آن می توانیم در کد حلقه ایجاد کنیم دستور for می باشد که در بخش قبلی با این دستور آشنا شدیم. دستور بعدی دستور while می باشد. تفاوت این دستور با دستور for در این است که در ساختار while عملیات تعریف متغیر انجام نمی شود و تنها یک شرط را برای خروج از حلقه باید مشخص کنیم. ساختار کلی دستور while به صورت زیر است:

while({condition})
{
    // loop syntaxes
}

برای دستور while در بخش condition ما باید شرطی که بر اساس آن حلقه به اتمام خواهد رسید را مشخص کنیم. دقت کنید که دستورات داخل بدنه while تا زمانی اجرا خواهند شد که شرط while برابر true باشد. برای آشنایی بیشتر از قسمت قبل مثال چاپ اعداد 1 تا 10 را که با for نوشته بودیم مجدداً مرور می کنیم:

for(int counter = 1; counter <= 10; counter++)
    Console.WriteLine(counter);

در ادامه قصد داریم حلقه for بالا را با دستور while باز نویسی کنیم:


var counter = 1;
while (counter <= 10)
{
    Console.WriteLine(counter);
    counter++;
}

به کد بالا دقت کنید، ابتدا متغیری را خارج از حلقه while تعریف کردیم. سپس حلقه while را نوشتیم. بر اساس شرط حلقه while، کد بدنه حلقه ما تا زمانی اجرا خواهد شد که مقدار counter کوچکتر یا مساوی 10 باشد. مهمترین نکته ای که باید به آن توجه کنید، دستور آخر بدنه while است، بوسیله دستور آخر با هر بار اجرای حلقه ما یک واحد به متغیر counter اضافه می کنیم. در صورتی که این خط نوشته نشود، حلقه ما به صورت بی نهایت اجر خواهد شد و دائماً عدد 1 را در خروجی نمایش می دهد، زیرا مقدار counter اضافه نشده و شرط حلقه while برای همیشه مقدار true بر می گرداند.

ما می توانیم هنگام نوشتن حلقه while، عملیات اضافه کردن یا کم کردن مقدار counter را داخل خود شرط حلقه انجام دهیم:

var counter = 1;
while (counter++ <= 10)
{
    Console.WriteLine(counter);
}

دقت کنید که عملگر ++ بعد از نام متغیر نوشته شده، به این دلیل که ابتدا باید شرط بررسی شده و سپس مقدار counter افزایش پیدا کند، اگر ++ را قبل از نام متغیر می نوشتیم، ابتدا یک واحد به counter اضافه شده و سپس شرط ما چک می شد، یعنی در خروجی ما اعداد 2 تا 10 را مشاهده می کردیم.

دستورات break و continue که در بخش قبلی بررسی کردیم نیز در حلقه while کاربرد دارند، دستور break باعث خروج از حلقه و دستور continue نیز باعث رفتن به تکرار بعدی حلقه خواهد شد.

حلقه های نامحدود

حلقه های نامحدود، حلقه هایی هستند که تعداد اجرای آن ها بی نهایت می باشد. برای مثال، سیستم عامل زمانی که راه اندازی می شود، یک حلقه نامحدود شکل گرفته و منتظر دستوری از جانب شما می شود. تنها زمانی این حلقه به پایان می رسد که شما سیستم عامل را Shut Down کنید. حلقه های نامحدود در برنامه نویسی نیز به همین صورت عمل می کنند. یعنی شما یک حلقه نامحدود تشکیل داده و در داخل حلقه بر اساس شرایط خاص، با دستور break به حلقه پایان می دهید. ساختار کلی نوشتن حلقه های نامحدود با دستور while به صورت زیر می باشد:

while (true)
{
    // syntaxes
}

زمانی که ما به جای شرط عبارت true را می نویسیم، به دلیل اینکه شرط دائماً true خواهد بود حلقه ما هیچ گاه پایان نخواهد یافت. با یک مثال ساده موضوع را بررسی می کنیم. فرض کنید می خواهیم برنامه ای بنویسیم که از کاربر یک نام کاربری و کلمه عبور را پرسیده و در صورت صحیح بودن نام کاربری و کلمه عبور از برنامه خارج شود. در صورت اشتباه وارد کردن نام کاربری یا کلمه عبور مجدداً از کاربر نام کاربری و کلمه عبور را دریافت کند:

Console.WriteLine("Welcome to ITPRO.IR C# Training Course");
Console.WriteLine("******************************************");
while (true)
{
    Console.Write("Username: ");
    var username = Console.ReadLine();
    Console.Write("Password: ");
    var password = Console.ReadLine();

    if(username == "hossein" && password == "itpro")
        break;

    Console.WriteLine("Oops! Invalid username or password. Please try again...");
}

Console.WriteLine("Congrats! Thank you for choosing tosinso.com...");
Console.ReadKey();
  1. در خط اول و دوم یک پیغام خوش آمد گویی به کاربر چاپ می کنیم.
  2. در خط سوم حلقه نامحدود ما شکل میگیرد. (استفاده از عبارت true در شرط while)
  3. در داخل حلقه با چاپ پیغام های مناسب، نام کاربری و کلمه عبور را از کاربر دریافت می کنیم.
  4. سپس بوسیله دستور if چک می کنیم اگر نام کاربری برابر hossein و کلمه عبور برابر itpro بود حلقه با دستور break به اتمام برسد. در غیر اینصورت پیغام مناسبی به کاربر نمایش داده و مجدداً نام کاربری و کلمه عبور را از او دریافت می کنیم. این عملیات تا زمانی که کاربر نام کاربری و کلمه عبور صحیح را وارد نکند تکرار خواهد شد.
  5. در انتها، با خارج شدن از حلقه به کاربر یک پیام خوش آمد گویی یا یک پیام مناسب نمایش داده و با دستور ReadKey منتظر می شویم تا کاربر برای خروج کلیدی را فشار دهد.

حلقه do-while

ساختار حلقه do-while به صورت زیر است:

do
{
    // syntaxes
} while({condition});

در بخش condition شرط اتمام حلقه را می نویسیم. تفاوت حلقه while با حلقه do-while در این است که حلقه do-while حداقل یکبار اجرا خواهد شد، به این خاطر که شرط اتمام حلقه را در اتنهای حلقه می نویسیم، اما حلقه while در صورت برقرار نبودن شرط، اصلاً وارد حلقه نمی شویم. همچنین به علامت ; در انتهای دستور بالا دقت کنید.با پایان این بخش، قسمت مربوط به دستورات کنترلی و حلقه ها به پایان می رسد. به امید خدا در قسمت بعدی با مبحث آرایه ها در زبان سی شارپ آشنا شده و به بررسی دستور foreach خواهیم پرداخت. ITPRO باشید

نویسنده : حسین احمدی

منبع : جزیره برنامه نویسی وب سایت توسینسو

هرگونه نشر و کپی برداری بدون ذکر منبع و نام نویسنده دارای اشکال اخلاقی است

#آموزش_زبان_سی_شارپ #برنامه_نویسی_شئ_گرا #آموزش_سی_شارپ #دوره_آموزشی_سی_شارپ #آموزش_گام_به_گام_سی_شارپ #آموزش_برنامه_نویسی_شئ_گرا #آموزش_برنامه_نویسی #حلقه_ها_در_زبان_c# #دستور_while #دستور_do-while
عنوان
1 آموزش سی شارپ (#C) قسمت 1 : مقدمه رایگان
2 آموزش سی شارپ (#C) قسمت 2 : ابزارهای مورد نیاز دوره رایگان
3 آموزش سی شارپ (#C) قسمت 3 : آشنایی با .NET Framework یک رایگان
4 آموزش سی شارپ (#C) قسمت 4 : آشنایی با .NET Framework دو رایگان
5 آموزش سی شارپ (#C) قسمت 5 : آشنایی با محیط ویژوال استودیو رایگان
6 آموزش سی شارپ (#C) قسمت 6 : ساختار برنامه ها و کامپایلر سی شارپ رایگان
7 آموزش سی شارپ (#C) قسمت 7 : دستورات کنسول و متغیرها رایگان
8 آموزش سی شارپ (#C) قسمت 8 : نوع های داده اولیه رایگان
9 آموزش سی شارپ (#C) قسمت 9 : آشنایی با عملگرها رایگان
10 آموزش سی شارپ (#C) قسمت 10 : دستورات کنترلی و حلقه ها یک رایگان
11 آموزش سی شارپ (#C) قسمت 11 : دستورات کنترلی و حلقه ها دو رایگان
12 آموزش سی شارپ (#C) قسمت 12 : دستورات کنترلی و حلقه ها سه رایگان
13 آموزش سی شارپ (#C) قسمت 13 : دستورات کنترلی و حلقه ها چهار رایگان
14 آموزش سی شارپ (#C) قسمت 14 : آشنایی با آرایه ها و دستور For Each رایگان
15 آموزش سی شارپ (#C) قسمت 15 : آشنایی با متدها یک رایگان
16 آموزش سی شارپ (#C) قسمت 16 : آشنایی با متدها دو رایگان
زمان و قیمت کل 0″ 0
3 نظر
elahe  haghpanah

کاشکی یه مثال از do while هم میزدین.

حسین احمدی

حلقه do-while دقیقاً شبیه حلقه while هست، با این تفاوت که در حلقه do-while شرط انتقای حلقه بررسی میشه و به همین خاطر، حلقه حداقل یکبار اجرا میشه.

محمد محرابی

چند مثال از حلقه do-while

مثال 1. استفاده ساده از این حلقه.

        int n = 0;
        do
        {
            Console.WriteLine("Number is {0}", n);
            n++;
        } while (n < 10);

خروجی

Number is 0
Number is 1
Number is 2
Number is 3
Number is 4
Number is 5
Number is 6
Number is 7
Number is 8
Number is 9

مثال 2. استفاده از دستور break برای خروج از حلقه.

در صورتی که شمارنده حلقه به اعداد مثبت برسد حلقه خاتمه پیدا میکند.

    int i; 
 
    i = -10;     
    do { 
      if(i > 0) 
         break; 
      Console.Write(i + " "); 
      i++; 
    } while(i <= 10); 
  
    Console.WriteLine("Done"); 

خروجی

-10 -9 -8 -7 -6 -5 -4 -3 -2 -1 0 Done

مثال 3. استفاده از این حلقه برای دریافت و بررسی ورودی کاربر.

در صورتی که کاربر مقدار yes را وارد کند حلقه خاتمه پیدا میکند.

    string ans;
    do
    {
      Console.Write("Are you done? [yes] [no] : ");
      ans = Console.ReadLine();
    }while(ans != "yes");

خروجی

Are you done? [yes] [no] : yes
نظر شما
برای ارسال نظر باید وارد شوید.
از سرتاسر توسینسو
تنظیمات حریم خصوصی
تائید صرفنظر
×

تو می تونی بهترین نتیجه رو تضمینی با بهترین های ایران بدست بیاری ، پس مقایسه کن و بعد خرید کن : فقط توی جشنواره تابستانه می تونی امروز ارزونتر از فردا خرید کنی ....