Kontrollstruktur

Kontrollstruktur

Kontrollstrukturen (Steuerkonstrukte) werden in imperativen Programmiersprachen verwendet, um den Ablauf eines Computerprogramms zu steuern. Eine Kontrollstruktur gehört entweder zur Gruppe der Verzweigungen oder der Schleifen. Meist wird ihre Ausführung über logische Ausdrücke der booleschen Algebra beeinflusst. Kontrollstrukturen können über spezielle Diagramme visualisiert werden (z. B. Nassi-Shneiderman-Diagramme).

Inhaltsverzeichnis

Geschichte

In den frühen 60er-Jahren waren Flussdiagramme und Sprunganweisungen in Programmen üblich, was größere Programme nahezu unwartbar machte, da sie schnell unüberschaubar wurden.

Im Mai 1966 publizierten Böhm und Jacopini in der Zeitschrift Communications of the ACM einen Artikel, in dem sie zeigten, dass jedes Programm, das Goto-Anweisungen enthält, in ein Goto-freies Programm umgeschrieben werden kann, das nur mit Verzweigung (IF THEN ELSE) und einer Schleife (WHILE <Bedingung> DO <Anweisung>) arbeitet, gegebenenfalls unter Zuhilfenahme von etwas Code-Doppelung und der Einführung von booleschen Variablen (true/false).

Anfang der 70er Jahre wurde damit begonnen, diesen Ansatz zur Selbstbeschränkung auf wenige, typische Elemente umzusetzen. Wegweisend war die Arbeit von Niklaus Wirth mit seiner Programmiersprache Pascal.


Konzept anhand eines Beispiels

Ohne Kontrollstrukturen müssen Wiederholungen und Bedingungen durch Sprünge (GOTO, IF ... GOTO – englisch: springen zu, Wenn ... springen zu) realisiert werden. Die Ausgabe der Zahlen von 1 bis 100, jedoch ohne den Bereich 40 bis 60, wird ohne Kontrollstruktur etwa so realisiert (in Anlehnung an die Programmiersprache BASIC)

    I := 1
M1: PRINT I             -- Ausgabe von I
    IF I=39 GOTO M2     -- Wenn ... springen (bedingte Ausführung)
    I := I+1
    IF I<= 100 GOTO M1  -- Wenn ... springen (wiederholte Ausführung)
    END                 -- Programmende
M2: I := 61
    GOTO M1             -- Sprung nach M1

Unstrukturiertes Programm: Ausgabe der Zahlen 1,2,..,39,61,62,63,...,99,100


Die Verwendung von Kontrollstrukturen ist auch Bestandteil der strukturierten Programmierung. Jede Kontrollstruktur besteht wenigstens aus einem Anfangs- und meistens einem Endeschlüsselwort. Sprachen wie Pascal, C, Modula-2 (und auch neuere Varianten der Sprache BASIC) verfügen über Kontrollstrukuren für Wiederholungen

    REPEAT
      Anweisungen
    UNTIL Bedingung

und bedingte Ausführung von Anweisungen:

    IF Bedingung THEN
       Anweisungen
    ELSE
       Anweisungen
    ENDIF

Die Schlüsselwörter rahmen dabei die Anweisungen ein, die mehrfach oder bedingt ausgeführt werden. Die obenstehende Programmieraufgabe kann dann folgendermaßen realisiert werden:

    I := 1
    REPEAT              -- Wiederhole
       PRINT I
       IF I=39 THEN     --    Wenn .. Dann
          I := 61
       ELSE             --    Sonst
          I := I+1
       ENDIF            --    EndeWenn
    UNTIL I>100         -- bis 
    END                 -- Programmende

Strukturiertes Programm: Ausgabe der Zahlen 1,2,..,39,61,62,63,...,99,100

Das Programm erhält eine Struktur. Meist wird diese durch Einrückungen noch verdeutlicht. Die neuen Schlüsselwörter und die Formatierung erleichtern das Verständnis des Programmcodes.

Vermeidung von Goto

Kontrollstrukturen helfen Sprünge mit Goto zu vermeiden, da fast jede Programmieraufgabe mit Hilfe von Bedingungs- und Wiederholungsstrukturen gelöst werden kann. Programmierung ohne Goto unter Verwendung einer modernen Sprache ist heute der Normalfall. Die Programmiersprache Java unterstützt z. B. keine Goto-Anweisung mehr.

Dabei wird auf einige der Freiheiten verzichtet. Im obenstehenden Beispiel wird bei I=39 in der strukturierten Variante trotzdem noch I>100 abgefragt, obwohl dies eigentlich nicht notwendig ist. Ein optimierender Compiler könnte dies zwar korrigieren, ist aber wohl nicht in allen Fällen in der Lage, solche Feinheiten zu erkennen.

