1 / 27

Section 4.3: Conditions and Conditional Functions

Section 4.3: Conditions and Conditional Functions. Conditions. Conditions are most useful in the context of a program. We call the programs that use them conditional programs. We formulate them using conditional expressions. Question 1: Type into Definitions Window. (define age 10)

sabin
Télécharger la présentation

Section 4.3: Conditions and Conditional Functions

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. Section 4.3: Conditions and Conditional Functions

  2. Conditions Conditions are most useful in the context of a program. • We call the programs that use them conditional programs. • We formulate them using conditional expressions.

  3. Question 1: Type into Definitions Window (define age 10) (cond [(< age 3) “toddler”] [(and (>= age 3) (< age 13)) “pre-teen”] [(and (>= age 13) (< age 20)) “teen”] [(>= age 20) “adult”]) ; returns “pre-teen” Experiment by changing age & re-executing

  4. Syntax Rule #4: Conditionals (cond [question … answer] … [question … answer]) Often, the last part is what answer do you want for everything else, in which case, the last question is else. (cond [question … answer] … [else answer])

  5. Exercise 4.3.1 Decide which of these expressions is legal: (cond (cond [(< n 10) 20] [(< n 10) 20] [(> n 20) 0] [(and (> n 20) (<= n 30))] [else 1]) [else 1])

  6. Exercise 4.3.1 solution • The expressions are identical except for the third line so look at those. • The second expression does not have an answer on the third line: [(and (> n 20) (<= n 30)] so it is an illegal expression.

  7. Why is the following illegal? (cond [(< n 10) 20] [ * 10 n] [else 555])

  8. Because… There is no question on the third line.

  9. Question 2: interest-rate A bank pays higher interest rates to depositors with larger balances: • over $10,000, 6% • over $5000 and up to $10,000, 5.5% • over $1000 and up to $5000, 4.5% • up to $1000, 4%

  10. How do we write this in Scheme?Use a conditional (cond [… …] [… …] [… …] [… …])

  11. How do we write this in Scheme?Filling in the questions (cond [(<= n 1000) …] [(<= n 5000) …] [(<= n 10000) …] [( > n 10000) …])

  12. How do we write this in Scheme?Filling in the answers (cond [(<= n 1000) .040] [(<= n 5000) .045] [(<= n 10000) .055] [( > n 10000) .060])

  13. Write the program (define (interest-rate amount) (cond [(<= amount 1000) .040] [(<= amount 5000) .045] [(<= amount 10000) .055] [( > amount 10000) .060]))

  14. Section 4.4: Designing Conditional Functions

  15. Strategy for conditionals • Identify number of cases; write cond with that many clauses • If answers are simple, write all the answers & then go back to fill in questions • If questions are simple, write all the questions & then fill in answers

  16. Design Recipe – Version 2 • Figure out precisely what you need to do. 1. Understand the problem 2. Function contract 3. NEW STEP – Data Analysis 4. Write examples (in Scheme notation) • Tell the computer how to do it. 5. Write a skeleton 6. NEW STEP – Choose a template 7. Fill in the function body • Check that the computer does it right. 8. Testing and debugging

  17. “interest-rate” again • Understand This problem is about determining the interest rate given an amount of money in the bank. • Contract ;; interest-rate: number -> number

  18. “interest-rate” again • NEW STEP: Data Analysis --We take in a number and determine which of four intervals it is in. --We print out a different number for each of the intervals.

  19. “interest-rate” again • Examples Borderline Cases ;; (interest-rate 0) -> ?? ;; (interest-rate 1000) -> ?? ;; (interest-rate 5000) -> ?? ;; (interest-rate 10000) -> ?? Interval Cases ;; (interest-rate 500) -> ?? ;; (interest-rate 3000) -> ?? ;; (interest-rate 7000) -> ?? ;; (interest-rate 12000) -> ??

  20. “interest-rate” again • Examples Borderline Cases ;; (interest-rate 0) -> .040 ;; (interest-rate 1000) -> .040 ;; (interest-rate 5000) -> .045 ;; (interest-rate 10000) -> .055 Interval Cases ;; (interest-rate 500) -> .040 ;; (interest-rate 3000) -> .045 ;; (interest-rate 7000) -> .055 ;; (interest-rate 12000) -> .060

  21. “interest-rate” again • Skeleton (define (interest-rate amount) ( … amount … ) )

  22. “interest-rate” again • NEW STEP: Template So far we only have one template, for conditionals, so we will use that one. (define (interest-rate amount) (cond [ question answer ] … [ question answer ])

  23. “interest-rate” again • NEW STEP: Template Since we have four cases, we will have four lines of questions and answers, so the template is refined as follows: (define (interest-rate amount) (cond [ question answer ] [ question answer ] [ question answer ] [ question answer ]))

  24. “interest-rate” again • Fill in the Function Body --First fill in the questions. (define (interest-rate amount) (cond [(<= n 1000) answer] [(<= n 5000) answer] [(<= n 10000) answer] [( > n 10000) answer]))

  25. “interest-rate” again • Fill in the Function Body --Now fill in the answers. (define (interest-rate amount) (cond [(<= n 1000) .040] [(<= n 5000) .045] [(<= n 10000) .055] [( > n 10000) .060]))

  26. “interest-rate” again • Testing and Debugging --As always, type each of your examples into the interactions window. --If you get an error message or unexpected answer, debug the program to find your mistake.

  27. Next time… • More on Conditional Functions • Conditional Functions with other data types – string and images

More Related