<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=WHILE-Programm</id>
	<title>WHILE-Programm - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=WHILE-Programm"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=WHILE-Programm&amp;action=history"/>
	<updated>2026-05-20T03:16:32Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=WHILE-Programm&amp;diff=65037&amp;oldid=prev</id>
		<title>217.61.192.163: ,</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=WHILE-Programm&amp;diff=65037&amp;oldid=prev"/>
		<updated>2023-07-23T09:38:30Z</updated>

		<summary type="html">&lt;p&gt;,&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;WHILE-Programme&amp;#039;&amp;#039;&amp;#039; spielen in der [[Theoretische Informatik|Theoretischen Informatik]] eine Rolle, insbesondere in Zusammenhang mit [[Berechenbarkeit]].&lt;br /&gt;
&lt;br /&gt;
== Eigenschaften ==&lt;br /&gt;
* [[Random Access Machine|RAM-berechenbar]], [[Turing-Berechenbarkeit|Turing-berechenbar]], [[GOTO-Programm|GOTO-berechenbar]] und WHILE-berechenbar sind äquivalent&lt;br /&gt;
* [[LOOP-Programm|LOOP-berechenbar]] &amp;lt;math&amp;gt; \varsubsetneq &amp;lt;/math&amp;gt; WHILE-berechenbar&lt;br /&gt;
* [[Kleenesche Normalform]] (Jedes WHILE-Programm kommt auch nur mit einer [[While-Schleife]] aus)&lt;br /&gt;
&lt;br /&gt;
== Syntax ==&lt;br /&gt;
WHILE-Programme haben folgende [[Syntax]] in modifizierter [[Backus-Naur-Form]]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\begin{array}{lrl}&lt;br /&gt;
P &amp;amp; ::= &amp;amp; x_i := x_j + c \\&lt;br /&gt;
  &amp;amp;   | &amp;amp; x_i := x_j - c \\&lt;br /&gt;
  &amp;amp;   | &amp;amp; P;P \\&lt;br /&gt;
  &amp;amp;   | &amp;amp; \mathrm{LOOP} \, x_i \, \mathrm{DO}  \, P \, \mathrm{END} \\&lt;br /&gt;
  &amp;amp;   | &amp;amp; \mathrm{WHILE} \, x_i \ne 0 \, \mathrm{DO} \, P \, \mathrm{END}&lt;br /&gt;
