11
statement = [ assignment | ProcedureCall |
WhileStatement | RepeatStatement | ForStatement |
IfStatement | ReturnStatement ].
Several of these forms are structured statements, i.e. some of their components may be statements again.
Hence, the definition of statement is, like that of expressions, recursive.
The most basic structure is the sequence. A computation is a sequence of actions, where each action is
specified by a statement, and is executed after the preceding action is completed. This strict sequentiality
in time is an essential assumption of sequential programming. If a statement S1 follows S0, then we
indicate this sequentiality by a semicolon
S0; S1
This statement separator (not terminator) indicates that the action specified by S0 is to be followed
immediately by the action corresponding to S1. A sequence of statements is syntactically defined as
StatementSequence = statement {";" statement}.
The syntax of statements implies that a statement may consist of no symbols at all. In this case, the
statement is said to be empty and evidently denotes the null action. This curiosity among statements has a
definite reason: it allows semicolons to be inserted at places where they are actually superfluous, such as
at the end of a statement sequence.
6. Control Structures
It is a prime characteristic of computers that individual actions can be selected, repeated, or performed
conditionally depending on some previously computed results. Hence the sequence of actions performed
is not always identical with the sequence of their corresponding statements. The sequence of actions is
determined by control structures indicating repetition, selection, or conditional execution of given
statements.
6.1 Repetitive Statements
The most common situation is the repetition of a statement or statement sequence under control of a
condition: the repetition continues as long as the condition is met. This is expressed by the while
statement. Its syntax is
WhileStatement = "WHILE" expression "DO" StatementSequence "END".
and its corresponding action is
1. Evaluate the condition which takes the form of an expression yielding the value TRUE or FALSE,
2. If the value is TRUE, execute the statement sequence and then repeat with step 1; if the value is
FALSE, terminate.
The expression is of type BOOLEAN. This will be further discussed in the chapter on data types. Here it
suffices to know that a simple comparison is a Boolean expression. An example was given in the
introductory example, where repetition terminates when the two comparands have become equal. Further
examples involving while statements are:
1. Initially, let q = 0 and r = x; then count the number of times y can be subtracted from x, i.e. compute
the quotient q = x DIV y, and remainder r = x MOD y, if x and y are natural numbers.
WHILE r >= y DO r := r-y; q := q+1 END
2. Initially, let z = 1 and i = k; then multiply z k times by x, i.e. compute z = x^k, if z and k are natural
numbers:
WHILE i > 0 DO z := z*x; i := i-1 END
When dealing with repetitions, it is important to remember the following points:
1. During each repetition, progress must be made towards meeting the goal, namely "getting closer" to
satisfying the termination condition. An obvious corollary is that the condition must be somehow
affected from within the repeated computation. The following statements are either incorrect or
dependent on some critical precondition as stated.