# Turbo Pascal 7.0 GuideFunctions

Functions are defined in a similar way to procedures. The difference is that they return a value. This can be very useful within a program.

## Example 1 - Cube

```PROGRAM coob; USES crt; VAR y, z: integer; FUNCTION cube(x: integer):integer; BEGIN    cube:= x * x * x; END; BEGIN    clrscr;    write('Enter a whole number ');    readln(y);    z:= cube(y);    writeln(y, ' cubed is ', z);    readln; END.```

Notice that we also have to specify the data type for the return value of the function.

This is a simple function and only one line of code is required. Look carefully at how the return value is stated in this function.

## Example 2 - Maximum Values

```PROGRAM macs; USES crt; VAR a,b,c,d : integer; FUNCTION max3(a,b,c:integer):integer; VAR m: integer; BEGIN    m:= a;    IF m<b THEN m:=b;    IF m<c THEN m:= c;    max3:=m; END; BEGIN    clrscr;    write('Input the first number ');    readln(a);    write('Input the second number ');    readln(b);    write('Input the third number ');    readln(c);    d:= max3(a,b,c);    writeln ('The largest number entered was ',d);    readln; END.```

## Example 3 - Factorial

```PROGRAM fak; USES crt; VAR x: integer; VAR y: longint; FUNCTION fac(x: integer):longint; BEGIN    IF x=1 THEN fac:=1 ELSE fac:=x*fac(x-1); END; BEGIN    clrscr;    write('Enter number ');    readln(x);    y:= fac(x);    writeln;    writeln(x, '! = ', y);    readln; END.```

In the third example, the function is called from within the function itself. This is called recursion. When programming a recursive function, you must take care that the program does not get caught in a continuous loop.

## Exercises

1. Write a program that reads in 3 numbers and uses a function to find and return the smallest number.
2. Write a program that uses a function to check whether or not a number is a prime. The function should return true or false to indicate whether or not the number passed to it is prime.
3. Write a program to read in an integer and return the binary equivalent of that number as a string.