آموزش حلقه های do در سی شارپ
حلقه های do به این صورت عمل می کنند: ابتدا کدی که می خواهیم در آن حلقه زده شود، اجرا می شود، سپس یک تست بولین انجام می شود، و اگر ارزش این تست برابر با true باشد، کد مورد نظر دوباره اجرا می شود و همین طور الی آخر. وقتی که ارزش تست برابر با false شود، حلقه به پایان رسیده و از آن خارج می شویم.
ساختار یک حلقه ی do به صورت زیر است به طوری که test یک مقدار بولین است:
do
{
کدهایی که باید اجرا شوند
} while (test);
نکته: استفاده از نقطه ویرگول یا همان سمی کالن، که در کد بالا، پس از دستور while قرار گرفته است، ضروری است.
بعنوان مثال، ما می توانیم برای نوشتن اعدد از 1 تا 10 در یک ستون، از کدهای زیر استفاده کنیم:
int i = 1;
do
{
WriteLine("{0}", i++);
} while (i <= 10);
در اینجا، ما از نسخه ی پسوندی عملگر ++ استفاده کرده ایم تا پس از اینکه مقدار i در نمایشگر نوشته شد، مقدار آن را یک واحد افزایش دهیم. بنابراین ما نیاز داریم بررسی کنیم که i <= 10 باشد تا عدد 10 نیز در کنسول پس از دیگر اعداد قرار گیرد.
در خودتان امتحان کنید زیر، از این روش برای یک نسخه کد اصلاح شده که قبلاً نشان داده شده است، استفاده می کنیم و موجودی حساب(balance) را پس از 10 سال محاسبه می کنیم. در اینجا می توانیم از یک حقله(loop) برای محاسبه ی اینکه چند سال طول می کشد تا یک مقدار پول مشخص در حساب، بسته به مقدار آغازین و یک نرخ سود ثابت، قرار گیرد، استفاده می کنیم:
خوتان امتحان کنید شماره 4 فصل 4
1. در ویژوال استودیو، یک اپلیکیشن کنسول جدید به نام Ch04Ex04 ایجاد کنید و آن را در آدرس زیر ذخیره(Save) کنید:
C:\BeginningCSharp7\Chapter04
2. کدهای زیر را در داخل فایل Program.cs قرار دهید:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static System.Console;
using static System.Convert;
namespace Ch04Ex04
{
class Program
{
static void Main(string[] args)
{
double balance, interestRate, targetBalance;
WriteLine("What is your current balance?");
balance = ToDouble(ReadLine());
WriteLine("What is your current annual interest rate (in %)?");
interestRate = 1 + ToDouble(ReadLine()) / 100.0;
WriteLine("What balance would you like to have?");
targetBalance = ToDouble(ReadLine());
int totalYears = 0;
do
{
balance *= interestRate;
++totalYears;
}
while (balance < targetBalance);
WriteLine($"In {totalYears} year{(totalYears == 1 ? "" : "s")} " +
$"you'll have a balance of {balance}.");
ReadKey();
}
}
}
3. کدها را save کنید و آن را اجرا کنید و چند مقدار را به آن بدهید. یک نمونه، در تصویر 4.4 نشان داده شده است.
(تصویر 4.4)
این کدها چگونه کار می کنند
این کد، به سادگی مانده حساب(balance) سالاله را با یک نرخ سود ثابت(fixed interest rate) چندین بار، به تعداد لازم برای مانده حساب تکرار می کند؛ تا زمانی که شرط انتهایی، برقرار باشد. ما با افزایش یک متغیرِ شمارنده با هر چرخه ی حلقه، تعداد سال های محاسبه شده را نگهداری می کنیم.
int totalYears = 0;
do
{
balance *= interestRate;
++totalYears;
}
while (balance < targetBalance);
حالا می توانیم این شمارنده(یعنی totalYears) را بعنوان بخشی از خروجیِ نتیجه مورد استفاده قرار دهیم:
WriteLine($"In {totalYears}
year{(totalYears == 1 ? "": "s")}
you'll have a balance of {balance}.");
نکته: شاید متداول ترین استفاده از عملگر :? (ترنری یا سه گانه) این است که به صورت مشروط، با کمترین کد، متن ها(text) را فرمت دهی کنیم. در کد بالا، اگر totalYears برابر با 1 باشد، یک علامت "s" را پس از "year" قرار می دهیم.
متاسفانه، این کد کامل نیست. مثلا در نظر بگیرید که وقتی که مانده حساب هدف(target balance) کمتر از مانده حساب فعلی(balance) باشد. خروجی آن در تصویر 4.5 نشان داده شده است:
(تصویر 4.5)

حلقه های do، حداقل یک بار اجرا می شوند. گاهی اوقات مانند این وضعیت، این کار ایده آل نبست. البته می توانیم یک دستور if را اضافه کنیم:
int totalYears = 0;
if (balance < targetBalance)
{
do
{
balance *= interestRate;
++totalYears;
}
while (balance < targetBalance);
}
WriteLine($"In {totalYears} year{(totalYears == 1 ? "": "s")} " +
$"you'll have a balance of {balance}.");
فعلاً اگر بخواهیم از دستور if استفاده کنیم، یک پیچیدگی غیرضروری ایجاد می شود. بهتر است از حلقه ی while استفاده کنیم.
کتاب آموزش سی شارپ, آموزش برنامه نویسی, آموزش سی شارپ
- بازدید: 217
1. سعی کنید نظرات شما مرتبط با مقاله ی مورد نظر باشد، در غیر این صورت پاسخ داده نخواهد شد.
2. سوالات خود را به صورت کوتاه بیان کنید و از پرسیدن چند سوال به طور همزمان خودداری کنید.
3. سوال خود را به طور واضح بیان کنید و از کلمات مبهم استفاده نکنید.