Controlling Program Flow in Visual Basic 2010

One of the early programming concepts taught in most every computer science program is flow control. Making decisions in your program based on some condition is essential to doing useful work and producing an application with that ability. Visual Basic 2010 contains all of the standard programming constructs for flow control you would expect to find in a modern language. In this article we'll look at the familiar ones and maybe some not-so-familiar ones as well.

Early versions of the BASIC language had conditional IF / THEN statements, coupled with GOTO, to branch around a section of code and resume execution at a specific line number. Looping was the other flow control concept and used the FOR and NEXT keywords to iterate over some code a fixed number of times. Those same concepts are still present in Visual Basic 2010 including "GoTo". Additional keywords have been added to bring more functionality, but the underlying logic remains the same. The "While" keyword repeats a block of code down to an "End While" statement until the condition is met. A common programming construct is to use the statement "While True" to loop forever and break out of the loop another way. Here's what a simple test block using these concepts might look like:

Module Module1

Sub Main()

Dim Done As Boolean

Done = False

While True

If Not Done Then

Console.WriteLine("We're not done yet")

Done = True

Else

Console.WriteLine("All done!")

GoTo alldone

End If

End While

alldone:

Console.WriteLine("Hit return to continue")

Console.ReadLine()

End Sub

End Module

You can also use "Exit While" or "Exit For" to immediately jump out of either the "While" or "For" loops. Many in the mainstream computer science fields frown upon the use of "GoTo" as it can cause errors if not used carefully. VB 2010 offers another form of the "For" loop with the addition of "For Each x In Y". Here's an example of how you might use it:

Dim Names() As String = {"Mom", "Dad", "Son", "Daughter"}


For Each name In Names

Console.WriteLine("Name = " & name)

Next

Console.WriteLine("Hit return to continue")

Console.ReadLine()

One of the things programmers often need to do is test something that may or may not even be a valid test. In early versions of Visual Basic you would have to create a section of code to handle errors using something like the following:

On Error GoTo Handler
  Throw New DivideByZeroException()
Handler:
  If (TypeOf Err.GetException() Is DivideByZeroException) Then
  ' Code for handling the error is entered here.
  End If

A better way to deal with this is to use the "Try", "Catch" and "Finally" keywords. This allows you to catch an error condition immediately and deal with it in your code. Here's an example from Microsoft's MSDN site:

Public Sub TryExample()
  Dim x As Integer = 5       ' Declare variables.
  Dim y As Integer = 0
  Try              ' Set up structured error handling.
    x = x  y       ' Cause a "Divide by Zero" error.
  Catch ex As Exception When y = 0 ' Catch the error.
    Beep()
    MsgBox("You tried to divide by 0.") ' Show an explanatory message.
  Finally
    Beep()         ' This line is executed no matter what.
  End Try
End Sub

The last construct we'll discuss here is the "Select" and "Case" keywords. These keywords allow you to take different actions based on the value of some expression. Here's the MSDN example:

Dim number As Integer = 8
Select Case number
  Case 1 To 5
    Debug.WriteLine("Between 1 and 5, inclusive")
    ' The following is the only Case clause that evaluates to True.
  Case 6, 7, 8
    Debug.WriteLine("Between 6 and 8, inclusive")
  Case 9 To 10
    Debug.WriteLine("Equal to 9 or 10")
  Case Else
    Debug.WriteLine("Not between 1 and 10, inclusive")
End Select

In this article we've taken a quick look at a number of flow control concepts to help you write applications that need to make decisions or to iterate some number of times. In future articles we'll use these concepts as we build some sample applications.



Related Articles

Comments

  • There are no comments yet. Be the first to comment!

Leave a Comment
  • Your email address will not be published. All fields are required.

Top White Papers and Webcasts

  • Live Event Date: December 11, 2014 @ 1:00 p.m. ET / 10:00 a.m. PT Market pressures to move more quickly and develop innovative applications are forcing organizations to rethink how they develop and release applications. The combination of public clouds and physical back-end infrastructures are a means to get applications out faster. However, these hybrid solutions complicate DevOps adoption, with application delivery pipelines that span across complex hybrid cloud and non-cloud environments. Check out this …

  • On-demand Event Event Date: October 29, 2014 It's well understood how critical version control is for code. However, its importance to DevOps isn't always recognized. The 2014 DevOps Survey of Practice shows that one of the key predictors of DevOps success is putting all production environment artifacts into version control. In this webcast, Gene Kim discusses these survey findings and shares woeful tales of artifact management gone wrong! Gene also shares examples of how high-performing DevOps …

Most Popular Programming Stories

More for Developers

RSS Feeds