Upload
beverley-casey
View
214
Download
0
Tags:
Embed Size (px)
Citation preview
Decision Structure - 1
ISYS 350
Decision: Action based on conditionExamples
• Simple condition:– If total sales exceeds $300 then applies 5%
discount; otherwise, no discount.• More than one condition:
• Taxable Income < =3000 no tax• 3000 < taxable income <= 10000 5% tax• Taxable income > 10000 15% tax
• Complex condition:– If an applicant’s GPA > 3.0 and SAT > 1200:
admitted
Relational Operators
• A relational operator determines whether a specific relationship exists between two values
Operator Meaning Expression Meaning
> Greater than x > y Is x greater than y?
< Less than x < y Is x less than y?
>= Greater than or equal to x >= y Is x greater than or equal to y?
<= Less than or equal to x <= y Is x less than or equal to you?
== Equal to x == y Is x equal to y?
!= Not equal to x != y Is x not equal to you?
A Simple Decision Structure• The flowchart is a single-alternative decision
structure
• It provides only one alternative path of execution
• In C#, you can use the if statement to write such structures. A generic format is:
if (expression)
{
Statements;
Statements;
etc.;
}
• The expression is a Boolean expression that can be evaluated as either true or false
Coldoutside
Wear a coat
True
False
if Statement with Boolean Expression
if (sales > 50000){ bonus = 500;}
sales > 50000
bonus = 500
True
False
Tuition Calculation (1)• Tuition is $1200. If you take more than 12
units, each unit over 12 will be charged $200.
private void button1_Click(object sender, EventArgs e) { int units; double tuition; units = int.Parse(textBox1.Text); tuition = 1200.00; if (units > 12) { tuition = 1200.00 + 200 * (units - 12); } textBox2.Text = tuition.ToString("C"); }
Example of if-else Statement
temp >40
display “hot”display “cold”
TrueFalse
if (temp > 40){ MessageBox.Show(“hot”);}else{ MessageBox.Show(“cold”);}
Tuition Calculation (2)If total units <= 12, then tuition = 1200Otherwise, tuition = 1200 + 200 per additional unit
private void button1_Click(object sender, EventArgs e) { int units; double tuition; units = int.Parse(textBox1.Text); if (units <= 12) tuition = 1200.00; else tuition = 1200.00 + 200 * (units - 12); textBox2.Text = tuition.ToString("C"); }
Note: If the if block contains only one line code, then the { } is optional.
Compute Weekly Wage• For a 40-hour work week, overtime hours over 40
are paid 50% more than the regular pay.
private void button1_Click(object sender, EventArgs e) { double hoursWorked, hourlyPay, wage; hoursWorked = double.Parse(textBox1.Text); hourlyPay = double.Parse(textBox2.Text); if (hoursWorked <= 40) wage=hoursWorked*hourlyPay; else wage=40*hourlyPay + 1.5*hourlyPay*(hoursWorked-40); textBox3.Text = wage.ToString("C"); }
Example: if with a block of statements
If total sales is greater than 1000, then the customer will get a 10% discount ; otherwise, the customer will get a 5% discount. Create a form to enter the total sales and use a button event procedure to compute and display the net payment in a textbox. And display a message “Thank you very much” if then total sales is greater than 1000; otherwise display a message “Thank you”.
private void button1_Click(object sender, EventArgs e) { double totalSales, discountRate, netPay; string myMsg; totalSales=double.Parse(textBox1.Text); if (totalSales <= 1000) { discountRate = .05; netPay = totalSales * (1 - discountRate); myMsg = "Thank you!"; } else { discountRate = .1; netPay = totalSales * (1 - discountRate); myMsg = "Thank you very much!"; } textBox2.Text = netPay.ToString("C"); MessageBox.Show(myMsg); }
Practices• 1. The average of two exams is calculated by this rule:
60% * higher score + 40% * lower score. Create a form with two textboxes to enter the two exam scores and use a button event procedure to compute and display the weighted average with a MessageBox.Show statement.
• 2. An Internet service provider offers a service plan that charges customer based on this rule:
• The first 20 hours: $10
• Each additional hour: $1.5
Create a form with a textbox to enter the hours used and use a button event procedure to compute and display the service charge with a MessageBox.Show statement.
The if-else-if Statement• Example:
– Rules to determine bonus:• JobCode = 1, Bonus=500• JobCode = 2, Bonus = 700• JobCode = 3, Bonus = 1000• JobCode = 4, Bonus=1500
The if-else-if Statement• You can also create a decision structure that evaluates multiple conditions
to make the final decision using the if-else-if statement• In C#, the generic format is:
if (expression){}else if (expression){}else if (expression){}…else {}
Code Example
private void button1_Click(object sender, EventArgs e) { int jobCode; double bonus; jobCode = int.Parse(textBox1.Text); if (jobCode == 1) { bonus = 500; } else if (jobCode == 2) { bonus = 700; } else if (jobCode == 3) { bonus = 1000; } else { bonus = 1500; } MessageBox.Show("Your bonus is: " + bonus.ToString("c")); }
Example• Special tax:
– CA: 1%– WA: 1.5%– NY: 1.2%– Other states: 0.5%
Code
private void button1_Click(object sender, EventArgs e) { string state; double taxRate; state = textBox1.Text; if (state == "CA") { taxRate = 0.01; } else if (state == "WA") { taxRate = 0.015; } else if (state == "NY") { taxRate = .012; } else { taxRate = .005; } MessageBox.Show("The tax rate is: " + taxRate.ToString("p")); }
Tax Rate Schedule • Rules to determine tax rate:
– Taxable Income < =3000 no tax– 3000 < taxable income <= 10000 5% tax– 10000<Taxable income <= 50000 15% tax– Taxable income>50000 25%
double taxableIncome, taxRate, tax; taxableIncome = double.Parse(textBox1.Text); if (taxableIncome <= 3000) { taxRate = 0; } else if (taxableIncome<=10000) { taxRate= .05; } else if (taxableIncome <= 50000) { taxRate = .15; } else { taxRate = .25; } tax = taxableIncome * taxRate; textBox2.Text = tax.ToString("C");
Rules to determine letter grade
• Avg>=90 A• 80<=Avg<90 B• 70<=Avg<80 C• 60<=Avg<70 D• Avg<60 F
Compare these two programsdouble grade = double.Parse(textBox1.Text);if (grade < 60) { MessageBox.Show("F"); }else if (grade < 70) { MessageBox.Show("D"); }else if (grade < 80) { MessageBox.Show("C"); }else if (grade < 90) { MessageBox.Show("B"); }else { MessageBox.Show("A"); }
double grade = double.Parse(textBox1.Text);if (grade >=90) { MessageBox.Show("A"); }else if (grade >=80) { MessageBox.Show("B"); }else if (grade >=70) { MessageBox.Show("C");}else if (grade >=60) { MessageBox.Show("D");}else { MessageBox.Show("F");}
Throwing an Exception
• In the following example, the user may entered invalid data (e.g. null) to the milesText control. In this case, an exception happens (which is commonly said to “throw an exception”).
• The program then jumps to the catch block.• You can use the following to display an exception’s default error message:
catch (Exception ex) { MessageBox.Show(ex.Message); }
Use Try/Catch to Detect Data Syntax Error
Note: Show a system generated error message:
catch (Exception ex) { MessageBox.Show(ex.Message); }
try{ double miles; double gallons; double mpg;
miles = double.Parse(milesTextBox.Text); gallons = double.Parse(gallonsTextBox.Text); mpg = miles / gallons; mpgLabel.Text = mpg.ToString();}catch{ MessageBox.Show("Invalid data was entered."):}
Input Validation
• Numbers are checked to ensure they are:– Within a range of possible values– Reasonableness– Not causing problems such as division by 0.– Containing only digits
• IsNumeric
• Texts are checked to ensure correct format.– Phone #, SSN.
• Required field
Text Box Validation
• Useful property:– CausesValidation: true
• Useful events– TextChanged: default event
• Triggered whenever the textbox is changed.
– Validating – useful for validating data entered in the box• Triggered just before the focus shifts to other control.
Data Entered in Textbox1 cannot be greater than 2000
private void textBox1_Validating(object sender, CancelEventArgs e) { double enteredData; enteredData = double.Parse(textBox1.Text); if (enteredData > 2000) { MessageBox.Show("The data cannot be greater than 2000!"); e.Cancel=true; } }
Note: e.Cancel=true;
Testing for digits onlyThis example uses the Double.Parse method trying to convert the data entered in the box to double. If fail then it is not numeric.
private void textBox1_Validating(object sender, CancelEventArgs e) { try { double.Parse(textBox1.Text); e.Cancel = false; } catch { e.Cancel = true; MessageBox.Show("Enter digits only"); } }
Note: VB has an IsNumeric function and Excel has an ISNumber function.
Testing for digits only and cannot be greater than 2000
private void textBox1_Validating(object sender, CancelEventArgs e) { try { double myData; myData= double.Parse(textBox1.Text); if (myData>2000) { MessageBox.Show("The data cannot be greater than 2000!"); e.Cancel=true; } } catch { e.Cancel = true; MessageBox.Show("Enter digits only"); } }