( تعداد نمایش : 3214 )

مقدمه ای بر سی شارپ C# – قسمت پنجم

حلقه ها در سی شارپ :

مقدمه :

اگر نیاز باشد تا قطعه ای از کد بیش از یک بار اجرا شود نیاز به استفاده از حلقه ها می باشد. برای مثال فرض کنید آرایه ای به طول ۱۰۰۰ تعریف کرده اید. اکنون می خواهید آن را با هزار عدد متوالی پرکنید. بدیهی است که روش زیر کارآمد نیست! :

int[] intData = new int[1000];
intData[0]=0;
.
.
.
intData[999]=1000;

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

تعریف حلقه ها و استفاده از آن ها :

برای تعریف حلقه ها ابزارهای متعددی مانند while, do , for , foreach وجود دارند. استفاده و انتخاب آن ها بستگی به سلیقه ی شما و منطق برنامه دارد. در هر حال یک مساله بدیهی است که همواره بیش از یک راه حل برای یک مساله وجود خواهد داشت.

استفاده از حلقه ی for :

عموما کدنویسی را با کد نویسی می توان آموخت! بنابراین در مورد انواع حلقه ها مثال هایی ارائه خواهد گردید.

یک برنامه ی سی شارپ جدید console را در VS.NET باز کنید و نام آن را درابتدا ex07 انتخاب نمایید. سپس کد زیر را درون آن بنویسید :

using System;

namespace ex07
{
class Class1
{
[STAThread]
static void Main(string[] args)
{
int[] intData = new int[1000];

for (int i=0 ; i<1000 ; i++ )
intData[i]=i;

for(int i=0 ; i< intData.Length ; i++)
{
int j = intData[i];
Console.WriteLine(“intData[" + i + "]=” + j);
}

Console.ReadLine();

}
}
}

توضیحاتی در مورد کد فوق :
۱- برای تعریف حلقه ی for همان طور که می بینید باید تعداد بار اجرای حلقه ( اینجا از ۰ تا ۹۹۹ است ) و هم چنین نحوه ی رسیدن از ۰ به ۱۰۰۰ را مشخص کرد ( در این جا i++ است یعنی هر بار یک واحد به شمارشگر حلقه اضافه می شود. )
۲- در زبان سی i++ یعنی i=i+1 و i– یعنی i=i-1 و کلا i-=n یعنی i=i-n و به همین ترتیب. برای مثال i*=n یعنی i=i*n و i+=n یعنی i=i+n و …
۳- اگر پس از حلقه ی for یک خط کد داشته باشیم نیازی به آکولاد نیست (مانند قسمت اول کد). ولی اگر تعداد خطوط مربوط به بدنه ی for زیاد بود باید حتما از آکولاد استفاده شود (مانند قسمت دوم کد). (این قاعده ای کلی است در زبان های مشتق شده از زبان سی در مورد هر چیزی!)
۴- فرض کنید در قسمت اول کد بالا بجای ۱۰۰۰ می نوشتید ۱۰۰۱ . سریعا با یک خطای زمان اجرا مواجه می شدید. زیرا می خواستید به عضوی از آرایه دسترسی پیدا کنید که تعریف نشده است. راه مدرن چک کردن این مسائل استفاده از خاصیت Length آرایه است که در قسمت دوم کد در عمل مشاهده می نمایید. همیشه از این روش استفاده کنید.
۵- حلقه ی اول یعنی اینکه کار پر کردن آرایه intData را از صفر تا ۹۹۹ یکی یکی (i++) انجام بده.

استفاده از حلقه ی while :
یک برنامه ی سی شارپ جدید console را در VS.NET باز کنید و نام آن را درابتدا ex08 انتخاب نمایید. سپس کد زیر را درون آن بنویسید :

using System;

namespace ex08
{
class Class1
{
[STAThread]
static void Main(string[] args)
{
int n = 1;

while (n < 6)
{
Console.WriteLine(“Current value of n is {0}”, n);
n++;
}

Console.ReadLine();
}
}
}

توضیحاتی در مورد کد فوق :
۱- حلقه ی while در بالا کار انجام حلقه را تا هنگامی انجام می دهد که شرط ذکر شده در ابتدای آن صادق و برقرار باشد. یعنی در حلقه ی فوق تا وقتی n<6 است این حلقه ادامه خواهد یافت.
۲- حلقه ی while صفر یا بیشتر بار ممکن است اجرا شود.
۳- در کد فوق از {۰} استفاده گردیده است. متد WriteLine به شما این اجازه را می دهد که n تا آرگومان برای آن تعریف کنید و مقادیر هر کدام را که خواستید در کد نمایش دهید از {x} استفاده کنید. در این مورد مقدار آرگومان x ام نمایش داده می شود.

استفاده از حلقه ی do :

یک برنامه ی سی شارپ جدید console را در VS.NET باز کنید و نام آن را درابتدا ex09 انتخاب نمایید. سپس کد زیر را درون آن بنویسید :

using System;

namespace ex09
{

class Class1
{
[STAThread]
static void Main(string[] args)
{
int x;
int y = 0;

do
{
x = y++;
Console.WriteLine(x);

}while(y < 5);

Console.ReadLine();

}
}
}

توضیحاتی در مورد کد فوق :
۱- این حلقه به حلقه ی do…while معروف است و هر دو جزء آن باید ذکر گردد.
۲- این حلقه تا زمانی که شرط ذکر شده در قمست while صحیح است ادامه می یابد.
۳- این حلقه در ابتدای کار بدون توجه به قسمت while حداقل یک بار اجرا می شود. (مثال زیر را اجرا نمایید)

int n = 10;
do
{
Console.WriteLine(“Current value of n is {0}”, n);
n++;
} while (n < 6);

استفاده از حلقه ی foreach :

یک برنامه ی سی شارپ جدید console را در VS.NET باز کنید و نام آن را درابتدا ex10 انتخاب نمایید. سپس کد زیر را درون آن بنویسید :

using System;

namespace ex10
{
class Class1
{
[STAThread]
static void Main(string[] args)
{
int odd = 0, even = 0;
int[] arr = new int [] {0,1,2,5,7,8,11};

foreach (int i in arr)
{
if (i%2 == 0)
even++;
else
odd++;
}

Console.WriteLine(
“Found {0} Odd Numbers, and {1} Even Numbers.”,
odd, even) ;

Console.ReadLine();

}
}
}

توضیحاتی در مورد کد فوق :
۱- از foreach برای حرکت در بین اعضای یک آرایه (مانند مثال بالا) و یا مجموعه ایی از اشیاء استفاده می شود (روشی شکیل ، مدرن و مطمئن! و تقریبا به ارث رسیده از ویژوال بیسیک!!).
۲- در زبان های مشتق شده از C ، عملگر % ، باقیمانده را محاسبه می کند.
۳- در کد فوق با استفاده از حلقه ی foreach تک تک اعضای آرایه در مورد زوج و یا فرد بودند مورد بررسی قرار گرفته اند و تعداد اعضای زوج و فرد در آخر نمایش داده می شود

دیدگاه خود را بیان کنید.

باید وارد سایت شده باشید برای دیدگاه دادن