Chapter 7 Overheads

PROBLEM : READ IN THREE NUMBERS AND PRINT THEM OUT IN ASCENDING ORDER.

TOP DOWN DESIGN
INPUT : THREE INTEGER NUMBERS
OUTPUT : THREE INTEGER NUMBERS IN ASCENDING ORDER

LEVEL 0:
GET NUMBERS
ORDER NUMBERS
PRINT NUMBERS



LEVEL 1:
GET NUMBERS
READ( FIRST, SECOND, THIRD )
PRINT NUMBERS
WRITELN( FIRST, SECOND, THIRD )
ORDER NUMBERS
IF FIRST > SECOND
THEN EXCHANGE FIRST & SECOND
IF FIRST > THIRD
THEN EXCHANGE FIRST & THIRD
IF SECOND > THIRD
THEN EXCHANGE SECOND & THIRD



LEVEL 2 :
EXCHANGE FIRST & SECOND
PUT FIRST IN A TEMPORARY PLACE
PUT SECOND INTO FIRST
PUT TEMPORARY PLACE INTO SECOND
EXCHANGE FIRST & THIRD
PUT FIRST IN A TEMPORARY PLACE
PUT THIRD INTO FIRST
PUT TEMPORARY PLACE INTO THIRD
EXCHANGE SECOND & THIRD
PUT SECOND IN A TEMPORARY PLACE
PUT THIRD INTO FIRST
PUT TEMPORARY PLACE INTO THIRD



PROGRAM ORDER(INPUT,OUTPUT);
VAR
FIRST, SECOND, THIRD : INTEGER;
PROCEDURE EXCHANGE(VAR ONE, TWO : INTEGERE);
VAR
TEMP : INTEGER;
BEGIN
TEMP := 0NE;
ONE := TWO;
TWO := TEMP;
END;

BEGIN
READ(FIRST, SECOND, THIRD);
IF FIRST > SECOND THEN EXCHANGE(FIRST,SECOND);
IF FIRST > THIRD THEN EXCHANGE(FIRST,THIRD);
IF SECOND > THIRD THEN EXCHANGE(SECOND,THIRD);
WRITELN(FIRST,SECOND,THIRD)
END.



PROCEDURE EXCHANGE(VAR ONE, TWO : INTEGER)
  1. EXCHANGE(FIRST, SECOND)
  2. EXCHANGE(FIRST, THIRD)
  3. EXCHANGE(SECOND, THIRD)
PASSING PARAMETERS OR ARUMENTS BY ADDRESS OR REFERANCE

THE CALLING PROGRAM ACTUALLY GIVES THE PROCEDURE THE CELL NUMBER OR ADDRESS



THE SECOND WAY TO PASS PARAMETERS OR ARGUMENTS IS BY VALUE i.e. A COPY OF THE VARIABLE OR CONSTANT IS PASSED TO THE PROCEDURE. THE ACTUAL LOCATION CANNOT BE CHANGED BY THE PROCEDURE, BECAUSE IT ONLY HAS A COPY.
---------------------
PROCEDURE EXCHANGE( ONE, TWO : INTEGER)
IF THE VAR IS LEFT OFF, THE ARGUMENTS ARE PASSED BY VALUE.
WOULD THIS CHANGE THE PREVIOUS PROGRAM?



WHAT ABOUT LAST WEEK'S PROCEDURES ?

PROCEDURE GETAVEGRADE( AVERAGE : INTEGER ) ?

PROCEDURE GETLETGRADE( AVERAGE : INTEGER, LETGRADE : CHAR ) ?

WHAT ARE THE RULES ??
INPUT PARAMETERS : VALUE PARAMETERS
OUTPUT PARAMETERS : VAR PARAMETERS
INPUT/ OUTPUT PARAMETERS : VAR PARAMETERS