SlideShare una empresa de Scribd logo
1 de 71
Chapter 6 - Procedures Outline 6.1 Introduction 6.2   Modules, Classes and Procedures 6.3   Sub  Procedures 6.4   Function  Procedures 6.5   Methods 6.6   Argument Promotion 6.7   Option Strict and Data Type Conversions 6.8   Value Types and Reference Types 6.9   Passing Arguments: Pass-by-Value vs. Pass-by-Reference 6.10   Duration of Identifiers 6.11   Scope Rules 6.12   Random-Number Generation 6.13   Example: Game of Chance 6.14   Recursion 6.15   Example Using Recursion: The Fibonacci Series 6.16   Recursion vs. Iteration
Outline 6.17   Procedure Overloading and Optional Arguments 6.17.1  Procedure Overloading 6.17.2  Optional Arguments 6.18   Modules
6.1 Introduction ,[object Object],[object Object]
6.2 Modules, Classes and Procedures ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
6.2 Modules, Classes and Procedures ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
6.2 Modules, Classes and Procedures Fig. 6.1 Hierarchical boss procedure/worker procedure relationship. Boss Worker1 Worker2 Worker3 Worker4 Worker5
6.2 Modules, Classes and Procedures ,[object Object],[object Object],[object Object],[object Object],[object Object]
6.2 Modules, Classes and Procedures ,[object Object],[object Object]
Payment.vb Program Output 1  ' Fig. 6.2: Payment.vb 2  ' Sub procedure that prints payment information. 3  4  Module  modPayment 5  6  Sub  Main() 7  8  ' call Sub procedure PrintPay 4 times 9  PrintPay( 40 ,  10.5 ) 10  PrintPay( 38 ,  21.75 ) 11  PrintPay( 20 ,  13 ) 12  PrintPay( 50 ,  14 ) 13  14  Console.ReadLine()  ' prevent window from closing 15  End Sub   ' Main 16  17  ' print amount of money earned in command window 18  Sub  PrintPay( ByVal  hours  As   Double ,  ByVal  wage  As   Decimal ) 19  20  ' pay = hours * wage 21  Console.WriteLine( "The payment is {0:C}" , hours * wage) 22  End   Sub   ' PrintPay 23  24  End   Module   ' modPayment The payment is $420.00 The payment is $826.50 The payment is $260.00 The payment is $700.00   PrintPay  executes when it is invoked by  Main PrintPay   receives the values of each argument and stores them in the parameters variables  hours  and  wage Notice that  PrintPay  appears within  modPayment . All procedures must be defined inside a module or a class
6.3 Sub Procedures ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
6.4  Function  Procedures ,[object Object],[object Object],[object Object]
SquareInteger.vb 1  ' Fig. 6.3: SquareInteger.vb 2  ' Function procedure to square a number. 3  4  Module   modSquareInteger 5  6  Sub  Main() 7  Dim  i  As Integer  ' counter 8  9  Console.WriteLine( "Number"  &  vbTab  &  "Square"  &  vbCrLf ) 10  11  ' square numbers from 1 to 10 12  For  i =  1   To   10 13  Console.WriteLine(i &  vbTab  & Square(i)) 14  Next 15  16  End Sub  ' Main 17  18  ' Function Square is executed 19  ' only when the function is explicitly called. 20  Function  Square( ByVal  y  As Integer )  As Integer 21  Return  y ^  2 22  End Function   ' Square 23  24  End Module   ' modSquareInteger The  For  structure displays the results of squaring the  Integer s from 1-10 Square  is invoked with the expression  Square(i) The  Return  statement terminates execution of the procedure and returns the result of  y   ^   2
SquareInteger.vb Program Output Number  Square   1  1 2  4 3  9 4  16 5  25 6  36 7  49 8  64 9  81 10  100
6.4  Function  Procedures ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
6.5 Methods ,[object Object],[object Object],[object Object],[object Object]
Maximum.vb 1  ' Fig. 6.4: Maximum.vb 2  ' Program finds the maximum of three numbers input. 3  4  Public   Class  FrmMaximum 5  Inherits  System.Windows.Forms.Form 6  7  ' prompts for three inputs 8  Friend   WithEvents  lblOne  As  System.Windows.Forms.Label 9  Friend   WithEvents  lblTwo  As  System.Windows.Forms.Label 10  Friend   WithEvents  lblThree  As  System.Windows.Forms.Label 11  12  ' displays result 13  Friend   WithEvents  lblMaximum  As  System.Windows.Forms.Label 14  15  ' read three numbers 16  Friend   WithEvents  txtFirst  As  System.Windows.Forms.TextBox 17  Friend   WithEvents  txtSecond  As  System.Windows.Forms.TextBox 18  Friend   WithEvents  txtThird  As  System.Windows.Forms.TextBox 19  20  ' reads inputs and calculate results 21  Friend WithEvents  cmdMaximum  As  System.Windows.Forms.Button 22  23  ' Visual Studio .NET generated code 24  25  ' obtain values in each text box, call procedure Maximum 26  Private   Sub  cmdMaximum_Click( ByVal  sender  As  System.Object, _ 27  ByVal  e  As  System.EventArgs)  Handles  cmdMaximum.Click 28  These are declarations of all the controls used in the GUI. Create these components visually, using the  Toolbox Remember that all forms inherit from class  System.Windows.Forms.Form Event handler  cmdMaximum_Click   Handles  the event in which  Button   cmdMaximum  is clicked
Maximum.vb Program Output 29  Dim  value1, value2, value3  As   Double 30  31  value1 = txtFirst.Text 32  value2 = txtSecond.Text 33  value3 = txtThird.Text 34  35  lblMaximum.Text = Maximum(value1, value2, value3) 36  End   Sub  ' cmdMaximum_Click 37  38  ' find maximum of three parameter values 39  Function  Maximum( ByVal  valueOne  As   Double , _ 40  ByVal  valueTwo  As   Double ,  ByVal  valueThree  As   Double ) 41  42  Return  Math.Max(Math.Max(valueOne, valueTwo), valueThree) 43  End   Function  ' Maximum 44  45  End   Class  ' FrmMaximum The values in the three  TextBox es are retrieved using the  Text  property Call to methods defined in the class that contains the method call need only specify the method name Call to methods that are defined in a class in the FCL must include the class name and the dot ( . ) operator
6.5 Methods Fig. 6.5 Parameter Info feature of the Visual Studio .NET IDE. Parameter Info window
6.5 Methods Fig. 6.6 IntelliSense feature of the Visual Studio .NET IDE.
6.5 Methods Fig. 6.7 Math class methods.
6.5 Methods Fig. 6.7 Math class methods.
6.6 Argument Promotion ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
6.6 Argument Promotion Fig. 6.8 Widening conversions.
6.7 Option Strict and Data-Type Conversions ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
6.7 Option Strict and Data-Type Conversions Fig. 6.9 Property Pages dialog with Option Strict set to On.
6.8 Value Types and Reference Types ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
6.8 Value Types and Reference Types Fig. 6.10 Visual Basic primitive data types.
6.8 Value Types and Reference Types Fig. 6.11 Literals with type characters.
6.9 Passing Arguments: Pass-by-Value vs. Pass-by-Reference ,[object Object],[object Object],[object Object],[object Object]
ByRefTest.vb 1  ' Fig. 6.12: ByRefTest.vb 2  ' Demonstrates passing by reference. 3  4  Module  modByRefTest 5  6  ' squares three values ByVal and ByRef, displays results 7  Sub  Main() 8  Dim  number1  As Integer  =  2 9  10  Console.WriteLine ( "Passing a value-type argument by value:" ) 11  Console.WriteLine( "Before calling SquareByValue, "  & _ 12  "number1 is {0}" , number1) 13  SquareByValue(number1)  ' passes number1 by value 14  Console.WriteLine( "After returning from SquareByValue, "  & _ 15  "number1 is {0}"  &  vbCrLf , number1) 16  17  Dim  number2  As   Integer  =  2 18  19  Console.WriteLine ( "Passing a value-type argument"   & _ 20  " by reference:" ) 21  Console.WriteLine( "Before calling SquareByReference, "  & _ 22  "number2 is {0}" , number2) 23  SquareByReference(number2)  ' passes number2 by reference 24  Console.WriteLine( "After returning from "  & _ 25  "SquareByReference, number2 is {0}"  &  vbCrLf , number2) 26  27  Dim  number3  As Integer  =  2 28  When  number1  is passed, a copy of the value is passed to the procedure A reference to the value stored in  number2  is being passed
ByRefTest.vb 29  Console.WriteLine ( "Passing a value-type argument "  & _ 30  " by reference, but in parentheses:" ) 31  Console.WriteLine( "Before calling SquareByReference "  & _ 32  "using parentheses, number3 is {0}" , number3) 33  SquareByReference((number3))  ' passes number3 by value 34  Console.WriteLine( "After returning from "  & _ 35  "SquareByReference, number3 is {0}" , number3) 36  37  End Sub  ' Main 38  39  ' squares number by value (note ByVal keyword) 40  Sub  SquareByValue( ByVal  number  As Integer ) 41  Console.WriteLine( "After entering SquareByValue, "  & _ 42  "number is {0}" , number) 43  number *= number 44  Console.WriteLine( "Before exiting SquareByValue, "  & _ 45  "number is {0}" , number) 46  End Sub   ' SquareByValue 47  48  ' squares number by reference (note ByRef keyword) 49  Sub  SquareByReference( ByRef  number  As Integer ) 50  Console.WriteLine( "After entering SquareByReference"  & _ 51  ", number is {0}" , number) 52  number *= number 53  Console.WriteLine( "Before exiting SquareByReference"  & _ 54  ", number is {0}" , number) 55  End Sub   ' SquareByReference 56  57  End Module   ' modByRefTest ByVal  indicates that value-type arguments should be passed by value ByRef  gives direct access to the value stored in the original variable Enclosing arguments in parenthesis forces pass-by-value
Program Output Passing a value-type argument by value: Before calling SquareByValue, number1 is 2 After entering SquareByValue, number is 2 Before exiting SquareByValue, number is 4 After returning from SquareByValue, number1 is 2   Passing a value-type argument by reference: Before calling SquareByReference, number2 is 2 After entering SquareByReference, number is 2 Before exiting SquareByReference, number is 4 After returning from SquareByReference, number2 is 4   Passing a value-type argument by reference, but in parentheses: Before calling SquareByReference using parentheses, number3 is 2 After entering SquareByReference, number is 2 Before exiting SquareByReference, number is 4 After returning from SquareByReference, number3 is 2
6.10 Duration of Identifiers ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
6.11 Scope Rules ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Scoping.vb 1  ' Fig. 6.13: Scoping.vb 2  ' Demonstrates scope rules and instance variables. 3  4  Public Class  FrmScoping 5  Inherits  System.Windows.Forms.Form 6  7  Friend WithEvents  lblOutput  As  System.Windows.Forms.Label 8  9  ' Windows Form Designer generated code 10  11  ' instance variable can be used anywhere in class 12  Dim  value  As   Integer  =  1 13  14  ' demonstrates class scope and block scope 15  Private   Sub  FrmScoping_Load( ByVal  sender  As  System.Object, _ 16  ByVal  e  As  System.EventArgs)  Handles   MyBase .Load 17  18  ' variable local to FrmScoping_Load hides instance variable 19  Dim  value  As   Integer  =  5 20  21  lblOutput.Text =  "local variable value in"  & _ 22  " FrmScoping_Load is "  & value 23  24  MethodA()  ' MethodA has automatic local value 25  MethodB()  ' MethodB uses instance variable value 26  MethodA()  ' MethodA creates new automatic local value 27  MethodB()  ' instance variable value retains its value 28  29  lblOutput.Text &=  vbCrLf  &  vbCrLf  &  "local variable "  & _ 30  "value in CScoping_Load is "  & value 31  End   Sub   ' FrmScoping_Load 32  33  ' automatic local variable value hides instance variable 34  Sub  MethodA() 35  Dim  value  As Integer  =  25   ' initialized after each call This variable is hidden in any procedure that declares a variable named  value Automatic variable value is destroyed when  MethodA  terminates None of the method calls modifies this variable – both methods refer to variables in other scopes
Scoping.vb 36  37  lblOutput.Text &=  vbCrLf  &  vbCrLf  &  "local variable "  & _ 38  "value in MethodA is "  & value &  " after entering MethodA" 39  value +=  1 40  lblOutput.Text &=  vbCrLf  &  "local variable "  & _ 41  "value in MethodA is "  & value &  " before exiting MethodA" 42  End   Sub   ' MethodA 43  44  ' uses instance variable value 45  Sub  MethodB() 46  lblOutput.Text &=  vbCrLf  &  vbCrLf  &  "instance variable"  & _ 47  " value is "  & value &  " after entering MethodB" 48  value *=  10 49  lblOutput.Text &=  vbCrLf  &  "instance variable "  & _ 50  "value is "  & value &  " before exiting MethodB" 51  End   Sub   ' MethodB 52  53  End Class  ' FrmScoping When  MethodB  procedure refers to variable  value , the instance variable  value  (line 12) is used.
6.12 Random-Number Generation ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
RandomInteger.vb 1  ' Fig. 6.14: RandomInteger.vb 2  ' Generating random integers. 3  4  Imports  System.Windows.Forms 5  6  Module  modRandomInteger 7  8  Sub  Main() 9  Dim  randomObject  As  Random =  New  Random() 10  Dim  randomNumber  As   Integer 11  Dim  output  As   String  =  "" 12  Dim  i  As Integer 13  14  For  i =  1   To   20 15  randomNumber = randomObject.Next( 1 ,  7 ) 16  output &= randomNumber &  " " 17  18  If  i  Mod   5  =  0   Then  ' is i a multiple of 5? 19  output &=  vbCrLf 20  End   If 21  22  Next 23  24  MessageBox.Show(output,  "20 Random Numbers from 1 to 6" , _ 25  MessageBoxButtons. OK , MessageBoxIcon. Information ) 26  End Sub  ' Main 27  28  End Module  ' modRandomInteger Note that we must use  7  as the second argument to produce integers in the range from 1-6 Go to the next line every time five numbers are generated
RollDice.vb 1  ' Fig. 6.15: RollDice.vb 2  ' Rolling four dice. 3  4  Imports  System.IO 5  6  Public   Class  FrmRollDice 7  Inherits  System.Windows.Forms.Form 8  9  ' button for rolling dice 10  Friend   WithEvents  cmdRoll  As  System.Windows.Forms.Button 11  12  ' labels to display die images 13  Friend   WithEvents  lblDie1  As  System.Windows.Forms.Label 14  Friend   WithEvents  lblDie2  As  System.Windows.Forms.Label 15  Friend   WithEvents  lblDie3  As  System.Windows.Forms.Label 16  Friend   WithEvents  lblDie4  As  System.Windows.Forms.Label 17  18  ' Visual Studio .NET generated code 19  20  ' declare Random object reference 21  Dim  randomNumber  As  Random =  New  Random() 22  23  ' display results of four rolls 24  Private   Sub  cmdRoll_Click( ByVal  sender  As  System.Object, _ 25  ByVal  e  As  System.EventArgs)  Handles  cmdRoll.Click 26  27  ' method randomly assigns a face to each die 28  DisplayDie(lblDie1) 29  DisplayDie(lblDie2) 30  DisplayDie(lblDie3) 31  DisplayDie(lblDie4) 32  End   Sub  ' cmdRoll_Click 33  Event-handling method  cmdRoll_Click , executes whenever the user clicks  cmdRoll RandomNumber  is an instance variable of  FrmRollDice . This allows the same  Random  object to be used each time  DisplayDie  executes
RollDice.vb 34  ' get a random die image 35  Sub  DisplayDie( ByVal  dieLabel  As  Label) 36  37  ' generate random integer in range 1 to 6 38  Dim  face  As  Integer = randomNumber.Next( 1 ,  7 ) 39  40  ' load corresponding image 41  dieLabel.Image = Image.FromFile( _ 42  Directory.GetCurrentDirectory &  "magesie"  & _ 43  face &  ".png" ) 44  End   Sub  ' DisplayDie 45  46  End   Class   ' FrmRollDice Image  property displays an image on the label Class  Image  is contained in the  System.Drawing  namespace, which is imported by default in all Windows Applications Method  Directory.GetCurrentDirectory  returns the location of the folder in which the current project is located, including  bin
RollTwelveDice.vb 1  ' Fig. 6.16: RollTwelveDice.vb 2  ' Rolling 12 dice with frequency chart. 3  4  Imports  System.IO 5  6  Public   Class  FrmRollTwelveDice 7  Inherits  System.Windows.Forms.Form 8  9  ' labels to display die images 10  Friend   WithEvents   lblDie1   As   System.Windows.Forms.Label 11  Friend   WithEvents   lblDie2   As   System.Windows.Forms.Label 12  Friend   WithEvents   lblDie3   As   System.Windows.Forms.Label 13  Friend   WithEvents   lblDie4   As   System.Windows.Forms.Label 14  Friend   WithEvents   lblDie5   As   System.Windows.Forms.Label 15  Friend   WithEvents   lblDie6   As   System.Windows.Forms.Label 16  Friend   WithEvents   lblDie7   As   System.Windows.Forms.Label 17  Friend   WithEvents   lblDie8   As   System.Windows.Forms.Label 18  Friend   WithEvents   lblDie9   As   System.Windows.Forms.Label 19  Friend   WithEvents   lblDie10   As   System.Windows.Forms.Label 20  Friend   WithEvents   lblDie11   As   System.Windows.Forms.Label 21  Friend   WithEvents   lblDie12   As   System.Windows.Forms.Label 22  23  ' displays roll frequencies 24  Friend   WithEvents  displayTextBox  As  _ 25  System.Windows.Forms.TextBox 26  27  ' Visual Studio .NET generated code 28  29  ' declarations 30  Dim  randomObject  As  Random =  New  Random() 31  Dim  ones, twos, threes, fours, fives, sixes  As   Integer 32  We declare counters for each of the possible rolls The  TextBox  is used to display the cumulative frequencies of each face
RollTwelveDice.vb 35  Private   Sub  cmdRoll_Click _ 34  ( ByVal  sender  As  System.Object, _ 35  ByVal  e  As  System.EventArgs)  Handles  cmdRoll.Click 36  37  ' assign random faces to 12 dice using DisplayDie 38  DisplayDie(lblDie1) 39  DisplayDie(lblDie2) 40  DisplayDie(lblDie3) 41  DisplayDie(lblDie4) 42  DisplayDie(lblDie5) 43  DisplayDie(lblDie6) 44  DisplayDie(lblDie7) 45  DisplayDie(lblDie8) 46  DisplayDie(lblDie9) 47  DisplayDie(lblDie10) 48  DisplayDie(lblDie11) 49  DisplayDie(lblDie12) 50  51  Dim  total  As   Integer  = ones + twos + threes + fours + _ 52  fives + sixes 53  54  Dim  output  As String 55  56  ' display frequencies of faces 57  output =  "Face"  &  vbTab  &  vbTab  & _ 58  "Frequency"  &  vbTab  &  "Percent" 59  60  output &=  vbCrLf  &  "1"  &  vbTab  &  vbTab  & ones & _ 61  vbTab  &  vbTab  &  String .Format( "{0:P}" , ones / total) 62  63  output &=  vbCrLf  &  "2"  &  vbTab  &  vbTab  & twos &  vbTab  & _ 64  vbTab  &  String .Format( "{0:P}" , twos / total) 65  66  output &=  vbCrLf  &  "3"  &  vbTab  &  vbTab  & threes &  vbTab  & _ 67  vbTab  &  String .Format( "{0:P}" , threes / total) The  “P”  format code is used to display the frequency of each roll as percentages
RollTwelveDice.vb 68  69  output &=  vbCrLf  &  "4"  &  vbTab  &  vbTab  & fours &  vbTab  & _ 70  vbTab  &  String .Format( "{0:P}" , fours / total) 71  72  output &=  vbCrLf  &  "5"  &  vbTab  &  vbTab  & fives &  vbTab  & _ 73  vbTab  &  String .Format( "{0:P}" , fives / total) 74  75  output &=  vbCrLf  &  "6"  &  vbTab  &  vbTab  & sixes &  vbTab  & _ 76  vbTab  &  String .Format( "{0:P}" , sixes / total) &  vbCrLf 77  78  displayTextBox.Text = output 79  End   Sub  ' cmdRoll_Click 80  81  ' display a single die image 82  Sub  DisplayDie( ByVal  dieLabel  As  Label) 83  84  Dim  face  As   Integer  = randomObject.Next( 1 ,  7 ) 85  86  dieLabel.Image = _ 87  Image.FromFile(Directory.GetCurrentDirectory & _ 88  "magesie"  & face &  ".png" ) 89  90  ' maintain count of die faces 91  Select   Case  face 92  93  Case   1 94  ones +=  1 95  96  Case   2 97  twos +=  1 98  99  Case   3 100  threes +=  1 101  Select   Case  is used to calculate the frequency
RollTwelveDice.vb 102  Case   4 103  fours +=  1 104  105  Case   5 106  fives +=  1 107  108  Case   6 109  sixes +=  1 110  111  End   Select 112  113  End   Sub  ' DisplayDie 114  115   End   Class  ' FrmRollTwelveDice
6.13 Example: Game of Chance ,[object Object],[object Object],[object Object]
CrapsGame.vb 1  ' Fig 6.17: CrapsGame.vb 2  ' Playing a craps game. 3  4  Imports  System.IO 5  6  Public   Class  FrmCrapsGame 7  Inherits  System.Windows.Forms.Form 8  9  Friend   WithEvents  cmdRoll  As  Button  ' rolls dice 10  Friend   WithEvents  cmdPlay  As  Button  ' starts new game 11  12  ' dice displayed after each roll 13  Friend   WithEvents  picDie1  As  PictureBox 14  Friend   WithEvents  picDie2  As  PictureBox 15  16  ' pointDiceGroup groups dice representing player's point 17  Friend   WithEvents  pointDiceGroup  As  GroupBox 18  Friend   WithEvents  picPointDie1  As  PictureBox 19  Friend   WithEvents  picPointDie2  As  PictureBox 20  21  Friend   WithEvents  lblStatus  As  Label 22  23  ' Visual Studio .NET generated code 24  25  ' die-roll constants 26  Enum  DiceNames 27  SNAKE_EYES  =  2 28  TREY  =  3 29  CRAPS  =  7 30  YO_LEVEN  =  11 31  BOX_CARS  =  12 32  End Enum 33  A  GroupBox  is a container used to group related components Enum erations are used to define groups of related constants
CrapsGame.vb 34  ' file-name and directory constants 35  Const   FILE_PREFIX   As   String  =  "/images/die" 36  Const   FILE_SUFFIX   As   String  =  ".png" 37  38  Dim  myPoint  As   Integer 39  Dim  myDie1  As   Integer 40  Dim  myDie2  As   Integer 41  Dim  randomObject  As  Random =  New  Random() 42  43  ' begins new game and determines point 44  Private Sub  cmdPlay_Click( ByVal  sender  As  System.Object, _ 45  ByVal  e  As  System.EventArgs)  Handles  cmdPlay.Click 46  47  ' initialize variables for new game 48  myPoint =  0 49  pointDiceGroup.Text =  "Point" 50  lblStatus.Text =  "" 51  52  ' remove point-die images 53  picPointDie1.Image =  Nothing 54  picPointDie2.Image =  Nothing 55  56  Dim  sum  As   Integer  = RollDice() 57  58  ' check die roll 59  Select   Case  sum 60  61  Case  DiceNames. CRAPS , DiceNames. YO_LEVEN 62  63  ' disable roll button 64  cmdRoll.Enabled =  False 65  lblStatus.Text =  "You Win!!!" 66  Keyword  Const  creates a single constant identifier in which values cannot be modified after they are declared Keyword  Nothing  can be used with reference-type variables to specify that no object is associated with the variable Setting the  Image  property to  Nothing  causes the  PictureBoxes  to appear blank The  Select  structure analyzes the roll returned by  RollDice  to determine how play should continue
CrapsGame.vb 67  Case  DiceNames. SNAKE_EYES , _ 68  DiceNames. TREY , DiceNames. BOX_CARS 69  70  cmdRoll.Enabled =  False 71  lblStatus.Text =  "Sorry. You Lose." 72  73  Case Else 74  myPoint = sum 75  pointDiceGroup.Text =  "Point is "  & sum 76  lblStatus.Text =  "Roll Again!" 77  DisplayDie(picPointDie1, myDie1) 78  DisplayDie(picPointDie2, myDie2) 79  cmdPlay.Enabled =  False 80  cmdRoll.Enabled =  True 81  82  End Select 83  84  End Sub  ' cmdPlay_Click 85  86  ' determines outcome of next roll 87  Private   Sub  cmdRoll_Click( ByVal  sender  As  System.Object, _ 88  ByVal  e  As  System.EventArgs)  Handles  cmdRoll.Click 89  90  Dim  sum  As   Integer  = RollDice() 91  92  ' check outcome of roll 93  If  sum = myPoint  Then 94  lblStatus.Text =  "You Win!!!" 95  cmdRoll.Enabled =  False 96  cmdPlay.Enabled =  True 97  ElseIf  sum = DiceNames. CRAPS   Then 98  lblStatus.Text =  "Sorry. You Lose." 99  cmdRoll.Enabled =  False 100  cmdPlay.Enabled =  True 101  End If Disabling a  Button  causes no action to be performed when the  Button  is clicked
CrapsGame.vb 102  103  End Sub   ' cmdRoll_Click 104  105  ' display die image 106  Sub  DisplayDie( ByVal  picDie  As  PictureBox, _ 107  ByVal  face  As   Integer ) 108  109  ' assign die image to picture box 110  picDie.Image = _ 111  Image.FromFile(Directory.GetCurrentDirectory & _ 112  FILE_PREFIX  & face &  FILE_SUFFIX ) 113  End Sub   ' DisplayDie 114  115  ' generate random die rolls 116  Function  RollDice()  As Integer 117  Dim  die1, die2  As Integer 118  119  ' determine random integer 120  die1 = randomObject.Next( 1 ,  7 ) 121  die2 = randomObject.Next( 1 ,  7 ) 122  123  ' display rolls 124  DisplayDie(picDie1, die1) 125  DisplayDie(picDie2, die2) 126  127  ' set values 128  myDie1 = die1 129  myDie2 = die2 130  131  Return  die1 + die2 132  End Function  ' RollDice 133  134  End Class   ' FrmCrapsGame RollDice  generates two random numbers and calls method  DisplayDie , which loads an appropriate die image on the  PictureBox  passed to it.
CrapsGame.vb GroupBox PictureBoxes  (displaying images)
6.14 Recursion ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
6.14 Recursion Fig. 6.18 Recursive evaluation of 5!. 5! 5 * 4! 4 * 3! 3 * 2! 2 * 1! 1 5! 5 * 4! 4 * 3! 3 * 2! 2 * 1! 1 Final value = 120 5! = 5 * 24 = 120 is returned 4! = 4 * 6 = 24 is returned 3! = 3 * 2 = 6 is returned 2! = 2 * 1 = 2 is returned 1 returned (a) Procession of recursive calls (b) Values returned from each recursive call
Factorial.vb 1  ' Fig. 6.19: Factorial.vb 2  ' Calculating factorials using recursion. 3  4  Public   Class  FrmFactorial 5  Inherits  System.Windows.Forms.Form 6  7  Friend   WithEvents  lblEnter  As  Label  ' prompts for Integer 8  Friend   WithEvents  lblFactorial  As  Label  ' indicates output 9  10  Friend   WithEvents  txtInput  As  TextBox  ' reads an Integer 11  Friend   WithEvents  txtDisplay  As  TextBox  ' displays output 12  13  Friend   WithEvents  cmdCalculate  As  Button  ' generates output 14  15  ' Visual Studio .NET generated code 16  17  Private   Sub  cmdCalculate_Click( ByVal  sender  As  System.Object, _ 18  ByVal  e  As  System.EventArgs)  Handles  cmdCalculate.Click 19  20  Dim  value  As   Integer  = Convert.ToInt32(txtInput.Text) 21  Dim  i  As   Integer 22  Dim  output  As   String 23  24  txtDisplay.Text =  "" 25  26  For  i =  0   To  value 27  txtDisplay.Text &= i &  "! = "  & Factorial(i) &  vbCrLf 28  Next 29  30  End   Sub  ' cmdCalculate_Click Conversion from  String  to  Integer
Factorial.vb 31  32  ' recursively generates factorial of number 33  Function  Factorial( ByVal  number  As   Long )  As   Long 34  35  If  number <=  1   Then   ' base case 36  Return   1 37  Else 38  Return  number * Factorial(number -  1 ) 39  End   If 40  41  End   Function  ' Factorial 42  43  End   Class  ' FrmFactorial If  number  is greater than  1 , a recursive call to  Factorial  is made with a slightly simpler problem Forgetting to return a value from a recursive procedure can result in logic errors
6.15 Example Using Recursion: Fibonacci Series ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Fibonacci.vb 1  ' Fig. 6.20: Fibonacci.vb 2  ' Demonstrating Fibonacci sequence recursively. 3  4  Public   Class  FrmFibonacci 5  Inherits  System.Windows.Forms.Form 6  7  Friend WithEvents  lblPrompt  As  Label  ' prompts for input 8  Friend WithEvents  lblResult  As  Label  ' displays result 9  10  Friend WithEvents  cmdCalculate  As  Button  ' calculates result 11  12  Friend WithEvents  txtInputBox  As  TextBox  ' reads an Integer 13  14  ' Visual Studio .NET generated code 15  16  ' displays Fibonacci number in txtInputBox 17  Private   Sub  cmdCalculate_Click( ByVal  sender  As  System.Object, _ 18  ByVal  e  As  System.EventArgs)  Handles  cmdCalculate.Click 19  20  ' read input 21  Dim  number  As   Integer  = Convert.ToInt32(txtInputBox.Text) 22  23  lblResult.Text =  &quot;Fibonacci Value is &quot;  & Fibonacci(number) 24  End   Sub  ' cmdCalculate_Click 25  26  ' calculate Fibonacci value recusively  27  Function  Fibonacci( ByVal  number  As   Integer )  As Long 28  29  ' check for base cases 30  If  number =  1   OrElse  number =  0   Then 31  Return  number 32  Else 33  Return  Fibonacci(number -  1 ) + Fibonacci(number -  2 ) 34  End   If 35  This call to  Fibonacci  is not a recursive call If  number  is greater than  1 , the recursion step generates two recursive calls
Fibonacci.vb 36  End   Function  ' Fibonacci 37  38  End Class  ' FrmFibonacci
6.15 Example Using Recursion: Fibonacci Series Fig. 6.21 Recursive calls to method Fibonacci (abbreviated as F). Fibonacci( 3 ) Fibonacci( 2 ) Fibonacci( 1 ) Fibonacci( 0 ) Fibonacci( 1 ) return 1 return return 1 return 0 return
6.16 Recursion vs. Iteration ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
6.17 Procedure Overloading and Optional Arguments ,[object Object],[object Object],[object Object],[object Object],[object Object]
Overload.vb 1  ' Fig. 6.22: Overload.vb 2  ' Using overloaded methods. 3  4  Public   Class  FrmOverload 5  Inherits  System.Windows.Forms.Form 6  7  Friend WithEvents  outputLabel  As  Label 8  9  ' Visual Studio .NET generated code 10  11  Private   Sub  FrmOverload_Load( ByVal  sender  As  System.Object, _ 12  ByVal  e  As  System.EventArgs)  Handles MyBase .Load 13  14  outputLabel.Text =  &quot;The square of Integer 7 is &quot;  & _ 15  square( 7 ) &  vbCrLf  &  &quot;The square of Double &quot;  & _ 16  &quot;7.5 is &quot;  & square( 7 . 5 ) 17  End   Sub  ' FrmOverload_Load 18  19  Function  Square( ByVal  value  As   Integer )  As   Integer 20  Return  Convert.ToInt32(value ^  2 ) 21  End Function  ' Square 22  23  Function  Square( ByVal  value  As   Double )  As   Double 24  Return  value ^  2 25  End Function  ' Square 26  27  End Class  ' FrmOverload The compiler uses a logical name to differ between the two  Square  methods The compiler might use the logical name “ Square  of  Integer ” “ Square  of  Double ” for the  Square  method that specifies a  Double  parameter
Overload2.vb 1  ' Fig. 6.23: Overload2.vb 2  ' Using overloaded procedures with identical signatures and 3  ' different return types. 4  5  Public   Class  FrmOverload2 6  Inherits  System.Windows.Forms.Form 7  8  Friend WithEvents  outputLabel  As  Label 9  10  ' Visual Studio .NET generated code 11  12  Private   Sub  FrmOverload2_Load( ByVal  sender  As  System.Object, _ 13  ByVal  e  As  System.EventArgs)  Handles MyBase .Load 14  15  outputLabel.Text =  &quot;The square of Integer 7 is &quot;  & _ 16  square( 7 ) &  vbCrLf  &  &quot;The square of Double &quot;  & _ 17  &quot;7.5 is &quot;  & square( 7 . 5 ) 18  End   Sub  ' FrmOverload2_Load 19  20  Function  Square( ByVal  value  As   Double )  As   Integer 21  Return  Convert.ToInt32(value ^  2 ) 22  End Function  ' Square 23  24  Function  Square( ByVal  value  As   Double )  As   Double 25  Return  value ^  2 26  End Function  ' Square 27  28  End Class  ' FrmOverload2 Procedure calls cannot be distinguished by return type
Overload2.vb Program Output The creating of overloaded procedures with identical parameter lists and different return types produces a syntax error
6.17.2 Optional Arguments ,[object Object],[object Object],[object Object],[object Object],[object Object]
Power.vb 1  ' Fig 6.24 Power.vb 2  ' Calculates the power of a value, defaults to square. 3  4  Public   Class  FrmPower 5  Inherits  System.Windows.Forms.Form 6  7  Friend   WithEvents  txtBase  As  TextBox  ' reads base 8  Friend   WithEvents  txtPower  As  TextBox  ' reads power 9  10  Friend   WithEvents  inputGroup  As  GroupBox 11  12  Friend   WithEvents  lblBase  As  Label  ' prompts for base 13  Friend   WithEvents  lblPower  As  Label  ' prompts for power 14  Friend   WithEvents  lblOutput  As  Label  ' displays output 15  16  Friend   WithEvents  cmdCalculate  As  Button  ' generates output 17  18  ' Visual Studio .NET generated code 19  20  ' reads input and displays result 21  Private   Sub  cmdCalculate_Click( ByVal  sender  As  System.Object, _ 22  ByVal  e  As  System.EventArgs)  Handles  cmdCalculate.Click 23  24  Dim  value  As   Integer 25  26  ' call version of Power depending on power input 27  If   Not  txtPower.Text =  &quot;&quot;   Then 28  value = Power(Convert.ToInt32(txtBase.Text), _ 29  Convert.ToInt32(txtPower.Text)) 30  Else 31  value = Power(Convert.ToInt32(txtBase.Text)) 32  End   If 33  34  lblOutput.Text = Convert.ToString(value) 35  End   Sub  ' cmdCalculate_Click Determines whether  txtPower  contains a value
Power.vb 36  37  ' use iteration to calculate power 38  Function  Power( ByVal  base  As   Integer , _ 39  Optional   ByVal  exponent  As   Integer  =  2 )  As   Integer 40  41  Dim  total  As   Integer  =  1 42  Dim  i  As   Integer 43  44  For  i =  1   To  exponent 45  total *= base 46  Next 47  48  Return  total 49  End   Function  ' Power 50  51  End   Class  ' FrmPower When omitted, the  Optional  argument defaults to the value  2
6.18 Modules ,[object Object],[object Object],[object Object],[object Object]
DiceModule.vb 1  ' Fig. 6.25: DiceModule.vb 2  ' A collection of common dice procedures. 3  4  Imports  System.IO 5  6  Module  modDice 7  8  Dim  randomObject  As  Random =  New  Random() 9  10  ' rolls single die 11  Function  RollDie()  As   Integer 12  Return  randomObject.Next( 1 ,  7 ) 13  End   Function  ' RollDie 14  15  ' die summation procedure 16  Function  RollAndSum( ByVal  diceNumber  As   Integer ) _ 17  As   Integer 18  19  Dim  i  As Integer  20  Dim  sum  As   Integer  =  0 21  22  For  i =  1   To  diceNumber 23  sum += RollDie() 24  Next 25  26  Return  sum 27  End   Function  ' RollAndSum modDice  groups several dice-related procedures into a module for reuse in other programs that use dice
DiceModule.vb 28  29  ' returns die image 30  Function  GetDieImage( ByVal  dieValue  As   Integer , _ 31  Optional   ByVal  baseImageName  As   String  =  &quot;die&quot; ) _ 32  As  System.Drawing.Image 33  34  Return  Image.FromFile( _ 35  Directory.GetCurrentDirectory & _ 36  &quot;magesamp;quot;  & baseImageName & dieValue &  &quot;.png&quot; ) 37  End   Function  ' GetDieImage 38  39  End   Module   ' modDice Optional  parameter  baseImageName  represents the prefix of the image name to be used
DiceModuleTest.vb 1  ' Fig. 6.26: DiceModuleTest.vb 2  ' Demonstrates modDiceModule procedures 3  4  Imports  System.Drawing 5  6  Public   Class  FrmDiceModuleTest 7  Inherits  System.Windows.Forms.Form 8  9  Friend   WithEvents  lblSum  As  Label  ' displays 10-roll sum 10  11  Friend   WithEvents  diceGroup  As  GroupBox 12  13  ' dice images 14  Friend   WithEvents  picDie1  As  PictureBox 15  Friend   WithEvents  picDie2  As  PictureBox 16  17  Friend   WithEvents  cmdRollDie1  As  Button  ' rolls blue die 18  Friend   WithEvents  cmdRollTen  As  Button  ' simulates 10 rolls 19  Friend   WithEvents  cmdRollDie2  As  Button  ' rolls red die 20  21  ' Visual Studio .NET generated code 22  23  Private   Sub  cmdRollDie1_Click( ByVal  sender  As  System.Object, _ 24  ByVal  e  As  System.EventArgs)  Handles  cmdRollDie1.Click 25  26  picDie1.Image = modDice.GetDieImage(modDice.RollDie()) 27  End   Sub  ' cmdRollDie1_Click 28  29  Private   Sub  cmdRollDie2_Click( ByVal  sender  As  System.Object, _ 30  ByVal  e  As  System.EventArgs)  Handles  cmdRollDie2.Click 31  32  picDie2.Image = modDice.GetDieImage(modDice.RollDie(), _ 33  &quot;redDie&quot; ) 34  End   Sub  ' cmdRollDie2_Click 35  cmdRollDie2_Click  uses the  Optional  argument to prefix the image name and select a different image We call procedures contained in  modDice  by following the module name with the dot ( . ) operator and the procedure name
DiceModuleTest.vb 36  Private   Sub  cmdRollTen_Click( ByVal  sender  As  System.Object, _ 37  ByVal  e  As  System.EventArgs)  Handles  cmdRollTen.Click 38  39  lblSum.Text = Convert.ToString(modDice.RollAndSum( 10 )) 40  End   Sub  ' cmdRollTen_Click 41  42  End   Class   ' FrmDiceModuleTest This procedure sets the  Text  property of  lblSum  to the result of 10 rolls

