Top Banner
Control Structures VB.NET has a powerful set of control statements and functions that include: CONDITIONAL If statement Select statement LOOPING Do/Loop statement For statement If/Then Statement The simplest form of the If/Then statement in VB.NET is used to execute a statement, or set of statements, when a condition is true The single-line versions of the If can be used for simple situations If a < 0 Then a = 0 If employeeType = "Salaried" _ Then grossPay = 40 * payRate However, this shortened version does not lend itself well to maintainability. The multi-line version of the If is more flexible and requires an End If statement. If employeeType = "Salaried" Then grossPay = 40 * payRate End If If planCode <> 5 Then rate = planCode * 9.95 Console.WriteLine("Basic rate is {0}", rate) End If The conditional expression may use any of the relational or logical operators discussed the previous chapter. If insuranceInForce And deductiblePaid > 1000 Then fullyCovered = True coveredAmount = cost End If
13

Notes

May 29, 2017

Download

Documents

Masthan Babu
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Notes

Control Structures • VB.NET has a powerful set of control statements and

functions that include: CONDITIONAL − If statement

− Select statement

LOOPING

− Do/Loop statement

− For statement

If/Then Statement • The simplest form of the If/Then statement in

VB.NET is used to execute a statement, or set of statements, when a condition is true − The single-line versions of the If can be used for simple

situations If a < 0 Then a = 0 If employeeType = "Salaried" _ Then grossPay = 40 * payRate

− However, this shortened version does not lend itself well to maintainability.

− The multi-line version of the If is more flexible and requires an End If statement.

If employeeType = "Salaried" Then grossPay = 40 * payRate End If If planCode <> 5 Then rate = planCode * 9.95 Console.WriteLine("Basic rate is {0}", rate) End If

• The conditional expression may use any of the relational or logical operators discussed the previous chapter.

If insuranceInForce And deductiblePaid > 1000 Then fullyCovered = True coveredAmount = cost End If

Page 2: Notes

If/Then/Else Statement • The If/Else statement can be used to indicate that

different actions must be taken depending on whether a condition is true

' Single line version If units < 0 Then stat = "Invalid" Else stat = "OK" ' Multi-line version If employeeType = "Salaried" Then grossPay = 40 * payRate Else grossPay = hoursWorked * payRate End If

• If statements may be nested to make a decision between a set of possible choices. − When statements are nested, each If statement must be

considered as being unique and each requires its own End If.

If studentClassification = "undergraduate" Then tuition = creditHours * 80 Else If studentClassification = "graduate" Then tuition = creditHours * 90 Else If studentClassification = "nondegree" Then tuition = creditHours * 65 Else tuition = 0 Console.WriteLine( _ "Invalid classification!") Exit Sub ' exits the procedure End If End If End If

• The If/ElseIf statement can be used in place of the nested If/Else statements. − Only one End If is required.

If classification = "undergraduate" Then tuition = creditHours * 80 ElseIf classification = "graduate" Then tuition = creditHours * 90 ElseIf classification = "nondegree" Then tuition = creditHours * 60 Else tuition = 0 Console.WriteLine("Invalid classification!") Exit Sub ' exits the procedure End If

Page 3: Notes

Select Case Statement • The Select statement is used to specify an action

determined by a set of values − The value of the variable determines which case is executed. − Case statements may contain a single value or a list of values.

Select Case city Case "Norman", "Tulsa" state = "Oklahoma" Case "Los Angeles", "San Francisco", "Stockton" state = "California" Case "Baltimore", "Greenbelt", "St. Mary's City" state = "Maryland" Case Else state = "*Unknown*" End Select

− Case statements may also contain a range of values or use a

relational operator

Select Case testScore Case 100 ' single value grade = "A+" Case Is >= 92 ' Is <operator> value grade = "A" Case 90, 91 ' list of values grade = "A-" Case 88 To 89 ' range of values grade = "B+" Case Else grade = "Who cares!" End Select

Looping • There are two basic types of loops.

− A pre-test loop tests the condition before the body of the loop is executed. It is possible, using a pre-test loop, that the body of the loop might never be executed.

− A post-test loop tests the condition after the body of the loop is executed. The number of iterations in a post-test loop is at least one.

• VB.NET provides several forms of looping constructs that include both pre-test and post-test abilities.

Page 4: Notes

Do/Loop Statement • The Do/Loop is the primary looping construct used in

VB.NET. • There are two forms of the Do/Loop.

− The Do While statement is used to loop through a set of code while some condition is true.

Console.Write("Enter a number(<0 to stop): ") num = Convert.ToInt32(Console.ReadLine()) Do While num >= 0 sum += num Console.Write("Enter a number(<0 to stop): ") num = Convert.ToInt32 (Console.ReadLine()) Loop Console.WriteLine("The sum is {0}", sum)

− The Do Until statement, is used to loop through a set of code until some condition is true.

Console.Write("Enter a number (<0 to stop): ") num = Convert.ToInt32(Console.ReadLine()) Do Until num < 0 sum += num Console.Write("Enter a number(<0 to stop): ") num = Convert.ToInt32 (Console.ReadLine()) Loop Console.WriteLine("The sum is {0}", sum) − Both versions are pre-test loop constructs.

− A pre-read (one that appears before the condition) is necessary so that, if the first number the user enters is negative, we can immediately stop the loop.

• There are post-test versions of the Do While and Do Until statements. − The condition is placed after the Loop keyword instead of

the Do keyword. Do Console.Write("Enter a number (<0 to stop): ") num = Convert.ToInt32(Console.ReadLine()) If num > 0 Then sum += num End If Loop While num > 0 Console.WriteLine("The sum is {0}", sum)

Do Console.Write("Enter a number (<0 to stop): ") num = Convert.ToInt32(Console.ReadLine()) If num > 0 Then sum += num End If Loop Until num < 0 Console.WriteLine("The sum is {0}", sum)

Page 5: Notes

− Notice that we had to use an If after the ReadLine to make sure we didn't process the stop condition.

• These looping examples are illustrated in two versions of the SumOfNumbers program.

Leap Year Example

• The LeapYear program calculates whether a given year is a leap year. − Any year evenly divisible by 4 is a leap year except those

years that are also evenly divisible by 100. − One exception: If the year is evenly divisible by 400, it is a

leap year. ' Leap year calculator

Module LeapYear

Sub Main() Dim year As Integer Dim goAgain As String

Do Console.Write("Enter a year: ") year = Convert.ToInt32(Console.ReadLine()) If year Mod 4 = 0 And (year Mod 100 <> 0 _ Or year Mod 400 = 0) Then Console.WriteLine( _ "{0} is a leap year", year) Else Console.WriteLine( _ "{0} is not a leap year", year) End If Console.Write( _ "Do you want to try another (y/n)? ") goAgain = Console.ReadLine() Loop While goAgain = "y" End Sub End Module

• The output might resembles the following: Enter a year: 1900 1900 is not a leap year Do you want to try another (y/n)? y Enter a year: 1995 1995 is not a leap year Do you want to try another (y/n)? y Enter a year: 1996 1996 is a leap year Do you want to try another (y/n)? y Enter a year: 2000 2000 is a leap year Do you want to try another (y/n)? n

Page 6: Notes

Exiting Do Loops Prematurely

• Any Do/Loop may be exited prematurely by using the Exit Do statement.

− When this statement is executed, execution is immediately transferred to the first statement following the Loop keyword.

− See same LeapYear example. Do Console.Write("Enter a year: ") year = CInt(Console.ReadLine()) If year < 0 Then Console.WriteLine( _ "Invalid year... terminating!") Exit Do End If ' Calculate whether the year is a leap ' year and print the results Console.Write( _ "Do you want to try another (y/n)? ") goAgain = Console.ReadLine() Loop While goAgain = "y"

While Statement • Another version of a pre-test while loop is the While

statement.

− It has roots in earlier versions of VB. It has been retained for compatibility reasons.

− This statement functions exactly like its corresponding Do/Loop statement.

− The Exit While statement provides an early exit from the While.

While num >= 0 Console.Write("Enter a number(<0 to stop): ") num = Convert.ToInt32(Console.ReadLine()) If num < 0 Then Exit While sum += num End While Console.WriteLine("The sum is {0}", sum)

Page 7: Notes

For/Next Statement • The For/Next statement is a looping construct that is

used when the number of times that the body of the loop executes is fixed.

− The statement initializes a counter variable to a starting value, specifies an ending value, and an increment

− If the increment value is positive, the loop executes if the counter is <= the ending value.

For year = 1776 To 2038 Step 4 Console.WriteLine("{0} is an election year", _ year) Next

− If the increment is negative, the loop executes if the counter is >= the ending value.

For countdown = 10 To 1 Step -1 ... Next

− If the increment is omitted, it is assumed to have the value 1.

For index = 1 To 5 ... Next

− The Exit For statement to exit early from a For loop.

For i = 1 To 100 answer = Console.ReadLine() If answer = "Q" Or answer = "q" Then Exit For ' calculations go here Next

A Random Number Example • The LuckyGuess program selects a random number

between 1 and 10 and gives the user three chances to “guess” the number. − Hints such as “Too low” and “Too high” are displayed after

each guess if the user is unsuccessful. − Rnd() returns a random number between 0 and 1. To scale it

to a number in a specified range, you must use the following formula: Int (lowerbound + Rnd() * upperbound)

− Int() truncates the fractional part of the number.

Page 8: Notes

− The algorithm used by Rnd() generates pseudo-random numbers. To generate different sequences each time the program is executed, you must initialize the generator by calling the Randomize() function.

