Control Flow as Graph — 5. Repetition

Control Flow as Graph is a sequence consisting of the following 5 notional machines:
1. Sequence
2. Selection
3. Multi-Way Selection
4. Short-Circuit
5. Repetition

Programming Language

imperative / Java

Form

Representation

Attribution — Origin / Source

Collected by Matthias Hauswirth — Compilers (control-flow graphs) and flow charts

Conceptual Advantage

Understand concept of repetition from structured programming (loops like while, do-while, or for), where a given statement can be executed multiple times, by simply following the arrows through the cycle.

Mapping

PLNM
... ...
back edge arrow pointing to a node that came prior in the flow (introducing a cycle)
while-, do-while-, for-loop cycle in the graph

Draws Attention To

The idea of a 'repetition' in structured programming, where control-flow leads to statements getting executed multiple times

Use When

When introducing while-, do-while-, and for-loops

Cost

Requires prior introduction of 'Selection'.

Details

This is the last in a sequence of "Control Flow as Graph" notional machines:

  1. Sequence
  2. Selection
  3. Multi-Way Selection
  4. Short-Circuit
  5. Repetition

The following video Matthias Hauswirth uses the "Control Flow as Graph" notional machine in his "Programming Fundamentals 2" Bachelor course to explain for-loops in Java:

More Information

This notional machine is implemented by the Informa Clicker tool. This tool allows students in a classroom to construct control flow graphs in in-class clicker exercises.

Check this research paper

Matthias Hauswirth and Andrea Adamoli
Solve & Evaluate with Informa: A Java-based Classroom Response System for Teaching Java
PPPJ '09

Comments or Feedback?

Do you have feedback on this notional machine? Did you find a mistake, or do you have a request for improvement? You can create an Issue on GitHub, where the description is hosted. This way we can see your feedback and address it.

For this, you need a GitHub account. Then follow this link to see the source file of this page. In there, click the ... left of the highlighted line, then pick "Reference in a new issue".

Create an Issue on GitHub