Más contenido relacionado

Destacado

SE - Software Requirements
SE - Software RequirementsSE - Software Requirements
SE - Software RequirementsJomel Penalba
 
05 control structures 2
05 control structures 205 control structures 2
05 control structures 2Jomel Penalba
 
Ch5 - Project Management
Ch5 - Project ManagementCh5 - Project Management
Ch5 - Project ManagementJomel Penalba
 
Control structures ii
Control structures ii Control structures ii
Control structures ii Ahmad Idrees
 
04 control structures 1
04 control structures 104 control structures 1
04 control structures 1Jomel Penalba
 
Control structures selection
Control structures   selectionControl structures   selection
Control structures selectionOnline
 
Control Structures
Control StructuresControl Structures
Control StructuresGhaffar Khan
 
Control Structures in Visual Basic
Control Structures in  Visual BasicControl Structures in  Visual Basic
Control Structures in Visual BasicTushar Jain
 
Requirements Engineering Process
Requirements Engineering ProcessRequirements Engineering Process
Requirements Engineering ProcessJomel Penalba
 
visual basic for the beginner
visual basic for the beginnervisual basic for the beginner
visual basic for the beginnerSalim M
 
Key Expert Systems Concepts
Key Expert Systems ConceptsKey Expert Systems Concepts
Key Expert Systems ConceptsHarmony Kwawu
 