\end{array}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Auf das LOOP-Konstrukt in dieser Definition kann auch verzichtet werden, ohne dass die Menge der WHILE-berechenbaren Funktionen kleiner wird.&lt;br /&gt;
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&lt;br /&gt;
[[Kleenesche Normalform]] gebracht werden können.&lt;br /&gt;
&lt;br /&gt;
=== Erklärung der Syntax ===&lt;br /&gt;
&lt;br /&gt;
Ein WHILE-Programm &amp;#039;&amp;#039;P&amp;#039;&amp;#039; besteht aus den Symbolen &amp;#039;&amp;#039;WHILE&amp;#039;&amp;#039;, &amp;#039;&amp;#039;LOOP&amp;#039;&amp;#039;, &amp;#039;&amp;#039;DO&amp;#039;&amp;#039;, &amp;#039;&amp;#039;END&amp;#039;&amp;#039;, :=, +, -, ;, &amp;lt;math&amp;gt;\ne&amp;lt;/math&amp;gt;, einer Anzahl Variablen &amp;lt;math&amp;gt;x_1, x_2, ...&amp;lt;/math&amp;gt; sowie beliebigen Konstanten &amp;#039;&amp;#039;c&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
Es sind nur vier verschiedene Anweisungen erlaubt, nämlich&lt;br /&gt;
&lt;br /&gt;
* die Zuweisung einer Variablen durch eine weitere Variable, vermehrt um eine Konstante, etwa&lt;br /&gt;
::&amp;lt;math&amp;gt;x_3:=x_4+10&amp;lt;/math&amp;gt;&lt;br /&gt;
* oder vermindert um eine Konstante, etwa&lt;br /&gt;
::&amp;lt;math&amp;gt;x_5:=x_6-300&amp;lt;/math&amp;gt;&lt;br /&gt;
* eine LOOP-Anweisung, die zu Beginn den Wert einer Variablen überprüft und ein WHILE-Programm entsprechend oft wiederholt, etwa&lt;br /&gt;
::&amp;lt;math&amp;gt;\mathrm{LOOP} \quad x_7 \quad \mathrm{DO} \quad x_7:=x_7+1 \quad\mathrm{END}&amp;lt;/math&amp;gt;&lt;br /&gt;
Zu beachten ist, dass bei LOOP eine Änderung des Variablenwertes im zu wiederholenden Teilprogramm keine Auswirkung auf die Anzahl der Wiederholungen dieses Teilprogramms hat.&lt;br /&gt;
* eine WHILE-Anweisung, die eine Variable auf ungleich Null abfragt und ein WHILE-Programm zwischen DO und END enthält, etwa&lt;br /&gt;
::&amp;lt;math&amp;gt;\mathrm{WHILE} \quad x_8 \ne 0 \quad \mathrm{DO} \quad x_8:=x_8+1 \quad\mathrm{END}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Anweisungen sind für sich genommen bereits vollständige WHILE-Programme. Des Weiteren ist die&lt;br /&gt;
* Aneinanderreihung von WHILE-Programmen, jeweils getrennt durch ein Semikolon, etwa&lt;br /&gt;
::&amp;lt;math&amp;gt;x_9:=x_9+3; \quad x_{10}:=x_9-2&amp;lt;/math&amp;gt;&lt;br /&gt;
wieder ein WHILE-Programm.&lt;br /&gt;
&lt;br /&gt;
=== Allgemein ===&lt;br /&gt;
Jede WHILE-berechenbare Funktion ist [[GOTO-Programm|GOTO-berechenbar]] und umgekehrt sowie turingberechenbar.&lt;br /&gt;
&lt;br /&gt;
Mit &amp;lt;math&amp;gt;\mathrm{WHILE}&amp;lt;/math&amp;gt; wird ferner die Menge aller WHILE-Programme gemäß obiger Definition bezeichnet.&lt;br /&gt;
&lt;br /&gt;
== Kleenesche Normalform für WHILE-Programme ==&lt;br /&gt;
&lt;br /&gt;
Jede WHILE-berechenbare Funktion kann durch ein WHILE-Programm mit nur einer WHILE-Schleife berechnet werden.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Beweis:&amp;#039;&amp;#039;&amp;#039; Sei &amp;lt;math&amp;gt;P&amp;lt;/math&amp;gt; ein beliebiges WHILE-Programm. Wir formen &amp;lt;math&amp;gt;P&amp;lt;/math&amp;gt; zunächst, wie im Abschnitt „Simulation durch GOTO-Programme“ dieses Artikels beschrieben, um, um ein äquivalentes GOTO-Programm &amp;lt;math&amp;gt;P&amp;#039;&amp;lt;/math&amp;gt; zu erhalten. Anschließend formen wir &amp;lt;math&amp;gt;P&amp;#039;&amp;lt;/math&amp;gt; den Anweisungen im Abschnitt „Simulation durch WHILE-Programm“ im Artikel [[GOTO-Programm]] folgend in ein äquivalentes WHILE-Programm &amp;lt;math&amp;gt;P&amp;#039;&amp;#039;&amp;lt;/math&amp;gt; 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 &amp;lt;math&amp;gt;P&amp;#039;&amp;#039;&amp;lt;/math&amp;gt; nur eine WHILE-Schleife.&lt;br /&gt;
&lt;br /&gt;
== Konsequenzen ==&lt;br /&gt;
&lt;br /&gt;
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 (Programmiersprache)|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.&lt;br /&gt;
&lt;br /&gt;
== Simulation durch GOTO-Programm ==&lt;br /&gt;
&lt;br /&gt;
Ein jedes WHILE-Programm&lt;br /&gt;
:&amp;lt;math&amp;gt;\mathrm{WHILE} \quad x_2 \ne 0 \quad\mathrm{DO} \quad P \quad\mathrm{END}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
kann durch das folgende GOTO-Programm simuliert werden:&lt;br /&gt;
&lt;br /&gt;
 M1: IF x2 = 0 THEN GOTO M2;&lt;br /&gt;
     P;&lt;br /&gt;
     GOTO M1;&lt;br /&gt;
 M2: ...&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
* [[LOOP-Programm]]&lt;br /&gt;
* [[GOTO-Programm]]&lt;br /&gt;
&lt;br /&gt;
== Literatur ==&lt;br /&gt;
* {{Literatur| Autor=[[Uwe Schöning]]| Titel=Theoretische Informatik – kurz gefasst| Auflage=5| Verlag=Spektrum Akademischer Verlag| Ort=Heidelberg| Kapitel=2.3 LOOP-, WHILE und GOTO-Berechenbarkeit| ISBN=978-3-8274-1824-1}}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Berechenbarkeitstheorie]]&lt;/div&gt;</summary>
		<author><name>217.61.192.163</name></author>
	</entry>
</feed>