VB.Net Loops

advertisement
VB.Net Loops
Loop
• FOR index – start TO end [STEP step]
[statements]
[EXIT FOR]
NEXT index
DO [{WHILE| UNTIL} condition]
[statements]
[EXIT DO]
LOOP
Do While/Do Until
Private Sub Command1_Click()
Dim counter As Integer
counter = 0
Do While counter <= 5
Debug.Write(counter)
counter = counter + 1
Loop
Text1.Text = counter
End Sub
Private Sub Button2_Click()
Dim counter As Integer
counter = 0
Do Until counter > 5
Debug.Write(counter)
counter = counter + 1
Loop
Text1.Text = counter
End Sub
Loop Demo:Future Value
Dim output As String = "Year" & vbTab & "FutureValue" & vbCrLf
Dim output2 As String = "Year" & vbTab & "FutureValue" & vbCrLf
Dim amount, principal, iRate, year As Single
Dim yearIndex As Integer
principal = CSng(TextBox1.Text)
iRate = CSng(TextBox2.Text)
year = CSng(TextBox3.Text)
For yearIndex = 1 To CInt(year)
amount = principal * (1 + iRate) ^ yearIndex
output = output & yearIndex & vbTab & FormatCurrency(amount) & vbCrLf
output2 = output2 & yearIndex & vbTab & String.Format("{0:c}", amount) &
vbCrLf
Next
MessageBox.Show(output, "FutureValue", MessageBoxButtons.OK)
MessageBox.Show(output2, "FutureValue", MessageBoxButtons.OK)
Note: Use the Do While, Do Until loops.
Note: vbCrLf is a VB keyword for a new line.
Example: Display characters
entered in textbox1one at a time
• Dim index As Integer
• index = 0
• For index = 0 To TextBox1.TextLength - 1
MessageBox.Show(TextBox1.Text.Substring(index, 1))
• Next
• Problem 1: How many “a” entered in textbox1?
• Problem 2: How many words entered in textbox1?
Dim i, j, wordCount As Integer
Dim trimedText As String
trimedText = TextBox1.Text.Trim()
wordCount = 0
If trimedText.Length = 0 Then
wordCount = 0
Else
For i = 0 To trimedText.Length - 1
If trimedText.Substring(i, 1) = Chr(Keys.Space) Then
wordCount += 1
For j = i To trimedText.Length - 1
If Not trimedText.Substring(j, 1) = " " Then
i=j
Exit For
End If
Next
End If
Next
wordCount += 1
End If
MessageBox.Show(wordCount.ToString & "words")
Dim i As Integer = 0
Dim j As Integer
Dim wordCount As Integer = 0
Dim searchText As String
searchText = TextBox1.Text
If searchText.Length > 0 Then
Do While True
j = searchText.IndexOf(" ", i)
If j < 0 Then
wordCount += 1
Exit Do
End If
If j = i Then
i += 1
Else
wordCount += 1
i=j+1
End If
If i >= searchText.Length Then
Exit Do
End If
Loop
End If
MessageBox.Show(wordCount.ToString & "words")
List Box
• Useful properties
– Items: The items in the listBox. It is a collection
strcture. Items can be entered at the design time
or entered with code.
– SelectionMode: one or multi selection
– SelectedItem(s), SelectedIndex
• Methods
– Add
– Clear
• Events: SelectedIndexChanged event
List Box Example
Private Sub Form1_Load(ByVal sender As Object, ByVal e As
System.EventArgs) Handles MyBase.Load
TextBox1.Clear()
TextBox2.Clear()
ListBox1.Items.Clear()
ListBox1.Items.Add("Apple")
ListBox1.Items.Add("Orange")
ListBox1.Items.Add("Banana")
ListBox1.Items.Add("Strawberry")
TextBox2.Text = ListBox1.Items.Count.ToString
End Sub
Private Sub ListBox1_SelectedIndexChanged(ByVal sender
As System.Object, ByVal e As System.EventArgs) Handles
ListBox1.SelectedIndexChanged
TextBox1.Text = ListBox1.SelectedItem
End Sub
Selected Item’s Value
• Demo:
– Select interest rate from a list box.
ListBox Multiple Selections
Note: The SelectionMode property must set to multi selection.
extBox2.Text = ListBox1.SelectedItems.Count.ToString
Dim allSel As String
Dim i As Integer
For i = 0 To ListBox1.SelectedItems.Count - 1
allSel = allSel & ListBox1.SelectedItems.Item(I)
Or allSel = allSel & ListBox1.SelectedItems(I)
Next
‘**** Or use the For Each loop****
Dim item As String
For Each item In ListBox1.SelectedItems
allSel = allSel & item
Next
TextBox3.Text = allSel
ListBox Items Collections
• Methods:
– ADD: ListBox1.Items.Add("Apple")
– Item: Retrieve an object from Items
• ListBox1.Items.Item(Index)
• ListBox1.Items(Index)
• 0-based index
– Insert: ListBox.Items.Insert(Index, item)
– Remove: Delete an object with a position index or key.
• ListBox.Items.Remove(Item)
• ListBox.Items.RemoveAt(Index)
– Listbox1.Refresh()
– Clear: ListBox.Items.Clear()
– Count: Return the number of objects in a collection.
Using ListBox to Display Output
ListBox1.Items.Clear()
ListBox1.Items.Add("Year" & vbTab & "FutureValue")
For yearIndex = 1 To CInt(year)
amount = principal * (1 + iRate) ^ yearIndex
ListBox1.Items.Add(yearIndex.ToString & vbTab & FormatCurrency(amount))
Next
ComboBox
• Allows the user to type text directly into the
combo box.
• Use the Text property to get entered item:
– ComboBox1.Text
– The index for an entered item is –1.
– SelectedItem may be different from the Text property.
• Search an item in the list:
ComboBox1.Items.IndexOf(“search text”)
– Found: return the index of the search text.
– Not found: return –1.
• How to add an entered item to the list?
Unstructured Error Handling
• On Error GoTo errorhandler (a label)
• Built-in Err object properties:
– Number – Error number
– Source – Name of VB ile in which error occurred
– Description – error message
• Continue the program execution:
– Resume: returns execution to the statement that caused
the error.
– Resume Next
– Resume label: Jumps to the line containing the label.
– Exit Sub
Error Handling Example
Private Sub cmdDivide_Click()
On Error GoTo DivideErrorHandler
lalAnswer.Caption=CStr(CDbl(Text1.text)/CDbl(Text2.Text))
Exit Sub
DivideErrorHandler:
MsgBox(CStr(Err.Number) & “: “ & Err.Description)
Exit Sub
End Sub
Structured Error Handling
Try
result = Val(TextBox1.Text) / Val(TextBox2.Text)
TextBox3.Text = result.ToString
Catch except As DivideByZeroException
MessageBox.Show(except.Message)
Catch except As Exception
MessageBox.Show(except.Message)
Finally
MessageBox.Show("I get exdecuted, no matter what")
End Try
Collections
• Collections are used to store lists of objects.
• More flexible than array:
– No need to declare the number of objects in a
collection.
– Objects can be added, deleted at any position.
– Object can be retrieved from a collection by a key.
– Can store different types of objects.
• A collection’s name usually end with a “s”.
Using Collections
• Define a collection:
– Ex. Dim Pets as New Collection
• Methods:
– ADD: Add object to a collection
• Pets.Add(“dog”)
• Add an object with a key:
– Pets.Add(“Dog”, “D”)
– Item: Retrieve an object from a collection with a position
index (base 1) or with a key.
• petName = Pets.Item(1)
• petName = Pets.Item(“D”)
– Count: Return the number of objects in a collection.
– Remove: Delete an object with a position index or key.
Iterating Through a Collection
Dim Pets as New Collection
…
Dim Indx as Long
For Indx = 1 to Pets.Count
…operations …
Next Indx
For Each pet in Pets
… operations …
Next pet
Enumerations
• Provide a way to associate meaningful names with
a sequence of constant values.
• Define an enumeration using an Enum statement
in classes, modules, and structures.
–
–
–
–
–
–
Private Enum seasonOfYear
Spring = 1
Summer = 2
Fall= 3
Winter = 4
End Enum
Enumerations
•Provide a way to associate meaningful names with a
sequence of constant values.
Enum enumTest
spring = 1
summer
fall
winter
End Enum
Dim etest As enumTest
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
etest = enumTest.summer
TextBox1.Text = Val(etest).ToString
Download