Expert systems
Expert systemsExpert systems
Expert systemsJithin Zcs
 
Introduction and architecture of expert system
Introduction  and architecture of expert systemIntroduction  and architecture of expert system
Introduction and architecture of expert systempremdeshmane
 
Expert Systems
Expert SystemsExpert Systems
Expert Systemsosmancikk
 

Destacado (20)

Business hardware
Business hardwareBusiness hardware
Business hardware
 
SE - Software Requirements
SE - Software RequirementsSE - Software Requirements
SE - Software Requirements
 
Crm
CrmCrm
Crm
 
05 control structures 2
05 control structures 205 control structures 2
05 control structures 2
 
Ch5 - Project Management
Ch5 - Project ManagementCh5 - Project Management
Ch5 - Project Management
 
SE - System Models
SE - System ModelsSE - System Models
SE - System Models
 
Control structures ii
Control structures ii Control structures ii
Control structures ii
 
12 gui concepts 1
12 gui concepts 112 gui concepts 1
12 gui concepts 1
 
04 control structures 1
04 control structures 104 control structures 1
04 control structures 1
 
Control structures selection
Control structures   selectionControl structures   selection
Control structures selection
 
Control Structures
Control StructuresControl Structures
Control Structures
 
Control Structures in Visual Basic
Control Structures in  Visual BasicControl Structures in  Visual Basic
Control Structures in Visual Basic
 
