PDA

View Full Version : آموزش: ساختار های حلقه ای



Saman_12
یک شنبه 10 مرداد 1389, 12:16 عصر
سلام دوستان.
همین الان بگم سطح این آموزش مبتدی , متوسط می باشد!:لبخند:
توی این آموزش می خوایم یک برسی در مورد ساختار های حلقه ای داشته با شیم.
ساختار های حلقه ای مهیا شده توسط ویژوال بیسک 4 تا میباشند که عبارت اند از :
حلقه های For...next , Do...Loop , While...End While و آخرین ساختار حلقه ای For Each...Next .
در اولین قسمت آموزش به برسی ساختار حلقه ی While....End While می پردازیم :
ساختار While...End While جهت مشخص نمود اینکه مجموعه ای از دستورات تا زمانیکه شرط True است تکرار شوند , استفاده میشود ; این حلقه اینگونه تعریف میشود :


While Condition

Statement(s)

[Exit While]

End While

در دستورالعمل بالا , Condition عبارتی است که باید در ابتدای حلقه ارزیابی شود ومی تواند True یا False باشد.عبارت End While پایان حلقه را مشخص میکند و عبارت Exit While نیز یک عبارت اختیاری هست وجهت خروج از حلقه به کار می رود.
به مثال زیر توجه کنید :


Dim Counter As Integer = 1

While Counter <= 5

MsgBox("Val is : " & Counter, MsgBoxStyle.Information, "")

Counter += 1

End While

در مثال بالا , Counter یک متغییر Integer می باشد که با 1 مقدار دهی شده است.حلقه بالا تا زمانی که مقدار Counter کوچک تر یا مساوی 5 است اجرا میشود.(این رو در نظر داشته باشین که در هر بار اجرا حلقه یکی به متغییر اظافه میشود .)این بدین معنا ست که عبارت درون حلقه 5 مرتبه تکرار می شود.

Saman_12
یک شنبه 10 مرداد 1389, 12:52 عصر
در قسمت دوم آموزش به تعریف ساختار Do...Loop می پر دازیم.:لبخندساده:
ساختار Do...Loop خود به دو نوع تقسیم میشود نوع اول که شرط را در اول حلقه ارزیابی میکند و نوع دوم که شرط را در پایان حلقه ارزیابی میکند.
تعریف اولین نوع ساختار Do..Loop این چنین است :


Do While | Until Condition

Statement(s)

[Exit Do]

Loop

کلمه کلیدی While عبارت را تا زمانی که True است , تکرار میکند. و کلمه کلیدی Until عبارت را تا زمانی که False است ادامه میدهد.(توجه داشته باشید که مجاز به استفاده از هر دوی آنها با هم نیستید.) و دستور Exit Do نیز یک دستور اختیاری وبرای خروج از حلقه بکار میرود. Loop نیز پایان حلقه را مشخص می کند.
کدی که در پست قبل گفته شد را با حلقه Do...Loop این چنین می توان نوشت :


Dim Counter As Integer = 1

Do While Counter <= 5

MsgBox("Val is : " & Counter, MsgBoxStyle.Information, "")

Counter += 1
Loop

تعریف دومین نوع حلقه Do...Loop این چنین است :


Do

Statement(s)

[Exit Do]

Loop While | Until Condition

مثال بالا را برای این حلقه می توان اینگونه نوشت :


Dim Counter As Integer = 1

Do

MsgBox("Val is : " & Counter, MsgBoxStyle.Information, "")

Counter += 1

Loop While Counter <= 5

این حلقه نیز 5 مرتبه تکرار می شود در اولین مرتبه حلقه بدون شرط چک میشود ودر مراتب بعدی با شرط.(بهتره در استفاده از این نوع دوم حلقه مراقبت بیشتری به خرج دهید چون ممکن است شرط شما هیچ وقت Flase نشود آن وقت شما مجبور به بستن بر نامه خواهید شد.:ناراحت:)

Saman_12
یک شنبه 10 مرداد 1389, 14:25 عصر
نوبت به آموزش حلقه For...Next رسیده.
شما میتونید از دستور For..next برای اجرای مجموعه ای از دستورات به تعداد مشخص استفاده کنید.
ساختار For...next اینچنین هست :


For Counter = <Startvalue> to <Endvalue> [StepValue]

Statement(s)

[Exit For]

Next [Counter]

در دستورالعمل بالا :
Counter هرمتغییر عددی می باشد
StartValue مقدار اولیه متغییر Counter است و Endvalue مقدار نهایی یا آخرین مقدار Counter می باشد.
StepValue مقداری عددی است که باید به Counter افزوده شود Stepvalue می تواند یک مقدار مثبت یا منفی باشد و اختیاری هست.اگر این مقدار را ذکر نکنید مقدا پیش فرض عدد یک می باشد.
Statement مجموعه ای از دستورات هست که باید به تعداد مشخص تکرار شود.
دستور Next نیزانتهای حلقه را نشان می دهد.
به مثال در دستور Do...Lop برای نمایش مقدار متغییر شمارنده توجه نمایید.در زیر چگونه گی استفاده از حلقه For...Next برای همان کار آمده است :


Dim Counter As Integer = 1

For Counter = 1 To 5
MsgBox("Value is : " & Counter)
Next Counter

در مثال بالا حلقه 5 مرتبه تکرار می شود ومقدار Stepvalue نیز روی مقدار پیش فرض مب یاشد(مقدار پیش فرض 1 است)
به مثال زیر با Stepvalue -2 توجه کنید :


Dim Counter As Integer = 1

For Counter = 10 To 1 Step -2
MsgBox("Value is : " & Counter)
Next Counter


در مثال بالا حلقه 5 مرتبه اجرا می شود و Stepvalue -2 است.مقادیر نمایش داده شده 10,8,6,4,2 می باشد.
شما میتوانید یک دستور For...Next را در یک دستور For...Next دیگر تودر تو نمایید.

Saman_12
یک شنبه 10 مرداد 1389, 15:25 عصر
نوبتی هم که باشه نوبت حلقه آخر هست.آخرین حلقه , حلقه ی For Each...Next هست.
دستور For Each...Next جهت اجرای مجموعه ای از عبارات برای هر عنصر در یک آرایه یا مجموعه می باشد.
تعریف دستور For Each...Next این چنین است :


For Each Item In List

Statement(S)

[Exit For]

Next [Item]

در دستورالعمل بالا :
Item متغییری جهت ارجاع به عناصر درون یک آرایه یا مجموعه می باشد.
List آبجکت آرایه یا مجموعه است.
به مثال زیر توجه نمایید :


Dim BookArray() As String = {"VB.NET", "VC++.NET", "VC#.NET", "ADO.NET"}

Dim BookName As String

For Each BookName In BookArray

MsgBox(BookName)

'Display each Item in BookArray

Next BookName

به کد زیر که جهت کنترل اینکه متن در تمام تکست باکس های فورم واد شده توجه کنید :


Dim ConObj As Control

For Each ConObj In Controls

If TypeOf (ConObj) Is TextBox Then


If ConObj.Text = "" Then

MsgBox(ConObj.Name + " Cannot be left blank.")

End If

End If

Next ConObj

در کد بالا ابتدا نمونه ای از کلاس Control به نام ConObj ایجاد شده.در حلقه For Each...Next که در ادامه آمده است , هر کنترل در مجموعه ی Controls (که مجموعه ای اشیاع استفاده شده در فورم می باشد.) یکی پس از دیگری پردازش می شوند. در دستور If اولی , نوع کنترل چک میشود. اگر کنترل کادر متنی باشد(تکست باکس) , دستور If بعدی متن درون کادر متنی را با استفاده از خصوصیت Text کنترل می کند.اگر کادر متنی خالی باشد , یک کادرپیام نمایان می شود که نام کادر متنی و پیغام اینکه این کادر خالی است را نمایش میدهد.
خوب آموزش تموم شد تا آموزش بعدی خدا حافظ.:لبخندساده: