Fundamentals of Computer Science I (CS151 2003F)
[Skip to Body]
Primary:
[Front Door]
[Current]
[Glance]

[Honesty]
[Instructions]
[Links]
[Guidelines for Lab Writeups]
Groupings:
[EBoards]
[Examples]
[Exams]
[Handouts]
[Homework]
[Labs]
[Outlines]
[Readings]
[Reference]
Misc:
[Scheme Report]
[Glimmer Scheme Reference]
[CSC151.01 (Gum)]
[CSC151 2003S]
[CSC151 2002F]
[SamR]
Summary: In this laboratory, you will begin to explore the syntax and capabilities of the Scheme programming langauge.
Useful procedures:
abs
,
expt
,
sqrt
You may also want to keep the corresponding reading at hand.
Start DrScheme and make sure that you're in full scheme mode. You may want to read the DrScheme lab to make sure you understand DrScheme.
a. Convince DrScheme to compute the square root of 137641.
b. Verify that the value that DrScheme returns is indeed the square root of 137641. (Try squaring the value DrScheme gives you by hand.)
Ask DrScheme to subtract 68343 from 81722.
Ask DrScheme to multiply 162 by 1383.
a. Ask DrScheme to add 3 and 4.
b. Ask DrScheme to add 3 and 4 and then add 5 to the result. You'll
need two calls to +
.
c. Ask DrScheme to add 3, 4, and 5 using only one call to +
.
d. What happens if you call the procedure +
with no arguments?
With only one?
Have DrScheme compute the absolute value of 197. You can use the
abs
procedure.
a. Ask DrScheme to compute the cube of 19 (that is, the result of
raising 19 to the power 3). You can use
expt
to compute
exponents.
b. Ask DrScheme to computer the nineteenth power of 3.
c. What do these results indicate about the relationship between procedures and arguments in Scheme?
Type each of the following expressions at the Scheme prompt and see what reaction you get.
(2 + 3)
7 * 9
sqrt(49)
You may wish to read the notes on this problem for an explanation of the results that you get.
a. Write a definition that will cause Scheme to recognize dozen
as a name for the number 12.
b. Write a definition that will cause Scheme to recognize
raisetopower
as a synonym for expt
.
c. Use both names in expressions to verify that Scheme has understood them.
Copy the definitions you wrote for the preceding exercise into the definitions pane and execute them.
Save the definitions that you copied into the definitions pane in
the previous exercise in a file named beginningscheme.ss
.
(Conventionally, the names of files containing Scheme programs end in
.ss
.)
a. Quit and restart DrScheme.
b. Determine whether dozen
is still defined. (It shouldn't be.)
c. See if you can figure out how to get DrScheme to reload your saved definitions.
a. What do you expect to happen when you ask DrScheme to compute the square root of 4?
b. Verify your answer experimentally.
c. What do your results suggest?
Quit DrScheme and log out of the workstation.
(2 + 3)
When DrScheme sees the left parenthesis at the beginning of the expression
(2 + 3)
, it expects the expression to be a procedure call, and
it expects the procedure to be identified right after the left parenthesis.
But 2
does not identify a procedure; it stands for a number.
(A procedure application
is the same thing as a procedure call.)
7 * 9
In the absence of parentheses, DrScheme sees 7 * 9
as three
separate and unrelated expressions  the numeral 7
;
*
, a name for the primitive multiplication procedure; and
9
, another numeral. It interprets each of these as a command
to evaluate an expression: ``Compute the value of the numeral
7
! Find out what the name *
stands for! Compute
the value of the numeral 9
!'' So it performs the first of
these commands and displays 7
; then it carries out the second
command, reporting that *
is the name of the primitive
procedure *
; and finally it carries out the third command and
displays the result, 9
. This behavior is confusing, but it's
strictly logical if you look at it from the computer's point of view
(remembering, of course, that the computer has absolutely no common sense).
sqrt(49)
As in the preceding case, DrScheme sees sqrt(49)
as two
separate commands: sqrt
means ``Find out what
sqrt
is!'' and (49)
means ``Call the procedure
49
, with no arguments!'' DrScheme responds to the first
command by reporting that sqrt
is the primitive procedure for
computing square roots and to the second by pointing out that the number
49
is not a procedure.
August 23, 1997 [John David Stone]
March 17, 2000 [John David Stone]
29 August 2000 [Samuel A. Rebelsky]
30 August 2000 [Samuel A. Rebelsky]
Thursday, 25 January 2001 [Samuel A. Rebelsky]
+
.
Wednesday, 4 September 2002 [Samuel A. Rebelsky]
http://www.cs.grinnell.edu/~rebelsky/Courses/CS151/2002F/Labs/beginningscheme.html
.
Tuesday, 21 January 2003 [Samuel A. Rebelsky]
http://www.cs.grinnell.edu/~rebelsky/Courses/CS153/2003S/Labs/beginningscheme.html
.
Friday, 5 September 2003 [Samuel A. Rebelsky]
Square Roots Revisited.
http://www.cs.grinnell.edu/~rebelsky/Courses/CS151/2003F/Labs/beginningscheme.html
.
[Skip to Body]
Primary:
[Front Door]
[Current]
[Glance]

[Honesty]
[Instructions]
[Links]
[Guidelines for Lab Writeups]
Groupings:
[EBoards]
[Examples]
[Exams]
[Handouts]
[Homework]
[Labs]
[Outlines]
[Readings]
[Reference]
Misc:
[Scheme Report]
[Glimmer Scheme Reference]
[CSC151.01 (Gum)]
[CSC151 2003S]
[CSC151 2002F]
[SamR]
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 Tue Dec 9 13:58:56 2003.
The source to the document was last modified on Fri Sep 5 11:54:20 2003.
This document may be found at http://www.cs.grinnell.edu/~rebelsky/Courses/CS151/2003F/Labs/beginningscheme.html
.
; ; Check with Bobby
Samuel A. Rebelsky, rebelsky@grinnell.edu