Requirements Engineering Process
Requirements Engineering ProcessRequirements Engineering Process
Requirements Engineering Process
 
visual basic for the beginner
visual basic for the beginnervisual basic for the beginner
visual basic for the beginner
 
Expert system
Expert systemExpert system
Expert system
 
Key Expert Systems Concepts
Key Expert Systems ConceptsKey Expert Systems Concepts
Key Expert Systems Concepts
 
Expert systems
Expert systemsExpert systems
Expert systems
 
Introduction and architecture of expert system
Introduction  and architecture of expert systemIntroduction  and architecture of expert system
Introduction and architecture of expert system
 
Expert Systems
Expert SystemsExpert Systems
Expert Systems
 
Expert Systems
Expert SystemsExpert Systems
Expert Systems
 

Similar a 06 procedures

Csphtp1 06
Csphtp1 06Csphtp1 06
Csphtp1 06HUST
 
Visual Basic Programming
Visual Basic ProgrammingVisual Basic Programming
Visual Basic ProgrammingOsama Yaseen
 
Dynamic Function Call in PI Sheet (XStep)
Dynamic Function Call in PI Sheet (XStep)Dynamic Function Call in PI Sheet (XStep)
Dynamic Function Call in PI Sheet (XStep)Ankit Sharma
 
Mid term sem 2 1415 sol
Mid term sem 2 1415 solMid term sem 2 1415 sol
Mid term sem 2 1415 solIIUM
 
PT1420 Decision Structures in Pseudocode and Visual Basic .docx
PT1420 Decision Structures in Pseudocode and Visual Basic .docxPT1420 Decision Structures in Pseudocode and Visual Basic .docx
PT1420 Decision Structures in Pseudocode and Visual Basic .docxamrit47
 
