Teaching
211 F '07
 
Assignments
The Hand In
The Recipes
The World
Set 1
Set 2
Set 3
Set 4
Set 5
Set 6
Set 7
Set 8
Set 9
Set 10
Set X1

Problem Set 4

Due date: 10/1 @ 6pm


The goal of this problem set is to practice designing data representations using unions of classes and functions for processing unions. You must follow the design recipe. The graders will look for data definitions, contracts, purpose statements, examples/tests, and properly organized function definitions. For the latter, you must design templates. You do not need to include the templates with your homework, however. If you do, comment them out. -- The problem set also contains problems concerning computation rules.


HtDP Problems:

7.2.1, 7.2.2
Problem A1
Collect four signatures from the course staff: one from a TA, one from the tutor who graded your last homework, and two from any other tutors. Look for their office hours on the web page for the course and visit them. [4 points]
Problem A2
Evaluate the following expressions step by step and write down next to each step whether it is (1) arithmetic (of any form), (2) function application ("plugging in") or (3) a conditional step:
  1. 
    (define (dist-to-O x y)
      (sqrt (+ (* x x) (* y y))))
    
    (dist-to-O 3 4)
    
    
  2. 
    (define-struct point (x y))
    
    (define (dist-to-O p)
      (sqrt (+ (sqr (point-x p)) (sqr (point-y p)))))
    
    (dist-to-O (make-point 3 4))
    
    
  3. 
    (define (step x)
      (cond
        [(< 1 x) (sqr x)]
        [(< 0 x) (* 2 x)]
        [else    (sqr (+ x 1))]))
    
    (step 0)
    
    
For sanity checks, you may want to write down each step inside of drscheme. Since computation means calculating, you know that every step must produce the same answer. So if you're ever unsure whether you're calculation is still on track, just run the whole program and watch the same answer pop up for as many steps as you have written down.
Problem A3

An overnight shipping company classifies customers into two groups: low-volume shippers and high-volume shippers. For the first group, they record the name and weights (each represented as a number) of their last three shipments. For the second group, they track the weights of the last five shipments.

Design a data representation for customers and a function that computes the average weight of their shipments.

Problem A4

An antique store sells two kinds of wares: regular and appreciated. For regular items, they track the item number (as a string) and its price. For appreciated items, they track the item number (as a string), the base price, and the number of years it has been in their collection. For every year that an antique has been in stock, the store increases the item by 5% from the base price.

Design a data representation for the store's items and a function that computes the current price of an item. (Think of the program in a cash register and how it computes the current price from the price tag.)

Problem A5

Below is a data definition for a class of shapes. Add an interpretation for the Square and Rectangle classes. Both represent shapes whose borders are parallel to the borders of a canvas (window).

Develop the template fun-for-shape, which outlines functions that consume Shapes.

  1. Use the template to design shape-move-x. The function consumes a Shape (sh and a number (delta). It produces a shape that is like sh but translated by delta pixels along the x-direction.
  2. Use the template to design shape-in. The function consumes a Shape (sh) and a Posn (p), and determines whether p is inside (or on the boundary) of sh.

    Domain Knowledge: for a point to be within a circle, its distance to the center must be smaller than (or equal to) the radius. For a point to be within a rectangle, its x coordinate must be between the x coordinate of the left line and the x coordinate of the right line. How do you compute the x coordinates of these lines? Naturally something analogous must hold for the y coordinates. Remember that squares are just special rectangles.

  3. Use the template to design shape-draw. The function consumes a Shape (sh) and a scene (sc) and adds sh to sc.

    Domain Knowledge: The documentation of world.ss specifies how to add (place) a figure into a scene.

Hint: most of the exercises do not depend on each other. If you're stuck with one, try another one.

;; --- copy and paste into drscheme --- 
;; Shape is one of: 
;; -- Circle 
;; -- Square 
;; -- Rectangle 

(define-struct circl (x y r outline c))
;; Circle =
;;  (make-circl Number Number Number Boolean Symbol)
;; interpretation: x and y determine the center of the circle,
;;   r the radius, outline whether it's outlined or solid, 
;;   and c its color

(define-struct squar (x y size outline c))
;; Square = 
;;  (make-squar Number Number Number Boolean Symbol)
;; interpretation: Supply a good interpretation of Square.

(define-struct recta (x y width height outline c))
;; Rectangle = 
;;  (make-recta Number Number Number Number Boolean Symbol)
;; interpretation: Supply a good interpretation of Rectangle.


;; ... problem solving steps ... 

;; inspect for expected results:
(define sh (make-squar 100 100 50 true 'red))
(define pt (make-posn  130 130))

(shape-in sh pt)
(shape-draw (make-circl 130 130 5 true 'red) 
  (shape-draw sh 
     (empty-scene 300 300)))

last updated on Mon Nov 19 01:21:50 EST 2007generated with PLT Scheme