درخواست های ارتباط
جستجو
لیست دوستان من
صندوق پیام
همه را دیدم
  • در حال دریافت لیست پیام ها
صندوق پیام
رویدادها
همه را دیدم
  • در حال دریافت لیست رویدادها
همه رویدادهای من
تخفیف های وب سایت
همه تخفیف ها

عضویت در

کانال تلگرام

توسینسو

اطلاعات مطلب
مدرس/نویسنده
حسین احمدی
امتیاز: 215942
رتبه:3
344
265
416
2833
حسین احمدی ، بنیانگذار TOSINSO ، توسعه دهنده وب و برنامه نویس ، بیش از 12 سال سابقه فعالیت حرفه ای در سطح کلان ، مشاور ، مدیر پروژه و مدرس نهادهای مالی و اعتباری ، تخصص در پلتفرم دات نت و زبان سی شارپ ، طراحی و توسعه وب ، امنیت نرم افزار ، تحلیل سیستم های اطلاعاتی و داده کاوی ... پروفایل کاربر

آموزش زبان سی شارپ - قسمت هشتم :: آشنایی با دستورات کنترلی و حلقه ها (بخش چهارم)

تاریخ 51 ماه قبل
نظرات 3
بازدیدها 4028
با سلام به دوستان عزیز در سایت 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 باشید

نویسنده : حسین احمدی
منبع : جزیره برنامه نویسی وب سایت توسینسو
هرگونه نشر و کپی برداری بدون ذکر منبع و نام نویسنده دارای اشکال اخلاقی است
برچسب ها
ردیف عنوان
1 دوره آموزشی .NET Framework و زبان برنامه نویسی سی شارپ - مقدمه
2 آموزش سی شارپ - قسمت اول :: معرفی و بررسی ابزارهای مورد نیاز دوره
3 آموزش زبان سی شارپ - قسمت دوم :: آشنایی با .NET Framework و ساختار آن (بخش اول)
4 آموزش زبان سی شارپ - قسمت دوم :: آشنایی با .NET Framework و ساختار آن (بخش دوم)
5 آموزش زبان سی شارپ - قسمت سوم :: آشنایی اولیه با محیط Visual Studio و نوشتن اولین برنامه
6 آموزش زبان سی شارپ - قسمت چهارم :: آشنایی با ساختار برنامه ها و کامپایلر زبان سی شارپ
7 آموزش زبان سی شارپ - قسمت پنجم :: آشنایی با دستورات کنسول و متغیرها
8 آموزش زبان سی شارپ - قسمت ششم :: نوع های داده اولیه
9 آموزش زبان سی شارپ - قسمت هفتم :: آشنایی با عملگرهای زبان سی شارپ
10 آموزش زبان سی شارپ - قسمت هشتم :: آشنایی با دستورات کنترلی و حلقه ها (بخش اول)
11 آموزش زبان سی شارپ - قسمت هشتم :: آشنایی با دستورات کنترلی و حلقه ها (بخش دوم)
12 آموزش زبان سی شارپ - قسمت هشتم :: آشنایی با دستورات کنترلی و حلقه ها (بخش سوم)
13 آموزش زبان سی شارپ - قسمت هشتم :: آشنایی با دستورات کنترلی و حلقه ها (بخش چهارم)
14 آموزش زبان سی شارپ - قسمت نهم :: آشنایی با آرایه ها و دستور foreach
15 آموزش زبان سی شارپ - قسمت دهم :: آشنایی با متدها در زبان سی شارپ (بخش اول)
16 آموزش زبان سی شارپ - قسمت دهم :: آشنایی با متدها در زبان سی شارپ (بخش دوم)
17 آموزش برنامه نویسی شئ گرا در زبان سی شارپ - قسمت یازدهم :: مقدمه ای بر برنامه نویسی شئ گرا
18 آموزش برنامه نویسی شئ گرا در زبان سی شارپ - قسمت دوازدهم :: آشنایی با کلاس، اشیاء و فضاهای نام
19 آموزش برنامه نویسی شئ گرا در زبان سی شارپ - قسمت سیزدهم :: آشنایی با فیلدها و رفتارها
20 آموزش برنامه نویسی شئ گرا در زبان سی شارپ - قسمت چهاردهم :: آشنایی با Property ها
21 آموزش برنامه نویسی شئ گرا در زبان سی شارپ - قسمت پانزدهم :: آشنایی با سازنده ها و روش های ایجاد اشیاء
22 آموزش برنامه نویسی شئ گرا در زبان سی شارپ - قسمت شانزدهم :: وراثت یا Inheritance
23 آموزش برنامه نویسی شئ گرا در زبان سی شارپ - قسمت هفدهم :: آشنایی با مفهوم Polymorphism
24 آموزش برنامه نویسی شئ گرا در زبان سی شارپ - قسمت هجدهم:: کلاس های abstract و sealed
25 آموزش برنامه نویسی شئ گرا در زبان سی شارپ - قسمت نوزدهم :: سازنده ها در وراثت، کلمه کلیدی protected و فیلدهای readonly
26 آموزش برنامه نویسی شئ گرا در زبان سی شارپ - قسمت بیستم :: کلاس های static و partial و Extension Method ها
27 آموزش برنامه نویسی شئ گرا در زبان سی شارپ - قسمت بیست و یکم :: Reference Types و Value Types
28 آموزش برنامه نویسی شئ گرا در زبان سی شارپ - قسمت بیست و دوم :: آشنایی با کاربرد interface ها
29 آموزش برنامه نویسی شئ گرا در زبان سی شارپ - قسمت بیست و سوم :: آشنایی با مفاهیم Inversion of Control و Dependency Injection
30 آموزش برنامه نویسی شئ گرا در زبان سی شارپ -قسمت بیست و چهارم :: آشنایی با مفهوم Type Casting و انواع Cast ها
31 آموزش برنامه نویسی شئ گرا در زبان سی شارپ -قسمت بیست و پنجم :: آشنایی با operator overloading و تعریف cast ها
32 آموزش برنامه نویسی شئ گرا در زبان سی شارپ -قسمت بیست و ششم :: مفاهیم boxing و unboxing
33 آموزش برنامه نویسی شئ گرا در زبان سی شارپ -قسمت بیست و هفتم :: قابلیت Generics
34 آموزش برنامه نویسی شئ گرا در زبان سی شارپ -قسمت بیست و هشتم :: نکات تکمیلی Generic ها، کلاس List و کلاس Dictionary
35 آموزش زبان سی شارپ -قسمت بیست و نهم (پایانی): استثناء ها (Exceptions) و مدیریت خطاها در سی شارپ
دوره مجموعه کل دوره
مطالب مرتبط

در حال دریافت اطلاعات

نظرات
  • کاشکی یه مثال از 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
    

برای ارسال نظر ابتدا به سایت وارد شوید