IBM SC34-5764-01 User Manual

Page 89

Advertising
background image

Exercise - Writing an Internal and an External Subroutine

Write a program that plays a simulated coin toss game and produces the accumulated scores.

There should be four possible inputs:
v

'HEADS'

v

'TAILS'

v

'' (Null—to quit the game)

v

None of these three (incorrect response).

Write an internal subroutine without arguments to check for valid input. Send valid input to an external
subroutine that uses the RANDOM built-in function to generate random outcomes. Assume HEADS = 0
and TAILS = 1, and use RANDOM as follows:

RANDOM(0,1)

Compare the valid input with the value from RANDOM. If they are the same, the user wins one point; if
they are different, the computer wins one point. Return the result to the main program where results are
tallied.

ANSWER

/***************************** REXX ********************************/
/* This program plays a simulated coin toss game.

*/

/* The input can be heads, tails, or null ("") to quit the game.

*/

/* First an internal subroutine checks input for validity.

*/

/* An external subroutine uses the RANDOM built-in function to

*/

/* obtain a simulation of a throw of dice and compares the user

*/

/* input to the random outcome.

The main program receives

*/

/* notification of who won the round.

It maintains and produces

*/

/* scores after each round.

*/

/*******************************************************************/

PULL flip

/* Gets "HEADS", "TAILS", or ""

*/

/* from input stream.

*/

computer = 0; user = 0

/* Initializes scores to zero

*/

CALL check

/* Calls internal subroutine, check */

DO FOREVER

CALL throw

/* Calls external subroutine, throw */

IF RESULT = 'machine' THEN

/* The computer won

*/

computer = computer + 1

/* Increase the computer score

*/

ELSE

/* The user won

*/

user = user + 1

/* Increase the user score

*/

SAY 'Computer score = ' computer

'

Your score = ' user

PULL flip
CALL check

/* Call internal subroutine, check

*/

END
EXIT

Figure 41. Possible Solution (Main Program)

Writing Subroutines and Functions

Chapter 6. Writing Subroutines and Functions

67

Advertising