Section 4 3 Conditions and Conditional Functions Conditions


![Question 1: Type into Definitions Window (define age 10) (cond [(< age 3) “toddler”] Question 1: Type into Definitions Window (define age 10) (cond [(< age 3) “toddler”]](https://slidetodoc.com/presentation_image/5a5ef6de4d3d8a162cb647d85891e473/image-3.jpg)
![Syntax Rule #4: Conditionals (cond [question … answer] … [question … answer]) Often, the Syntax Rule #4: Conditionals (cond [question … answer] … [question … answer]) Often, the](https://slidetodoc.com/presentation_image/5a5ef6de4d3d8a162cb647d85891e473/image-4.jpg)


![Why is the following illegal? (cond [(< n 10) 20] [ * 10 n] Why is the following illegal? (cond [(< n 10) 20] [ * 10 n]](https://slidetodoc.com/presentation_image/5a5ef6de4d3d8a162cb647d85891e473/image-7.jpg)


![How do we write this in Scheme? Use a conditional (cond [… [… …] How do we write this in Scheme? Use a conditional (cond [… [… …]](https://slidetodoc.com/presentation_image/5a5ef6de4d3d8a162cb647d85891e473/image-10.jpg)


![Write the program (define (interest-rate amount) (cond [(<= amount 1000). 040] [(<= amount 5000). Write the program (define (interest-rate amount) (cond [(<= amount 1000). 040] [(<= amount 5000).](https://slidetodoc.com/presentation_image/5a5ef6de4d3d8a162cb647d85891e473/image-13.jpg)














- Slides: 27

Section 4. 3: Conditions and Conditional Functions

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 cond age 3 toddler Question 1: Type into Definitions Window (define age 10) (cond [(< age 3) “toddler”]](https://slidetodoc.com/presentation_image/5a5ef6de4d3d8a162cb647d85891e473/image-3.jpg)
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
![Syntax Rule 4 Conditionals cond question answer question answer Often the Syntax Rule #4: Conditionals (cond [question … answer] … [question … answer]) Often, the](https://slidetodoc.com/presentation_image/5a5ef6de4d3d8a162cb647d85891e473/image-4.jpg)
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])

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

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.
![Why is the following illegal cond n 10 20 10 n Why is the following illegal? (cond [(< n 10) 20] [ * 10 n]](https://slidetodoc.com/presentation_image/5a5ef6de4d3d8a162cb647d85891e473/image-7.jpg)
Why is the following illegal? (cond [(< n 10) 20] [ * 10 n] [else 555])

Because… There is no question on the third line.

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%
![How do we write this in Scheme Use a conditional cond How do we write this in Scheme? Use a conditional (cond [… [… …]](https://slidetodoc.com/presentation_image/5a5ef6de4d3d8a162cb647d85891e473/image-10.jpg)
How do we write this in Scheme? Use a conditional (cond [… [… …] …])

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

How do we write this in Scheme? Filling in the answers (cond [(<= n 1000). 040] [(<= n 5000). 045] [(<= n 10000). 055] [( > n 10000). 060])
![Write the program define interestrate amount cond amount 1000 040 amount 5000 Write the program (define (interest-rate amount) (cond [(<= amount 1000). 040] [(<= amount 5000).](https://slidetodoc.com/presentation_image/5a5ef6de4d3d8a162cb647d85891e473/image-13.jpg)
Write the program (define (interest-rate amount) (cond [(<= amount 1000). 040] [(<= amount 5000). 045] [(<= amount 10000). 055] [( > amount 10000). 060]))

Section 4. 4: Designing Conditional Functions

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

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

“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

“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.

“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) -> ? ?

“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

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

“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 ])

“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 ]))

“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]))

“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]))

“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.

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