1 / 47

CSI 1301

CSI 1301. ALGORITHMS - PART 2 CONDITIONAL BRANCH CONTROL STRUCTURE. Conditional Branch. So far, in the method part of our algorithms, the instructions have been executed sequentially

Download Presentation

CSI 1301

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. CSI 1301 ALGORITHMS - PART 2 CONDITIONAL BRANCH CONTROL STRUCTURE

  2. Conditional Branch • So far, in the method part of our algorithms, the instructions have been executed sequentially • However, sometimes we need to vary the order of execution of the instructions. The order will be determined by the value of a condition • We will test to determine whether the condition is true or false • If the condition is true, we will execute certain instructions • If the condition is false, we will execute other instructions

  3. Definition of a Block • But first, let us define a block as group of related instructions • A block can contain one or as many instructions as we want BLOCK 1 -------------------- Get X Get Y Let Z = X + Y Give Z BLOCK 2 ---------------------- Let X = A + B * C /D

  4. Block • The key feature of a block is that it has only one entrance (one way to come in) • By executing the first instruction in the block • and only one exit (one way out) • By executing the last instruction in the block • You cannot execute any other instruction in the block without starting with the first and ending with the last instructions

  5. Simple Sequence of Blocks Input Block -------------------- Get X Get Y Process Block ------------------ Let X = X + Y Let Y = 2 * Y Let Z = X + Y Output Block ----------------- Give Z

  6. Test Blocks • By adding a test at the beginning of a block, we let the results of the test determine which block of instructions will be executed TEST True Block ---------------------- Do these Instructions if Test is True False Block ----------------------- Do these Instructions if the Test is False

  7. What is a Test? • The test used in a conditional branching control structure contains a variable or expression that evaluates to either True or False

  8. Logical Operators in a Test Expression

  9. Examples of Tests

  10. Logical Tests • In practice, tests contain variables and expressions, not numbers • Suppose that X, Y and Z are 3, 5, 8 respectively

  11. Test Block • Indentation is used to show different blocks in an algorithm • To write a test block, use an IF statement, and indent the instructions to be executed If (Test) Do this statement Do this statement as well Do this statement after the If statement

  12. Test Block (syntax and interpretation) Syntax if (Test) Block1 Interpretation If Test is evaluated to true Block1 is executed, else Block2 is executed. The else is optionnal. Note that the indentation is important. It determines the beginning and the end of each block. if (Test) Block1 else Block2

  13. Algorithm 2.1 • Write an algorithm to compute the absolute value of a number. • Name: ABSOLUTE • Givens: Number • Change: None • Results: Value • Intermediates: None • Definition: Value := ABSOLUTE (Number) • ----------------------- • Method • Get Number • If (Number >= 0) Let Value = Number • If (Number < 0) Let Value = (-1) * Number • Give Value

  14. Else • It is redundant to do the test twice as in IF (X > 0) Do this IF (X <= 0) Do that • The test should be written as If (X > 0) Do this Else (or Otherwise) Do that

  15. Algorithm 2.1 (b) • Write an algorithm to compute the absolute value of a number using only one test • Name: ABSOLUTE • Givens: Number • Change:None • Results: Value • Intermediates: None • Definition: Value := ABSOLUTE (Number) • ----------------------- • Method • Get Number If (Number >= 0) Let Value = Number Else Let Value = (-1) * Number • Give Value

  16. Algorithm 2.2 • Write an algorithm which finds the largest of three given numbers • General Concept • Keep track of “Biggest so Far” • Look at the first two numbers • Store the larger of the two numbers in “Biggest so Far” • Compare “Biggest so Far” with the third number • If the third number is larger, then store it in “Biggest so Far”

  17. Write an algorithm which finds the largest of three given numbers Name: BIG3 Givens: N1, N2, N3 Change:None Results:Largest Intermediates: None Definition: Largest := BIG3(N1,N2,N3) Method ------------------ Get N1 Get N2 Get N3 If (N1 > N2) Let Largest = N1 Else Let Largest = N2 If (N3 > Largest) Let Largest = N3 Give Largest Algorithm 2.2

  18. (1) Get N1 (2) Get N2 (3) Get N3 (4) If (N1 > N2) (5) Let Largest = N1 (6) Else (7) Let Largest = N2 (8) If (N3 > Largest) (9) Let Largest = N3 (10) Give Largest LN N1 N2 N3 Largest Test 1 8 2 12 3 7 4 (8>12) 7 12 8 (7>12) 10 Output 12 Trace 2.1 Trace Algorithm 2.2 with the values 8, 12, 7

  19. Algorithm 2.3 • Write an algorithm which, when given an ordered list X1, X2, & X3, modifies the list so that the values are in ascending order • General Concept • Look at the first two numbers, X1 and X2. If X1 is larger than X2, swap them (remember the swap algorithm?) • Look at X2 and X3. If X2 is larger than X3, swap them • This will put the largest number in the X3 position • X2 may have changed, so we have to look at X1 again • Look again at X1 and X2. If X1 is larger than X2, swap them • Now the list is in non-decreasing order

  20. Name: SORT3 Givens: X1,X2,X3 Change: X1,X2,X3 Results: None Intermediates: Temp Definition: SORT3(X1,X2,X3) Method ---------------- Get X1, X2, X3 If (X1 > X2) Let Temp = X1 Let X1 = X2 Let X2 = Temp If (X2 > X3) Let Temp = X2 Let X2 = X3 Let X3 = Temp If (X1 > X2) Let Temp = X1 Let X1 = X2 Let X2 = Temp Give X1, X2, X3 Algorithm 2.3 Write an algorithm which, given an ordered list X1, X2 & X3, modifies it so that the values are in ascending order

  21. Trace 2.2 • Trace algorithm 2.3 with list X having values 3, 8 and 2 respectively • (1) Get X • (2) If (X1 > X2) • (3) Let Temp = X1 • (4) Let X1 = X2 • (5) Let X2 = Temp • (6) If (X2 > X3) • (7) Let Temp = X2 • (8) Let X2 = X3 • (9) Let X3 = Temp • (10) If (X1 > X2) • (11) Let Temp = X1 • (12) Let X1 = X2 • (13) Let X2 = Temp • (14) Give X LN X TEMP TEST 1 (3,8,2) 2 (3 > 8) 6 (8 > 2) 7 8 8 (3,2,2) 9 (3,2,8) 10 (3 > 2) 11 3 12 (2,2,8) 13 (2,3,8) 14 Output (2,3,8)

  22. Multiple Tests • Sometimes we need to perform multiple related tests • For example, in assigning grades, a student can receive A+, A, A-….E, F • We can add an ELSE IF clause for multiple test results IF (Test 1) Execute block for Test 1 Else IF (Test 2) Execute block for Test 2 Else Execute block for Else

  23. Algorithm 2.4 • Write an algorithm which calculates the amount of money to charge for a ticket. The amount varies with the age of the individual. The charge for a person less than 16 is $7. The charge for a person over age 65 is $5 The charge is $10 for everyone else • Name: FARE • Givens: Age • Change: None • Results: Price • Intermediates: None • Definition: Price := FARE(Age) Method --------------------- Get Age If (Age < 16) Let Price = $7 Else If (Age > 65) Let Price = $5 Else Let Price = $10 Give Price

  24. Trace 2.3 • Trace algorithm 2.4 with the given age 35 (1) Get Age (2) If (Age < 16) (3) Let Price = $7 (4) Else If (Age > 65) (5) Let Price = $5 (6) Else (7) Let Price = $10 (8) Give Price LN Age Price Test 1 35 2 (35<16) 4 (35>65) 7 $10 8 Output $10

  25. Algorithm 2.5 • Given an employee’s eligible medical expenses for a calendar year, write an algorithm which computes the amount of reimbursement from group medical insurance. The insurance does not cover the first $100 of medical expenses. It pays 90% of the remaining amount in the first $2000 of expenses and 100% of any additional expenses.

  26. Name: MEDICAL Givens: Expense Change: None Results: Refund Intermediates: LL (Constant 100) UL (Constant 2000) Definition: Refund := MEDICAL(Expense) Method --------------------- Set LL = 100 Set UL = 2,000 Get Expense If (Expense < LL) Let Refund = 0 Else If (Expense < UL) Let Refund = 90% (Expense-LL) Else Let Refund = 90% (UL-LL) + 100% (Expense - UL) Give Refund Algorithm 2.5

  27. ( 1) Set LL = 100 ( 2) Set UL = 2,000 ( 3) Get Expense ( 4) If (Expense < 100) ( 5) Let Refund = 0 ( 6) Else If (Expense < 2,000) ( 7) Let Refund = 90% (Expense-100) ( 8) Else ( 9) Let Refund = 90% (1,900) + 100% (Expense - 2,000) (10) Give Refund LN UL LL Exp Refund Test 1,2 100 2K 3 3000 4 (3K<100) 6 (3K<2K) 9 2,710 10 Output 2,710 Trace 2.4 Trace Algorithm 2.5 for $3,000 worth of expenses

  28. Additional Material

  29. Flow Charts

  30. Flow Charts • Logic is implemented with a Diamond Symbol • There are two exits, which should be labeled Y/N or T/F • The two paths need to join before the end of the flowchart

  31. Algorithm 2.1(a) Name: ABSOLUTE Givens: Number Change: None Results: Value Intermediates: None Definition: Value := ABSOLUTE (Number)

  32. Algorithm 2.1(b) Name: ABSOLUTE Givens: Number Change: None Results: Value Intermediates: None Definition: Value := ABSOLUTE (Number)

  33. Algorithm 2.2 Name: BIG3 Givens: N1, N2, N3 Change:None Results:Largest Intermediates: None Definition: Largest := BIG3(N1,N2,N3)

  34. Algorithm 2.3 Name: SORT3 Givens: X1,X2,X3 Change: X1,X2,X3 Results: None Intermediates: Temp Definition: SORT3(X1,X2,X3)

  35. Algorithm 2.4 Name: FARE Givens: Age Change: None Results: Price Intermediates: None Definition: Price := FARE(Age)

  36. Start MEDICAL Set LL = 100 Set UL = 2 , 000 Get Expense N N If ( Expense < LL ) If ( Expense < UL ) Y Y Let Refund = Let Refund = 90 %( UL-LL )+ Let Refund = 0 90 %( Expense – LL ) 100 %( Expense – UL ) Give Refund Finish MEDICAL Algorithm 2.5 Name: MEDICAL Givens: Expense Change: None Results: Refund Intermediates: LL (Constant 100) UL (Constant 2,000) Definition: Refund := MEDICAL(Expense)

  37. NSD

  38. NSD • Tricky to do in Excel • Use 2 columns • Merge the 2 cells to form question • Format Cells/Borders Diagonal lines can be put in • Add Y/N cells

  39. Algorithm 2.1(a) Name: ABSOLUTE Givens: Number Change: None Results: Value Intermediates: None Definition: Value := ABSOLUTE (Number)

  40. Algorithm 2.1(b) Name: ABSOLUTE Givens: Number Change: None Results: Value Intermediates: None Definition: Value := ABSOLUTE (Number)

  41. Algorithm 2.2 Name: BIG3 Givens: N1, N2, N3 Change:None Results:Largest Intermediates: None Definition: Largest := BIG3(N1,N2,N3)

  42. Algorithm 2.3 Name: SORT3 Givens: X1,X2,X3 Change: X1,X2,X3 Results: None Intermediates: Temp Definition: SORT3(X1,X2,X3)

  43. Algorithm 2.4 Name: FARE Givens: Age Change: None Results: Price Intermediates: None Definition: Price := FARE(Age)

  44. Algorithm 2.5 Name: MEDICAL Givens: Expense Change: None Results: Refund Intermediates: Definition: Refund := MEDICAL(Expense)

  45. Homework

  46. For each of the following questions: Develop an algorithm Trace the algorithm with suitable data • Write an algorithm to reverse the digits in a three digit number and then add that number to 500. For example, 468 becomes 864. When added to 500, the result is 1364. • Write an algorithm to get the names and ages of two people. Return the name of the person who is older (in the format “x is older than y”, where x and y are the names of the two people), unless the two people are the same age, in which case, return the message “x is the same age as y”.

  47. An automotive sales representative’s commission is calculated as a percentage of the sale: • 8% of the first $5,000.00 of the sale price • 10% on the remainder of the sale price, if the remainder is less than or equal to $80,000.00 or • 12.5% on the remainder, if the remainder is more than $80,000.00 • Develop an algorithm that will accept the sale price of the automobile and calculate and display the sales representative’s commission.

More Related