Chapter 6 Overheads

PROBLEM : PRINT OUT A LIST OF THE SOCIAL SECURITY NUMBERS AND LETTER GRADES OF THE STUDENTS IN YOUR CS CLASS.

THE GRADE SCHEME IS AS FOLLOWS :

THE NUMBER GRADE IS THE AVERAGE OF THE SIX TEST GRADES.

NUMBER GRADE

90 +
80 - 89
67 - 79
55 - 66
below 55
LETTER GRADE

A
B
C
D
F
UNDERSTAND THE PROBLEM?


TOP DOWN DESIGN

INPUT : SOCIAL SECURITY NUMBER (ssno)
SIX TEST GRADES
OUTPUT : SOCIAL SECURITY NBUMBER
LETTER GRADE (letgrade)
LEVEL 0:
WHILE MORE STUDENTS
GET SOCIAL SECURITY NUMBER
GET AVERAGE (average)
GET LETTER GRADE
PRINT SOCIAL SECURITY, LETTER GRADE



LEVEL 1:
GET AVERAGE
WHILE MORE GRADES
GET GRADE (grade)
ADD TO SUM (sum)
COMPUTE AVERAGE (average)
GET LETTERGRADE
IF numgrade >= 90,
THEN letgrade is A etc.
LEVEL 2:
WE HAVE DONE THIS ALL BEFORE!



PROGRAM LETGRADES(INPUT,OUTPUT);

VAR
AVERAGE, SSNO : INTEGER;

LETGRADE : CHAR;
.
. (* procedures go here *)
.
.
BEGIN
READ(SSNO);
WHILE NOT EOF DO
BEGIN
GETAVERAGE(AVERAGE);
GETLETGRADE(AVERAGE, LETGRADE);
WRITELN( SSNO, LETGRADE );
READ(SSNO)
END
END.



PROCEDURE GETAVERAGE(VAR AVERAGE:INTEGER);
CONST
NOGRADES = 6;

VAR
SUM, GRADE, COUNT : INTEGER;

BEGIN
SUM := 0;
COUNT := 0;
WHILE COUNT < NOGRADES DO
BEGIN
READ(GRADES);
SUM := SUM + GRADE;
COUNT := COUNT + 1
END;
AVERAGE := SUM DIV NOGRADES
END;



PROCEDURE GETLETGRADE(VAR NUMGRADE : INTEGER, VAR LETGRADE : CHAR );
BEGIN
IF NUMGRADE >= 90 THEN LETGRADE := 'A'
ELSE IF NUMGRADE >= 80 THEN LETGRADE := 'B'
ELSE IF NUMGRADE >= 67 THEN LETGRADE := 'C'
ELSE IF NUMGRADE >= 55 THEN LETGRADE := 'D'
ELSE LETGRADE := 'F'
END



PROGRAM LETGRADES(INPUT,OUTPUT);
VAR
AVERAGE, SSNO : INTEGER;
LETGRADE : CHAR
PROCEDURE GETAVERAGE(VAR AVERAGE:INTEGER);
CONST
NOGRADES = 6;

VAR
SUM, GRADE, COUNT : INTEGER;

BEGIN
.
.
.
END;
PROCEDURE GETLETGRADE(VAR NUMGRADE : INTEGER, VAR LETGRADE : CHAR );
BEGIN
.
.
.
END;
BEGIN
MAIN PROGRAM
END.



PROCEDURE GETAVERAGE(VAR AVERAGE : INTEGERE)

GETAVERAGE(AVERAGE)

PROCEDURE GETLETGRADE(VAR NUMGRADE : INTEGER; VAR LETGRADE : CHAR)

GETLETGRADE(AVERAGE, LETGRADE)



CONTROL STRUCTURES
WHILE MORE STUDENTS
WHILE NOT EOF DO
BEGIN

END
WHILE MORE GRADES DO
WHILE number of grades < 6 DO
BEGIN

END



SUMMARIZE
PROCEDURES
DEFINE
PROCEDURE NAME(VAR ID1, ID2 : INTEGER)

CONST
VAR
BEGIN
END
USE
NAME(ID1, ID2)