Subroutines, Procedures and Functions

Subroutines, Procedures and Functions

Subroutines, Procedures and Functions

ROUTINES AND SUBROUTINES

A routine is a sequence of instructions to carry out a particular task. A'routine is a general tenn for a relatively small self-contained set of instructions. It may refer to:

1 A complete short program; or

2 A part of a program; or

3 A set of instructions used by other programs.

A subroutine is a routine which is used by one or more programs. A subroutine is not itself a complete program. It has to be called by other programs.

A program calls the subroutine and the subroutine's task is carried out. Control then returns to the correct place in the calling program, which continues from where it left off.

Often a computer system has a library of subroutines available for programmers to use.

A library subroutine is a subroutine which is available to all users of a computer system as part of the software.

PARAMETERS AND LOCAL VARIABLES

A parameter or argument is a value passed between a program and a subroutine. Most languages (though not some versions of BASIC) allow a programmer to do either of the following:

1 Use one name for a parameter in a subroutine and another name for the same parameter when it appears in the calling program.

2 To have a variable in a subroutine and another. one in the calling program, both with the same name. This is made possible by having local variables.

A local variable is one whose name is restricted to one subroutine.

A global variable is one which has the same name throughout a program and all its routines.

Advantages of these arrangements are:

1 A subroutine can be used in more than one program without worrying

(a) Whether names in the subroutine and the program clash; or

(b) Whether the right names have been used for the parameters.

2 Subroutines from subroutine libraries can be used without a problem over names.

3 The same subroutine can be used to operate on two different variables in the same program.

PROCEDURES

Languages such as COMAL and Pascal (and some versions of BASIC) allow a type of subroutine called a procedure. Procedures are generally used in stepwise refinement of a program .

In COMAL

1 Procedures are executed using an EXEC statement.

2 A procedure is defined between a PROC and an END PROC.

3 Parameters are put in brackets after the name of the procedure.

4 All variables in a procedure are made local using CLOSED.

Example of variables and parameters in COMAL

The following COMAL routine produces an introductory pattern for a game of noughts and crosses. It simply prints a pattern made of alternate blocks of o's and x's. In fact it repeats the following a times down the page:

00000000000000000000

00000000000000000000

00000000000000000000

00000000000000000000

xxxxxxxxxxxxxxxxxxxx

xxxxxxxxxxxxxxxxxxxx

xxxxxxxxxxxxxxxxxxxx

xxxxxxxxxxxxxxxxxxxx

100 //I ROUTINE TO PRINT ALTERNATELY BLOCKS OF o'S AND x'S //

200 FOR I : = 1 TO 3

210 EXEC BLOCK("o")

220 EXEC BLOCK("x")

230 NEXT I

299 //

300 PROC BLOCK(CHAR$) CLOSED 310 FOR I : = 1 TO 4

320 EXEC ROW(CHAR$)

330 NEXT I

340 END PROC BLOCK 399 //

400 PROC ROW (CH$) CLOSED 410 FOR I : = 1 TO 20

420 PRINT CH$;

430 NEXT I

440 PRINT

450 END PROC

Notes:

1 Because the procedures BLOCK and ROW are both CLOSED the variables in them are local. In particular the changes of I in ROW and BLOCK do not affect the I in the main program.

2 The variable CHAR$ in BLOCK is a parameter which takes first the value "0" and then the value "x".

FUNCTIONS

In high level programming a function is a sequence of instructions used by a program to supply a value in an expression.

There are two main types of function:

1 Built-in functions (or standard functions). These are functions which are always available to users of a particular language.

2 Programmer-defined (or user-defined) functions. These are functions written by the programmer.

Examples in BASIC

1 Built-in functions.

(a) LEN

100 LET N1=LEN(A$)

LEN is a function giving the number of characters in a string. For example, if A$ is the string "HELLO", Nl will be assigned the value 5.

(b) INT

110 IF Num= INT(Num) THEN PRINT "Whole number"

INT gives the whole number below the value of the expression in the brackets. For instance LNT(2.6) is 2 and INT( -3.4) =-4

Num will only be equal to INT(Num) if Num is a whole number.

2 Programmer-defined functions.

The following function C would correct a value to the nearest whole number. It uses the built-in function INT mentioned above.

Definition of the function C: 100 DEF FNC(N)~INT(N+.5)

Use of the function C to correct the values of Hand W:

500 PRINT "Approximate height and weight are ": FNC(Hl, FNC(W)

Using functions and procedures in top-down programming

In structured languages it is usual to write first the main structure of a program. The details are then filled in by defining functions and procedures. In other words these structures make stepwise refinement easier while doing top-down programming .

Example of the use of procedures in COMAL

The following program is a COMAL version of the program discussed . It has been written top-down in three levels as suggested there:

1 The function of the program is expressed in line 100.

2 This function is refined into procedures in lines 110 to 130.

3 The procedures are written in detail in lines 200 to 430.

100 //PROGRAM : Input three numbers and print out their average.//

110 EXEC input_ Three..Numbers

120 EXEC Calculate., Total_And_Average

130 EXEC Print-Nvumbers-And- Their-Average

140 END

199 //

200 PROC input-Three-Numbers

210 PRINT "The Average of Three Numbers"

220 PRINT

230 INPUT "Please type your first number ": Num1

240 INPUT "Please type your second number ", Num2

250 INPUT "Please type your third number ": "Num3

260 END PROC Input-Three Numbers

299 //

300 PROC Calculate., Total-And-Average

310 Total: = Numl + Num2 + Num3

320 Average: = Total 3

330 END PROC Calculate- Total-And-Average

399 //

400 PROC Print-numbers-And-Average

410 PRINT "The Numbers are :- ";Num1,Num2,Num3

420 PRINT "Their average is :- ": Average

430 END PROC Print-Numbers-And-Average

Labels: