CONSTRUCTING AND USING SUBROUTINES
Like functions, subroutines are designed so they can be used overand over within a program, or so they can be inserted easily into other programs.
Asubroutine is defined as a small program within another program. It does not have to be given a name or begin with a particular keyword. Subroutines can be used when sets of instructions are to be performed several times in one or more programs. They can also be useful when more than one programmer is working on a program. Each programmer can be assigned a portion of the program to write, and that portion can be written as a subroutine. When all portions of the program have been written, they can be put together and referenced as subroutines in the main program. This reduces the possibility of statements written by one programmer conflicting with the statements written by another programmer.
To execute a subroutine, you must transfer control to the subroutine byusing the keyword, GOSUB. Once executed, the subroutine transfers control back to the statement immediately following the GOSUB statement.
GOSUB and RETURN Statements
TheGOSUB statement is used to transfer control to a subroutine. It is made up of a statement number followed by the keyword GOSUB and the number of the first statement in the subroutine.
TheRETURN statement is used to transfer control back to the main program. It must be the last statement in the sub-routine. The RETURN statement consists of a statement number followed by the keyword RETURN. When the RETURN statement is executed, it transfers control back to the main program to the statement immediately following the GOSUB statement. The structure is as follows:
Line 30 transfers control to line 200, the first statement of the subroutine.Line 270, the last statement of the subroutine, returns control to line 40, the line immediately following the GOSUB.
The following example shows the use of the GOSUB and RETURNstatements in transferring control to a subroutine and returning control back to the main program.
The GOSUB statement in line 70 transfers control to the subroutine, line160, which prints a prompt to the user. At this point, the subroutine gives the user the option, either to continue running the program or to terminate it. After a string value is entered at line 180, the RETURN statement, line 190 returns control to the main program at line 80. This line tests the value of the string variable, X$. If the value equals Y, control is transferred to line 30; if the value is equal to N, the program will STOP.
TheSTOP statement, line 90, terminates execution of the program. Although the STOP statement terminates execution of the program, it does not replace the END statement. Remember, the END statement has two functions: to terminate execution of the program, and to indicate there are no more instructions for the BASIC interpreter to translate. Therefore you must include an END statement in every program, regardless of how many STOP statements you use. STOP statements may appear anywhere you need them in a program, and you can use as many as you want.
Constructing loops is made easier by using the FOR-NEXT loopstructure. A FOR-NEXT loop always begins with a FOR-TO statement and ends with a NEXT statement. A numeric variable, called a running variable is used to control the number of times a loop is executed. The running variable used in the NEXT statement must be the same as the one used in the FOR-TO statement. The value of the running variable is incremented by one each time the loop is executed, unless a STEP clause is used to alter this. Control can be transferred out of a loop but not into one.
A loop may have another loop inside it. This is called anested loop. Each nested loop must be completely embedded within the outer loop. They cannot overlap. Each nested loop must begin with its own FOR-TO statement and end with its own NEXT statement. Control cannot be transferred into a nested loop from a point outside the nest.
When working withone- or two-dimensional arrays you may reference any element in them by using a subscripted variable. The DIM (DIMENSION) statement is used to define the size of an array. It reserves space in the computerís memory for the specified number of elements.
Each array must be assigned a unique name, using either a numeric-variablename or a string-variable name. An array may contain either numeric or string data; however, all the elements in a given array must be of the same type (all numeric or all string).
Some of the more common mathematical functions have been predefineby the BASIC language; however, there are times when you may need to define your own. This can be done by using the DEF (DEFINE) statement.
Asubroutine is a small program inside a larger program. It is useful when sets of instructions are to be performed several times in one or more programs, or when several programmers are working on the same program. A subroutine is executed by transferring control to the subroutine using a GOSUB statement with the statement number of the 1st statement in the subroutine. It is terminated by the keyword RETURN. When a RETURN statement is executed, control is transferred from the subroutine back to the main program to the statement immediately following the GOSUB statement.
Execution of a program may be terminated anywhere in a program bythe use of STOP statements.