آکادمی سیم پاور

حلقه for در سی شارپ #C

حلقه for :

حلقه for حلقه اي است كه درك نحوه كاركرد آن بسيار راحت است. در امتحان كنيد بعد، با اين دستور آشنا خواهيم شد .

)1 يك پروژه ويندوزي جديد به نام Loops ايجاد كنيد .

)2 در فرمي كه ظاهر مي شود يك ListBox و يك كنترل Button اضافه كنيد.

)3 خاصيت Name مربوط به ListBox را برابر lstData و خاصيت IntegralHeight آن را برابرfalse قرار دهيد.

)4 خاصيت Name مربوط به دكمـه فرمـان Button را برابـر btnForLoop و خاصـيت Text آن را برابـرFor Loop قرار دهيد. تاكنون فرم شما بايد مشابه شكل -17 4 شده باشد.

sim-power.ir (055)

17 4- شكل

 

)5 بر روي دكمه فرم ان دو بار كليك كنيد تا متد مربوط به رويداد Click آن ايجاد شـود . سـپس كـد زيـر را در آن واردكنيد :

private void btnForLoop_Click(object sender, EventArgs e)

{

// Declare variable

int intCount;

// Perform a loop

for(intCount = 1;intCount <= 5;intCount += 1)

{

// Add the item to the list

lstData.Items.Add(“I’m item ” + intCount +

” in the list!”);

}

}

)6 برنامه را اجرا كنيد و بر روي دكمه for Loop كليك كنيد. نتيجه اي مشابه شكل -18 4 مشاهده خواهيد كرد .

در ابتداي متد مربوط به رويداد كليك، متغييري را به صورت زير تعريف مي كنيم :

// Declare variable

int intCount;

براي ايجاد يك حلقه بايد از كلمه كليدي for استفاده كنيد . اين كلمه به كامپايلر ويژوال #C ميگويد كه مي خواهيد يك حلقه باتعداد دفعات تكرار مشخص ايجاد كنيد . تمام كلمات و علامتهايي كه بعد از اين كلمه مي آيند، براي مشخص كـردن نحـوه عملكـرداين حلقه به كار مي روند . براي تعيين نحوه كاركرد يك حلقه، سه مورد را بايد در جلوي آن مشخص كنيد. اين سـه مـورد، همـانطوركه در كد مشاهده مي كنيد با كاراكتر “;” از يكديگر جدا مي شوند .

sim-power.ir (056)

18 4- شكل

 

در قسمت اول بايد مشخص كنيد كه از چه متغييري ميخواهيد براي شمارش دفعات تكرار در اين حلقه استفاده كنيد. همچنين در اينبخش مقدار اوليه متغيير را نيز تعيين كنيد . به عبارت ديگر در اين قسمت بايد مشخص كنيد كه ميخواهيد شـمارش در حلقـه از چـهعددي شروع شود . در اين مثال برا ي شمارش حلقه از متغيير intCount كه در خط قبل تعريف كرديم، اسـتفاده مـي كنـيم ومقدار اوليه آن را نيز 1 تعيين ميكنيم تا شمارش حلقه از عدد يك شروع شود .

در قسمت دوم بايد تعيين كنيم كه حلقه، شمارش را تا چه عددي ادامه دهد . در ايـن مثـال تـا زمـاني كـه متغييـر intCountكوچكتر و يا مساوي 5 است شمارش ادامه پيدا ميكند . توجه داشته باشيد كه براي شرط اين قسمت از هر يك از عملگرهايي كـه دربخش قبل معرفي كرديم همانند عملگر بزرگتر مساوي و يا عملگر كوچكتر و … ميتوانيد استفاده كنيد .در قسمت آخر مشخص كنيد كه مقدار متغيير در هر مرحله بايد چه تغييري كند . در اين مثال ميخواهيم مقدار متغيير را در هر مرحلـهاز اجراي حلقه يك واحد افزايش يابد. بنابراين در اين قسمت مقدار متغيير را با عدد يك جمع مي كنيم .

از توضيحات قبلي مشخص است كه اين حلقه از عدد يك شروع به شمارش مي كند و تا عدد 5 شمارش را ادامه مي دهـد و در هـرمرحله نيز يك واحد به مقدار متغيير اضافه مي كند. بنابراين دستورات داخل حلقه پنج بار اجرا مي شوند .مراحلي كه براي اجراي اين حلقه به وسيله ويژوال #C بررسي مي شود به اين ترتيب است كه ابتدا متغيير intCount برابر بامقدار مشخص شده در برنامه مي شود . سپس شرط وارد شده در قسمت دوم حلقه بررسي ميشود . در صورتي كـه ايـن شـرط برقـرارنباشد دستورات حلقه اجرا نمي شوند و برنامه از خط بعد از حلقه ادامه پيدا مي كند . در صورتي كه شرط حلقه برقـرار باشـد (يعنـي در

