### CPSC 124, Winter 1998 Sample Answers to Lab 2

This page contains sample answers to some of the exercises from Lab #2 in CPSC 124: Introductory Programming, Winter 1998. See the information page for that course for more information.

Exercise 1: The exercise was to write a certain program, following certain rules of programming style. The program must have a main comment saying what it does and including the author's name. The declaration of each variable must be commented. Blank lines and indentation must be used to display the structure of the program. Here is a sample solution:

```  public class ConsoleApplication {

// This program will let the user enter two real numbers.  The user
// can then select one of the four operations addition, subtraction,
// multiplication, and division to perform on the two numbers.
// The program will compute and display the answer.  The user then
// has the option of continuing with another set of numbers. The program
// uses a non-standard console window class for doing input/output.
//
// Written by: David J. Eck
//             January 22, 1998

public static void main(String[] args) {

Console console = new Console();  // open a console window for I/O

double x,y;  // The two numbers entered by the user.
double ans;  // The answer computed by the program.
int opCode;  // A number input by the user to indicate which
//    operation to perform on x and y.

boolean goAgain = true;  // Used to test whether the user wants to
//    repeat the process with new numbers.
//    This is set to true so that the while
//    loop will execute at least once.

while (goAgain) {

x = console.getlnDouble();
y = console.getlnDouble();

console.putln("Choose an operation:");
console.putln("    2.  Subtract");
console.putln("    3.  Multiply");
console.putln("    4.  Divide");

console.put("Enter the number of your choice: ");

opCode = console.getlnInt();                // read user's selection

if (opCode == 1)                            // compute the answer
ans = x + y;
else if (opCode == 2)
ans = x - y;
else if (opCode == 3)
ans = x * y;
else
ans = x / y;

console.putln("The answer is " + ans);

console.putln();                            // see if user wants to continue
console.put("Do you want to go again? ");
goAgain = console.getlnBoolean();

}  // end of while

console.putln();
console.putln("Thanks for using this program.");
console.putln("I hope I have been of service.");

console.close();

} // end of main()
} // end of class ConsoleApplication
```

Exercise 2: Here is a sample program for the guessing game:

```  public class ConsoleApplication {

// In this program, the computer selects a random integer in
// the range 0 to 100.  The user tries to guess the number.
// The computer tells the user whether the answer is too high,
// too low, or exactly right.  This continues until the user
// guesses the number.
//
// Written by: David J. Eck
//             January 22, 1998

public static void main(String[] args) {

Console console = new Console();  // open a console window for I/O

int computersNumber;   // Random number in the range 0 to 100,
//    selected by the computer

int usersGuess;        // Guessed value input from the user.

randomNumber = (int)(Math.random() * 100) + 1;

console.putln("I have selected a number between 1 and 100.");
console.putln("Try to guess it!");
console.putln();

console.put("What is your first guess? ");
usersGuess = console.getlnInt();

while (usersGuess != randomNumber) {
if (usersGuess > randomNumber)
console.put("Too high!  Guess again: ");
else
console.put("Too low!  Guess again: ");
usersGuess = console.getlnInt();
}

console.putln("You got it!");
console.putln("Thanks for playing.");

console.close();

} // end of main()
} // end of class ConsoleApplication
```

Exercise 3: was canceled.

Exercise 4: The assignment is to develop the guessing game program from exercise 2, using pseudocode and stepwise refinement. The development process should have at least five stages, and there should be explanatory comments between the stages. Here is a sample answer:

A very basic outline of what the computer has to do in this program is:

```              Select a random number.
Let the user try to guess it.
```

However, the user gets to keeps guessing until the correct number is selected, so we can expand the second step:

```              Select a random number.
repeat
get and process the user's guess
as long as the user's guess is incorrect
```

Now, in the step inside the while loop, the computer has to read the user's guess and give the user some feedback:

```              Select a random number
repeat
get the user's guess
tell the user if it is too high, too low, or correct
as long as the user's guess is incorrect
```

The first step in the loop involves asking the user a question and getting a response. The second uses an if statement to distinguish among the three possible cases:

```              Select a random number
repeat
ask the user to enter a number
if the answer is too big
Tell the user "Too high"
else if the answer is too small
Tell the user "Too low"
else
Tell the user "Correct"
as long as the user's guess is incorrect
```

As the final step before the final Java code, give names to the variables and fix up the syntax to make it look more like Java. Also, add some extra ouput to tell the user what is going on.

```               randomNumber = random number between 1 and 100
Tell the user about the game
do
Ask the user to enter a number.
usersGuess = the user's response
if usersGuess > randomNumber
Tell user "Too high"
else if usersGuess < randomNumber
Tell user "Too low"
else
Tell user "Correct"
while usersGuess != randomNumber
```

And here it is as a Java program segment. (Note it's not quite the same program as the one I gave above as an answer to exercise 2.)

```                int usersGuess;
int randomNumber = (int)(100 * Math.random()) + 1;
console.putln("I've chosen a number between 1 and 100");
console.putln("Try to guess it.");
do {
console.putln();