CSc 11: Introduction to Computing
Final Exam: December 15, 1995

1.a) Write a function prototype for a function Afoo@ that returns nothing, takes one value parameter, one reference parameter, one const reference parameter. (12)

 

b) What is an advantage of value parameters?

 

c) What are two advantages of reference parameters?

 

d) What is the advantage of a const reference parameter?

 

2. In each of the following code fragments: a) find and explain a bug, b) fix them (by marking up our code on this sheet), and c) show your corrected version's output. (15)

a) int x; cin >> x; //consider different possible boundary values

if (0 < x < 100) cout << "x between 0 and 100 " << endl;

 

 

 

 

b) #include <iostream.h>

x = 1;

while (x < 10)

cout << x << ' ';

x = x + 2;

 

 

 

c) const int Sentinel = -1;

int count=0;

float sum=0;

int score;

cout << "Enter scores, stopping with -1");

while (score != Sentinel)

{ cin >> score;

count = count + 1;

sum = sum + score;

}

cout << count << " scores averaging " << sum / count << endl;

//Assume user types in: 70 81 -1

 

 

 

 

 

3. Knobby=s World is analogous to a Von Neumann or Register Machine. To what components of a Register Machine are the following Knobby components analogous and why? (15)

a) The corners of Knobby=s World

b) Board b1

c) <<b1

d) >>b1

e) What change to Knobby=s World (as implemented) would make Knobby more like a Turing machine? Why?

 

4. Show the truth tables for logical operators or, and, not, and xor. (9)

 

 

 

 

 

 

5. a) Explain, in a sentence or two, why computer scientists think abstraction is a good idea.

 

 

Then explain (in a sentence or two) the power of abstraction for the following: (12)

b) functions

 

c) header files and libraries

 

d) inheritance

 

6. a) What does "Big O" measure?

 

b) What is the worst case order of magnitude for a linear search algorithm?

 

c) For a binary search algorithm?

 

d) What are the tradeoffs of using these two search algorithms?

7. Define an StringArray of size 10. Using a while loop, initialize all the elements to your first name. Then, using another loop, set every other element to your last name. (10)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

8. Consider the following representation of fractions: (15)

class Fraction {

int numerator_,denominator_;

public:

Fraction(int num,int denom=1)

{ numerator_ = num; denominator_ = denom; }

//Define more member functions and operators here...

};

a) Define two Fraction variables, f1 whose value is 2/3 and f2 whose value is 2.

 

 

b) Why is the following snippet illegal?

f1.denominator_ = 2;

 

 

c) How does this example illustrate the idea of information hiding in C++?

 

 

d) Declare a member function demoninator() (in class Fraction) which permits:

if (f1.denominator() == 2) cout << "half";

 

 

e) Define the member function you just declared.

 

 

Th.. th.. th.. that's all folks! Have a Merry Christmas and/or Happy Chanukah!