Download presentation
Presentation is loading. Please wait.
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 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 ]))
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
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.