1 / 38

More on Conditionals

More on Conditionals . Nested if’s Multiple Alternatives Top-Down Design. Recall the if-else “Template”. if. boolean expression. Commands to execute if the expression if TRUE. else. Commands to execute if the expression if FALSE. end. Question Time.

max
Download Presentation

More on Conditionals

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. More on Conditionals Nested if’s Multiple Alternatives Top-Down Design

  2. Recall the if-else “Template” if boolean expression Commands to execute if the expression if TRUE else Commands to execute if the expression if FALSE end

  3. Question Time Variables a, b, and c have whole number values. True or false: This fragment prints “Yes” if there is a right triangle with side lengths a, b, and c and prints “No” otherwise. if a^2 + b^2 == c^2 disp(‘Yes’) else disp(‘No’) end A: True B: False

  4. a = 5; b = 3; c = 4; if a^2 + b^2 == c^2 disp(‘Yes’) else disp(‘No’) end 3 4 5 Prints “no” even though we have:

  5. if a^2 + b^2 == c^2 disp(‘Yes’) else disp(‘No’) end a^2 + b^2 == c^2 The boolean expression should be true ifa2+b2=c2or a2+c2=b2or b2+c2=a2is true. (a^2+b^2==c^2) || (a^2+c^2==b^2) || (b^2+c^2==a^2)

  6. Developing “If” Solutions Illustrate the thinking associated with the design of if statements. The methodology of stepwise refinement. Two examples...

  7. Write a script that solicits a positive integer Y and prints the number of days in year Yas determined by the Gregorian calendar. Problem 1

  8. Leap Year Rule A non-century year is a leap year if it is divisible by 4. A century year is a leap year only if it is divisible by 400.

  9. Will Need the Built-In Function rem The value of rem(a,b) is the remainder when the value of a is divided by the value of b. (Assume a, b are whole numbers.)

  10. “Pseudocode” Solution Input y. If y is not divisible by 100 Use the non-century year rule. Otherwise Use the century year rule.

  11. Refine… y = input(‘Enter the Year:’); if rem(y,100) ~= 0 % y is not a multiple of 100 Use the non-century rule else % y is a multiple of 100 Use the century rule end

  12. Refine the If-Box % y is not a multiple of 100 Use the non-century rule % y is not a multiple of 100 If y is divisible by 4 Print 366 Otherwise Print 365

  13. % y is not a multiple of 100 if rem(y,4)==0 % y is divisible by 4 disp(‘366’) else % y is not divisible by 4 disp(‘365’) end

  14. Refine… y = input(‘Enter the Year:’); if rem(y,100) ~= 0 % y is not a multiple of 100 Use the non-century rule else % y is a multiple of 100 Use the century rule end Done Next

  15. Refine the Else-Box % y is divisible by 100 Use the Century rule % y is divisible by 100 If y is divisible by 400 Print 366 Otherwise Print 365

  16. % y is divisible by 100 if rem(y,400)==0 % y is divisible by 400 disp(‘366’) else % y is not divisible by 400 disp(‘365’) end

  17. Refine… y = input(‘Enter the Year:’); if rem(y,100) ~= 0 % y is not a multiple of 100 Use the non-century rule else % y is a multiple of 100 Use the century rule end Done Done

  18. y = input(‘Enter the Year:’); if rem(y,100)~=0 if rem(y,4)==0 disp(‘366’) else disp(‘365’) end else if rem(y,400)==0 disp(‘366’) else disp(‘365’) end end The whole thing without comments

  19. Key Problem-SolvingStrategy Progress from pseudocode to Matlab through a sequence of refinements. Comments have an essential role during the transitions. They “stay on” all the way to the finished fragment.

  20. Starting Points VaryIn “Friendliness” A non-century year is a leap year if it is divisible by 4. A century year is a leap year only if it is divisible by 400. A year is a leap year if it is divisible by 4 with the exception of century years that are not divisible by 400.

  21. Problem 2Write a fragment that prints theminimum value of in the interval L <= x <= R

  22. One Possibility L<=xc<=R minVal at xc L R

  23. Another Possibility R<xc minVal at R L R

  24. Still Another Possibility xc<L minVal at L L R

  25. We conclude that... If xc is in the interval The minimum is at xc Otherwise The minimum is at an endpoint

  26. We Start With Pseudocode… If xc is in the interval The minimum is at xc Otherwise The minimum is at an endpoint Task: Convert to “legal’’ Matlab.

  27. First refinement… if (L <= xc) && (xc <= R) % L <= xc <= R % The minimum is at xc. else % xc < L or R < xc % The minimum is at an endpoint. end (1) Boolean expression, (2) commented if-box, (3) commented else box

  28. Refine the If-Box % L <= xc <= R % The minimum is at xc. % L <= xc <= R % The minimum is at xc. minVal = xc^2 + b*xc + c

  29. Refine the Else-Box % xc < L or R < xc % The minimum is at an endpoint. xc<L minVal at L R<xc minVal at R

  30. % xc < L or R < xc % The minimum is at an endpoint. if xc is to the left of L The minimum is at L Otherwise The minimum is at R

  31. % xc < L or R < xc % The minimum is at an endpoint. if xc < L % The minimum is at L minVal = L^2 + b*L + c else % The minimum is at R minVal = R^2 + b*R + c end

  32. Overall (w/o Comments) if (L <= xc) && (xc <= R) minVal = xc^2 + b*xc + c. else if xc < L minVal = L^2 + b*L + c else minVal = R^2 + b*R + c end end

  33. Notice there are 3 Alternatives… if (L <= xc) && (xc <= R) minVal = xc^2 + b*xc + c. else if xc < L minVal = L^2 + b*L + c else minVal = R^2 + b*R + c end end

  34. The if-elseif-else Construct if (L <= xc) && (xc <= R) minVal = xc^2 + b*xc + c. elseif xc < L minVal = L^2 + b*L + c else minVal = R^2 + b*R + c end Execute exactly one block.

  35. When there are Many Alternatives Boolean Expression Find the first true boolean expression & execute its block. Otherwise execute the else block. if elseif elseif else end Boolean Expression Boolean Expression

  36. A Common Situation… if end Boolean Expression When there is nothing to do if the boolean expression is false.

  37. Question Time What can you say about the value of x and y after this fragment is executed? x = 3; Y = 4; if x < y x = y; y = x end if x > y x = 3; y = 4; end A: X is 3 and Y is 4 B: X is 4 and Y is 3 C: X is 4 and Y is 4

  38. State problem Define inputs & outputs Decomposition Design algorithm Stepwise refinement Convert algorithm to program Top-Down Design Test and debug An algorithm is an idea. To use an algorithm you must choose a programming language and implement the algorithm.

More Related