اين مثال مقدار متغيير intCount كوچكتر يا مساوي عدد 5 با ) شد دستورات داخل حلقه اجرا مي شوند. بعد از اينكـه دسـتوراتحلقه براي مرتبه اول اجرا شدند، ويژوال #C تغييراتي را كه در قسمت سوم مشخص شده است بر روي متغيير اعمال مي كند (بـرايمثال در اين برنامه، يك واحد به متغيير intCount اضافه مي كند ) و سپس شـرط وارد شـده در قـس مت دوم حلقـه for رامجددا بررسي ميكند و در صورت درست بودن اين شرط دستورات داخل حلقه اجرا مي شوند . اين شرايط ادامه پيدا مي كنند تا زمـانيكه شرط قسمت دوم حلقه for نادرست باشد . در اين هنگام كامپايلر ويژوال #C از حلقه خارج مي شود و بـه اولـين خـط بعـد ازحلقه مي رود

// Perform a loop

for(intCount = 1;intCount <= 5;intCount += 1)

{

// Add the item to the list

lstData1.Items.Add(“I’m item ” + intCount +

” in the list!”);

}

نكته: در قسمت سوم حلقه ي بالا، به جاي استفاده از عبارت intCount+=1 مي توانستيم از دستور ++intCountنيز استفاده كنيم . اين دستور باعث مي شود كه يك واحد به متغيير intCount اضـافه شـود و حاصـل در همـان متغييـر قـراربگيرد .

for(intCount = 1;intCount <= 5;intCount++)

علاوه بر عملگر ++ كه يك واحد به يك متغيير اضافه ميكند، عملگر — نيز وجود دا رد كه يك واحـد از مقـدار يـك متغييـر مـيكاهد.كاربرد اين عملگر همانند عملگر ++ است .همانطور كه تاكنون متوجه شده ايد، در حلقه for اجباري نيست كه مقدار شروع حلقه را عدد يك در نظر بگيريد و يا شـمارنده درهر مرحله متغيير را فقط يك واحد افزايش دهد . در امتحان كنيد ز ير حلقه for جديدي خواهيم ساخت كـه از ايـن مـوارد اسـتفاده كند

انعطاف پذيري حلقه for

)1 اگر برنامه قبلي همچنان در حال اجرا است آن را ببنديد و سـپس كنتـرل Button ديگـري روي فـرم اضـافه كنيـد .خاصيت Name آن را برابر btnNewForLoop و خاصيت Text آن را برابر New For Loop قراردهيد .

)2 روي اين كنترل دو بار كليك كنيد و كد زير را در متد مربوط به رويداد Click آن وارد كنيد.

private void btnNewForLoop_Click(object sender, EventArgs

e)

{

// Perform a loop

for (int intCount = 4; intCount < 62; intCount += 7)

{

// add the item to the list

lstData.Items.Add(intCount);

}

}

)3 برنامه را اجرا كنيد و روي دكمه New For Loop جديد كليك كنيد. نتيجه اي مـشابه شـكل -19 4 را دريافـتخواهيد كرد.

sim-power.ir (057)

19 4- شكل

به تعريف حلقه for در اين مثال توجه كنيد :

// Perform a loop

for (int intCount = 4; intCount < 62; intCount += 7)

نكته اولي كه در اين حلقه وجود دارد، تعريف متغيير intCount در خود حلقه است. اين مورد باعث مي شود برنامه هنگامي كهبه حلقه رسيد متغييري را به نام intCount تعريف كند و براي شمارش درون حلقه از آن استفاده كند. هنگامي كه كار حلقه بهپايان رسيد، متغيير نيز از بين خواهد رفت و فضاي اشغال شده توسط آن آزاد مي شود .

در مرحله بعد، به جاي اسـتفاده از عـدد 1 بـهعنوان مقدار شروع، از عدد 4 استفاده كرده ايم . در حقيقت در اولين دوره اجراي حلقه مقدار intCount برابر با عـدد 4 اسـت وبنابراين اولين مورد اضافه شده به ليست عدد 4 خواهد بود. همچنين در هر مرحله از اجراي حلقه، 7 واحد به مقـدار intCountافزوده مي شود. به همين دليل، دومين موردي كه به ليست اضافه مي شود عدد 11 است، نه عدد .5با وجود اينكه حلقه بايد در عدد 62 به پايان برسد، اما مشاهده ميكنيد كه حلقه در عدد 60 به پايان مي رسد. زيرا عدد بعـد از آن، 67خواهد بود كه از 62 بزرگتر است. بنابراين حلقه براي مرتبه نهم اجرا نخواهد شد.

سعید عربعامری
من سعید عربعامری نویسنده کتاب 28 گام موثر در فتح متلب مدرس کشوری متلب و سیمولینک و کارشناس ارشد مهندسی برق قدرتم . بعد از اینکه دیدم سایتهای متعدد یک مجموعه کامل آموزش متلب و سیمولینک ندارند به فکر راه اندازی این مجموعه شدم
http://sim-power.ir

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

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