import java.util.Scanner;Henry Cutler ID 1234 7202.docx
import java.util.Scanner;Henry Cutler ID 1234  7202.docximport java.util.Scanner;Henry Cutler ID 1234  7202.docx
import java.util.Scanner;Henry Cutler ID 1234 7202.docxwilcockiris
 
Final report mobile shop
Final report   mobile shopFinal report   mobile shop
Final report mobile shopViditsingh22
 
Csphtp1 12
Csphtp1 12Csphtp1 12
Csphtp1 12HUST
 
.NET Portfolio
.NET Portfolio.NET Portfolio
.NET Portfoliomwillmer
 
Week 2 iLab TCO 2 — Given a simple problem, design a solutio.docx
Week 2 iLab TCO 2 — Given a simple problem, design a solutio.docxWeek 2 iLab TCO 2 — Given a simple problem, design a solutio.docx
Week 2 iLab TCO 2 — Given a simple problem, design a solutio.docxmelbruce90096
 

Similar a 06 procedures (20)

Csphtp1 06
Csphtp1 06Csphtp1 06
Csphtp1 06
 
Chapter03 Ppt
Chapter03 PptChapter03 Ppt
Chapter03 Ppt
 
Visual Basic Programming
Visual Basic ProgrammingVisual Basic Programming
Visual Basic Programming
 
basic concepts
basic conceptsbasic concepts
basic concepts
 
Vb net1
Vb net1Vb net1
Vb net1
 
Dynamic Function Call in PI Sheet (XStep)
Dynamic Function Call in PI Sheet (XStep)Dynamic Function Call in PI Sheet (XStep)
Dynamic Function Call in PI Sheet (XStep)
 
Visual programming
Visual programmingVisual programming
Visual programming
 
Ppt chapter07
Ppt chapter07Ppt chapter07
Ppt chapter07
 
Mid term sem 2 1415 sol
Mid term sem 2 1415 solMid term sem 2 1415 sol
Mid term sem 2 1415 sol
 
Visual Basic 6.0
Visual Basic 6.0Visual Basic 6.0
Visual Basic 6.0
 
Vb6.0 intro
Vb6.0 introVb6.0 intro
Vb6.0 intro
 
Vb (1)
Vb (1)Vb (1)
Vb (1)
 
PT1420 Decision Structures in Pseudocode and Visual Basic .docx
PT1420 Decision Structures in Pseudocode and Visual Basic .docxPT1420 Decision Structures in Pseudocode and Visual Basic .docx
PT1420 Decision Structures in Pseudocode and Visual Basic .docx
 
import java.util.Scanner;Henry Cutler ID 1234 7202.docx
import java.util.Scanner;Henry Cutler ID 1234  7202.docximport java.util.Scanner;Henry Cutler ID 1234  7202.docx
import java.util.Scanner;Henry Cutler ID 1234 7202.docx
 
Final report mobile shop
Final report   mobile shopFinal report   mobile shop
Final report mobile shop
 
09. Methods
09. Methods09. Methods
09. Methods
 
Csphtp1 12
Csphtp1 12Csphtp1 12
Csphtp1 12
 
Intro to c++
Intro to c++Intro to c++
Intro to c++
 
.NET Portfolio
.NET Portfolio.NET Portfolio
.NET Portfolio
 
Week 2 iLab TCO 2 — Given a simple problem, design a solutio.docx
Week 2 iLab TCO 2 — Given a simple problem, design a solutio.docxWeek 2 iLab TCO 2 — Given a simple problem, design a solutio.docx
Week 2 iLab TCO 2 — Given a simple problem, design a solutio.docx
 

Más de Jomel Penalba

Copy of business hardware
Copy of business hardwareCopy of business hardware
Copy of business hardwareJomel Penalba
 
Business functions and supply chains
Business functions and supply chainsBusiness functions and supply chains
Business functions and supply chainsJomel Penalba
 
Laboratory activity 3 b3
Laboratory activity 3 b3Laboratory activity 3 b3
Laboratory activity 3 b3Jomel Penalba
 
Laboratory activity 3 b2
Laboratory activity 3 b2Laboratory activity 3 b2
Laboratory activity 3 b2Jomel Penalba
 
Laboratory activity 3 b1
Laboratory activity 3 b1Laboratory activity 3 b1
Laboratory activity 3 b1Jomel Penalba
 
Software process models
Software process modelsSoftware process models
Software process modelsJomel Penalba
 
02 intro to vb-net ide
02 intro to vb-net ide02 intro to vb-net ide
02 intro to vb-net ideJomel Penalba
 
Soft Eng - Software Process
Soft  Eng - Software ProcessSoft  Eng - Software Process
Soft Eng - Software ProcessJomel Penalba
 
Soft Eng - Introduction
Soft Eng - IntroductionSoft Eng - Introduction
Soft Eng - IntroductionJomel Penalba
 
Planning Your Multimedia Web Site
Planning Your Multimedia Web SitePlanning Your Multimedia Web Site
Planning Your Multimedia Web SiteJomel Penalba
 
Introduction To Multimedia
Introduction To MultimediaIntroduction To Multimedia
Introduction To MultimediaJomel Penalba
 

Más de Jomel Penalba (13)

Copy of business hardware
Copy of business hardwareCopy of business hardware
Copy of business hardware
 
Chapter 1
Chapter 1Chapter 1
Chapter 1
 
Business functions and supply chains
Business functions and supply chainsBusiness functions and supply chains
Business functions and supply chains
 
Laboratory activity 3 b3
Laboratory activity 3 b3Laboratory activity 3 b3
Laboratory activity 3 b3
 
Laboratory activity 3 b2
Laboratory activity 3 b2Laboratory activity 3 b2
Laboratory activity 3 b2
 
Laboratory activity 3 b1
Laboratory activity 3 b1Laboratory activity 3 b1
Laboratory activity 3 b1
 
Software process models
Software process modelsSoftware process models
Software process models
 
02 intro to vb-net ide
02 intro to vb-net ide02 intro to vb-net ide
02 intro to vb-net ide
 
01 intro to vb-net
01 intro to vb-net01 intro to vb-net
01 intro to vb-net
 
Soft Eng - Software Process
Soft  Eng - Software ProcessSoft  Eng - Software Process
Soft Eng - Software Process
 
Soft Eng - Introduction
Soft Eng - IntroductionSoft Eng - Introduction
Soft Eng - Introduction
 
Planning Your Multimedia Web Site
Planning Your Multimedia Web SitePlanning Your Multimedia Web Site
Planning Your Multimedia Web Site
 
Introduction To Multimedia
Introduction To MultimediaIntroduction To Multimedia
Introduction To Multimedia
 

Último

08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...gurkirankumar98700
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 

Último (20)

08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 

