Chapter 8 Overheads


FUNCTIONS
A FUNCTION IS A SUBPROGRAM WHICH SENDS BACK ONE ANSWER.
THIS ANSWER IS SENT BACK IN THE NAME OF THE FUNCTION.
THE FUNCTION ITSELF MUST HAVE A TYPE.

LOOK AT THE PROBLEM FROM CHAPTER 6 AGAIN
PRINT OUT A LIST OF THE SOCIAL SECURITY NUMBERS AND LETTER GRADES WHERE THE LETTER GRADES WERE BASED ON THE AVERAGE OF THE SIX TEST GRADES.



VERSION TWO:
READ(SSNO);
WHILE NOT EOF DO
BEGIN
GETLETGRADE(AVERAGE,LETGRADE);
WRITELN(SSNO,LETGRADE); READ(SSNO);
END



FUNCTION AVERAGE : INTEGER;
CONST
NOGRADES = 6;
FUNCTION SUM : INTEGER;
VAR GRADE, COUNT, TSUM : INTEGER;
BEGIN
TSUM := 0;
COUNT := 0;
REPEAT
READ(GRADE);
TSUM := TSUM + GRADE;
COUNT := COUNT + 1;
UNTIL COUNT = NOGRADES;
SUM := TSUM;
END;
BEGIN
AVERAGE := SUM DIV NOGRADES;
END;



VERSION THREE:
READ(SSNO);
WHILE NOT EOF DO
BEGIN
WRITELN( SSNO, LETGRADE( AVERAGE ) );
READ(SSNO);
END;

AND PROCEDURE GETLETGRADE BECOMES

FUNCTION LETGRADE( NUMGRADE : INTEGER ) : CHAR;
THE BODY OF THE FUNCTION IS EXACTLY LIKE THE PROCEDURE GETLETGRADE



SUMMARIZE
TWO KINDS OF SUBPROGRAMS:
FUNCTIONS
SEND BACK A VALUE
HAVE TYPE
PARAMETERS SHOULD ALL BE VALUE PARAMETERS
PROCEDURES
MORE GENERAL PURPOSE
MAY HAVE NONE, ONE, OR MORE VALUES TO SEND BACK TO CALLING PROGRAM



SOMETHINGS YOU KNOW BUT DON'T KNOW YOU KNOW

PASCAL HAS SOME BUILT-IN FUNCTION AND PROCEDURES
EOF is a boolean function
READ, READLN are procedures
WRITE, WRITELN are procedures



RECAP SUMMARY
PROBLEM
GENERAL SOLUTION
TOP DOWN DESIGN
SPECIFIC SOLUTION
PASCAL PROGRAM
PASCAL
CONST, VAR, INTEGER, CHAR
WHILE, IF-THEN, IF-THEN-ELSE, REPEAT-UNTIL
PROCEDURE, FUNCTION
BEGIN, END