42
Week 2- Selection / Decisions HNDIT23073- Rapid Application Development

Week 2- Selection / Decisions HNDIT23073- Rapid Application Development

Embed Size (px)

Citation preview

Page 1: Week 2- Selection / Decisions HNDIT23073- Rapid Application Development

Week 2- Selection / Decisions

HNDIT23073- Rapid Application

Development

Page 2: Week 2- Selection / Decisions HNDIT23073- Rapid Application Development

Control Structures

There are 3 control structures common to most computer languages that determine the flow, or path of execution, of the code:

• Sequential

• Selection / Decisions

• Repetition / Looping

Page 3: Week 2- Selection / Decisions HNDIT23073- Rapid Application Development

VB Decisions• Visual Basic decision statements– If…Then• one-way selection structure

– If…Then…Else• two-way selection structure

– If…Then…ElseIf• multi-way selection structure

–If…Then…ElseIf…Else• multi-way selection structure

– Select Case• multi-way selection structure

Page 4: Week 2- Selection / Decisions HNDIT23073- Rapid Application Development

If…Then Decision Structure• If…Then decision structure

provides one choice• Evaluate the condition:

True or FalseEx: Is it cold outside?

• True – execute codeEx: If yes, wear a coat

• False – do not execute code

Condition

ConditionalCode

True

False

Page 5: Week 2- Selection / Decisions HNDIT23073- Rapid Application Development

If…Then Statement SyntaxIf condition Then

statement[s]End If

• Syntax explanation:– If , Then, and End – Keywords– Condition – True/False value, variable, function call

or expression– Statement[s] – one or more code statements to be

executed if condition is true

Page 6: Week 2- Selection / Decisions HNDIT23073- Rapid Application Development

Conditions

• The execution of an If block is controlled by a condition

• Must be (or evaluate to) either true or false• Can be a value, variable, or function call

(Boolean DataType)• Can be formed by using the six Relational

operators and the three Logical operators

Page 7: Week 2- Selection / Decisions HNDIT23073- Rapid Application Development

Boolean Variables• A flag is a Boolean variable that signals when

some condition exists in the program• Since a Boolean variable is either True or

False, it can be used as the condition of an If– Note that an operator is not required (there is

alternate syntax that does use operator)

If blnQuotaMet Then lblMessage.Text = “Congratulations you have met your sales quota"

End If

Page 8: Week 2- Selection / Decisions HNDIT23073- Rapid Application Development

Boolean Functions• Boolean Functions return a single True or False

Value • Since Boolean Functions return either True or

False, a Boolean Function Call can be used as the condition of an If– Note that an operator is not required (there is

alternate syntax that does use operator)

If isNumeric(strInput) ThenintNumber = Val(strInput)

End If

Page 9: Week 2- Selection / Decisions HNDIT23073- Rapid Application Development

Relational Operators

• Often a condition is formed using a relational operator

• A relational operator determines if a specific relationship exists between two values > Greater than < Less than = Equal to <> Not equal to >= Greater than or equal to <= Less than or equal to

Page 10: Week 2- Selection / Decisions HNDIT23073- Rapid Application Development

Relational Operators (cont.)• Relational operators are binary – meaning they

use two operands– Either or both relational operator operands may be

values, variables, expressions or function calls

length <= 10 (Is length less than or equal to 10)

len * wid > max + 1 (Is len * wid greater than max + 1)

Val(txtNum.Text) = 0 (Is Val result equal to 0 – not assignment)

• Relational operators yield a True or False result

Page 11: Week 2- Selection / Decisions HNDIT23073- Rapid Application Development

Relational Operators (cont.)• Either or both relational operator operands may be

expressions– Math operators are evaluated before relational operators

– x+y and a-b are evaluated first– Each result is then compared using the > operator

• Either or both relational operator operands may be function calls

If x + y > a - b ThenlblMessage.Text = "It is true!"

End If

