VisualBasic.NET -> Цикли и масиви

Автор: StormBreaker

Предишни уроци:
Въведение
Класове и модули
GUI и събития

В този урок ще се запознаем с циклите и масивите.

Цикъл For
Най-често се използва, когато ни трябва една променлива от числен тип да приема стойност от някакво число до друго число.
Синтаксис:

For i As Integer = 0 To 10
...
Next

Тук променливата i ще приеме стойности от 0 до 10 => цикълът ще се изпълни 11 пъти. Обърнете внимание, че променлвата i не е декларирана преди For блока, а се използва без нужда от деклариране в самия For. 0 е зададената начална стойност, а 10 – крайната. As Integer оказва типа на променливата.

Цикъл While
Тъй като при този цикъл условието за повторение е булев израз While се ползва основно за операции, където едни оператори трябва да се изпълнят докато някакво условие престане да бъде вярно. Ползва се също и за безкраен цикъл в някои специфични случаи, когато за условие се подаде True.

While True
...
End While

Този пример е един безкраен цикъл. Булевото условие се слага на мястото на True и цикълът спира, когато условието стане равно на False.

Цикъл For Each
For Each се използва за обхождане на масив (Array) или друг подобен на масив тип (Collection)


For Each element As String In masiv
...
Next

На първия ред се оказва временната променлива element, която трябва да е от същия тип както и елементите на масива masiv и в случая е String. Отново няма нужда от предварително деклариране на element.
Самият цикъл ще се повтори толкова пъти, колкото са елементите в масива, а всеки път променливата element ще съдържа по един елемент от този масив. Това се нарича обхождане на масив – изпълняване на една операция за всеки от елементите му.

Обикновени масиви
Какво е масив? На кратко масив е колекция от елементи от един и същи тип, като всеки елемент има уникален номер в колекцията. Този номер се нарича индекс.
Във VB.NET има няколко начина да се декларира масив. Тук на всеки масив трябва задължително да се зададе капацитет (максимална дължина/най-голям възможен индекс) още при декларирането.

Деклариране на масив без задаване на максималeн брой елементи:

Dim masiv As String()

Така създаваме неопределен масив с елементи от тип string. Но защо ще го създаваме така ако не можем да го ползваме. Така декларирана това е една празна променлива. Затова може да приеме стойностите на върнат от функция параметър, но не можем да задаваме директно стойности на елементите преди това. Аналогично е с Клас без да е зададен New Class()…

Деклариране със задаване на максимален индекс:

Dim masiv(5) As String

Сега сме задали максимален индекс на масива. Може да съдържа елементи с индекс 0, 1, 2, 3, 4, 5 – общо 6 елемента, тъй като винаги започват от нула. Така деклариран вече можем да задаваме директно стойности на елементите.

masiv(0) = "Елемент с индекс 0"
masiv(3) = "Елемент с индекс 3"

Ако се опитате да изведете елемент, чиято стойност все още не е зададена програмата ще ви изведе грешка „Object reference not set to an instance of an object“.

Повторно деклариране на вече деклариран масив:
В някои случаи ще ви трябва вашият масив да се разширява според елементите, които му задавате. Това става с повторно деклариране на масива. Така можете да разширите масива, като му зададете нов максимален индекс.

ReDim Preserve masiv(6)

Ключовата дума Preserve оказва, че данните в масива не трябва да се изтрият при разширяване на масива. Новата максимална стойност на индекса е 6, а елементите от 0 до 5 са се запазили.

Пример за масиви и For Each във видеото.
Код от видеото:

Public masiv As String()

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Try
ReDim Preserve masiv(masiv.Length)
Catch ex As Exception
ReDim Preserve masiv(0)
End Try

masiv(masiv.Length - 1) = TextBox1.Text

TextBox1.Text = ""
End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
TextBox2.Text = ""

For Each element As String In masiv
TextBox2.Text += "Element: " + element + ControlChars.NewLine
Next
End Sub

One Reply to “VisualBasic.NET -> Цикли и масиви”

Вашият коментар