Op 22-2-2012 9:58, Roelof Wobben schreef:
Thanks,
I have now a answer to my question.
I will debug my programm with check-expect and wil take a look at the
second edition.
Roelof
Op 21-2-2012 22:40, Stephen Bloch schreef:
On Feb 21, 2012, at 3:18 PM, Roelof Wobben wrote:
Op 21-2-2012 20:51, Stephen Bloch schreef:
On Feb 21, 2012, at 2:43 PM, Roelof Wobben wrote:
But now I get this error message :
unsaved editor>:27:23: function call: expected a function after the open
parenthesis, but found a part in: (tarief1 amount)
When I do (tarief 1 amount) instead of ((tarief amount))
Yes, that's where the syntax error is. So you've fixed that.
I fixed that? I always thought that if I use another function that
I must be into ().
So In my opinion one () for the then part and one () for the
function call.
No, there is no pair of parentheses for the "then" part, only one for
the function call.
(cond [question answer]
[question answer]
...
[question answer])
where each question and each answer is an expression (usually a
function call).
1) Have you written a complete set of test cases, with right answers, using
"check-expect"? Since there are four categories of input for this problem, you
need at least four test cases, and you should probably have three more for the
boundaries, a total of seven test cases.
Nope, check-expect is not explained on chapter section 3 of the book
how to design programms. So I did not use that function. I can make
test-cases but then in this form
(= (/tarief 495/) 1,2375)
That should work too, although it's not as convenient. Make sure you
put a bunch of those test cases in the Definitions pane, after the
definition:
(define (tarief blah blah)
blah blah blah
)
(= (tarief 495) 1,2375)
(= (tarief 0) 0)
(= (tarief 100) whatever)
...
That will also solve the next problem:
3) Have you used the Stepper to watch what your program is doing?
Yes, when I do (payback 2600) on the prompt and press Step I only
see a message All definitions have been sucessfully evaluated and
not other outcome so that did not help me any further.
The Stepper only works on expressions in the Definitions pane, not
the Interactions pane. If you put your test cases in the Definitions
pane as described above, the Stepper will help you find where things
are going wrong.
BTW, check-expect is not discussed in _How to Design Programs_
because it hadn't been invented yet when the book was written. It's
quite easy to use, though: replace the = sign in the above tests with
check-expect, and when you hit "Run" you'll get a report of which of
your test cases worked, the expected answer and the actual answer.
You might consider working through the Second Edition of _How to
Design Programs_ instead; see
http://www.ccs.neu.edu/home/matthias/HtDP2e/ .
Stephen Bloch
sbl...@adelphi.edu <mailto:sbl...@adelphi.edu>
I found a working solution but I wonder if there is a better way to
achieve the answer in the Beginning Student modus.
The solution I found is this one:
(define (tarief4 amount)
(*(- amount 2500)0.01))
(define (tarief3 amount)
(cond
[ ( < amount 2500)(* (- amount 1500)0.0075)]
[ else ( * .0075 1000)]))
(define (tarief2 amount)
(cond
[ ( < amount 1500)(* ( - 1000 amount) .0050) ]
[ else ( * 1000 0.0050)]))
(define (tarief1 amount)
(cond
[ (< amount 500) (* 0.0025 amount)]
[ else (* 0.0025 500)]
))
(define (payback amount)
(cond
[ (<= amount 500) (tarief1 amount)]
[ (and ( <= amount 1500) (> amount 500)) (+ (tarief1
amount)(tarief2 amount))]
[ (and ( <= amount 2500) (> amount 1500)) (+ (tarief3 amount)
(tarief2 amount) (tarief1 amount))]
[ else (+ (tarief4 amount)(tarief3 amount)(tarief2 amount)(tarief1
amount))]
)
)
Roelof Wobben
____________________
Racket Users list:
http://lists.racket-lang.org/users