Chapter 4 Overheads


Problem

What letter grade did I make in my history class given the following grading scheme:
2 Exams (maximum of 50 points on each), drop the lower grade
1 Final exam (maximum of 50 points)
100 is total possible points
Number Grade
90+
80 - 89
67 - 69
55 - 66
below 55
Letter Grade
A
B
C
D
F
Understand the Problem?
TOP DOWN DESIGN:
INPUT: THREE GRADES (exam1, exam2, final)
OUTPUT: A LETTER GRADE

LEVEL 0:
GET GRADES
COMPUTE NUMERIC GRADE (numgrade)
ASSIGN LETTER GRADE (letgrade)
PRINT LETTER GRADE

LEVEL 1:
GET GRADES
READ( exam1, exam2, final )
COMPUTE NUMERIC GRADE
GET MAXIMUM EXAM GRADE
ADD FINAL GRADE
ASSIGN LETTER GRADE
IF numgrade in 90 or better,
THEN letgrade is A.
IF numgrade is between 80 and 89,
THEN letgrade is B.
IF numgrade in between 67 and 79,
THEN letgrade is C.
IF numgrade in between 55 and 66,
THEN letgrade is D.
IF numgrade in less than 55,
THEN letgrade is F.
PRINT LETTER GRADE

LEVEL 2:
GET MAXIMUM EXAM GRADE
IF exam1 is greater than exam2,
THEN maximum is exam1
OTHERWISE maximum is exam2
ADD FINAL GRADE
numgrade is maximum + final


CONTROL STRUCTURE
IF (logical exp. is true)
THEN statement1
ELSE statement2

PROGRAM GRADE(INPUT,OUTPUT);

VAR
EXAM1, EXAM2, FINAL, NUMGRADE : INTEGER;
LETGRADE : CHAR;

BEGIN
READ(EXAM1,EXAM2,FINAL);
IF EXAM1 >= EXAM2
THEN NUMGRADE := EXAM1 + FINAL
ELSE NUMGRADE := EXAM2 + FINAL;
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'
WRITELN('YOUR GRADE IS ', LETGRADE)
END.

ALTERNATE TOP DOWN DESIGN

LEVEL 0:
GET GRADES
COMPUTE NUMERIC GRADE
PRINT LETTER GRADE

LEVEL 1:
IF NUMGRADE >= 90 THEN WRITE(' A')
ELSE IF NUMGRADE >= 80 THEN WRITE(' B')
ELSE IF NUMGRADE >= 67 THEN WRITE(' C')
ELSE IF NUMGRADE >= 55
THEN WRITE(' D')
ELSE WRITE(' F')


SUMMARIZE
PHYSICAL ORDER
LOGICAL ORDER
BOOLEAN EXPRESSION
TRUE
FALSE
IDENTIFIER <
>
<=
>=
=
not =
IDENTIFIER
IF BOOLEAN EXPRESSION
THEN statement1
ELSE statement2
TYPE: INTEGER & CHAR