آموزش سی‌شارپ C# – بخش ۲۱

آموزش سی‌شارپ C# – بخش ۲۱
  • 1391/12/6
  • Jeff Mosawy
  • 6
  • مقدمه

در دو قسمت پیشین از آموزش سی‌شارپ (قسمت‌های ۱۹ و ۲۰)، دو قسمت از مبحث‌های مربوط به حلقه‌ها را فراگرفتید. اولین دستوری که با آن می‌توانید یک حلقه ایجاد کنید، حلقه For بود؛ در این قسمت با حلقه‌ی دیگری آشنا خواهید شد.

  • حلقه Do-While

در سی‌شارپ، هر حلقه‌ای را که استفاده می‌کنید، معمولاً یک کار مشابهی را انجام می‌دهند و تفاوت آنچنانی‌ای میان آ‌ن‌ها وجود ندارد. همه آن‌ها شرطی را خواهند داشت که تا زمان برقراری آن شرط (صحیح بودن آن برقرار باشد)، حلقه کدهای درون خود را اجرا خواهد کرد.

یکی دیگر از حلقه‌های موجود در سی‌شارپ، حلقه Do – While می‌باشد. ساختمان این حلقه به‌شکل زیر است:

do

{

} while(true);

ابتدا دقت کنید که علامت Semicolon بعد از while آمده است. ما این حلقه را با عبارت do شروع می‌کنیم و سپس دو براکت باز و بسته قرار داده و کدهای مورد نیاز را در درون آن قرار می‌دهیم تا هنگام صحیح بودن شرط مورد بررسی، این کد‌های اجرا شوند. شرطی که باید بررسی شود پس از نوشتن عبارت while و گذاشتن جفت پرانتزها، نوشته می‌شود.

برای مثال، در پروژه‌ای که در بحث قبلی آموزشی خودمان داشتیم (جدول‌ضرب)، ما می‌توانیم کدمان را به‌شکل زیر اجرا کنیم:

do

{

            answer = multiplyBy * i;

            listBox1.Items.Add(answer.ToString());

            i++;

} while (i <= loopEnd);

این بار، به‌جای آنکه از حلقه For استفاده کنیم، از حلقه Do-While استفاده کردیم. می‌بینید که این حلقه اجرا می‌شود تا زمانی که دستور مابین پرانتزهای while غلط شود. دقت کنید که جایی که باید متغیر i را مقدار دهی کنیم تا در حلقه از آن استفاده شود، باید خارج از این حلقه باشد؛ چرا که اگر قرار باشد داخل حلقه این مقداردهی صورت گیرد، هربار که حلقه اجرا می‌شود، این مقداردهی مجدداً تکرار می‌شود.

در کد‌های بالا می‌بینید که مقدار i در داخل کد مقدارش افزایش داده می‌شود، چون حلقه Do-While مثل حلقه For نیست که از همان اول ۳ دستور لازم نوشته شود.

  • حلقه While

حلقه‌ی While نیز یکی دیگر از حلقه‌های مورد استفاده در زبان سی‌شارپ می‌باشد. این حلقه نیز ساختار و عملکری بسیار شبیه به Do – While را دارد. ساختار نوشتاری آن به‌شکل زیر می‌باشد:

while (true)

{

}

و این‌بار کدهای مربوط به پروژه جدول‌ضرب نیز با این حلقه می‌نویسیم:

while ( i <= loopEnd)

{

            answer = multipyBy * i;

            listBox1.Items.Add(answer.ToString());

            i++;

}

معمولاً استفاده از حلقه‌های While راحت‌تر از Do – While می‌باشد. اگر به دو حلقه‌ی While و Do – While دقت کنید، شاید متوجه شده‌باشد که در حلقه While، قبل از اجرای کدهای داخل حلقه، ابتدا شرط بررسی می‌شود و در صورتی که شرط صحیح می‌باشد، کدهای درون آن اجرا می‌شود. اما در حلقه Do – While ابتدا برای یک‌بار کدهای داخل حلقه اجرا می‌شود و در انتها شرط بررسی می‌شود؛ درصورتی که صحیح باشد، دوباره به بالا برمی‌گردد و کدها را یک‌بار دیگر اجرا و شرط را نیز بار دیگر بررسی می‌کند و به همین ترتیب …

شاید یکی از مسائلی که ذهن شما را مشغول ساخته است، این باشد که «خوب؛ من چطوری بفهمم که کدوم حلقه توی موقعیت‌های مختلف باید استفاده شه؟» پاسخ این سوال این هست: بیشتر مواقع همیشه می‌توانید از هر حلقه‌ای که بخواهید استفاده کنید، اما شاید بعضی مواقع برای شما شرایطی بوجود می‌آید که مجبور می‌شوید از یک حلقه‌ی خاص استفاده کنید؛ یا اینکه نمی‌توانید از حلقه‌ی خاصی استفاده کنید!

وقتی که تجربه‌ی شما در سی‌شارپ بیشتر می‌شود، خودتان متوجه خواهید شد که کدام حلقه مناسب‌تر هست و لازم نیست که نگران آن باشید. این‌ها مهارت‌هایی هستند که در آینده به‌صورت ناخودآگاه به آن‌ها مسلط خواهید شد.

جهت دریافت این بخش آموزشی به‌صورت یک فایل PDF، اینجا کلیک کنید.

دیدگاه خود را وارد کنید
تعداد دیدگاه ها : 6 دیدگاه
    1. سلام دوست عزیزم،

      من واقعاً از شما و از بقیه دوستان معذرت می‌]خوام، اما نمی‌دونم چرا این مشکل داره اتفاق می‌افتد! من همیشه قبل از انتشار مطالب، لینک‌ها رو چک می‌کنم و درست کار می‌کنند، اما بعد از انتشار این مشکل بوجود می‌آید.
      مجدداً از مشکل پیش آمده معذرت می‌خوام. لینک تصحیح شد!

      موفق باشید!

  1. سلام
    با تشکر فراوان از شما

    برنامه رو که یه بار ران کنی نتایج توی لیست باکس به نمایش در میاد. اگه بخوای برای بار دوم اعداد جدیدی رو توی تکست باکس ها وارد کنی و نتیجه رو توی لیست بگیری نتایج جدید در ادامه ی نتایج قبلی ظاهر میشن !
    حالا برای اینکه محتویات لیست از نتایج قبلی پاک بشه و نتایج جدید جایگزین نتایج قدیمی بشه باید از چه دستوری استفاده کرد که نتایج قبلی لیست باکس پاک بشه ؟
    (
    یه دستوری شبیه textBox.Clear();
    )

    1. با سلام،

      بله برای ایجاد چنین حالتی، چنین تابعی جهت Clear نمودن لیست‌های داخل یک ListBox وجود دارد. کافیست که از کد زیر استفاده کنید:
      listBox1.Items.Clear()
      این تابع، تابعی هست که توسط اون تمامی آیتم‌های موجود در لیست‌باکس را Clear کرده و آماده نمایش اطلاعات جدید است.

      موفق باشید.

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *