Starting from:
$35

$29

Homework 1 Programming Language BSL

    • 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 check-expects: 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 check-expects: 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:
(define (math-is-boring x)
  (+ (* -4 (expt x 3)) (* 8 (expt x 1)) (* 9 (expt x 0))))
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) (string-append "Dear " x ", Esquire:")]
    [(string=? "Leena" x) (string-append "Dear " x ", Esquirette:")]
    [else (string-append "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 render-string, 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 check-expects: 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, cycle-spelling, so that when (animate cycle-spelling) is called, it animates spelling the following long word, letter-by-letter (in all caps). When the end of the word is reached, it cycles back and starts from the beginning.
(define LONG-WORD "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 LONG-WORD, 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.racket-lang.org/htdp-langs/beginner.html for some of the functions available to you in BSL.
Exercise 11 Design a function, draw-kite, that produces a kite with 4 colors when given the desired width and height of the kite. We have provided two check-expects 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 one-third of the distance from the top and two-thirds from the bottom.
Exercise 12 Write a function, convert-to-inches, that takes as arguments a number of yards, feet, and inches (in that order) and converts to a total number of inches. For example, (convert-to-inches 4 1 6) would produce 162 inches. Write two check-expects: one expressing the example above, and a different one of your choosing.
Exercise 13 Design the function speed-check. 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 check-expects that test the function’s behavior in different scenarios.

More products