One foot is equal to 761/2500 meters (exactly). Define a procedure named
feet->meters that takes one argument, a real number
representing a length measured in feet, and returns the number that
represents the same length as measured in meters. Use this procedure to
determine the number of meters in one mile (5280 feet).
The price of admission to see a first-run movie at the Bijou Theatre is
seven dollars for an adult, four for a child. Define a procedure named
gross-receipts that takes two arguments, the number of adults
and the number of children admitted, and returns the total amount that
they
paid for admission, in dollars. For instance, if the audience included
exactly 112 adults and six children, the procedure should return the sum
of
112 times seven and four times six, which is 808:
> (gross-receipts 112 6)
808
Use your procedure to determine the total admission for eighty-two adults and 146 children.
In a figure-skating competition, judges have observed the competitors' performances and awarded three separate scores to each competitor: one for accuracy, one for style, and one for the difficulty of the chosen routine. Each score is in the range from 0 to 10. The rules of the competition specify that a competitor's three scores are to be combined into a weighted average, in which accuracy counts three times as much as difficulty and style counts twice as much as difficulty. The overall result should be a single number in the range from 0 to 10.
Write a comment in which you describe the nature and purpose of a procedure that takes three arguments -- a competitor's accuracy, style, and difficulty scores -- and returns their weighted average. Then define the procedure that you have described. Next, test your procedure, looking for cases in which the weighted average is computed incorrectly. (If you find any, make corrections in your definition.) Finally, save the procedure and documentation in an appropriately named file.
Call each of the ``primitive'' Scheme predicates listed in the reading twice -- once with an
argument that ensures that the value of the procedure call is
#t, once with an argument that makes the value
#f.
In the reading, I said that not is a procedure in Scheme.
What predicate could you call to verify this?
The symbol not is the name of the procedure
discussed
in the preceding exercise, but the symbol itself, considered as a datum,
is
not a procedure. Does Scheme agree with this classification?
How
could one ask Scheme whether the symbol not is a
procedure?
Define a predicate bigger? that takes two real numbers as
arguments and returns #t if the absolute value of the first
is
greater than the absolute value of the second, #f if it is
not. Call your procedure twice -- once with arguments that ensure that
the value of the procedure call is #t, once with arguments
that make the value #f.
This document is available on the World Wide Web as
http://www.cs.grinnell.edu/~gum/courses/151/labs/procedure-definitions.xhtml
created September 2, 1997
last revised July 31, 2001
John David Stone (stone@cs.grinnell.edu) and Ben Gum (gum@cs.grinnell.edu)