## CPSC 124, Fall 2001

Quiz #2, September 17This is the second quiz in CPSC 124: Introductory Programming.

Question 1:Suppose thatxandyare variables of typeintand that the value ofxis 31 and the value ofyis 7. What is the value of each of the following Java expressions?a)x % yb)(x / 10) * 10c)(x > y)? 1 : 0d)"00" + y

Answer:a) x % y has value 3 (The remainder when 7 is divided into 31.) b) (x / 10) * 10 has value 30 (When the computer divides two ints, it gets an int for the answer, discarding the fractional part. So, x / 10 is 3, not 3.33333333333.) c) (x > y)? 1 : 0 has value 1 (The ?: operator returns one of two values, depending on whether a condition is true or false. Since x > y is true, the first value, 1, is returned.) d) "00" + y has value "007" ("00" is a String. When the + operator is used with a String, it means concatenation, not addition. That is, the value of y is appended onto the end of "00", giving the string "007".)

Question 2:Assume thataandbhave been declared to be variables of typeint.Show the exact output produced by the following Java code segment.x = 2; y = 1; while (x < 10) { y = 2*y; x = x + y; System.out.println("x = " + x); System.out.println("y = " + y); }

Answer:The output is as follows:x = 4 y = 2 x = 8 y = 4 x = 16 y = 8(Note that I asked for the exact output, which includes the strings "x = " and "y = ". A common mistake is to stop after the first four lines, thinking that the loop ends

as soon asthe test x<10 becomes false. It doesn't. The loop can only end when the computer actually makes the test at the beginning of the loop. After x becomes equal to 16, the computer does the two output statements before it gets back to the start of the loop to make the test. Some people had x=3 the first time through the loop, which is an interesting error. Apparently, they looked at x=x+y and computed 2+1. However, by the time the computer gets to x=x+y, the statement y=2*y has already been executed, so the value of y is 2. The computer uses this new value in the formula x+y, giving a value of 4 for x.)

Question 3:Write acomplete Java program.The program will first get two integers from the user. Then it will print the smaller of the two integers. For example, if the user enters 42 and 17, then the program will print 17.public class Minimum }

Answer:public class Minimum public static void main(String[] args) { int x, y;// The two numbers entered by the user// Get the user's number.System.out.print("Enter an integer: "); x = TextIO.getlnInt(); System.out.print("Enter another integer: "); y = TextIO.getlnInt();// Test which number is smaller and print it. // (If the numbers are the same, the common value // is printed.)if (x < y) { System.out.println("The smaller number is " + x); } else { System.out.println("The smaller number is " + y); } }// end main()}// end class Minimum

Question 4:Explain what is meant bypseudocodeand how it can be used in a process of stepwise refinement to develop algorithms.

Answer:Pseudocode refers to writing algorithms in informal language, rather than in the strict syntax of programming languages. To use pseudocode and stepwise refinement, start with a short outline of an algorithm, written in pseudocode. Then gradually fill in details in the algorithm until it is possible to translate it directly into a formal program.