15.09.2014 Aufrufe

2x2 - Theoretische Informatik - Universität Duisburg-Essen

2x2 - Theoretische Informatik - Universität Duisburg-Essen

2x2 - Theoretische Informatik - Universität Duisburg-Essen

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

Kontextsensitive und Typ-0-Sprachen<br />

Berechenbarkeitstheorie<br />

Komplexitätstheorie<br />

Berechnungsmodelle<br />

Unentscheidbarkeit<br />

Unentscheidbare Probleme<br />

Kontextsensitive und Typ-0-Sprachen<br />

Berechenbarkeitstheorie<br />

Komplexitätstheorie<br />

Berechnungsmodelle<br />

Unentscheidbarkeit<br />

Unentscheidbare Probleme<br />

Goto-Programme<br />

Goto-Programme<br />

Semantik von Goto-Programmen<br />

If-Anweisungen werden wie üblich interpretiert.<br />

Goto M springt an die entsprechende Marke des Programms.<br />

Halt-Anweisungen beenden Goto-Programme. (Die letzte<br />

Anweisung eines Programms sollte ein Halt oder ein<br />

unbedingter Sprung sein.)<br />

Wie While-Programme können auch Goto-Programme in<br />

unendliche Schleifen geraten.<br />

Goto-berechenbare Funktionen sind analog zu<br />

While-berechenbaren Funktionen definiert.<br />

While-Programme → Goto-Programme<br />

Jedes While-Programm kann durch ein Goto-Programm<br />

simuliert werden. Das heißt, jede While-berechenbare Funktion<br />

ist Goto-berechenbar.<br />

Eine While-Schleife<br />

While x ≠ 0 Do P End<br />

kann simuliert werden durch<br />

M 1 : If x = 0 Then Goto M 2 ;<br />

P;<br />

Goto M 1 ;<br />

M 2 : . . .<br />

Goto-Programme<br />

Kontextsensitive und Typ-0-Sprachen<br />

Berechenbarkeitstheorie<br />

Komplexitätstheorie<br />

Barbara König BeKo/TI 99<br />

Berechnungsmodelle<br />

Unentscheidbarkeit<br />

Unentscheidbare Probleme<br />

Goto-Programme<br />

Kontextsensitive und Typ-0-Sprachen<br />

Berechenbarkeitstheorie<br />

Komplexitätstheorie<br />

Barbara König BeKo/TI 100<br />

Berechnungsmodelle<br />

Unentscheidbarkeit<br />

Unentscheidbare Probleme<br />

Auch die – nicht ganz so offensichtliche – Umkehrung gilt:<br />

Goto-Programme → While-Programme<br />

Jedes Goto-Programm kann durch ein While-Programm<br />

simuliert werden. Das heißt, jede Goto-berechenbare Funktion ist<br />

While-berechenbar.<br />

Das ist einer der Gründe dafür, warum in modernen<br />

Programmiersprachen im allgemeinen keine Gotos verwendet<br />

werden.<br />

Weitere Gründe:<br />

Edsger W. Dijkstra: “Go To Statement Considered Harmful”<br />

(1968)<br />

(siehe http://www.acm.org/classics/oct95/)<br />

Spaghetti-Code bei Verwendung von Gotos<br />

Barbara König BeKo/TI 101<br />

Die Simulation von Goto-Programmen durch While-Programme<br />

verwendet nur eine While-Schleife.<br />

Das bedeutet: ein While-Programm kann durch Umwandlung in<br />

ein Goto-Programm und Zurückumwandlung in ein äquivalentes<br />

While-Programm mit einer While-Schleife umgewandelt werden.<br />

Dabei muss man allerdings annehmen, dass die Sprache auch<br />

If-Anweisungen zur Verfügung stellt.<br />

(Kleenesche Normalform für While-Programme)<br />

Barbara König BeKo/TI 102

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!