Description
Expectations

All Finger Exercises on this homework should be done individually (without a partner) and you should have them done by Monday night. Finger exercises will not be graded and do not have to be turned in.

All Graded Exercises on this homework should be done with the partner you’re assigned in lab on Tuesday Sept 15.

For this and all future assignments you must submit a single .rkt file containing your responses to all exercises via the Handin Server. We accept no email submissions.

You must use the language specified at the top of this page.

On this assignment, you are encouraged to write signatures and purpose statements for every function you write, in the format we studied in class; we will give you feedback on how clear or accurate they are. On future homeworks, they will be required and graded as part of the assignment. As for checkexpects: follow the individual instructions for each problem.
Failure to comply with these expectations will result in deductions and possibly a 0 score.
Finger Exercises You are not required to submit your finger exercises but they will be helpful so we recommend doing them anyway.
Exercise 1 Write a function that subtracts 2 from a number.
Exercise 2 The following table describes how far a person has gone in a race in a certain amount of seconds:


t =
1
2
3
4
5
6
7
8
9
10
d =
3
4.5
6.0
7.5
9.0
10.5
12.0
13.5
?
?

Write a function that predicts, based on this data, how far they will have run at time t. Write three checkexpects: two that test to see the data in the table matches your function’s output, and then one more that tests the output when t is at least 9.
Exercise 3 Take a look at figure 1, which is a graph of f, a function of x.
Turn the graph into a table for x = 0, 1, 2 and 3 and formulate a function definition.
Figure 1: A function graph for f
Exercise 4 Translate the following mathematical function into a BSL function:
f(x) = x2 + 12
Use it to create a table for x = 0, 2, 5, and 9.
Exercise 5 Enter the following function definition in BSL into DrRacket:
Look up the documentation for expt.
Apply the function to 0, 1, and 3 in the interactions area.
Apply the function to 1 in the definitions area and use the stepper to see how DrRacket evaluates this program.
Exercise 6 Enter the following function definition in BSL into DrRacket:


(define (hello x)
(cond
[(string=? “Ben” x) (stringappend “Dear “ x “, Esquire:”)]
[(string=? “Leena” x) (stringappend “Dear “ x “, Esquirette:”)]
[else (stringappend “Greetings, “ x “, “)]))

What kind of argument does hello consume? Apply the function to your favorite argument and step through the evaluation.
Exercise 7 Design the function renderstring, which consumes a number t and produces a text image of the first t letters from the string “qwerty”.
Place the text on a white 200 x 100 rectangle. Use black text of font size 22.
Graded Exercises
Exercise 8 Write a function, nineply, that multiplies a number, supplied as an argument, by 9. Write three checkexpects: one for a negative value, another for zero, and a third for a positive value.
Exercise 9 Complete the following table:


t =
0
1
2
3
4
5
6
7
d =
FUNDIES
FUNDIE
FUNDI
FUND
FUN
FU
?
?

Turn this table into a function definition. In a comment before the function, give as precise a signature for this function as you can (hint: it’s not quite straightforward – you may need to describe it rather than use the notation from class).
Exercise 10 Implement the function, cyclespelling, so that when (animate cyclespelling) is called, it animates spelling the following long word, letterbyletter (in all caps). When the end of the word is reached, it cycles back and starts from the beginning.
(define LONGWORD “diScomBoBUlaTeDiScomBoBulaTeDboBUlaTeD”)
The word should be displayed in blue in font size 40 on a white background.
Hints:

Your code ought to work no matter what string is used when defining LONGWORD, without needing to change anything else.

One way to count 0 up to some number and then loop back is to think about dividing two numbers and taking the remainder; so the remainder of 1 / 3 is 1, the remainder of 2 / 3 is 2; and the remainder of 3 / 3 is back to 0. Look for the remainder function in BSL.

You may want to look at the documentation at https://docs.racketlang.org/htdplangs/beginner.html for some of the functions available to you in BSL.
Exercise 11 Design a function, drawkite, that produces a kite with 4 colors when given the desired width and height of the kite. We have provided two checkexpects to help you test your function in the starter file for this assignment.

The kite should have the following four colors, starting with the top left quadrant going clockwise: “blue”, “yellow”, “green”, “red”.

The widest point of the kite is at onethird of the distance from the top and twothirds from the bottom.
Exercise 12 Write a function, converttoinches, that takes as arguments a number of yards, feet, and inches (in that order) and converts to a total number of inches. For example, (converttoinches 4 1 6) would produce 162 inches. Write two checkexpects: one expressing the example above, and a different one of your choosing.
Exercise 13 Design the function speedcheck. It consumes two natural numbers: one that represents the speed of a car and the other one the speed limit of the road. The result is one of these strings: (1) “okay” for a car that goes below the speed limit; (2) “bit fast” for a car that is going at most 9 mph faster than the speed limit; or (3) “speeding: ___ mph over limit” for a car that exceeds the speed limit, where the underlines are replaced by how much the car is over the speed limit. Write five checkexpects that test the function’s behavior in different scenarios.