' Lucky Guess Module LuckyGuess Sub Main() Dim randomNumber As Integer Dim chance, guess As Integer ' Initialize the random number generator Randomize() ' Calculate a random number between 1 and 10 randomNumber = Int(1 + 10 * Rnd()) ' Give the user three chances For chance = 1 To 3 ' Get their guess Console.WriteLine( _ "Enter guess #{0}: ", chance) guess = _ Convert.ToInt32(Console.ReadLine()) ' Determine how accurate their guess was If guess = randomNumber Then Console.WriteLine( _ "Congratulations! You found it!") Exit For ElseIf guess < randomNumber Then Console.WriteLine("Too low!") Else Console.WriteLine("Too high!") End If Next Console.WriteLine( _ "The number was {0}", randomNumber) End Sub End Module • One possible set of output from running this program

is shown here: Enter guess #1: 6 Too high! Enter guess #2: 1 Too low! Enter guess #3: 2 Too low! The number was 4 • Another possible set of output from running this

program could be: Enter guess #1: 7 Too high! Enter guess #2: 3 Congratulations! You found it! The number was 3

Page 9: Notes

Windows Forms • Windows Forms is that part of the .NET Framework

that supports building traditional GUI applications on the Windows platform. − Windows Forms provides a large set of classes that make it

easy to create sophisticated user interfaces.

These classes are available to all .NET languages. • Your VB.NET Windows application will typically have

a main window that is implemented by building a class derived from System.Windows.Forms.Form.

Control

ScrollableControl

ContainerControl

Object

Form UserControl

Your Form

Building a Windows Application • The application can be designed using Visual Studio

.NET, which provides a visual drag-and-drop tool known as the Windows Forms Designer.

− You can also connect events to the controls using this tool.

− The only programming needed is the coding of the event handler.

• The following demonstration describes the creation of a simple Windows application that allows the user to enter his name and then displays a basic greeting when the user presses a button.

Page 10: Notes

2. It generates an initial startup form named Form1 that is stored in a

file called Form1.vb that serves as your main window. It should also display the Toolbox, which contains all of the basic .NET controls that can be placed on your form. If your Toolbox is not visible, use the View menu to display it.

3. Change the name of this class and the file to MainForm and MainForm.vb, respectively. The name of the class can be changed using the Properties window by setting the Name property to MainForm. You can confirm that this changed the name of the class by pressing the View Code button on the Solutions Explorer toolbar. When the code window is displayed, you see all of the code that has been generated thus far:

Page 11: Notes

Public Class MainForm Inherits System.Windows.Forms.Form ... End Class

4. You can change the name of the file in the Solutions Explorer window to MainForm.vb by right-clicking on the name of the file and choosing “rename.”

5. Finally, you must change the Startup Object in the project’s properties from Form1 to MainForm. You may right-click on the project name in the Solutions Explorer window and choose Properties, or you may use the Project | Properties menu.

Using the Windows Forms Designer • You can use the Windows Forms Designer to design the

user interface of a Windows application. • The Toolbox contains a variety of controls that can be

placed on a form in order to interact with a user.

− Double-clicking on a control’s icon in the Toolbox drawn the control on the form in a default position -- it can then be moved to any position you desire.

− You may also drag a control from the toolbox and drop it where you want.

Page 12: Notes

6. Continuing with the demo… Add the controls that are shown on the following screen snap to your MainForm and set their properties using the Properties Window accordingly. The graphic identifies the types of the controls that were drawn and the properties that were changed for each control.

Aligning Controls

• The Layout toolbar can be used to align two or more controls, to make two or more controls the same size, to control the distance between two or more controls, and so on. 7. To align the controls on our GreetingDemo,

- Select both the label and the text box, and chose “Align Top.” - With the label and the text box still selected, chose “Center

Horizontally.” - We selected the button, and chose “Center Horizontally.”

Page 13: Notes

Setting the Tab Order • You can set the tab order of the controls on the form

using the View | Tab Order menu. − Your form must have the focus for the Tab Order option to

appear on the View menu. − It displays the form and places numbers representing the

current tab order over each control. − As you click on the controls, the tab order changes -- the first

control you click on becomes number 0, the second control you click on becomes number 1, and so on.

− When you are finished, use the View | Tab Order menu to make the numbers go away.

8. Set the tab order on our form to that shown.

Trapping Events • In order to respond to a user’s actions, Windows

applications must trap events. − For example, if a user clicks on a button, a program might

calculate a value • When object variables are declared using WithEvents,

events can be trapped and responded to. − In the case of a Windows application, all controls placed on

the form have variables associated with them that are declared using WithEvents.

− A quick look at the code generated for our form shows: Public Class MainForm Inherits System.Windows.Forms.Form ... Friend WithEvents lblName As _ System.Windows.Forms.Label Friend WithEvents txtName As _ System.Windows.Forms.TextBox Friend WithEvents btnClickMe As _ System.Windows.Forms.Button ... End Class