06 procedures

  • 1. Chapter 6 - Procedures Outline 6.1 Introduction 6.2   Modules, Classes and Procedures 6.3   Sub Procedures 6.4   Function Procedures 6.5   Methods 6.6   Argument Promotion 6.7   Option Strict and Data Type Conversions 6.8   Value Types and Reference Types 6.9   Passing Arguments: Pass-by-Value vs. Pass-by-Reference 6.10   Duration of Identifiers 6.11   Scope Rules 6.12   Random-Number Generation 6.13   Example: Game of Chance 6.14   Recursion 6.15   Example Using Recursion: The Fibonacci Series 6.16   Recursion vs. Iteration
  • 2. Outline 6.17   Procedure Overloading and Optional Arguments 6.17.1  Procedure Overloading 6.17.2  Optional Arguments 6.18   Modules
  • 3.
  • 4.
  • 5.
  • 6. 6.2 Modules, Classes and Procedures Fig. 6.1 Hierarchical boss procedure/worker procedure relationship. Boss Worker1 Worker2 Worker3 Worker4 Worker5
  • 7.
  • 8.
  • 9. Payment.vb Program Output 1 ' Fig. 6.2: Payment.vb 2 ' Sub procedure that prints payment information. 3 4 Module modPayment 5 6 Sub Main() 7 8 ' call Sub procedure PrintPay 4 times 9 PrintPay( 40 , 10.5 ) 10 PrintPay( 38 , 21.75 ) 11 PrintPay( 20 , 13 ) 12 PrintPay( 50 , 14 ) 13 14 Console.ReadLine() ' prevent window from closing 15 End Sub ' Main 16 17 ' print amount of money earned in command window 18 Sub PrintPay( ByVal hours As Double , ByVal wage As Decimal ) 19 20 ' pay = hours * wage 21 Console.WriteLine( &quot;The payment is {0:C}&quot; , hours * wage) 22 End Sub ' PrintPay 23 24 End Module ' modPayment The payment is $420.00 The payment is $826.50 The payment is $260.00 The payment is $700.00 PrintPay executes when it is invoked by Main PrintPay receives the values of each argument and stores them in the parameters variables hours and wage Notice that PrintPay appears within modPayment . All procedures must be defined inside a module or a class
  • 10.
  • 11.
  • 12. SquareInteger.vb 1 ' Fig. 6.3: SquareInteger.vb 2 ' Function procedure to square a number. 3 4 Module modSquareInteger 5 6 Sub Main() 7 Dim i As Integer ' counter 8 9 Console.WriteLine( &quot;Number&quot; & vbTab & &quot;Square&quot; & vbCrLf ) 10 11 ' square numbers from 1 to 10 12 For i = 1 To 10 13 Console.WriteLine(i & vbTab & Square(i)) 14 Next 15 16 End Sub ' Main 17 18 ' Function Square is executed 19 ' only when the function is explicitly called. 20 Function Square( ByVal y As Integer ) As Integer 21 Return y ^ 2 22 End Function ' Square 23 24 End Module ' modSquareInteger The For structure displays the results of squaring the Integer s from 1-10 Square is invoked with the expression Square(i) The Return statement terminates execution of the procedure and returns the result of y ^ 2
  • 13. SquareInteger.vb Program Output Number Square   1 1 2 4 3 9 4 16 5 25 6 36 7 49 8 64 9 81 10 100
  • 14.
  • 15.
  • 16. Maximum.vb 1 ' Fig. 6.4: Maximum.vb 2 ' Program finds the maximum of three numbers input. 3 4 Public Class FrmMaximum 5 Inherits System.Windows.Forms.Form 6 7 ' prompts for three inputs 8 Friend WithEvents lblOne As System.Windows.Forms.Label 9 Friend WithEvents lblTwo As System.Windows.Forms.Label 10 Friend WithEvents lblThree As System.Windows.Forms.Label 11 12 ' displays result 13 Friend WithEvents lblMaximum As System.Windows.Forms.Label 14 15 ' read three numbers 16 Friend WithEvents txtFirst As System.Windows.Forms.TextBox 17 Friend WithEvents txtSecond As System.Windows.Forms.TextBox 18 Friend WithEvents txtThird As System.Windows.Forms.TextBox 19 20 ' reads inputs and calculate results 21 Friend WithEvents cmdMaximum As System.Windows.Forms.Button 22 23 ' Visual Studio .NET generated code 24 25 ' obtain values in each text box, call procedure Maximum 26 Private Sub cmdMaximum_Click( ByVal sender As System.Object, _ 27 ByVal e As System.EventArgs) Handles cmdMaximum.Click 28 These are declarations of all the controls used in the GUI. Create these components visually, using the Toolbox Remember that all forms inherit from class System.Windows.Forms.Form Event handler cmdMaximum_Click Handles the event in which Button cmdMaximum is clicked
  • 17. Maximum.vb Program Output 29 Dim value1, value2, value3 As Double 30 31 value1 = txtFirst.Text 32 value2 = txtSecond.Text 33 value3 = txtThird.Text 34 35 lblMaximum.Text = Maximum(value1, value2, value3) 36 End Sub ' cmdMaximum_Click 37 38 ' find maximum of three parameter values 39 Function Maximum( ByVal valueOne As Double , _ 40 ByVal valueTwo As Double , ByVal valueThree As Double ) 41 42 Return Math.Max(Math.Max(valueOne, valueTwo), valueThree) 43 End Function ' Maximum 44 45 End Class ' FrmMaximum The values in the three TextBox es are retrieved using the Text property Call to methods defined in the class that contains the method call need only specify the method name Call to methods that are defined in a class in the FCL must include the class name and the dot ( . ) operator
  • 18. 6.5 Methods Fig. 6.5 Parameter Info feature of the Visual Studio .NET IDE. Parameter Info window
  • 19. 6.5 Methods Fig. 6.6 IntelliSense feature of the Visual Studio .NET IDE.
  • 20. 6.5 Methods Fig. 6.7 Math class methods.
  • 21. 6.5 Methods Fig. 6.7 Math class methods.
  • 22.
  • 23. 6.6 Argument Promotion Fig. 6.8 Widening conversions.
  • 24.
  • 25. 6.7 Option Strict and Data-Type Conversions Fig. 6.9 Property Pages dialog with Option Strict set to On.
  • 26.
  • 27. 6.8 Value Types and Reference Types Fig. 6.10 Visual Basic primitive data types.
  • 28. 6.8 Value Types and Reference Types Fig. 6.11 Literals with type characters.
  • 29.
  • 30. ByRefTest.vb 1 ' Fig. 6.12: ByRefTest.vb 2 ' Demonstrates passing by reference. 3 4 Module modByRefTest 5 6 ' squares three values ByVal and ByRef, displays results 7 Sub Main() 8 Dim number1 As Integer = 2 9 10 Console.WriteLine ( &quot;Passing a value-type argument by value:&quot; ) 11 Console.WriteLine( &quot;Before calling SquareByValue, &quot; & _ 12 &quot;number1 is {0}&quot; , number1) 13 SquareByValue(number1) ' passes number1 by value 14 Console.WriteLine( &quot;After returning from SquareByValue, &quot; & _ 15 &quot;number1 is {0}&quot; & vbCrLf , number1) 16 17 Dim number2 As Integer = 2 18 19 Console.WriteLine ( &quot;Passing a value-type argument&quot; & _ 20 &quot; by reference:&quot; ) 21 Console.WriteLine( &quot;Before calling SquareByReference, &quot; & _ 22 &quot;number2 is {0}&quot; , number2) 23 SquareByReference(number2) ' passes number2 by reference 24 Console.WriteLine( &quot;After returning from &quot; & _ 25 &quot;SquareByReference, number2 is {0}&quot; & vbCrLf , number2) 26 27 Dim number3 As Integer = 2 28 When number1 is passed, a copy of the value is passed to the procedure A reference to the value stored in number2 is being passed
  • 31. ByRefTest.vb 29 Console.WriteLine ( &quot;Passing a value-type argument &quot; & _ 30 &quot; by reference, but in parentheses:&quot; ) 31 Console.WriteLine( &quot;Before calling SquareByReference &quot; & _ 32 &quot;using parentheses, number3 is {0}&quot; , number3) 33 SquareByReference((number3)) ' passes number3 by value 34 Console.WriteLine( &quot;After returning from &quot; & _ 35 &quot;SquareByReference, number3 is {0}&quot; , number3) 36 37 End Sub ' Main 38 39 ' squares number by value (note ByVal keyword) 40 Sub SquareByValue( ByVal number As Integer ) 41 Console.WriteLine( &quot;After entering SquareByValue, &quot; & _ 42 &quot;number is {0}&quot; , number) 43 number *= number 44 Console.WriteLine( &quot;Before exiting SquareByValue, &quot; & _ 45 &quot;number is {0}&quot; , number) 46 End Sub ' SquareByValue 47 48 ' squares number by reference (note ByRef keyword) 49 Sub SquareByReference( ByRef number As Integer ) 50 Console.WriteLine( &quot;After entering SquareByReference&quot; & _ 51 &quot;, number is {0}&quot; , number) 52 number *= number 53 Console.WriteLine( &quot;Before exiting SquareByReference&quot; & _ 54 &quot;, number is {0}&quot; , number) 55 End Sub ' SquareByReference 56 57 End Module ' modByRefTest ByVal indicates that value-type arguments should be passed by value ByRef gives direct access to the value stored in the original variable Enclosing arguments in parenthesis forces pass-by-value
  • 32. Program Output Passing a value-type argument by value: Before calling SquareByValue, number1 is 2 After entering SquareByValue, number is 2 Before exiting SquareByValue, number is 4 After returning from SquareByValue, number1 is 2   Passing a value-type argument by reference: Before calling SquareByReference, number2 is 2 After entering SquareByReference, number is 2 Before exiting SquareByReference, number is 4 After returning from SquareByReference, number2 is 4   Passing a value-type argument by reference, but in parentheses: Before calling SquareByReference using parentheses, number3 is 2 After entering SquareByReference, number is 2 Before exiting SquareByReference, number is 4 After returning from SquareByReference, number3 is 2
  • 33.
  • 34.
  • 35. Scoping.vb 1 ' Fig. 6.13: Scoping.vb 2 ' Demonstrates scope rules and instance variables. 3 4 Public Class FrmScoping 5 Inherits System.Windows.Forms.Form 6 7 Friend WithEvents lblOutput As System.Windows.Forms.Label 8 9 ' Windows Form Designer generated code 10 11 ' instance variable can be used anywhere in class 12 Dim value As Integer = 1 13 14 ' demonstrates class scope and block scope 15 Private Sub FrmScoping_Load( ByVal sender As System.Object, _ 16 ByVal e As System.EventArgs) Handles MyBase .Load 17 18 ' variable local to FrmScoping_Load hides instance variable 19 Dim value As Integer = 5 20 21 lblOutput.Text = &quot;local variable value in&quot; & _ 22 &quot; FrmScoping_Load is &quot; & value 23 24 MethodA() ' MethodA has automatic local value 25 MethodB() ' MethodB uses instance variable value 26 MethodA() ' MethodA creates new automatic local value 27 MethodB() ' instance variable value retains its value 28 29 lblOutput.Text &= vbCrLf & vbCrLf & &quot;local variable &quot; & _ 30 &quot;value in CScoping_Load is &quot; & value 31 End Sub ' FrmScoping_Load 32 33 ' automatic local variable value hides instance variable 34 Sub MethodA() 35 Dim value As Integer = 25 ' initialized after each call This variable is hidden in any procedure that declares a variable named value Automatic variable value is destroyed when MethodA terminates None of the method calls modifies this variable – both methods refer to variables in other scopes
  • 36. Scoping.vb 36 37 lblOutput.Text &= vbCrLf & vbCrLf & &quot;local variable &quot; & _ 38 &quot;value in MethodA is &quot; & value & &quot; after entering MethodA&quot; 39 value += 1 40 lblOutput.Text &= vbCrLf & &quot;local variable &quot; & _ 41 &quot;value in MethodA is &quot; & value & &quot; before exiting MethodA&quot; 42 End Sub ' MethodA 43 44 ' uses instance variable value 45 Sub MethodB() 46 lblOutput.Text &= vbCrLf & vbCrLf & &quot;instance variable&quot; & _ 47 &quot; value is &quot; & value & &quot; after entering MethodB&quot; 48 value *= 10 49 lblOutput.Text &= vbCrLf & &quot;instance variable &quot; & _ 50 &quot;value is &quot; & value & &quot; before exiting MethodB&quot; 51 End Sub ' MethodB 52 53 End Class ' FrmScoping When MethodB procedure refers to variable value , the instance variable value (line 12) is used.
  • 37.
  • 38. RandomInteger.vb 1 ' Fig. 6.14: RandomInteger.vb 2 ' Generating random integers. 3 4 Imports System.Windows.Forms 5 6 Module modRandomInteger 7 8 Sub Main() 9 Dim randomObject As Random = New Random() 10 Dim randomNumber As Integer 11 Dim output As String = &quot;&quot; 12 Dim i As Integer 13 14 For i = 1 To 20 15 randomNumber = randomObject.Next( 1 , 7 ) 16 output &= randomNumber & &quot; &quot; 17 18 If i Mod 5 = 0 Then ' is i a multiple of 5? 19 output &= vbCrLf 20 End If 21 22 Next 23 24 MessageBox.Show(output, &quot;20 Random Numbers from 1 to 6&quot; , _ 25 MessageBoxButtons. OK , MessageBoxIcon. Information ) 26 End Sub ' Main 27 28 End Module ' modRandomInteger Note that we must use 7 as the second argument to produce integers in the range from 1-6 Go to the next line every time five numbers are generated
  • 39. RollDice.vb 1 ' Fig. 6.15: RollDice.vb 2 ' Rolling four dice. 3 4 Imports System.IO 5 6 Public Class FrmRollDice 7 Inherits System.Windows.Forms.Form 8 9 ' button for rolling dice 10 Friend WithEvents cmdRoll As System.Windows.Forms.Button 11 12 ' labels to display die images 13 Friend WithEvents lblDie1 As System.Windows.Forms.Label 14 Friend WithEvents lblDie2 As System.Windows.Forms.Label 15 Friend WithEvents lblDie3 As System.Windows.Forms.Label 16 Friend WithEvents lblDie4 As System.Windows.Forms.Label 17 18 ' Visual Studio .NET generated code 19 20 ' declare Random object reference 21 Dim randomNumber As Random = New Random() 22 23 ' display results of four rolls 24 Private Sub cmdRoll_Click( ByVal sender As System.Object, _ 25 ByVal e As System.EventArgs) Handles cmdRoll.Click 26 27 ' method randomly assigns a face to each die 28 DisplayDie(lblDie1) 29 DisplayDie(lblDie2) 30 DisplayDie(lblDie3) 31 DisplayDie(lblDie4) 32 End Sub ' cmdRoll_Click 33 Event-handling method cmdRoll_Click , executes whenever the user clicks cmdRoll RandomNumber is an instance variable of FrmRollDice . This allows the same Random object to be used each time DisplayDie executes
  • 40. RollDice.vb 34 ' get a random die image 35 Sub DisplayDie( ByVal dieLabel As Label) 36 37 ' generate random integer in range 1 to 6 38 Dim face As Integer = randomNumber.Next( 1 , 7 ) 39 40 ' load corresponding image 41 dieLabel.Image = Image.FromFile( _ 42 Directory.GetCurrentDirectory & &quot;magesie&quot; & _ 43 face & &quot;.png&quot; ) 44 End Sub ' DisplayDie 45 46 End Class ' FrmRollDice Image property displays an image on the label Class Image is contained in the System.Drawing namespace, which is imported by default in all Windows Applications Method Directory.GetCurrentDirectory returns the location of the folder in which the current project is located, including bin
  • 41. RollTwelveDice.vb 1 ' Fig. 6.16: RollTwelveDice.vb 2 ' Rolling 12 dice with frequency chart. 3 4 Imports System.IO 5 6 Public Class FrmRollTwelveDice 7 Inherits System.Windows.Forms.Form 8 9 ' labels to display die images 10 Friend WithEvents lblDie1 As System.Windows.Forms.Label 11 Friend WithEvents lblDie2 As System.Windows.Forms.Label 12 Friend WithEvents lblDie3 As System.Windows.Forms.Label 13 Friend WithEvents lblDie4 As System.Windows.Forms.Label 14 Friend WithEvents lblDie5 As System.Windows.Forms.Label 15 Friend WithEvents lblDie6 As System.Windows.Forms.Label 16 Friend WithEvents lblDie7 As System.Windows.Forms.Label 17 Friend WithEvents lblDie8 As System.Windows.Forms.Label 18 Friend WithEvents lblDie9 As System.Windows.Forms.Label 19 Friend WithEvents lblDie10 As System.Windows.Forms.Label 20 Friend WithEvents lblDie11 As System.Windows.Forms.Label 21 Friend WithEvents lblDie12 As System.Windows.Forms.Label 22 23 ' displays roll frequencies 24 Friend WithEvents displayTextBox As _ 25 System.Windows.Forms.TextBox 26 27 ' Visual Studio .NET generated code 28 29 ' declarations 30 Dim randomObject As Random = New Random() 31 Dim ones, twos, threes, fours, fives, sixes As Integer 32 We declare counters for each of the possible rolls The TextBox is used to display the cumulative frequencies of each face
  • 42. RollTwelveDice.vb 35 Private Sub cmdRoll_Click _ 34 ( ByVal sender As System.Object, _ 35 ByVal e As System.EventArgs) Handles cmdRoll.Click 36 37 ' assign random faces to 12 dice using DisplayDie 38 DisplayDie(lblDie1) 39 DisplayDie(lblDie2) 40 DisplayDie(lblDie3) 41 DisplayDie(lblDie4) 42 DisplayDie(lblDie5) 43 DisplayDie(lblDie6) 44 DisplayDie(lblDie7) 45 DisplayDie(lblDie8) 46 DisplayDie(lblDie9) 47 DisplayDie(lblDie10) 48 DisplayDie(lblDie11) 49 DisplayDie(lblDie12) 50 51 Dim total As Integer = ones + twos + threes + fours + _ 52 fives + sixes 53 54 Dim output As String 55 56 ' display frequencies of faces 57 output = &quot;Face&quot; & vbTab & vbTab & _ 58 &quot;Frequency&quot; & vbTab & &quot;Percent&quot; 59 60 output &= vbCrLf & &quot;1&quot; & vbTab & vbTab & ones & _ 61 vbTab & vbTab & String .Format( &quot;{0:P}&quot; , ones / total) 62 63 output &= vbCrLf & &quot;2&quot; & vbTab & vbTab & twos & vbTab & _ 64 vbTab & String .Format( &quot;{0:P}&quot; , twos / total) 65 66 output &= vbCrLf & &quot;3&quot; & vbTab & vbTab & threes & vbTab & _ 67 vbTab & String .Format( &quot;{0:P}&quot; , threes / total) The “P” format code is used to display the frequency of each roll as percentages
  • 43. RollTwelveDice.vb 68 69 output &= vbCrLf & &quot;4&quot; & vbTab & vbTab & fours & vbTab & _ 70 vbTab & String .Format( &quot;{0:P}&quot; , fours / total) 71 72 output &= vbCrLf & &quot;5&quot; & vbTab & vbTab & fives & vbTab & _ 73 vbTab & String .Format( &quot;{0:P}&quot; , fives / total) 74 75 output &= vbCrLf & &quot;6&quot; & vbTab & vbTab & sixes & vbTab & _ 76 vbTab & String .Format( &quot;{0:P}&quot; , sixes / total) & vbCrLf 77 78 displayTextBox.Text = output 79 End Sub ' cmdRoll_Click 80 81 ' display a single die image 82 Sub DisplayDie( ByVal dieLabel As Label) 83 84 Dim face As Integer = randomObject.Next( 1 , 7 ) 85 86 dieLabel.Image = _ 87 Image.FromFile(Directory.GetCurrentDirectory & _ 88 &quot;magesie&quot; & face & &quot;.png&quot; ) 89 90 ' maintain count of die faces 91 Select Case face 92 93 Case 1 94 ones += 1 95 96 Case 2 97 twos += 1 98 99 Case 3 100 threes += 1 101 Select Case is used to calculate the frequency
  • 44. RollTwelveDice.vb 102 Case 4 103 fours += 1 104 105 Case 5 106 fives += 1 107 108 Case 6 109 sixes += 1 110 111 End Select 112 113 End Sub ' DisplayDie 114 115 End Class ' FrmRollTwelveDice
  • 45.
  • 46. CrapsGame.vb 1 ' Fig 6.17: CrapsGame.vb 2 ' Playing a craps game. 3 4 Imports System.IO 5 6 Public Class FrmCrapsGame 7 Inherits System.Windows.Forms.Form 8 9 Friend WithEvents cmdRoll As Button ' rolls dice 10 Friend WithEvents cmdPlay As Button ' starts new game 11 12 ' dice displayed after each roll 13 Friend WithEvents picDie1 As PictureBox 14 Friend WithEvents picDie2 As PictureBox 15 16 ' pointDiceGroup groups dice representing player's point 17 Friend WithEvents pointDiceGroup As GroupBox 18 Friend WithEvents picPointDie1 As PictureBox 19 Friend WithEvents picPointDie2 As PictureBox 20 21 Friend WithEvents lblStatus As Label 22 23 ' Visual Studio .NET generated code 24 25 ' die-roll constants 26 Enum DiceNames 27 SNAKE_EYES = 2 28 TREY = 3 29 CRAPS = 7 30 YO_LEVEN = 11 31 BOX_CARS = 12 32 End Enum 33 A GroupBox is a container used to group related components Enum erations are used to define groups of related constants
  • 47. CrapsGame.vb 34 ' file-name and directory constants 35 Const FILE_PREFIX As String = &quot;/images/die&quot; 36 Const FILE_SUFFIX As String = &quot;.png&quot; 37 38 Dim myPoint As Integer 39 Dim myDie1 As Integer 40 Dim myDie2 As Integer 41 Dim randomObject As Random = New Random() 42 43 ' begins new game and determines point 44 Private Sub cmdPlay_Click( ByVal sender As System.Object, _ 45 ByVal e As System.EventArgs) Handles cmdPlay.Click 46 47 ' initialize variables for new game 48 myPoint = 0 49 pointDiceGroup.Text = &quot;Point&quot; 50 lblStatus.Text = &quot;&quot; 51 52 ' remove point-die images 53 picPointDie1.Image = Nothing 54 picPointDie2.Image = Nothing 55 56 Dim sum As Integer = RollDice() 57 58 ' check die roll 59 Select Case sum 60 61 Case DiceNames. CRAPS , DiceNames. YO_LEVEN 62 63 ' disable roll button 64 cmdRoll.Enabled = False 65 lblStatus.Text = &quot;You Win!!!&quot; 66 Keyword Const creates a single constant identifier in which values cannot be modified after they are declared Keyword Nothing can be used with reference-type variables to specify that no object is associated with the variable Setting the Image property to Nothing causes the PictureBoxes to appear blank The Select structure analyzes the roll returned by RollDice to determine how play should continue
  • 48. CrapsGame.vb 67 Case DiceNames. SNAKE_EYES , _ 68 DiceNames. TREY , DiceNames. BOX_CARS 69 70 cmdRoll.Enabled = False 71 lblStatus.Text = &quot;Sorry. You Lose.&quot; 72 73 Case Else 74 myPoint = sum 75 pointDiceGroup.Text = &quot;Point is &quot; & sum 76 lblStatus.Text = &quot;Roll Again!&quot; 77 DisplayDie(picPointDie1, myDie1) 78 DisplayDie(picPointDie2, myDie2) 79 cmdPlay.Enabled = False 80 cmdRoll.Enabled = True 81 82 End Select 83 84 End Sub ' cmdPlay_Click 85 86 ' determines outcome of next roll 87 Private Sub cmdRoll_Click( ByVal sender As System.Object, _ 88 ByVal e As System.EventArgs) Handles cmdRoll.Click 89 90 Dim sum As Integer = RollDice() 91 92 ' check outcome of roll 93 If sum = myPoint Then 94 lblStatus.Text = &quot;You Win!!!&quot; 95 cmdRoll.Enabled = False 96 cmdPlay.Enabled = True 97 ElseIf sum = DiceNames. CRAPS Then 98 lblStatus.Text = &quot;Sorry. You Lose.&quot; 99 cmdRoll.Enabled = False 100 cmdPlay.Enabled = True 101 End If Disabling a Button causes no action to be performed when the Button is clicked
  • 49. CrapsGame.vb 102 103 End Sub ' cmdRoll_Click 104 105 ' display die image 106 Sub DisplayDie( ByVal picDie As PictureBox, _ 107 ByVal face As Integer ) 108 109 ' assign die image to picture box 110 picDie.Image = _ 111 Image.FromFile(Directory.GetCurrentDirectory & _ 112 FILE_PREFIX & face & FILE_SUFFIX ) 113 End Sub ' DisplayDie 114 115 ' generate random die rolls 116 Function RollDice() As Integer 117 Dim die1, die2 As Integer 118 119 ' determine random integer 120 die1 = randomObject.Next( 1 , 7 ) 121 die2 = randomObject.Next( 1 , 7 ) 122 123 ' display rolls 124 DisplayDie(picDie1, die1) 125 DisplayDie(picDie2, die2) 126 127 ' set values 128 myDie1 = die1 129 myDie2 = die2 130 131 Return die1 + die2 132 End Function ' RollDice 133 134 End Class ' FrmCrapsGame RollDice generates two random numbers and calls method DisplayDie , which loads an appropriate die image on the PictureBox passed to it.
  • 50. CrapsGame.vb GroupBox PictureBoxes (displaying images)
  • 51.
  • 52. 6.14 Recursion Fig. 6.18 Recursive evaluation of 5!. 5! 5 * 4! 4 * 3! 3 * 2! 2 * 1! 1 5! 5 * 4! 4 * 3! 3 * 2! 2 * 1! 1 Final value = 120 5! = 5 * 24 = 120 is returned 4! = 4 * 6 = 24 is returned 3! = 3 * 2 = 6 is returned 2! = 2 * 1 = 2 is returned 1 returned (a) Procession of recursive calls (b) Values returned from each recursive call
  • 53. Factorial.vb 1 ' Fig. 6.19: Factorial.vb 2 ' Calculating factorials using recursion. 3 4 Public Class FrmFactorial 5 Inherits System.Windows.Forms.Form 6 7 Friend WithEvents lblEnter As Label ' prompts for Integer 8 Friend WithEvents lblFactorial As Label ' indicates output 9 10 Friend WithEvents txtInput As TextBox ' reads an Integer 11 Friend WithEvents txtDisplay As TextBox ' displays output 12 13 Friend WithEvents cmdCalculate As Button ' generates output 14 15 ' Visual Studio .NET generated code 16 17 Private Sub cmdCalculate_Click( ByVal sender As System.Object, _ 18 ByVal e As System.EventArgs) Handles cmdCalculate.Click 19 20 Dim value As Integer = Convert.ToInt32(txtInput.Text) 21 Dim i As Integer 22 Dim output As String 23 24 txtDisplay.Text = &quot;&quot; 25 26 For i = 0 To value 27 txtDisplay.Text &= i & &quot;! = &quot; & Factorial(i) & vbCrLf 28 Next 29 30 End Sub ' cmdCalculate_Click Conversion from String to Integer
  • 54. Factorial.vb 31 32 ' recursively generates factorial of number 33 Function Factorial( ByVal number As Long ) As Long 34 35 If number <= 1 Then ' base case 36 Return 1 37 Else 38 Return number * Factorial(number - 1 ) 39 End If 40 41 End Function ' Factorial 42 43 End Class ' FrmFactorial If number is greater than 1 , a recursive call to Factorial is made with a slightly simpler problem Forgetting to return a value from a recursive procedure can result in logic errors
  • 55.
  • 56. Fibonacci.vb 1 ' Fig. 6.20: Fibonacci.vb 2 ' Demonstrating Fibonacci sequence recursively. 3 4 Public Class FrmFibonacci 5 Inherits System.Windows.Forms.Form 6 7 Friend WithEvents lblPrompt As Label ' prompts for input 8 Friend WithEvents lblResult As Label ' displays result 9 10 Friend WithEvents cmdCalculate As Button ' calculates result 11 12 Friend WithEvents txtInputBox As TextBox ' reads an Integer 13 14 ' Visual Studio .NET generated code 15 16 ' displays Fibonacci number in txtInputBox 17 Private Sub cmdCalculate_Click( ByVal sender As System.Object, _ 18 ByVal e As System.EventArgs) Handles cmdCalculate.Click 19 20 ' read input 21 Dim number As Integer = Convert.ToInt32(txtInputBox.Text) 22 23 lblResult.Text = &quot;Fibonacci Value is &quot; & Fibonacci(number) 24 End Sub ' cmdCalculate_Click 25 26 ' calculate Fibonacci value recusively 27 Function Fibonacci( ByVal number As Integer ) As Long 28 29 ' check for base cases 30 If number = 1 OrElse number = 0 Then 31 Return number 32 Else 33 Return Fibonacci(number - 1 ) + Fibonacci(number - 2 ) 34 End If 35 This call to Fibonacci is not a recursive call If number is greater than 1 , the recursion step generates two recursive calls
  • 57. Fibonacci.vb 36 End Function ' Fibonacci 37 38 End Class ' FrmFibonacci
  • 58. 6.15 Example Using Recursion: Fibonacci Series Fig. 6.21 Recursive calls to method Fibonacci (abbreviated as F). Fibonacci( 3 ) Fibonacci( 2 ) Fibonacci( 1 ) Fibonacci( 0 ) Fibonacci( 1 ) return 1 return return 1 return 0 return
  • 59.
  • 60.
  • 61. Overload.vb 1 ' Fig. 6.22: Overload.vb 2 ' Using overloaded methods. 3 4 Public Class FrmOverload 5 Inherits System.Windows.Forms.Form 6 7 Friend WithEvents outputLabel As Label 8 9 ' Visual Studio .NET generated code 10 11 Private Sub FrmOverload_Load( ByVal sender As System.Object, _ 12 ByVal e As System.EventArgs) Handles MyBase .Load 13 14 outputLabel.Text = &quot;The square of Integer 7 is &quot; & _ 15 square( 7 ) & vbCrLf & &quot;The square of Double &quot; & _ 16 &quot;7.5 is &quot; & square( 7 . 5 ) 17 End Sub ' FrmOverload_Load 18 19 Function Square( ByVal value As Integer ) As Integer 20 Return Convert.ToInt32(value ^ 2 ) 21 End Function ' Square 22 23 Function Square( ByVal value As Double ) As Double 24 Return value ^ 2 25 End Function ' Square 26 27 End Class ' FrmOverload The compiler uses a logical name to differ between the two Square methods The compiler might use the logical name “ Square of Integer ” “ Square of Double ” for the Square method that specifies a Double parameter
  • 62. Overload2.vb 1 ' Fig. 6.23: Overload2.vb 2 ' Using overloaded procedures with identical signatures and 3 ' different return types. 4 5 Public Class FrmOverload2 6 Inherits System.Windows.Forms.Form 7 8 Friend WithEvents outputLabel As Label 9 10 ' Visual Studio .NET generated code 11 12 Private Sub FrmOverload2_Load( ByVal sender As System.Object, _ 13 ByVal e As System.EventArgs) Handles MyBase .Load 14 15 outputLabel.Text = &quot;The square of Integer 7 is &quot; & _ 16 square( 7 ) & vbCrLf & &quot;The square of Double &quot; & _ 17 &quot;7.5 is &quot; & square( 7 . 5 ) 18 End Sub ' FrmOverload2_Load 19 20 Function Square( ByVal value As Double ) As Integer 21 Return Convert.ToInt32(value ^ 2 ) 22 End Function ' Square 23 24 Function Square( ByVal value As Double ) As Double 25 Return value ^ 2 26 End Function ' Square 27 28 End Class ' FrmOverload2 Procedure calls cannot be distinguished by return type
  • 63. Overload2.vb Program Output The creating of overloaded procedures with identical parameter lists and different return types produces a syntax error
  • 64.
  • 65. Power.vb 1 ' Fig 6.24 Power.vb 2 ' Calculates the power of a value, defaults to square. 3 4 Public Class FrmPower 5 Inherits System.Windows.Forms.Form 6 7 Friend WithEvents txtBase As TextBox ' reads base 8 Friend WithEvents txtPower As TextBox ' reads power 9 10 Friend WithEvents inputGroup As GroupBox 11 12 Friend WithEvents lblBase As Label ' prompts for base 13 Friend WithEvents lblPower As Label ' prompts for power 14 Friend WithEvents lblOutput As Label ' displays output 15 16 Friend WithEvents cmdCalculate As Button ' generates output 17 18 ' Visual Studio .NET generated code 19 20 ' reads input and displays result 21 Private Sub cmdCalculate_Click( ByVal sender As System.Object, _ 22 ByVal e As System.EventArgs) Handles cmdCalculate.Click 23 24 Dim value As Integer 25 26 ' call version of Power depending on power input 27 If Not txtPower.Text = &quot;&quot; Then 28 value = Power(Convert.ToInt32(txtBase.Text), _ 29 Convert.ToInt32(txtPower.Text)) 30 Else 31 value = Power(Convert.ToInt32(txtBase.Text)) 32 End If 33 34 lblOutput.Text = Convert.ToString(value) 35 End Sub ' cmdCalculate_Click Determines whether txtPower contains a value
  • 66. Power.vb 36 37 ' use iteration to calculate power 38 Function Power( ByVal base As Integer , _ 39 Optional ByVal exponent As Integer = 2 ) As Integer 40 41 Dim total As Integer = 1 42 Dim i As Integer 43 44 For i = 1 To exponent 45 total *= base 46 Next 47 48 Return total 49 End Function ' Power 50 51 End Class ' FrmPower When omitted, the Optional argument defaults to the value 2
  • 67.
  • 68. DiceModule.vb 1 ' Fig. 6.25: DiceModule.vb 2 ' A collection of common dice procedures. 3 4 Imports System.IO 5 6 Module modDice 7 8 Dim randomObject As Random = New Random() 9 10 ' rolls single die 11 Function RollDie() As Integer 12 Return randomObject.Next( 1 , 7 ) 13 End Function ' RollDie 14 15 ' die summation procedure 16 Function RollAndSum( ByVal diceNumber As Integer ) _ 17 As Integer 18 19 Dim i As Integer 20 Dim sum As Integer = 0 21 22 For i = 1 To diceNumber 23 sum += RollDie() 24 Next 25 26 Return sum 27 End Function ' RollAndSum modDice groups several dice-related procedures into a module for reuse in other programs that use dice
  • 69. DiceModule.vb 28 29 ' returns die image 30 Function GetDieImage( ByVal dieValue As Integer , _ 31 Optional ByVal baseImageName As String = &quot;die&quot; ) _ 32 As System.Drawing.Image 33 34 Return Image.FromFile( _ 35 Directory.GetCurrentDirectory & _ 36 &quot;magesamp;quot; & baseImageName & dieValue & &quot;.png&quot; ) 37 End Function ' GetDieImage 38 39 End Module ' modDice Optional parameter baseImageName represents the prefix of the image name to be used
  • 70. DiceModuleTest.vb 1 ' Fig. 6.26: DiceModuleTest.vb 2 ' Demonstrates modDiceModule procedures 3 4 Imports System.Drawing 5 6 Public Class FrmDiceModuleTest 7 Inherits System.Windows.Forms.Form 8 9 Friend WithEvents lblSum As Label ' displays 10-roll sum 10 11 Friend WithEvents diceGroup As GroupBox 12 13 ' dice images 14 Friend WithEvents picDie1 As PictureBox 15 Friend WithEvents picDie2 As PictureBox 16 17 Friend WithEvents cmdRollDie1 As Button ' rolls blue die 18 Friend WithEvents cmdRollTen As Button ' simulates 10 rolls 19 Friend WithEvents cmdRollDie2 As Button ' rolls red die 20 21 ' Visual Studio .NET generated code 22 23 Private Sub cmdRollDie1_Click( ByVal sender As System.Object, _ 24 ByVal e As System.EventArgs) Handles cmdRollDie1.Click 25 26 picDie1.Image = modDice.GetDieImage(modDice.RollDie()) 27 End Sub ' cmdRollDie1_Click 28 29 Private Sub cmdRollDie2_Click( ByVal sender As System.Object, _ 30 ByVal e As System.EventArgs) Handles cmdRollDie2.Click 31 32 picDie2.Image = modDice.GetDieImage(modDice.RollDie(), _ 33 &quot;redDie&quot; ) 34 End Sub ' cmdRollDie2_Click 35 cmdRollDie2_Click uses the Optional argument to prefix the image name and select a different image We call procedures contained in modDice by following the module name with the dot ( . ) operator and the procedure name
  • 71. DiceModuleTest.vb 36 Private Sub cmdRollTen_Click( ByVal sender As System.Object, _ 37 ByVal e As System.EventArgs) Handles cmdRollTen.Click 38 39 lblSum.Text = Convert.ToString(modDice.RollAndSum( 10 )) 40 End Sub ' cmdRollTen_Click 41 42 End Class ' FrmDiceModuleTest This procedure sets the Text property of lblSum to the result of 10 rolls