On this page:
sum-coins
area-cylinder
tax
netpay
what-kind
time
time-diff
position
circ
square
rect
area
translate-shape
in-shape?

3.1 Basic Racket

Develop the following functions and datatypes in the Beginning Student language.

procedure

(sum-coins pennies nickels dimes quarters)  number?

  pennies : number?
  nickels : number?
  dimes : number?
  quarters : number?
The local supermarket needs a program that can compute the value of a bag of coins. sum-coins produces the amount of money in the bag.

procedure

(area-cylinder base-radius height)  number?

  base-radius : number?
  height : number?

You will want to use check-within to test this.

procedure

(tax gross-pay)  number?

  gross-pay : number?
Produces the amount of tax owed. For a gross pay of $240 or less, the tax is 0%; for over $240 and $480 or less, the tax rate is 15%; and for any pay over $480, the tax rate is 28%.

procedure

(netpay hours-worked)  number?

  hours-worked : number?
Determines the net pay of an employee, which is the gross pay minus the tax. Assume the hourly pay rate is $12.

procedure

(what-kind a b c)  symbol?

  a : number?
  b : number?
  c : number?
The function consumes the coefficients a, b, and c of a quadratic equation. It then determines whether the equation is degenerate and, if not, how many solutions the equation has. The function produces one of four symbols: 'degenerate, 'two, 'one, or 'none. An equation is degenerate if (= a 0).

struct

(struct time (hours minutes seconds))

  hours : number?
  minutes : number?
  seconds : number?
Represents points in time since midnight. Define using define-struct.

procedure

(time-diff t1 t2)  number?

  t1 : time?
  t2 : time?
Returns the number of seconds from t1 to t2.

struct

(struct position (x y))

  x : number?
  y : number?
Represents two dimensional points.

struct

(struct circ (center radius))

  center : position?
  radius : number?
Represents circles.

struct

(struct square (upper-left length))

  upper-left : position?
  length : number?
Represents squares.

struct

(struct rect (upper-left width height))

  upper-left : position?
  width : number?
  height : number?
Represents rectangles.

procedure

(area shape)  number?

  shape : (or/c circ? square? rect?)
Computes the area of the shape.

You will want to use check-within to test this.

procedure

(translate-shape shape delta)  (or/c circ? square? rect?)

  shape : (or/c circ? square? rect?)
  delta : number?
Produces a shape whose key position is moved by delta pixels in the x direction.

procedure

(in-shape? shape p)  boolean?

  shape : (or/c circ? square? rect?)
  p : position?
Returns true if p is within the shape, false otherwise.