Control Flow

In computer science, control flow (or alternatively, flow of control) refers to the order in which the individual statements, instructions or function calls of an imperative or a declarative program are executed or evaluated.

Within an imperative programming language, a control flow statement is a statement whose execution results in a choice being made as to which of two or more paths should be followed. For non-strict functional languages, functions and language constructs exist to achieve the same result, but they are not necessarily called control flow statements.

The kinds of control flow statements supported by different languages vary, but can be categorized by their effect:

  • continuation at a different statement (unconditional branch or jump),
  • executing a set of statements only if some condition is met (choice - i.e., conditional branch),
  • executing a set of statements zero or more times, until some condition is met (i.e., loop - the same as conditional branch),
  • executing a set of distant statements, after which the flow of control usually returns (subroutines, coroutines, and continuations),
  • stopping the program, preventing any further execution (unconditional halt).

Interrupts and signals are low-level mechanisms that can alter the flow of control in a way similar to a subroutine, but usually occur as a response to some external stimulus or event (that can occur asynchronously), rather than execution of an 'in-line' control flow statement. Self-modifying code can also be used to affect control flow through its side effects, but does not usually involve an explicit control flow statement (an exception being the ALTER verb in COBOL).

At the level of machine or assembly language, control flow instructions usually work by altering the program counter. For some CPUs the only control flow instructions available are conditional or unconditional branch instructions (also called jumps).

Read more about Control Flow:  Minimal Structured Control Flow, Control Structures in Practice, Loops, Loop Sublanguage, Structured Non-local Control Flow, Proposed Control Structures

Famous quotes containing the words control and/or flow:

    “Have we any control over being born?,” my friend asked in despair. “No, the job is done for us while we’re sleeping, so to speak, and when we wake up everything is all set. We merely appear, like an ornate celebrity wheeled out in a wheelchair.” “I don’t remember,” my friend claimed. “No need to,” I said: “what need have us free-loaders for any special alertness? We’re done for.”
    Marvin Cohen, U.S. author and humorist. The Self-Devoted Friend, New Directions (1967)

    And if blood of Martyrs is to flow on the steps
    We must first build the steps;
    And if the Temple is to be cast down
    We must first build the Temple.
    —T.S. (Thomas Stearns)