Computer Science Fundamentals (CS153 2003S)
[Skip to Body]
Primary:
[Front Door]
[Current]
[Glance]
-
[EC]
[Honesty]
[Instructions]
[Links]
[Search]
[Syllabus]
Groupings:
[EBoards]
[Examples]
[Exams]
[Handouts]
[Homework]
[Labs]
[Lab Writeups]
[Outlines]
[Readings]
[Reference]
ECA:
[About]
[Grades]
[Quizzes]
[Submit Work]
[Change Password]
[Reset Password]
Misc:
[Experiments in Java]
[Scheme Reference]
[Scheme Report]
[CS153 2002S (Walker)]
[CS151 2003S (Rebelsky)]
[CS152 2000F (Rebelsky)]
[SamR]
a. If you have not done so already (or if you've forgotten what it says), please reread the reading on vectors.
b. Start DrScheme.
c. Tell DrScheme not to print the lengths of vectors by entering
(print-vector-length #f)
.
a. In DrScheme's interaction window, type in a vector literal that denotes a vector containing just the two elements 3.14159 and 2.71828. How does DrScheme display the value of this vector?
b. Create a vector that contains the same two values by using the
vector
procedure.
c. Create a vector that contains the same two values by using the
make-vector
and vector-set
procedures.
a. Tell DrScheme to print the length of vectors by entering
(print-vector-length #t)
.
b. Enter each of the following vector expressions in DrScheme; consider
the result (perhaps by examining individual elements with
vector-ref
); and indicate what vector has been created.
#4(0)
#4(1)
#4(1 2)
#2(1 2 3 4)
(make-vector 4 0)
c. Tell DrScheme not to print the lengths of vectors and reenter each expression. Do your results differ? What do the differences suggest?
Write procedure, (vector-sum numbers)
,
that takes one argument, a vector
of numbers, and returns the sum of the elements of that vector.
You can
use vector->list
from the reading as a pattern for
vector-sum
-- only a few judicious changes are needed.
However, you should not use vector->list
as a helper.
In the reading on vectors, we saw
that it was possible to implement list->vector
and
vector->list
by using more primitive operations
(particularly vector-set!
and vector-length
).
Write your own version of vector-fill!
. Remember that
vector-fill!
takes two parameters, a vector and a
value, and puts that value in every position of the vector.
Consider the following code.
> (define aardvark (list 1 2 3 4)) > (define baboon aardvark) > (define aardvark (cons 5 (cdr aardvark))) > (define chinchilla (vector 1 2 3 4)) > (define dingo chinchilla) > (vector-set! chinchilla 0 5)
a. What do you expect the output of the following commands to be?
> (list-ref aardvark 0) _____ > (list-ref baboon 0) _____
b. Verify your answer experimentally.
c. What do your results suggest about Scheme?
d. What do you expect the output of the following commands to be?
> (list-ref chinchilla 0) _____ > (list-ref dingo 0) _____
e. Verify your answer experimentally.
f. What do your results suggest about Scheme?
Write a procedure, (rotate! vec)
that rotates
the elements in vec. That is, rotate!
puts
the initial element of vec at the end, the element at position
1 in position 0, the element at position 2 in position 1, and so on
and so forth.
a. Write a procedure, (reverse-vector vec)
,
that creates a new vector whose elements appear in the reverse order
of the elements in vec.
b. Write a procedure, (reverse-vector! vec)
,
that reverses vec in place
. That is, instead of
producing a new vector, it rearranges the elements within vec.
Write a procedure, (rotate! vec amt)
, that
rotates the values in vec by amt positions. That is,
the first amt values in vec move to the end, the value
in position amt moves to position 0, the value in position
amt+1 moves to position 1, and so on and so forth.
Just as in the case of list->vector
, you will probably
want to define a helper procedure that fills only part of the vector.
Your termination condition will certainly be different and should probably
involve the length of the vector.
Wednesday, 20 September 2000 [Samuel A. Rebelsky]
Wednesday, 8 November 2000 [Samuel A. Rebelsky]
http://www.cs.grinnell.edu/~stone/courses/scheme/spring-2000/vectors.xhtml
(version of April 5, 2000).
http://www.cs.grinnell.edu/~rebelsky/Courses/CS151/2000F/Labs/vectors.html
Wednesday, 7 February 2001 [Samuel A. Rebelsky]
Thursday, 8 February 2001 [Samuel A. Rebelsky]
vector->list
should be used as a pattern rather
than as a helper.
http://www.cs.grinnell.edu/~rebelsky/Courses/CS151/2001S/Labs/vectors.html
Thursday, 3 October 2002 [Samuel A. Rebelsky]
http://www.cs.grinnell.edu/~rebelsky/Courses/CS151/2002F/Labs/vectors.html
Thursday, 13 February 2003 [Samuel A. Rebelsky]
Friday, 14 February 2003 [Samuel A. Rebelsky]
http://www.cs.grinnell.edu/~rebelsky/Courses/CS153/2003S/Labs/vectors.html
[Skip to Body]
Primary:
[Front Door]
[Current]
[Glance]
-
[EC]
[Honesty]
[Instructions]
[Links]
[Search]
[Syllabus]
Groupings:
[EBoards]
[Examples]
[Exams]
[Handouts]
[Homework]
[Labs]
[Lab Writeups]
[Outlines]
[Readings]
[Reference]
ECA:
[About]
[Grades]
[Quizzes]
[Submit Work]
[Change Password]
[Reset Password]
Misc:
[Experiments in Java]
[Scheme Reference]
[Scheme Report]
[CS153 2002S (Walker)]
[CS151 2003S (Rebelsky)]
[CS152 2000F (Rebelsky)]
[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 May 6 09:20:07 2003.
The source to the document was last modified on Fri Feb 14 09:39:53 2003.
This document may be found at http://www.cs.grinnell.edu/~rebelsky/Courses/CS153/2003S/Labs/vectors.html
.
;
;
Check with Bobby