Remove ads
Aus Wikipedia, der freien Enzyklopädie
WHILE-Programme spielen in der Theoretischen Informatik eine Rolle, insbesondere in Zusammenhang mit Berechenbarkeit.
WHILE-Programme haben folgende Syntax in modifizierter Backus-Naur-Form:
Auf das LOOP-Konstrukt in dieser Definition kann auch verzichtet werden, ohne dass die Menge der WHILE-berechenbaren Funktionen kleiner wird. Schließlich kann jeder LOOP-Ausdruck durch ein WHILE emuliert werden. Allerdings hat ein Verzicht auf das LOOP zur Folge, dass nicht mehr alle WHILE-Programme in Kleenesche Normalform gebracht werden können.
Ein WHILE-Programm P besteht aus den Symbolen WHILE, LOOP, DO, END, :=, +, -, ;, , einer Anzahl Variablen sowie beliebigen Konstanten c.
Es sind nur vier verschiedene Anweisungen erlaubt, nämlich
Zu beachten ist, dass bei LOOP eine Änderung des Variablenwertes im zu wiederholenden Teilprogramm keine Auswirkung auf die Anzahl der Wiederholungen dieses Teilprogramms hat.
Die Anweisungen sind für sich genommen bereits vollständige WHILE-Programme. Des Weiteren ist die
wieder ein WHILE-Programm.
Jede WHILE-berechenbare Funktion ist GOTO-berechenbar und umgekehrt sowie turingberechenbar.
Mit wird ferner die Menge aller WHILE-Programme gemäß obiger Definition bezeichnet.
Jede WHILE-berechenbare Funktion kann durch ein WHILE-Programm mit nur einer WHILE-Schleife berechnet werden.
Beweis: Sei ein beliebiges WHILE-Programm. Wir formen zunächst, wie im Abschnitt „Simulation durch GOTO-Programme“ dieses Artikels beschrieben, um, um ein äquivalentes GOTO-Programm zu erhalten. Anschließend formen wir den Anweisungen im Abschnitt „Simulation durch WHILE-Programm“ im Artikel GOTO-Programm folgend in ein äquivalentes WHILE-Programm um. Hierbei ist zu beachten, dass die für diese Konstruktion notwendigen IF THEN END Anweisungen durch LOOPs simuliert werden können. Per Konstruktion hat nur eine WHILE-Schleife.
Die einfach beweisbare Tatsache, dass jedes GOTO-Programm in ein WHILE-Programm überführt werden kann und umgekehrt, hat zur Konsequenz, dass man beweisen kann, dass ein beliebiges Pascal-Programm die gleichen Leistungen erbringen kann wie ein beliebiges BASIC-Programm. Außerdem zeigt sie, dass man jedes Programm auch strukturiert programmieren kann, ohne „Spaghetticode“ zu erzeugen.
Ein jedes WHILE-Programm
kann durch das folgende GOTO-Programm simuliert werden:
M1: IF x2 = 0 THEN GOTO M2; P; GOTO M1; M2: ...
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.