If Val(txtInput.Text) < getMinValue() ThenlblMessage.Text = "Invalid: Below Minimum"

End If

Page 12: Week 2- Selection / Decisions HNDIT23073- Rapid Application Development

Logical OperatorsThese operators are used to evaluate boolean values and will yield a boolean result• And

– Both operands must be true for the overall expression to be true, otherwise it is false

• Or– One or both operands must be true for the overall expression to be true,

otherwise it is false

• Xor– One operand (but not both) must be true for the overall expression to be

true, otherwise it is false

• Not– Reverses the logical value of an expression

Page 13: Week 2- Selection / Decisions HNDIT23073- Rapid Application Development

The And OperatorThe truth table for the And Operator

Expression 1 Expression 2 Expression 1 And Expression 2

True False FalseFalse True FalseFalse False FalseTrue True True

If temperature < 20 And minutes > 12 ThenlblMessage.Text = “Temperature is in the danger zone."

End If

AndAlso operator works identically but does not test minutes>12 if temperature<20 is false

Page 14: Week 2- Selection / Decisions HNDIT23073- Rapid Application Development

The Or Operator

If temperature < 20 Or temperature > 100 ThenlblMessage.Text = “Temperature is in the danger zone."

End If

OrElse operator works identically but does not test temperature>100 if temperature<20 is true

The truth table for the Or Operator

Expression 1 Expression 2 Expression 1 Or Expression 2

True False TrueFalse True TrueTrue True TrueFalse False False

Page 15: Week 2- Selection / Decisions HNDIT23073- Rapid Application Development

The Xor Operator

If total > 1000 Xor average > 120 ThenlblMessage.Text = “You may try again."

End If

The truth table for the Xor Operator

Expression 1 Expression 2 Expression 1 Xor Expression 2

True False TrueFalse True TrueTrue True FalseFalse False False

Page 16: Week 2- Selection / Decisions HNDIT23073- Rapid Application Development

The Not Operator

If Not temperature > 100 ThenlblMessage.Text = "You are below the max temp."

End If

The truth table for the Not Operator

Expression 1 Not Expression 1

True FalseFalse True

Page 17: Week 2- Selection / Decisions HNDIT23073- Rapid Application Development

Example: Checking Numerical Ranges• Checking for a value inside a range uses And

• Checking for a value outside a range uses Or

• Must pay careful attention to differences in resulting range using: < vs <= or > vs >= – Check problem requirements for ranges carefully

If x >= 20 And x <= 40 ThenlblMessage.Text = “Value is in the acceptable range."

End If

If x < 20 Or x > 40 ThenlblMessage.Text = “Value is outside the acceptable range."

End If

Page 18: Week 2- Selection / Decisions HNDIT23073- Rapid Application Development

Precedence of Logical Operators

• Logical operators have an order of precedence just as arithmetic operators do

• From highest to lowest precedence– Not – And– Or– Xor

• As with arithmetic operations, parentheses are often used to clarify order of operations

Page 19: Week 2- Selection / Decisions HNDIT23073- Rapid Application Development

Relational & Logical Operators Combined

• For example, in the statement– If x < 0 And y > 100 Or z = 50– x < 0 And y > 100 is evaluated first– If the And condition is true, we then evaluate– True Or z = 50– If the And condition is false, we then evaluate– False Or z = 50

• If the Or condition is to be evaluated first parentheses must be used– If x < 0 And (y > 100 Or z = 50)

Page 20: Week 2- Selection / Decisions HNDIT23073- Rapid Application Development

All Operators Precedence• Parenthesis• Arithmetic– Exponential– Multiplication / Division– Integer Division– MOD– Addition / Subtraction

• String Concatenation• Relational Operators (< , > , >= , <= , <>)• Logical Operators – Not– And– Or, Xor)

Page 21: Week 2- Selection / Decisions HNDIT23073- Rapid Application Development

Arithmetic, Relational, & Logical Operators Combined

• Evaluate the following if a=5, b=7, x=100, y=30– If x > a * 10 And y < b + 20– Evaluating the math operators leaves us with– If x > 50 And y < 27– Evaluating the relational operators leaves– If True And False– Evaluating the logical operators leaves– False

• Parentheses make order of operations clear– If (x > (a * 10)) And (y < (b + 20))

Page 22: Week 2- Selection / Decisions HNDIT23073- Rapid Application Development

If…Then ExamplesIf (intSales > 50000) Then

blnGetsBonus = TrueEnd If-----------------------------------------------------------------If ((blnGetsBonus)Or((intMissedDays < 2)And(intSales > 30000)))

intDaysOff = intDaysOff + 1intEmpRating += 1

End If-----------------------------------------------------------------If (Not(isNumeric(txtInput.text))) Then

txtInput.text = “”MsgBox(“Please enter a number in the textbox”)

End If-----------------------------------------------------------------If (intGrade >= 80)And(intGrade < 90) Then lblMessage.text = “B” -----------------------------------------------------------------If ((Val(txtGrade.text) < 0)Or(Val(txtGrade.text) > 100)) Then

lblMessage.text = “Invalid Grade: Not in the range 0-100”End If

Page 23: Week 2- Selection / Decisions HNDIT23073- Rapid Application Development

If…Then vs If…Then…ElseThe If…Then construct will execute or ignore a group of statements (do something or do nothing)

The If…Then…Else construct will execute one group of statements or another group (do this or do that)

Condition

Statement(s)If True

True

False

Statement(s)If True

TrueFalse

Statement(s)If False

Condition

Page 24: Week 2- Selection / Decisions HNDIT23073- Rapid Application Development

If…Then…Else Decision Structure• If…Then…Else

provides two choices• Evaluate condition:

True or False• True – execute code

in If…Then block• False – execute code

in Else Block • One of the two choices must be selected• They are mutually exclusive

Condition

Statement(s)If True

TrueFalse

Statement(s)If False

Page 25: Week 2- Selection / Decisions HNDIT23073- Rapid Application Development

If…Then…Else SyntaxIf condition Then

statement[s]1

Elsestatement[s]2

End If

• Syntax explanation:– If , Then, Else, and End – Keywords– Condition – True/False value, variable, function call or expression– Statement[s]1 – executed if condition is True– Statement[s]2 – executed if condition is False

Page 26: Week 2- Selection / Decisions HNDIT23073- Rapid Application Development

If…Then…Else ExamplesIf (intSales > 50000) Then

blnGetsDoubleBonus = TruedecBonus = 4000.00

ElsedecBonus = 2000.00

End If-----------------------------------------------------------------If (Not(isNumeric(txtInput.text))) Then

MsgBox(“You did not enter a valid number – program will end”)End

ElseintNumber = Val(txtInput.text)

End If-----------------------------------------------------------------If (intTemp >= 60)And(intTemp < 90)And(VisibRating() > 5) Then

lblMessage.text = “Go - Weather conditions are ideal” Else

lblMessage.text = “Wait - Weather conditions unacceptable”End If

Page 27: Week 2- Selection / Decisions HNDIT23073- Rapid Application Development

If…Then…ElseIf Decision Structure• If…Then…ElseIf

allows for multiplemutually exclusivechoices

• Each of the conditionsis tested in sequence

• When a condition istrue, the correspondingcode is executed and theremaining conditions are ignored

C1

C2

C3

Statement(s)1

True

Statement(s)2

True

Statement(s)3

True

False

False

False

Page 28: Week 2- Selection / Decisions HNDIT23073- Rapid Application Development

If…Then…ElseIf ConditionsIf it is very cold Then

Wear a coatElseif it is chilly

Wear a light jacketElseif it is windy

Wear a windbreakerElseif it is hot

Wear no jacket

• The order of the conditions is vital– Wrong order can result in wrong decision– What if it’s chilly and windy?– If windy is tested before chilly, you’d go out with a

windbreaker when you need a jacket

Page 29: Week 2- Selection / Decisions HNDIT23073- Rapid Application Development

If…Then…ElseIf SyntaxIf condition1 Then

statement[s]1

ElseIf condition2

statement[s]2

• • •

ElseIf conditionn

statement[s]n

End If

Page 30: Week 2- Selection / Decisions HNDIT23073- Rapid Application Development

Syntax explanation:

If , Then, ElseIf, and End –– Keywords Condition1 thru n – True/False – value, variable, function– call or expression Statement[s]1 – executed if– condition1 is True Statement[s]2 – executed if condition1 is False and if

condition2 is True Statement[s]n – executed if condition1 thru (n-1) is False and if

conditionn is True

Page 31: Week 2- Selection / Decisions HNDIT23073- Rapid Application Development

If…Then…ElseIf ExamplesIf sngAvg < 59.5 Then

lblGrade.Text = "F"ElseIf sngAvg < 69.5 Then

lblGrade.Text = "D"ElseIf sngAvg < 79.5 Then

lblGrade.Text = "C"ElseIf sngAvg < 89.5 Then

lblGrade.Text = "B"ElseIf sngAvg <= 100 Then

lblGrade.Text = "A"End If

• In each example, does the order of the conditions matter?• What happens if the order is reversed in each example?

If radCredCrd.checked ThenCredCrdPayment(decSubTot)

ElseIf radDebCrd.checked ThenDebCrdPayment(decSubTot)

ElseIf radCheck.checked ThenCheckPayment(decSubTot)

End If

Page 32: Week 2- Selection / Decisions HNDIT23073- Rapid Application Development

If…Then…ElseIf…Else (Trailing Else)• If…Then…ElseIf…Else is simply anIf…Then…ElseIfwith an Else at the end

• Called a Trailing Else• If the initial If and none

of the ElseIf conditionsare True, the trailingElse statement(s) willbe executed

C1

C2

C3

Statement(s)1

True

Statement(s)2

True

Statement(s)3

True

False

False

False

Statement(s)Else

Page 33: Week 2- Selection / Decisions HNDIT23073- Rapid Application Development

If…Then…ElseIf …Else SyntaxIf condition1 Then

statement[s]1

• • •

ElseIf conditionn

statement[s]n

Else

statement[s]Else

End If

Syntax explanation: Same as If..Then…ElseIf

thru statement[s] n

Statement[s]Else – executed if condition1 thru n

(all previous conditions) are False

Page 34: Week 2- Selection / Decisions HNDIT23073- Rapid Application Development

If…Then…ElseIf…Else ExamplesIf sngAvg < 59.5 Then

lblGrade.Text = "F"ElseIf sngAvg < 69.5 Then

lblGrade.Text = "D"ElseIf sngAvg < 79.5 Then

lblGrade.Text = "C"ElseIf sngAvg < 89.5 Then

lblGrade.Text = "B"ElseIf sngAvg <= 100 Then

lblGrade.Text = "A“Else

lblGrade.Text = "Invalid"End If

If intCredScr >= 700 ThenstrLoanType = “Prime”intLoanRate = 1

ElseIf intCredScr >= 600 ThenstrLoanType = “Standard”intLoanRate = 2

ElseIf intCredScr >= 500 ThenstrLoanType = “Risk”intLoanRate = 3

ElseIf intCredScr >= 400 ThenstrLoanType = “HiRisk”intLoanRate = 4

ElseMsgBox(“Not Qualified“)End

End If

Page 35: Week 2- Selection / Decisions HNDIT23073- Rapid Application Development

Nested If

• If Statements Within If Statements• Any type of statement may be used inside the

statement(s) portion of any form of If• This includes other If statements• If statements within If statements create a

more complex decision structure called a Nested If

