310 likes | 332 Views
Learn about decision structures and how to write code that performs actions based on specific conditions. Explore examples of simple and complex conditions using if statements in C#.
E N D
Decision Structure 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 operatordetermines whether a specific relationship exists between two values
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 Cold outside True Wear a coat False
if Statement with Boolean Expression sales > 50000 if (sales > 50000) { bonus = 500; } True bonus = 500 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"); }
temp >40 False True display “cold” display “hot” Example of if-else Statement if (temp > 40) { MessageBox.Show(“hot”); } else { MessageBox.Show(“cold”); }
Tuition Calculation (2) If total units <= 12, then tuition = 1200 Otherwise, 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); }
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); } 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."): }
Use Try/Catch to Detect Data Syntax Error try { 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); } catch (Exception ex) { MessageBox.Show(ex.Message); }
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.
Complex Condition with Logical Operators • The logical AND operator (&&) and the logical OR operator (||) allow you to connect multiple Boolean expressions to create a compound expression • The logical NOT operator (!) reverses the truth of a Boolean expression
Logical Operators: &&, ||, ! • && • Cond1 Cond2 Cond1 && Cond2 T T T F F T F F • || • Cond1 Cond2 Cond1 || Cond2 T T T F F T F F • ! • Cond ! Cond T F
Examples • Write a complex condition for: 12 <= Age <= 65 • Use a complex condition to describe age not between 12 and 65. • X <= 15 is equivalent to: X<15 AND X =15? (T/F)
More Complex Conditions • University admission rules: Applicants will be admitted if meet one of the following rules: • 1. Income >= 100,000 • 2. GPA > 2.5 AND SAT > 900 • An applicant’s Income is 150,000, GPA is 2.9 and SAT is 800. Admitted? • Income >= 100,000 OR GPA > 2.5 AND SAT >900 • How to evaluate this complex condition? • AND has higher priority
Scholarship: Business students with GPA at least 3.2 and major in Accounting or CIS qualified to apply: • 1. GPA >= 3.2 • 2. Major in Accounting OR CIS • Is a CIS student with GPA = 2.0 qualified? • GPA >= 3.2 AND Major = “Acct” OR Major = “CIS” • Is this complex condition correct? • Parenthesis, ( )
NOT Set 1: Young: Age < 30 Set 2: Rich: Income >= 100,000 Young Rich
Young: Age<30Rich: Income >100000 private void button1_Click(object sender, EventArgs e) { double Age, Income; Age = double.Parse(textBox1.Text); Income = double.Parse(textBox2.Text); if (Age < 30 && Income > 100000) MessageBox.Show("You are young and rich"); else MessageBox.Show("You are not young or not rich"); }
Boolean (bool) Variables and Flags • You can store the values true or false in bool variables, which are commonly used as flags • A flag is a variable that signals when some condition exists in the program • False – indicates the condition does not exist • True – indicates the condition exists Boolean good; // bool good; if (mydate.Year == 2011) { good = true; } else { good = false; } MessageBox.Show(good.ToString());
Using Boolean Variables and && private void button1_Click(object sender, EventArgs e) { bool Young=false, Rich=false; double Age, Income; Age = double.Parse(textBox1.Text); Income = double.Parse(textBox2.Text); if (Age < 30) Young = true; if (Income > 100000) Rich = true; if (Young && Rich) MessageBox.Show("You are young and rich"); else MessageBox.Show("You are not young OR not rich"); }
Using Boolean Variables and || private void button1_Click(object sender, EventArgs e) { bool Young=false, Rich=false; double Age, Income; Age = double.Parse(textBox1.Text); Income = double.Parse(textBox2.Text); if (Age < 30) Young = true; if (Income > 100000) Rich = true; if (Young || Rich) MessageBox.Show("You are young OR rich"); else MessageBox.Show("You are not young and not rich"); }
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 { } 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"); }
Compare the two programs 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"); } if (grade < 60) { MessageBox.Show("F"); } if (grade >=60 && grade < 70) { MessageBox.Show("D"); } if (grade >= 70 && grade < 80) { MessageBox.Show("C"); } if (grade >= 80 && grade < 90) { MessageBox.Show("B"); } if (grade >=90 ) { MessageBox.Show("A"); }
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");
if-else-if Example private void button1_Click(object sender, EventArgs e) { bool Young=false, Rich=false; double Age, Income; Age = double.Parse(textBox1.Text); Income = double.Parse(textBox2.Text); if (Age < 30) Young = true; if (Income > 100000) Rich = true; if (Young && Rich) MessageBox.Show("You are young and rich"); else if (Young && !Rich) MessageBox.Show("You are young but not rich"); else if (!Young && Rich) MessageBox.Show("You are not young but rich"); else MessageBox.Show("You are not young and not rich"); }
Working with DateTime • Get current date: • DateTime thisDate=DateTime.Today; • Get current date and time: • DateTime thisDate=DateTime.Now; • Calculate # of days between two dates: • myDate = DateTime.Parse(textBox1.Text); • DaysBetween = thisDate.Subtract(myDate).Days;
Compute Age Given DOB:Age<30, Young30<=Age<65, Middle Age>=65, Old DateTime myDate, thisDate=DateTime.Today; double Age; myDate = DateTime.Parse(textBox1.Text); Age = (thisDate.Subtract(myDate).Days / 365); MessageBox.Show(Age.ToString()); If (Age<30) MessageBox.Show(“Young”); elseif (Age<65) MessageBox.Show(“Middle”); else MessageBox.Show(“Old”);
Date Comparison DateTime thisDate, currentDate = DateTime.Today; thisDate = DateTime.Parse(textBox1.Text); if (currentDate>thisDate) MessageBox.Show("after"); else MessageBox.Show("before");