LOOP-Programm

Programm in der Programmiersprache LOOP
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 21. Juni 2011 um 09:37 Uhr durch Brovning (Diskussion | Beiträge) (Die abkürzende Schreibweise der Zuweisung wurde im Beispiel der Addition verwendet, jedoch zuvor nicht eingeführt.). Sie kann sich erheblich von der aktuellen Version unterscheiden.

LOOP-Programme sind Programme in der Programmiersprache LOOP, einer stark eingeschränkten, modellhaften Sprache, die nur die Formulierung von Additionen, Wertzuweisungen und endlich oft durchlaufenen Schleifen erlaubt. LOOP-Programme spielen in der Theoretischen Informatik eine Rolle, insbesondere in Zusammenhang mit Berechenbarkeit. Eine Funktion heißt LOOP-berechenbar, wenn sie sich als LOOP-Programm formulieren lässt. Die Menge aller LOOP-Programme wird mit bezeichnet.

Eigenschaften

Jede primitiv-rekursive Funktion ist LOOP-berechenbar und umgekehrt[1].

Im Unterschied zu GOTO-Programmen und WHILE-Programmen terminieren LOOP-Programme immer[2]. Deswegen ist die Menge der durch LOOP-Programme berechenbaren Funktionen eine echte Untermenge der berechenbaren Funktionen (und damit eine Untermenge der durch WHILE- bzw. GOTO-Programme berechenbaren Funktionen)[3].

Ein Beispiel für eine berechenbare, aber nicht LOOP-berechenbare totale Funktion ist die Ackermann-Funktion[4].

Formale Definition

Syntax

LOOP-Programme bestehen aus den Symbolen LOOP, DO, END, :=, +, - und ; sowie einer beliebigen Anzahl von Variablen und Konstanten. LOOP-Programme haben folgende Syntax in modifizierter Backus-Naur-Form:

 

Hierbei sind   Variablennamen und   Konstanten.

Semantik

Ein Ausdruck der Form

x0 := x1 + c

bedeutet die Zuweisung des um   erhöhten Wertes der Variablen   an die Variable  . Dabei ist für   der Wert Null zulässig, so dass sich auch die direkte Zuweisung des Wertes einer Variablen an eine andere Variable mit diesem syntaktischen Konstrukt formulieren lässt:

x0 := x1 + 0

Ein Ausdruck der Form

x0 := x1 - c

bedeutet die Zuweisung des um   verminderten Wertes der Variablen   an die Variable  . Bei der Ausführung von Zuweisungen werden negative Werte implizit durch Nullen ersetzt.

Variablen dürfen in Zuweisungsausdrücken gleichzeitig auf der linken und auf der rechten Seite des Symbols := erscheinen. Ein Ausdruck der Form

x := x + c

erhöht beispielsweise den Wert der Variablen   um  .

Die in einem LOOP-Programm verwendeten Variablen werden vor Beginn des Programmablaufs mit vorgegeben Initialwerten vorbelegt.

Ein Ausdruck der Form

P1; P2

bedeutet die Hintereinanderausführung der Teilprogramme   und   in dieser Reihenfolge. Ein Ausdruck der Form

LOOP x DO P END

bedeutet die  -fache Ausführung des Teilprogramms  , wobei   den Wert am Beginn der Abarbeitung darstellt. (Auch wenn   durch die Ausführung von   verändert wird, wird   nur so oft ausgeführt, wie   am Anfang war.) Hat   dabei den Wert Null, so wird das Teilprogramm   innerhalb des LOOP-Ausdrucks überhaupt nicht ausgeführt. Dieser Umstand erlaubt die Formulierung von Verzweigungen in LOOP-Programmen durch die bedingte Ausführung von Teilprogrammen in Abhängigkeit vom Wert einer Variablen.

Beispielprogramme

Zuweisung

Das folgende LOOP-Programm weist der Variablen   den Wert der Variablen   zu.

LOOP x0 DO
   x0 := x0 - 1
END
LOOP x1 DO
   x0 := x0 + 1
END

Dabei wird   zunächst der Wert 0 zugewiesen (um den Wert von   dekrementiert) und wird dann um den Wert von   inkrementiert.

Dieses Programm lässt sich als Unterprogramm in anderen LOOP-Programmen verwenden. Solche Verwendungen werden durch eine einfache Erweiterung der ursprünglichen LOOP-Syntax in der Form

x0 := x1

beschrieben.

Addition

Das folgende LOOP-Programm weist der Variablen   die Summe der Werte der Variablen   und   zu.

x0 := x1
LOOP x2 DO
   x0 := x0 + 1
END

Dabei bekommt zunächst   den aktuellen Wert von   zugewiesen und wird dann um den Wert von   inkrementiert.

Dieses Programm lässt sich als Unterprogramm in anderen LOOP-Programmen verwenden. Solche Verwendungen werden durch eine einfache Erweiterung der ursprünglichen LOOP-Syntax in der Form

x0 := x1 + x2

beschrieben.

Multiplikation

Das folgende LOOP-Programm erhöht den Wert der Variablen   um den Wert des Produktes der Werte der Variablen   und  .

LOOP x1 DO
  x0 := x0 + x2
END

Das Programm benutzt dabei das im ersten Beispiel definierte Unterprogramm der Addition. Die ausgeführte Multiplikation wird dabei durch das  -fache Aufaddieren des Wertes von   zum Wert von   realisiert.

Simulation von LOOP-Programmen durch WHILE-Programm

Ein jedes LOOP-Programm

LOOP x DO P END

kann durch das folgende WHILE-Programm simuliert werden

y := x
WHILE y != 0 DO y := y-1; P END

Siehe auch

Einzelnachweise

  1. Schöning, 2001, S. 113
  2. Schöning, 2001, S. 101
  3. Schöning, 2001, S. 122
  4. Schöning, 2001, S. 102, S. 120

Literatur

  • Uwe Schöning: Theoretische Informatik - kurzgefasst. 4. Auflage. Spektrum Akademischer Verlag, 2001, ISBN 3-8274-1099-1.