Fundamentals of CS I (CS151 2002F)

**Primary:**
[Skip To Body]
[Front Door]
[Current]
[Glance]
[Honesty]
[Instructions]
[Links]
[Search]
[Syllabus]

**Groupings:**
[Examples]
[Exams]
[Handouts]
[Homework]
[Labs]
[Outlines]
[Readings]
[Reference]

**ECA:**
[About]
[Grades]
[Quizzes]
[Submit Work]
[Change Password]
[Reset Password]

**Miscellaenous:**
[Scheme Reference]
[CS151 2002F Gum]
[CS151 2001S]
[SamR]
[Glimmer Labs]
[schemers.org]

- Exercises
- Exercise 0: Preparation
- Exercise 1: Types of Numbers
- Exercise 2: The Type of a Square Root
- Exercise 3: More Types of Numbers
- Exercise 4: A Large Number
- Exercise 5: Inexact Roots
- Exercise 6: Inexact Fractions
- Exercise 7: Other Integer Procedures
- Exercise 8: Exploring Rationals
- Exercise 9: Rounding, Revisited
- Exercise 10: Other Numeric Predicates

- Extra Work
- Notes

You may want to refer to the reading on numbers before or while you work on this lab.

Start DrScheme.

Have DrScheme confirm that 3/4 is a rational number but not an integer and that the square root of -1 is a complex number but not a real number.

Confirm that the value DrScheme computes for `(sqrt 2)`

is an
inexact real that is also rational.

As you've just seen, some kinds of numbers are subsets of other kinds of numbers. Determine the relationships between the various kinds of numbers.

Write a Scheme numeral for 1.507 times ten to the fifteenth power, as an
*exact* number. Have Scheme evaluate the numeral.

a. Have DrScheme find the square of the square root of 2 and subtract 2 from the result.

b. Ideally, the difference should be 0; why isn't it?

c. How big is the difference?

d. Will you have the same problem if you start with 4? Why or why not?

Write a Scheme numeral for one-third, as an *inexact* number. Have
Scheme evaluate the numeral.

Scheme provides a number of numerical procedues that can
produce integer results.
We've already explored
`expt`

,
`abs`

,
`+`

,
`-`

, and
`*`

.

Here are some others. For each, try to figure (by experimentation, by discussing results with other students, and, eventually, by reading documentation) out how many parameters each procedure can take and what the procedure does. You may not be able to figure all of them out. Make sure to try a variety of values for each procedure, including positive and negative, integer and real.

a. `quotient`

b. `remainder`

c. `modulo`

d. `max`

e. `min`

f. `numerator`

g. `denominator`

h. `gcd`

i. `lcm`

j. `floor`

k. `ceiling`

l. `truncate`

m. `round`

Since you've found that DrScheme seems to represent every real number as a rational, it might be worth finding a way to see what that rational number is. Determine the numerator and denominator of the rational representation of the square root of 2.

For small numbers, the `exact->inexact`

procedure produces about six digits after the decimal point. Figure out
how to get just two digits after the decimal point. You may need to
use multiplication, division, and some of the last procedures from the
previous exercise.

You need not implement your algorithm; simply come up with one you think will work.

We've already seen a variety of predicates (procedures that return
true or false) that can be applied to numbers. These predicates
include
`exact?`

,
`integer?`

, and
`real?`

.

By reading the Scheme documentation, identify other predicates that can be applied to numbers.

If you finish early, you might

- Implement a working version of the algorithm from Exercise 9.
- Explain why there is no
`inexact->exact`

procedure.

When you get stuck on this problem, it's probably worth skimming through
DrScheme's *Help Desk*. The numeric operations are documented
in section 6.2.5 of the Revised(5) Report on the Algorithmic Language
Scheme. (I have not yet put all of these procedures in the
Glimmer Scheme Reference.

Wednesday, 31 January 2001 [Samuel A. Rebelsky]

- Created. Problems 1-6 were taken from an earlier laboratory on basic types. Problems 7-10 are new.

Monday, 9 September 2002 [Samuel A. Rebelsky]

- Updated links to point to Glimmer Scheme reference.

**Primary:**
[Skip To Body]
[Front Door]
[Current]
[Glance]
[Honesty]
[Instructions]
[Links]
[Search]
[Syllabus]

**Groupings:**
[Examples]
[Exams]
[Handouts]
[Homework]
[Labs]
[Outlines]
[Readings]
[Reference]

**ECA:**
[About]
[Grades]
[Quizzes]
[Submit Work]
[Change Password]
[Reset Password]

**Miscellaenous:**
[Scheme Reference]
[CS151 2002F Gum]
[CS151 2001S]
[SamR]
[Glimmer Labs]
[schemers.org]

**Disclaimer**:
I usually create these pages on the fly

, which means that I rarely
proofread them and they may contain bad grammar and incorrect details.
It also means that I tend to update them regularly (see the history for
more details). Feel free to contact me with any suggestions for changes.

This document was generated by
Siteweaver on Mon Dec 2 09:19:07 2002.

The source to the document was last modified on Mon Sep 9 08:28:31 2002.

This document may be found at `http://www.cs.grinnell.edu/~rebelsky/Courses/CS151/2002F/Labs/numbers.html`

.

You may wish to validate this document's HTML ; ; Check with Bobby

Samuel A. Rebelsky, rebelsky@grinnell.edu