Page 36: Week 2- Selection / Decisions HNDIT23073- Rapid Application Development

Nested If Example• A customer qualifies for a special rate loan if:

– If credit score is higher than 650 and• Income is more than 30000 Or Debt is less than 1000

– Or If credit score is higher than 700

If intCredScr > 650 ThenIf decIncome > 30000 Then

lblMessage.Text = “qualified"ElseIf DecDebt < 1000

lblMessage.Text = “qualified“Else

lblMessage.Text = “not qualified“End If

ElseIf intCredScr > 700 ThenlblMessage.Text = “qualified"

ElselblMessage.Text = “not qualified“

End If

Page 37: Week 2- Selection / Decisions HNDIT23073- Rapid Application Development

Select Case Statement• Similar to If…Then…ElseIf– Performs a series of tests– Conditionally executes the first true condition

• Select Case is different in that:– A single test expression may be evaluated– The test expression is listed once– The possible values of the expression are then

listed with their conditional statements• Case Else may be included and executed if

none of the values match the expression

Page 38: Week 2- Selection / Decisions HNDIT23073- Rapid Application Development

Select Case Statement ExamplesSelect Case Val(txtInput.Text)

Case 1MsgBox("Day 1 is Monday.")

Case 2MsgBox("Day 2 is Tuesday.")

Case 3MsgBox("Day 3 is Wednesday.")

Case 4MsgBox("Day 4 is Thursday.")

Case 5MsgBox("Day 5 is Friday.")

Case 6MsgBox("Day 6 is Saturday.")

Case 7MsgBox("Day 7 is Sunday.")

Case ElseMsgBox("The value is invalid.")

End Select

Select Case strAnimalCase "Dog“,"Cat"

MsgBox("House Pet")Case "Cow“,"Pig“,"Goat"

MsgBox("Farm Animal")Case "Lion“,"Tiger“,"Bear"

MsgBox("Oh My!")End Select

Select Case intScoreCase Is >= 90

strGrade = “A”Case 80 to 89

strGrade = “B”Case 70 to 79

strGrade = “C”Case 60 to 69

strGrade = “D”Case 0 to 59

strGrade = “F”End Select

Page 39: Week 2- Selection / Decisions HNDIT23073- Rapid Application Development

Example Decision ProblemsWrite a program that will prompt the user to input a number. Check for valid input. If the input is invalid (non-numeric) – give an error message via MsgBox and end the Event Procedure. If valid – assign the number to a variable and output the number to the user

Now experiment with validity checking for more restrictive input criteria with numbers (ex: only numbers from 1-100, only integers, only positive integers, etc.) and text (ex: only single characters, only the letters a-d, etc.)

Page 40: Week 2- Selection / Decisions HNDIT23073- Rapid Application Development

Example Decision ProblemsWrite a program that inputs 2 values and displays their positive difference. For example, if the first input is 6 and the second input is 9, then the positive difference is 3 (note: 3 is still the answer if the first input is 9 and the second input is 6).

Now add the code to handle invalid (non-numeric) input .

Page 41: Week 2- Selection / Decisions HNDIT23073- Rapid Application Development

Example Decision ProblemsWrite a VB application to have the user input via textbox an integer from 1 to 100,000 (inclusive). Determine if the input is a valid. If invalid, give an error message, clear the textbox, and end the event procedure (discuss). If valid, use a boolean function to determine if the integer is even or odd and use an integer function to determine if the integer is a perfect square (return the root if yes, return -1 if no). Report your results via label.

Write a VB application to have the user input a 2 digit binary number via input box. Determine if the input is a valid 2 digit binary number. If not give a specific error message and terminate the app. If valid, convert the number to a decimal value (try using a function to do this) and report the results via message box. (try with 3 digits)

Page 42: Week 2- Selection / Decisions HNDIT23073- Rapid Application Development

Reference

• http://www.cis.usouthal.edu,2014/03/10