Welche Sprachkonstrukte (Programmiersprache - speziell bei Python) außer den "while" Befehl gibt es, um bei einem Algorithmus eine Terminierung zu verhindern?

...komplette Frage anzeigen

4 Antworten

Keine außer den bereits genannten GOTO und WHILE.

Da die heutigen imperativen Sprachen alle äquivalend zu so genannten WHILE-Sprachen sind (d.h. dass jedes Schleifenkonstrukt im Endeffekt auf eine WHILE-Schleife reduziert werden kann) und jedes WHILE-berechenbare Programm zu GOTO-berechenbaren Programmen äquivalent ist, gibt es keine weiteren Konstrukte, die "Schleifen" erzeugen, und nicht ein WHILE oder ein GOTO wären.

Eine Möglichkeit wäre noch, eine Rekursion zu programmieren, wobei diese jedoch recht schnell mit einem Stack-Overflow enden wird.

In manchen Programmiersprachen gibt es den goto-Befehl, mit dem du an bestimmte Stellen im Algorithmus springen kannst. Man kann es aber auch mit Schleifen realisieren, wobei diese übersichtlicher sind, weshalb es diesen Befehl in Python nicht gibt.

ohwehohach 23.01.2017, 11:22

Alle Schleifen laufen im Endeffekt auf eine While-Schleife raus, da sich jede Schleife durch eine While-Schleife formulieren lässt.

0

Neben der Iteration gibt es noch die Rekursion.

for(i=0; i>0; i++)
Zählt bis int zu Ende ist.

coonicon1 23.01.2017, 10:34

"Zählt bis int zu Ende ist."

Womit wieder eine Terminierung vorliegt.

0
TUrabbIT 23.01.2017, 10:37

man kann ja ein i-- in den Block einbauen

0
ohwehohach 23.01.2017, 11:21
@TUrabbIT

Manche Programmiersprachen unterbinden sinnvollerweise durch einen Compilerfehler das Ändern der Schleifenvariablen innerhalb einer Schleife.

Außerdem ist eine For-Schleife auch nur eine verkappte While-Schleife.

0
ohwehohach 23.01.2017, 11:31

Eine for-Schleife ist auch nur eine verkürzte Syntax für eine while-Schleife. Das Äquivalend zu "while (true)" wäre "for (int i = 1; i < 1;)" oder sogar "for (;;)"

1

Was möchtest Du wissen?