IPL / Mr. Hansen
5/5/2011

Name: _________________________
People I worked with: ____________________________________

Test through Chapter 10 of Python Textbook

 

Rules

  • Write (or, preferably, print) legibly. If you need more space than what is provided, write OVER and continue on reverse side of sheet.
  • Minor syntax errors in code stubs will not count against you, since it is assumed that you would correct these “on the fly” if you were using a computer. However, semantic errors and major syntax errors will incur point penalties.
  • If you have any questions regarding the test, do not stand up. Simply raise your hand and wait 30 seconds or so for your question to be addressed.
  • When you have finished, please slip out quietly, or log on to the class website to start working on your assignment for Friday.

 

 

 

Part I: Terminology and Definitions (60 points; 5 points per numbered problem)

 

 

1.

Numeric values that have no decimal portion (what we call integers in high school mathematics courses) have type ______________ in Java and ______________ in Python.

 

 

2.

Since there is often a need to store and use numeric values that may have a decimal portion, floating-point types are provided in both Java and Python (and nearly all other __________________________________ languages, for that matter).

 

 

3.

The types used for floating-point values are generally ____________ in Java and ____________ in Python.

 

 

4.

Lines of code that are useful during testing and debugging, but are generally not included (or are commented out) in the final source code are called ____________________ . (Hint: The term begins with the letter S.)

 

 

5.

It is generally considered an antipattern to duplicate a block of code in two or more places, because then a bug fix to one block will not be reflected in the other place(s) unless the maintenance programmer happens to remember to change all occurrences. The customary solution for this antipattern is to _____________________ (hint: starts with an E) the functionality of that block of code into a “subroutine,” which in Java is generally called a _____________________ (hint: does not start with the letter F).

 

 

6.

As software developers, we are by nature abstract thinkers. We have to be, because we are always abstracting reality in the form of defined procedures, called _____________________ (hint: starts with an A), and various data structures that model the relationships between objects in the real world. When we abstract a subroutine in Python, regardless of whether or not the subroutine returns a value, we are creating what Python and most other 3GLs call a _____________________ .

 

 

7.

When an object no longer has any reference, i.e., no longer has anything pointing to it, it can no longer be accessed reliably by any code. Therefore, the compiler has to perform a procedure called __________________________________________ (2 words) in order to prevent memory leaks.

 

 

8.

An _____________________ is defined as “a named collection of values, where all the values have the same type, and each value is identified by an index.”

 

 

9.

A deterministic program is one that __________________________________________

 

 

 

__________________________________________________________________ .

 

 

10.

Computer programs that need to have unpredictable behavior (for example, single-player games) use __________________________ (hint: starts with a P) number generators to generate values that appear to be random, but which are actually the product of a deterministic computation.

 

 

11.

Explain briefly what is meant by a slice (string slice, that is) in Python.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

12.

What term is used for a scratch variable that is usually initialized to 0 (or 1) and then incremented each time through a loop? ________________

 

 

 

Part II: Program Snippets (10 pts. each)

 

 

13.

Program A: Translate the following into Python, line by line, including the comment. Do a straight translation with no editing or improvement.

 

String k="";    //null string

int i;

for (i=0; i<=5; i++) {

    k=k + "ba";

    System.out.println(k); //leave typo (k for i) as is

}

System.out.println(k);

 

 


 

14.

Program B: Translate program A back into Java, using no variables and no looping. In other words, simply give a few System.out.println lines that produce the same output. Easy!

 

 


 

15.

Program C: Write a Python function (2 lines preferred) that de-obfuscates the code below and that uses a self-documenting function name.

 

def gazillivator(i, x):

    # assume i>=0

    # assume i is an int, and x is a float

    j=1

    xx=1

    while j<=i:

        xx*=x

        j+=1

    return xx


 

16.

Program D: Write a two-line Java method (one line plus the public static double gazillivator line) that does the same thing as Program C.