Pages

Friday 12 July 2013

QTP Tutorial #10 – Writing Loop and Conditional Statements – VB Script Basics Part 2


VB Scripting Basics – Writing Loop and Conditional Statements for Building the Programming Logic
In the last VB Scripting article we saw some of the basic features of VB script. We are going to learn a few more programming concepts before we conclude our introduction series.

Conditional Statements:

1) If statement:
If (condition)..Then
{Statement or a block of statement}
Else
{Statement or a block of statement}
End if

VB Script tutorials
This is the typical syntax to write this statement.
  • The if..then..else statements can be nested to any number of levels.
  • Alternately, the else block can be used or not.
  • Elseif is another variation that can be used when choosing between one of the multiple options.
if x=0 then
Msgbox “value=0”
Elseif x=1 then msgbox “value=1”
Elseif x=2 then msgbox “value=2”
Else msgbox “value not found”
End if
2) Select statement
This is to choose one out of the many options depending on the condition that comes satisfied. The condition is evaluated once and based on the value it attains one of the following blocks of code gets chosen to be run.
Select Case (expression)
Case “case1″
{Block 1}
Case “case 2″
{Block 2}
…..
Case Else
{Else block}
End Select

Looping statements:

There are 4 kinds of loop statements:
1) Do…loop:
This is used when a statement or a block of statements need to be executed while or until a said condition is true. Let us first  look at the syntax of this:
Syntax 1:
Do (While | Until) condition
{Statement or statements}
[Exit Do]
{Statement or statements}
Loop
Syntax 2:
Do
{statement or statements]
[Exit Do]
{statement or statements]
Loop [{While | Until} condition]
Condition: could be a numeric or string component that either attains a true or false value. If the condition is null it is treated as False.
Observe the ‘Exit do’ in the above.
There is also a slight difference between the syntax 1 and syntax 2.
In case of syntax 1, the statements within the do loop do not get executed unless, the condition becomes true or holds true.
For syntax 2, the statements within the loop get executed at least once and then the check is performed on the condition.
Exit Do: In order to avoid infinite loops we will have to force the loop to exit. Exit Do is a statement that is used in such circumstances.
2)While…wend
Syntax:
While
{Statement or block of statement}
Wend
It is self explanatory from the syntax that the statements nestled under the while block get executed as long as the condition holds true.
Although this statement is available, it is not very flexible so it is recommended to use the Do…Loop statement.
3) For…Next
This is the statement that you would use when you want a statement/set of statements to run a certain number of times while a certain counter gets incremented or decremented.
For counter = start To end [Step step]
[statements]
[Exit For]
[statements]
Next
  • As you can see from the syntax above, there is a ‘Step’ clause to this statement. This clause is optional.
  • The step clause if not specified, the for loop steps one counter forward by default
  • The step can be used to increment or decrement the counter value
  • Exit For is similar to “Exit Do”, it can be used to come out of the For block and execute the statement that follow.
  • Any number of Exit For statements can be used within one block of For statement
  • It is usually used with a if..then statement to make sure some condition that would lead to infinitely looping is true and in case if it does, the For statement has a way to exit.
  • Any number of For statements can be nested within a For.
Example:
For i=1 to 10
……
If x=true then
……
Exit for
End if
Next
Example for a positive step:
For i = 2 To 12 Step 2
total = total + k
Next
Example for a negative step:
For i = 12 To 2 Step -2
total = total + k
Next
4) For each…next:  
This is similar to ‘For …next’. This is used for collection objects or arrays. This statement runs a statement or a set of statements for every object or item in an array instead of a number of times specified.  As the ‘For…next’ statement Exit for is used to exit before the looping is through, like in case of an error. Also, any number of For Each statements can be nested within each other.
Syntax:
For Each element In group
[statements]
[Exit For]
[statements]
Next [element]
  • Element is the variable that is used to iterate through the elements in the array or collection object
  • group stands for the name of the collection object or array
Note:  We have not discussed collection objects so far in our series, but a collection object is nothing but an object which is a set of related items (objects, these might be of the same type or could be of different types)

Best Practices for Code Writing in VB Script

  1. In the beginning of every program, write down a brief description of what the program does
  2. Provide comments for every variable used during its declaration to briefly describe what this variable is going to do
  3. Keep the code modular, as much as possible
  4. Have the main program readable and have all the logic segregated in terms of function, so it makes them easy to read and maintain.
  5. The segregation of code into functions will also increase reusability
  6. An agreed naming convention has to be used to maintain consistency
  7. Comments – Provide comments to make the code more understandable
  8. Indentation – Make sure that you indent the lines of code to clearly understand the sequence of execution
  9. Option Explicit is to be declared so that you don’t run into issue when you have a spelling mistake of a variable name
  10. Watch out for infinite loops

Conclusion

This concludes our brief introduction to VB Script. As already mentioned, this is in no way a complete guide to learning the scripting language, but enough to get us through writing beginner to moderate level QTP programs. There is one topic of functions that we did not cover here but that exclusion was deliberate. It is because, functions is a full length and a very important topic which we will discuss in detail in the coming articles.

No comments: