Using the structured programming approach, an initial solution to a problem statement can be expressed as a sequence of high-level steps. Subsequently, these high-level steps are iteratively decomposed into a sequence of low-level instructions. These high-level steps are therefore 'abstractions' of the set of low-level instructions. A function is similar. It represents a high-level step which can be decomposed into a sequence of low-level instructions. Thus, for example in the Robot programming exercise discussed earlier, the turn_right instruction may be viewed as procedural abstraction, which is decomposed into a sequence of three turnleft instructions...
BEGINNING-OF-PROGRAM
DEFINE-NEW-INSTRUCTION turnright AS
BEGIN
turnleft;
turnleft;
turnleft;
END
BEGINNING-OF-EXECUTION
move;
turnleft;
move;
turnright;
pickbeeper;
turnoff;
END-OF-EXECUTION
END-OF-PROGRAM
Similarly, other high-level instructions created using the
DEFINE-NEW-INSTRUCTION keyword may be viewed as procedural
abstractions.