Die Verwendung von Kontrollstrukturen verhindert das Entstehen von Quelltext, bei dem auf unübersichtliche Weise hin- und hergesprungen wird. Die folgenden Merkmale kennzeichnen ein Programm bei Verwendung von Kontrollstrukturen:

  • Anweisungen, die wiederholt werden, sind durch Schlüsselwörter klar gekennzeichnet
  • Bedingungen und Wiederholungen sind sofort erkennbar
  • Vermeidung von Goto und Sprungmarken

Flussdiagramme und Struktogramme

Flussdiagramme dienen der grafischen Wiedergabe des Programmflusses. Sie besitzen dieselben Freiheiten, die Goto im Programmcode bietet. 1972 hatten I. Nassi und B. Shneiderman die Idee, Flussdiagramme durch Struktogramme zu ersetzen, bei denen Kontrollstrukturen durch grafische Elemente dargestellt werden, den Nassi-Shneiderman-Diagrammen. Struktogramme lassen sich dann in strukturierten Programmcode umsetzen.

Der unstrukturierte Code zur Ausgabe der Zahlen 1 bis 39 und 61 bis 100 lässt sich durch ein Flussdiagramm wiedergeben:

Flussdiagramm (Programmablaufplan).png
Flussdiagramm des unstrukturierten Programms
Ausgabe der Zahlen 1,2,...,39,61,62,...,100

Auch der strukturierte Code ließe sich durch ein ähnliches Diagramm darstellen, zusätzlich jedoch durch ein Struktogramm

Struktogramm.png
Struktogramm des strukturierten Programms
Ausgabe der Zahlen 1,2,...,39,61,62,...,100

Siehe auch


Wikimedia Foundation.

Игры ⚽ Поможем написать курсовую

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Kontrollstruktur —   [eigentlich falsche Übersetzung des engl. control structure »Steuerstruktur«], wesentliches Element zur Strukturierung von Computerprogrammen. Eine Kontrollstruktur regelt, in welcher Abfolge die im Quelltext aufgeführten Befehle abgearbeitet… …   Universal-Lexikon

  • Kontrollstruktur — ⇡ Steuerkonstrukt …   Lexikon der Economics

  • Kontrollstruktur — Kon|troll|struk|tur die; , en: Schema, das in bestimmten Programmiersprachen die Reihenfolge der Abarbeitung von Anweisungen festlegt (EDV) …   Das große Fremdwörterbuch

  • Steuerkonstrukt — Kontrollstruktur. 1. Begriff: Eine Konstruktion zur Steuerung des Ablaufs in einem ⇡ Algorithmus oder ⇡ Programm. Begriff wird v.a. in der ⇡ strukturierten Programmierung verwendet; mit St. wird die Reihenfolge festgelegt, in der die ⇡… …   Lexikon der Economics

  • Kontrollanweisung — Kontrollstrukturen (Steuerkonstrukte) werden in imperativen Programmiersprachen verwendet, um den Ablauf eines Computerprogramms zu steuern. Eine Kontrollstruktur gehört entweder zur Gruppe der Verzweigungen oder der Schleifen. Meist wird ihre… …   Deutsch Wikipedia

  • Do-while-Schleife — In den meisten imperativen Programmiersprachen gibt es eine Kontrollstruktur namens Do while Schleife, die es ermöglicht, dass abhängig von einer gegebenen Booleschen Bedingung ein Codeabschnitt wiederholt ausgeführt wird. Das Do while Konstrukt… …   Deutsch Wikipedia

  • ECMAScript — JavaScript ist eine Skriptsprache, die hauptsächlich für das DOM Scripting in Web Browsern eingesetzt wird. Dabei ist unter JavaScript die Gesamtheit aus den Eigenschaften des Browsers (beziehungsweise Clients oder Scripting Hosts) sowie des… …   Deutsch Wikipedia

  • For-Next-Schleife — Viele Programmiersprachen definieren eine For Schleife als eine Kontrollstruktur, mit der man eine Gruppe von Anweisungen (Block) mit einer bestimmten Anzahl von Wiederholungen ausführen kann. Die Definition, wie eine For Schleife auszusehen hat… …   Deutsch Wikipedia

  • Foreach — Viele Programmiersprachen definieren eine For Schleife als eine Kontrollstruktur, mit der man eine Gruppe von Anweisungen (Block) mit einer bestimmten Anzahl von Wiederholungen ausführen kann. Die Definition, wie eine For Schleife auszusehen hat… …   Deutsch Wikipedia

  • Foreach-Schleife — Viele Programmiersprachen definieren eine For Schleife als eine Kontrollstruktur, mit der man eine Gruppe von Anweisungen (Block) mit einer bestimmten Anzahl von Wiederholungen ausführen kann. Die Definition, wie eine For Schleife auszusehen hat… …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”