https://de.wikipedia.org/w/index.php?action=history&feed=atom&title=Iterative_Programmierung Iterative Programmierung - Versionsgeschichte 2025-04-19T08:49:54Z Versionsgeschichte dieser Seite in Wikipedia MediaWiki 1.44.0-wmf.25 https://de.wikipedia.org/w/index.php?title=Iterative_Programmierung&diff=240352374&oldid=prev Squasher: Interwikilink korrigiert 2023-12-19T20:43:59Z <p>Interwikilink korrigiert</p> <table style="background-color: #fff; color: #202122;" data-mw="interface"> <col class="diff-marker" /> <col class="diff-content" /> <col class="diff-marker" /> <col class="diff-content" /> <tr class="diff-title" lang="de"> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Nächstältere Version</td> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Version vom 19. Dezember 2023, 22:43 Uhr</td> </tr><tr> <td colspan="2" class="diff-lineno">Zeile 1:</td> <td colspan="2" class="diff-lineno">Zeile 1:</td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Die '''<del style="font-weight: bold; text-decoration: none;">[[:wikt:iterativ|</del>iterative<del style="font-weight: bold; text-decoration: none;">]]</del> Programmierung''' (von ''[[Latein|lat.]]'' iterare = wiederholen) ist ein Konzept, bei dem mehrfach auszuführende Arbeitsschritte in [[Schleife (Programmierung)|Schleife]]n (Wiederholungen von [[Anweisung (Programmierung)|Anweisungen]] oder Anweisungsfolgen) umgesetzt werden.</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>Die '''iterative Programmierung''' (von ''[[Latein|lat.]]'' iterare = wiederholen) ist ein Konzept, bei dem mehrfach auszuführende Arbeitsschritte in [[Schleife (Programmierung)|Schleife]]n (Wiederholungen von [[Anweisung (Programmierung)|Anweisungen]] oder Anweisungsfolgen) umgesetzt werden.</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Abgrenzung ==</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Abgrenzung ==</div></td> </tr> </table> Squasher https://de.wikipedia.org/w/index.php?title=Iterative_Programmierung&diff=236555562&oldid=prev Matthäus Wander: link 2023-08-19T14:12:20Z <p>link</p> <table style="background-color: #fff; color: #202122;" data-mw="interface"> <col class="diff-marker" /> <col class="diff-content" /> <col class="diff-marker" /> <col class="diff-content" /> <tr class="diff-title" lang="de"> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Nächstältere Version</td> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Version vom 19. August 2023, 16:12 Uhr</td> </tr><tr> <td colspan="2" class="diff-lineno">Zeile 7:</td> <td colspan="2" class="diff-lineno">Zeile 7:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>=== Gegenüberstellung ===</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>=== Gegenüberstellung ===</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>In der Literatur werden Funktionen gerne im [[Rekursive Programmierung|rekursiven Programmierstil]] vorgestellt, die meist als einfacher zu verstehen gelten. Bei [[rekursive Programmierung|rekursiver Programmierung]] wird die Wiederholung erreicht, ohne dass das Programm explizite Schleifen enthält.&lt;ref&gt; [[Niklaus Wirth]]: ''Algorithmen und Datenstrukturen'', [[B. G. Teubner]] 1983, Seite 150&lt;/ref&gt; Anstatt Schleifenkontrollanweisungen enthält das Programm sogenannte (direkte) Selbstaufrufe der betreffenden Funktion oder auch indirekte gegenseitige Aufrufe mehrerer Funktionen untereinander. In beiden Fällen, iterativer wie rekursiver Programmierung, bedarf es normalerweise einer expliziten [[Abbruchbedingung]], die eine [[Terminiertheit|Terminierung]] des Programms erzwingt, wobei Fehler in derselben zu unbeabsichtigten [[Endlosschleife]]n führen können. </div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>In der Literatur werden Funktionen gerne im [[Rekursive Programmierung|rekursiven Programmierstil]] vorgestellt, die meist als einfacher zu verstehen gelten. Bei [[rekursive Programmierung|rekursiver Programmierung]] wird die Wiederholung erreicht, ohne dass das Programm explizite Schleifen enthält.&lt;ref&gt; [[Niklaus Wirth]]: ''Algorithmen und Datenstrukturen'', [[B. G. Teubner]] 1983, Seite 150&lt;/ref&gt; Anstatt Schleifenkontrollanweisungen enthält das Programm sogenannte (direkte) Selbstaufrufe der betreffenden Funktion oder auch indirekte gegenseitige Aufrufe mehrerer Funktionen untereinander. In beiden Fällen, iterativer wie rekursiver Programmierung, bedarf es normalerweise einer expliziten [[Abbruchbedingung]], die eine [[Terminiertheit|Terminierung]] des Programms erzwingt, wobei Fehler in derselben zu unbeabsichtigten [[<ins style="font-weight: bold; text-decoration: none;">Endlosschleife (Programmierung)|</ins>Endlosschleife]]n führen können. </div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Iterative Implementierungen bieten oft Vorteile:</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Iterative Implementierungen bieten oft Vorteile:</div></td> </tr> </table> Matthäus Wander https://de.wikipedia.org/w/index.php?title=Iterative_Programmierung&diff=212874307&oldid=prev DixMartin: +Links 2021-06-11T21:27:57Z <p>+Links</p> <table style="background-color: #fff; color: #202122;" data-mw="interface"> <col class="diff-marker" /> <col class="diff-content" /> <col class="diff-marker" /> <col class="diff-content" /> <tr class="diff-title" lang="de"> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Nächstältere Version</td> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Version vom 11. Juni 2021, 23:27 Uhr</td> </tr><tr> <td colspan="2" class="diff-lineno">Zeile 12:</td> <td colspan="2" class="diff-lineno">Zeile 12:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* Bei iterativer Programmierung kann der Speicherbedarf schärfer durch den Programmierer zugeschnitten und kontrolliert werden, wogegen bei rekursiver normalerweise bei jedem Selbstaufruf der Kontext der aufrufenden Prozedur (im Programm-[[Stapelspeicher]]) zu retten ist, damit er beim [[Rücksprung]] wieder hergestellt werden kann.&lt;ref&gt;Ausnahmen sind Programmiersysteme und Compiler, die Unterstützung dafür bieten, [[Endrekursion]]en zu erkennen und zu optimieren.&lt;/ref&gt;</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* Bei iterativer Programmierung kann der Speicherbedarf schärfer durch den Programmierer zugeschnitten und kontrolliert werden, wogegen bei rekursiver normalerweise bei jedem Selbstaufruf der Kontext der aufrufenden Prozedur (im Programm-[[Stapelspeicher]]) zu retten ist, damit er beim [[Rücksprung]] wieder hergestellt werden kann.&lt;ref&gt;Ausnahmen sind Programmiersysteme und Compiler, die Unterstützung dafür bieten, [[Endrekursion]]en zu erkennen und zu optimieren.&lt;/ref&gt;</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* Darüber hinaus ist der Speicherbedarf für den Programm-Stapelspeicher programmiersprachlich schwer oder gar nicht kontrollierbar. Auch die Anzahl der Wiederholungen (resp. Selbstaufrufe) ist bei rekursiver Programmierung manchmal weniger deutlich erkennbar. Beide Probleme mögen zu den berüchtigten [[Stapelüberlauf|Stapelüberläufen]] beitragen.</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* Darüber hinaus ist der Speicherbedarf für den Programm-Stapelspeicher programmiersprachlich schwer oder gar nicht kontrollierbar. Auch die Anzahl der Wiederholungen (resp. Selbstaufrufe) ist bei rekursiver Programmierung manchmal weniger deutlich erkennbar. Beide Probleme mögen zu den berüchtigten [[Stapelüberlauf|Stapelüberläufen]] beitragen.</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>* Im rekursiven Programmierstil lassen sich manche Szenarien nur durch eine sogenannte [[Rückruffunktion]] ({{enS|''callback function''}}) realisieren. Beispielsweise wird bei einer rekursiv programmierten [[Binärbaum#Traversierung|Traversierfunktion]] eines <del style="font-weight: bold; text-decoration: none;">Binärbaums</del> dieser stets in seiner Gänze durchlaufen und die Nutzfunktion in einem Rückruf implementiert.&lt;br/&gt;Im Gegensatz dazu kann bei iterativer Programmierung das zu bearbeitende Segment des Baums durch eine [[Binärer Suchbaum#Suchen|Suchfunktion]] angesteuert, die Nutzfunktion nach Belieben als flache Anweisungsfolge bzw. als Unterprogramm implementiert und nach einem [[Binärbaum#Iterative Implementierung|(iterativen) Querschritt]] beim nächsten Element wiederholt werden.&lt;ref&gt;Siehe dazu [[Binärbaum#Traversierung|Traversierung]] (mit Codebeispielen) und Ben Pfaff: ''An Introduction to Binary Search Trees and Balanced Trees.'' Free Software Foundation, Inc. Boston 2004, S. 47 „4.9.2 Traversal by Iteration“.&lt;/ref&gt;</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>* Im rekursiven Programmierstil lassen sich manche Szenarien nur durch eine sogenannte [[Rückruffunktion]] ({{enS|''callback function''}}) realisieren. Beispielsweise wird bei einer rekursiv programmierten [[Binärbaum#Traversierung|Traversierfunktion]] eines <ins style="font-weight: bold; text-decoration: none;">[[Binärbaum]]s</ins> dieser stets in seiner Gänze durchlaufen und die Nutzfunktion in einem Rückruf implementiert.&lt;br/&gt;Im Gegensatz dazu kann bei iterativer Programmierung das zu bearbeitende Segment des Baums durch eine [[Binärer Suchbaum#Suchen|Suchfunktion]] angesteuert, die Nutzfunktion nach Belieben als flache Anweisungsfolge bzw. als Unterprogramm implementiert und nach einem [[Binärbaum#Iterative Implementierung|(iterativen) Querschritt]] beim nächsten Element wiederholt werden.&lt;ref&gt;Siehe dazu [[Binärbaum#Traversierung|Traversierung]] (mit Codebeispielen) und Ben Pfaff: ''An Introduction to Binary Search Trees and Balanced Trees.'' Free Software Foundation, Inc. Boston 2004, S. 47 „4.9.2 Traversal by Iteration“.&lt;/ref&gt;</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Mit wachsender Leistungsfähigkeit der Rechner tritt jedoch die Lesbarkeit und Wartbarkeit von Software gegenüber ihrer technischen Effizienz in den Vordergrund. Wo dies der Fall ist, bietet sich der rekursive Ansatz für die Arbeit mit <del style="font-weight: bold; text-decoration: none;">baumartigen</del> Datenstrukturen und der iterative für sequenzielle Datenstrukturen an.</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>Mit wachsender Leistungsfähigkeit der Rechner tritt jedoch die Lesbarkeit und Wartbarkeit von Software gegenüber ihrer technischen Effizienz in den Vordergrund. Wo dies der Fall ist, bietet sich der rekursive Ansatz für die Arbeit mit <ins style="font-weight: bold; text-decoration: none;">[[baum]]artigen</ins> Datenstrukturen und der iterative für sequenzielle Datenstrukturen an.</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Beispiel ==</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Beispiel ==</div></td> </tr> </table> DixMartin https://de.wikipedia.org/w/index.php?title=Iterative_Programmierung&diff=211294840&oldid=prev Idohl: Abbruch: Beschränkung auf Normalfall (Abweichungen in betreffenden Artikel verschoben) 2021-04-25T11:25:12Z <p>Abbruch: Beschränkung auf Normalfall (Abweichungen in betreffenden Artikel verschoben)</p> <table style="background-color: #fff; color: #202122;" data-mw="interface"> <col class="diff-marker" /> <col class="diff-content" /> <col class="diff-marker" /> <col class="diff-content" /> <tr class="diff-title" lang="de"> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Nächstältere Version</td> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Version vom 25. April 2021, 13:25 Uhr</td> </tr><tr> <td colspan="2" class="diff-lineno">Zeile 7:</td> <td colspan="2" class="diff-lineno">Zeile 7:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>=== Gegenüberstellung ===</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>=== Gegenüberstellung ===</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>In der Literatur werden Funktionen gerne im [[Rekursive Programmierung|rekursiven Programmierstil]] vorgestellt, die meist als einfacher zu verstehen gelten. Bei [[rekursive Programmierung|rekursiver Programmierung]] wird die Wiederholung erreicht, ohne dass das Programm explizite Schleifen enthält.&lt;ref&gt; [[Niklaus Wirth]]: ''Algorithmen und Datenstrukturen'', [[B. G. Teubner]] 1983, Seite 150&lt;/ref&gt; Anstatt Schleifenkontrollanweisungen enthält das Programm sogenannte (direkte) Selbstaufrufe der betreffenden Funktion oder auch indirekte gegenseitige Aufrufe mehrerer Funktionen untereinander. In beiden Fällen, iterativer wie rekursiver Programmierung, bedarf es normalerweise einer expliziten [[Abbruchbedingung]], die eine [[Terminiertheit|Terminierung]] des Programms erzwingt, wobei Fehler in derselben zu unbeabsichtigten [[Endlosschleife]]n führen können. <del style="font-weight: bold; text-decoration: none;">Es gibt jedoch auch Programme mit absichtlichen Endlosschleifen, bspw. [[Ereignisschleife]]n ({{enS|event loop}} oder {{lang|en|''message dispatcher''}}), darunter solche, die ohne [[aktives Warten]] auskommen.</del></div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>In der Literatur werden Funktionen gerne im [[Rekursive Programmierung|rekursiven Programmierstil]] vorgestellt, die meist als einfacher zu verstehen gelten. Bei [[rekursive Programmierung|rekursiver Programmierung]] wird die Wiederholung erreicht, ohne dass das Programm explizite Schleifen enthält.&lt;ref&gt; [[Niklaus Wirth]]: ''Algorithmen und Datenstrukturen'', [[B. G. Teubner]] 1983, Seite 150&lt;/ref&gt; Anstatt Schleifenkontrollanweisungen enthält das Programm sogenannte (direkte) Selbstaufrufe der betreffenden Funktion oder auch indirekte gegenseitige Aufrufe mehrerer Funktionen untereinander. In beiden Fällen, iterativer wie rekursiver Programmierung, bedarf es normalerweise einer expliziten [[Abbruchbedingung]], die eine [[Terminiertheit|Terminierung]] des Programms erzwingt, wobei Fehler in derselben zu unbeabsichtigten [[Endlosschleife]]n führen können. </div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Iterative Implementierungen bieten oft Vorteile:</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Iterative Implementierungen bieten oft Vorteile:</div></td> </tr> </table> Idohl https://de.wikipedia.org/w/index.php?title=Iterative_Programmierung&diff=211256313&oldid=prev Nomen4Omen: /* Gegenüberstellung */ s. Disku 2021-04-24T15:02:23Z <p><span class="autocomment">Gegenüberstellung: </span> s. Disku</p> <table style="background-color: #fff; color: #202122;" data-mw="interface"> <col class="diff-marker" /> <col class="diff-content" /> <col class="diff-marker" /> <col class="diff-content" /> <tr class="diff-title" lang="de"> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Nächstältere Version</td> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Version vom 24. April 2021, 17:02 Uhr</td> </tr><tr> <td colspan="2" class="diff-lineno">Zeile 7:</td> <td colspan="2" class="diff-lineno">Zeile 7:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>=== Gegenüberstellung ===</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>=== Gegenüberstellung ===</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>In der Literatur werden Funktionen gerne im [[Rekursive Programmierung|rekursiven Programmierstil]] vorgestellt, die meist als einfacher zu verstehen gelten. Bei [[rekursive Programmierung|rekursiver Programmierung]] wird die Wiederholung erreicht, ohne dass das Programm explizite Schleifen enthält.&lt;ref&gt; [[Niklaus Wirth]]: ''Algorithmen und Datenstrukturen'', [[B. G. Teubner]] 1983, Seite 150&lt;/ref&gt; Anstatt Schleifenkontrollanweisungen enthält das Programm <del style="font-weight: bold; text-decoration: none;">einen</del> <del style="font-weight: bold; text-decoration: none;">sogenannten</del> <del style="font-weight: bold; text-decoration: none;">Selbstaufruf</del> der betreffenden Funktion, <del style="font-weight: bold; text-decoration: none;">die</del> <del style="font-weight: bold; text-decoration: none;">dadurch</del> <del style="font-weight: bold; text-decoration: none;">(bei</del> [[<del style="font-weight: bold; text-decoration: none;">Endrekursion</del>]]<del style="font-weight: bold; text-decoration: none;">)</del> <del style="font-weight: bold; text-decoration: none;">unendlich</del> <del style="font-weight: bold; text-decoration: none;">oft</del> <del style="font-weight: bold; text-decoration: none;">ausgeführt</del> <del style="font-weight: bold; text-decoration: none;">werden</del> <del style="font-weight: bold; text-decoration: none;">könnte.</del> <del style="font-weight: bold; text-decoration: none;">Um</del> <del style="font-weight: bold; text-decoration: none;">eine</del> <del style="font-weight: bold; text-decoration: none;">endliche</del> <del style="font-weight: bold; text-decoration: none;">Anzahl</del> <del style="font-weight: bold; text-decoration: none;">Wiederholungen</del> zu <del style="font-weight: bold; text-decoration: none;">erreichen,</del> <del style="font-weight: bold; text-decoration: none;">benötigt</del> <del style="font-weight: bold; text-decoration: none;">das</del> <del style="font-weight: bold; text-decoration: none;">Programm</del> <del style="font-weight: bold; text-decoration: none;">ebenso</del> <del style="font-weight: bold; text-decoration: none;">eine</del> [[<del style="font-weight: bold; text-decoration: none;">Abbruchbedingung</del>]] (<del style="font-weight: bold; text-decoration: none;">oder</del> <del style="font-weight: bold; text-decoration: none;">einen</del> <del style="font-weight: bold; text-decoration: none;">nichtrekursiven</del> <del style="font-weight: bold; text-decoration: none;">Ausführungszweig</del>) <del style="font-weight: bold; text-decoration: none;">wie</del> die <del style="font-weight: bold; text-decoration: none;">Schleife</del> <del style="font-weight: bold; text-decoration: none;">bei</del> <del style="font-weight: bold; text-decoration: none;">der</del> <del style="font-weight: bold; text-decoration: none;">iterativen Programmierung</del>.</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>In der Literatur werden Funktionen gerne im [[Rekursive Programmierung|rekursiven Programmierstil]] vorgestellt, die meist als einfacher zu verstehen gelten. Bei [[rekursive Programmierung|rekursiver Programmierung]] wird die Wiederholung erreicht, ohne dass das Programm explizite Schleifen enthält.&lt;ref&gt; [[Niklaus Wirth]]: ''Algorithmen und Datenstrukturen'', [[B. G. Teubner]] 1983, Seite 150&lt;/ref&gt; Anstatt Schleifenkontrollanweisungen enthält das Programm <ins style="font-weight: bold; text-decoration: none;">sogenannte</ins> <ins style="font-weight: bold; text-decoration: none;">(direkte)</ins> <ins style="font-weight: bold; text-decoration: none;">Selbstaufrufe</ins> der betreffenden Funktion<ins style="font-weight: bold; text-decoration: none;"> oder auch indirekte gegenseitige Aufrufe mehrerer Funktionen untereinander. In beiden Fällen</ins>, <ins style="font-weight: bold; text-decoration: none;">iterativer</ins> <ins style="font-weight: bold; text-decoration: none;">wie</ins> <ins style="font-weight: bold; text-decoration: none;">rekursiver Programmierung, bedarf es normalerweise einer expliziten</ins> [[<ins style="font-weight: bold; text-decoration: none;">Abbruchbedingung</ins>]]<ins style="font-weight: bold; text-decoration: none;">,</ins> <ins style="font-weight: bold; text-decoration: none;">die</ins> <ins style="font-weight: bold; text-decoration: none;">eine</ins> <ins style="font-weight: bold; text-decoration: none;">[[Terminiertheit|Terminierung]]</ins> <ins style="font-weight: bold; text-decoration: none;">des</ins> <ins style="font-weight: bold; text-decoration: none;">Programms</ins> <ins style="font-weight: bold; text-decoration: none;">erzwingt,</ins> <ins style="font-weight: bold; text-decoration: none;">wobei</ins> <ins style="font-weight: bold; text-decoration: none;">Fehler</ins> <ins style="font-weight: bold; text-decoration: none;">in</ins> <ins style="font-weight: bold; text-decoration: none;">derselben</ins> zu <ins style="font-weight: bold; text-decoration: none;">unbeabsichtigten</ins> <ins style="font-weight: bold; text-decoration: none;">[[Endlosschleife]]n</ins> <ins style="font-weight: bold; text-decoration: none;">führen</ins> <ins style="font-weight: bold; text-decoration: none;">können.</ins> <ins style="font-weight: bold; text-decoration: none;">Es</ins> <ins style="font-weight: bold; text-decoration: none;">gibt jedoch auch Programme mit absichtlichen Endlosschleifen, bspw.</ins> [[<ins style="font-weight: bold; text-decoration: none;">Ereignisschleife</ins>]]<ins style="font-weight: bold; text-decoration: none;">n</ins> (<ins style="font-weight: bold; text-decoration: none;">{{enS|event</ins> <ins style="font-weight: bold; text-decoration: none;">loop}}</ins> <ins style="font-weight: bold; text-decoration: none;">oder</ins> <ins style="font-weight: bold; text-decoration: none;">{{lang|en|''message dispatcher''}}</ins>)<ins style="font-weight: bold; text-decoration: none;">,</ins> <ins style="font-weight: bold; text-decoration: none;">darunter solche,</ins> die <ins style="font-weight: bold; text-decoration: none;">ohne</ins> <ins style="font-weight: bold; text-decoration: none;">[[aktives</ins> <ins style="font-weight: bold; text-decoration: none;">Warten]]</ins> <ins style="font-weight: bold; text-decoration: none;">auskommen</ins>.</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Iterative Implementierungen bieten<del style="font-weight: bold; text-decoration: none;"> jedoch</del> oft Vorteile:</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>Iterative Implementierungen bieten oft Vorteile:</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>* Bei iterativer Programmierung kann der Speicherbedarf schärfer durch den Programmierer zugeschnitten und kontrolliert werden, wogegen bei rekursiver bei jedem Selbstaufruf der Kontext der aufrufenden Prozedur (im Programm-Stapelspeicher) zu retten ist, damit er beim [[Rücksprung]] wieder hergestellt werden kann <del style="font-weight: bold; text-decoration: none;">(beachte</del> <del style="font-weight: bold; text-decoration: none;">Sonderfall</del> [[Endrekursion]]<del style="font-weight: bold; text-decoration: none;">)</del>.</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>* Bei iterativer Programmierung kann der Speicherbedarf schärfer durch den Programmierer zugeschnitten und kontrolliert werden, wogegen bei rekursiver<ins style="font-weight: bold; text-decoration: none;"> normalerweise</ins> bei jedem Selbstaufruf der Kontext der aufrufenden Prozedur (im Programm-<ins style="font-weight: bold; text-decoration: none;">[[</ins>Stapelspeicher<ins style="font-weight: bold; text-decoration: none;">]]</ins>) zu retten ist, damit er beim [[Rücksprung]] wieder hergestellt werden kann<ins style="font-weight: bold; text-decoration: none;">.&lt;ref&gt;Ausnahmen</ins> <ins style="font-weight: bold; text-decoration: none;">sind</ins> <ins style="font-weight: bold; text-decoration: none;">Programmiersysteme und Compiler, die Unterstützung dafür bieten,</ins> [[Endrekursion]]<ins style="font-weight: bold; text-decoration: none;">en zu erkennen und zu optimieren</ins>.<ins style="font-weight: bold; text-decoration: none;">&lt;/ref&gt;</ins></div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>* Darüber hinaus ist der Speicherbedarf für den Programm-<del style="font-weight: bold; text-decoration: none;">[[</del>Stapelspeicher<del style="font-weight: bold; text-decoration: none;">]]</del> programmiersprachlich schwer oder gar nicht kontrollierbar<del style="font-weight: bold; text-decoration: none;">,</del> <del style="font-weight: bold; text-decoration: none;">wovon</del> die berüchtigten [[Stapelüberlauf|<del style="font-weight: bold; text-decoration: none;">Stapelüberläufe</del>]] <del style="font-weight: bold; text-decoration: none;">eine Folge sind</del>.<del style="font-weight: bold; text-decoration: none;"> (Dito Endrekursion)</del></div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>* Darüber hinaus ist der Speicherbedarf für den Programm-Stapelspeicher programmiersprachlich schwer oder gar nicht kontrollierbar<ins style="font-weight: bold; text-decoration: none;">.</ins> <ins style="font-weight: bold; text-decoration: none;">Auch</ins> die<ins style="font-weight: bold; text-decoration: none;"> Anzahl der Wiederholungen (resp. Selbstaufrufe) ist bei rekursiver Programmierung manchmal weniger deutlich erkennbar. Beide Probleme mögen zu den</ins> berüchtigten [[Stapelüberlauf|<ins style="font-weight: bold; text-decoration: none;">Stapelüberläufen</ins>]] <ins style="font-weight: bold; text-decoration: none;">beitragen</ins>.</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>* Im rekursiven Programmierstil lassen sich manche Szenarien nur durch eine <del style="font-weight: bold; text-decoration: none;">sog.</del> [[Rückruffunktion]] ({{enS|''callback function''}}) realisieren. Beispielsweise wird bei einer rekursiv programmierten [[Binärbaum#Traversierung|Traversierfunktion]] eines Binärbaums dieser stets in seiner Gänze durchlaufen und die Nutzfunktion in einem Rückruf implementiert.&lt;br/&gt;Im Gegensatz dazu kann bei iterativer Programmierung das zu bearbeitende Segment des Baums durch eine [[Binärer Suchbaum#Suchen|Suchfunktion]] angesteuert, die Nutzfunktion nach Belieben als flache Anweisungsfolge bzw. als Unterprogramm implementiert und nach einem [[Binärbaum#Iterative Implementierung|(iterativen) Querschritt]] beim nächsten Element wiederholt werden.&lt;ref&gt;Siehe dazu [[Binärbaum#Traversierung|Traversierung]] (mit Codebeispielen) und Ben Pfaff: ''An Introduction to Binary Search Trees and Balanced Trees.'' Free Software Foundation, Inc. Boston 2004, S. 47 „4.9.2 Traversal by Iteration“.&lt;/ref&gt;</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>* Im rekursiven Programmierstil lassen sich manche Szenarien nur durch eine <ins style="font-weight: bold; text-decoration: none;">sogenannte</ins> [[Rückruffunktion]] ({{enS|''callback function''}}) realisieren. Beispielsweise wird bei einer rekursiv programmierten [[Binärbaum#Traversierung|Traversierfunktion]] eines Binärbaums dieser stets in seiner Gänze durchlaufen und die Nutzfunktion in einem Rückruf implementiert.&lt;br/&gt;Im Gegensatz dazu kann bei iterativer Programmierung das zu bearbeitende Segment des Baums durch eine [[Binärer Suchbaum#Suchen|Suchfunktion]] angesteuert, die Nutzfunktion nach Belieben als flache Anweisungsfolge bzw. als Unterprogramm implementiert und nach einem [[Binärbaum#Iterative Implementierung|(iterativen) Querschritt]] beim nächsten Element wiederholt werden.&lt;ref&gt;Siehe dazu [[Binärbaum#Traversierung|Traversierung]] (mit Codebeispielen) und Ben Pfaff: ''An Introduction to Binary Search Trees and Balanced Trees.'' Free Software Foundation, Inc. Boston 2004, S. 47 „4.9.2 Traversal by Iteration“.&lt;/ref&gt;</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Mit wachsender Leistungsfähigkeit der Rechner tritt jedoch die Lesbarkeit und Wartbarkeit von Software gegenüber ihrer technischen Effizienz in den Vordergrund. Wo dies der Fall ist, bietet sich der rekursive Ansatz für die Arbeit mit baumartigen Datenstrukturen und der iterative für sequenzielle Datenstrukturen an.</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Mit wachsender Leistungsfähigkeit der Rechner tritt jedoch die Lesbarkeit und Wartbarkeit von Software gegenüber ihrer technischen Effizienz in den Vordergrund. Wo dies der Fall ist, bietet sich der rekursive Ansatz für die Arbeit mit baumartigen Datenstrukturen und der iterative für sequenzielle Datenstrukturen an.</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> </table> Nomen4Omen https://de.wikipedia.org/w/index.php?title=Iterative_Programmierung&diff=211150422&oldid=prev Arilou: /* Gegenüberstellung */ einige Vorteile bestehen nicht gegenüber endrekursiven Funktionen 2021-04-21T07:54:59Z <p><span class="autocomment">Gegenüberstellung: </span> einige Vorteile bestehen nicht gegenüber endrekursiven Funktionen</p> <table style="background-color: #fff; color: #202122;" data-mw="interface"> <col class="diff-marker" /> <col class="diff-content" /> <col class="diff-marker" /> <col class="diff-content" /> <tr class="diff-title" lang="de"> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Nächstältere Version</td> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Version vom 21. April 2021, 09:54 Uhr</td> </tr><tr> <td colspan="2" class="diff-lineno">Zeile 10:</td> <td colspan="2" class="diff-lineno">Zeile 10:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Iterative Implementierungen bieten jedoch oft Vorteile:</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Iterative Implementierungen bieten jedoch oft Vorteile:</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>* Bei iterativer Programmierung kann der Speicherbedarf schärfer durch den Programmierer zugeschnitten und kontrolliert werden, wogegen bei rekursiver bei jedem Selbstaufruf<del style="font-weight: bold; text-decoration: none;"> unvermeidlich</del> der Kontext der aufrufenden Prozedur (im Programm-Stapelspeicher) zu retten ist, damit er beim [[Rücksprung]] wieder hergestellt werden kann.</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>* Bei iterativer Programmierung kann der Speicherbedarf schärfer durch den Programmierer zugeschnitten und kontrolliert werden, wogegen bei rekursiver bei jedem Selbstaufruf der Kontext der aufrufenden Prozedur (im Programm-Stapelspeicher) zu retten ist, damit er beim [[Rücksprung]] wieder hergestellt werden kann<ins style="font-weight: bold; text-decoration: none;"> (beachte Sonderfall [[Endrekursion]])</ins>.</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>* Darüber hinaus ist der Speicherbedarf für den Programm-[[Stapelspeicher]] programmiersprachlich schwer oder gar nicht kontrollierbar, wovon die berüchtigten [[Stapelüberlauf|Stapelüberläufe]] eine Folge sind.</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>* Darüber hinaus ist der Speicherbedarf für den Programm-[[Stapelspeicher]] programmiersprachlich schwer oder gar nicht kontrollierbar, wovon die berüchtigten [[Stapelüberlauf|Stapelüberläufe]] eine Folge sind.<ins style="font-weight: bold; text-decoration: none;"> (Dito Endrekursion)</ins></div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* Im rekursiven Programmierstil lassen sich manche Szenarien nur durch eine sog. [[Rückruffunktion]] ({{enS|''callback function''}}) realisieren. Beispielsweise wird bei einer rekursiv programmierten [[Binärbaum#Traversierung|Traversierfunktion]] eines Binärbaums dieser stets in seiner Gänze durchlaufen und die Nutzfunktion in einem Rückruf implementiert.&lt;br/&gt;Im Gegensatz dazu kann bei iterativer Programmierung das zu bearbeitende Segment des Baums durch eine [[Binärer Suchbaum#Suchen|Suchfunktion]] angesteuert, die Nutzfunktion nach Belieben als flache Anweisungsfolge bzw. als Unterprogramm implementiert und nach einem [[Binärbaum#Iterative Implementierung|(iterativen) Querschritt]] beim nächsten Element wiederholt werden.&lt;ref&gt;Siehe dazu [[Binärbaum#Traversierung|Traversierung]] (mit Codebeispielen) und Ben Pfaff: ''An Introduction to Binary Search Trees and Balanced Trees.'' Free Software Foundation, Inc. Boston 2004, S. 47 „4.9.2 Traversal by Iteration“.&lt;/ref&gt;</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* Im rekursiven Programmierstil lassen sich manche Szenarien nur durch eine sog. [[Rückruffunktion]] ({{enS|''callback function''}}) realisieren. Beispielsweise wird bei einer rekursiv programmierten [[Binärbaum#Traversierung|Traversierfunktion]] eines Binärbaums dieser stets in seiner Gänze durchlaufen und die Nutzfunktion in einem Rückruf implementiert.&lt;br/&gt;Im Gegensatz dazu kann bei iterativer Programmierung das zu bearbeitende Segment des Baums durch eine [[Binärer Suchbaum#Suchen|Suchfunktion]] angesteuert, die Nutzfunktion nach Belieben als flache Anweisungsfolge bzw. als Unterprogramm implementiert und nach einem [[Binärbaum#Iterative Implementierung|(iterativen) Querschritt]] beim nächsten Element wiederholt werden.&lt;ref&gt;Siehe dazu [[Binärbaum#Traversierung|Traversierung]] (mit Codebeispielen) und Ben Pfaff: ''An Introduction to Binary Search Trees and Balanced Trees.'' Free Software Foundation, Inc. Boston 2004, S. 47 „4.9.2 Traversal by Iteration“.&lt;/ref&gt;</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Mit wachsender Leistungsfähigkeit der Rechner tritt jedoch die Lesbarkeit und Wartbarkeit von Software gegenüber ihrer technischen Effizienz in den Vordergrund. Wo dies der Fall ist, bietet sich der rekursive Ansatz für die Arbeit mit baumartigen Datenstrukturen und der iterative für sequenzielle Datenstrukturen an.</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Mit wachsender Leistungsfähigkeit der Rechner tritt jedoch die Lesbarkeit und Wartbarkeit von Software gegenüber ihrer technischen Effizienz in den Vordergrund. Wo dies der Fall ist, bietet sich der rekursive Ansatz für die Arbeit mit baumartigen Datenstrukturen und der iterative für sequenzielle Datenstrukturen an.</div></td> </tr> </table> Arilou https://de.wikipedia.org/w/index.php?title=Iterative_Programmierung&diff=211150348&oldid=prev Arilou: Die Einleitung sollte sich mit dem Artikelthema befassen, und nicht stark überwiegend (hier 3/4) mit dem Gegenteil, v.a. wenn's sowieso ein extra Kapitel dafür gibt. 2021-04-21T07:51:22Z <p>Die Einleitung sollte sich mit dem Artikelthema befassen, und nicht stark überwiegend (hier 3/4) mit dem Gegenteil, v.a. wenn&#039;s sowieso ein extra Kapitel dafür gibt.</p> <table style="background-color: #fff; color: #202122;" data-mw="interface"> <col class="diff-marker" /> <col class="diff-content" /> <col class="diff-marker" /> <col class="diff-content" /> <tr class="diff-title" lang="de"> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Nächstältere Version</td> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Version vom 21. April 2021, 09:51 Uhr</td> </tr><tr> <td colspan="2" class="diff-lineno">Zeile 1:</td> <td colspan="2" class="diff-lineno">Zeile 1:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Die '''[[:wikt:iterativ|iterative]] Programmierung''' (von ''[[Latein|lat.]]'' iterare = wiederholen) ist ein Konzept, bei dem mehrfach auszuführende Arbeitsschritte in [[Schleife (Programmierung)|Schleife]]n (Wiederholungen von [[Anweisung (Programmierung)|Anweisungen]] oder Anweisungsfolgen) umgesetzt werden.</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Die '''[[:wikt:iterativ|iterative]] Programmierung''' (von ''[[Latein|lat.]]'' iterare = wiederholen) ist ein Konzept, bei dem mehrfach auszuführende Arbeitsschritte in [[Schleife (Programmierung)|Schleife]]n (Wiederholungen von [[Anweisung (Programmierung)|Anweisungen]] oder Anweisungsfolgen) umgesetzt werden.</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><br /></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Im Unterschied dazu wird bei [[rekursive Programmierung|rekursiver Programmierung]] die Wiederholung erreicht, ohne dass das Programm explizite Schleifen enthält.&lt;ref&gt; [[Niklaus Wirth]]: ''Algorithmen und Datenstrukturen'', [[B. G. Teubner]] 1983, Seite 150&lt;/ref&gt; Anstatt Schleifenkontrollanweisungen enthält das Programm einen sogenannten Selbstaufruf der betreffenden Funktion, die dadurch (bei [[Endrekursion]]) unendlich oft ausgeführt werden könnte. Um eine endliche Anzahl Wiederholungen zu erreichen, benötigt das Programm ebenso eine [[Abbruchbedingung]] wie die Schleife bei der iterativen Programmierung.</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Abgrenzung ==</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Abgrenzung ==</div></td> </tr> <tr> <td colspan="2" class="diff-lineno">Zeile 9:</td> <td colspan="2" class="diff-lineno">Zeile 7:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>=== Gegenüberstellung ===</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>=== Gegenüberstellung ===</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>In der Literatur werden Funktionen gerne im [[Rekursive Programmierung|rekursiven Programmierstil]] vorgestellt, die meist als einfacher zu verstehen gelten. <del style="font-weight: bold; text-decoration: none;">Iterative</del> <del style="font-weight: bold; text-decoration: none;">Varianten</del> <del style="font-weight: bold; text-decoration: none;">bieten</del> <del style="font-weight: bold; text-decoration: none;">jedoch</del> <del style="font-weight: bold; text-decoration: none;">oft</del> <del style="font-weight: bold; text-decoration: none;">Vorteile</del>:</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>In der Literatur werden Funktionen gerne im [[Rekursive Programmierung|rekursiven Programmierstil]] vorgestellt, die meist als einfacher zu verstehen gelten. <ins style="font-weight: bold; text-decoration: none;">Bei</ins> <ins style="font-weight: bold; text-decoration: none;">[[rekursive</ins> <ins style="font-weight: bold; text-decoration: none;">Programmierung|rekursiver</ins> <ins style="font-weight: bold; text-decoration: none;">Programmierung]]</ins> <ins style="font-weight: bold; text-decoration: none;">wird</ins> <ins style="font-weight: bold; text-decoration: none;">die Wiederholung erreicht, ohne dass das Programm explizite Schleifen enthält.&lt;ref&gt; [[Niklaus Wirth]]</ins>:<ins style="font-weight: bold; text-decoration: none;"> ''Algorithmen und Datenstrukturen'', [[B. G. Teubner]] 1983, Seite 150&lt;/ref&gt; Anstatt Schleifenkontrollanweisungen enthält das Programm einen sogenannten Selbstaufruf der betreffenden Funktion, die dadurch (bei [[Endrekursion]]) unendlich oft ausgeführt werden könnte. Um eine endliche Anzahl Wiederholungen zu erreichen, benötigt das Programm ebenso eine [[Abbruchbedingung]] (oder einen nichtrekursiven Ausführungszweig) wie die Schleife bei der iterativen Programmierung.</ins></div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>Iterative Implementierungen bieten jedoch oft Vorteile:</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* Bei iterativer Programmierung kann der Speicherbedarf schärfer durch den Programmierer zugeschnitten und kontrolliert werden, wogegen bei rekursiver bei jedem Selbstaufruf unvermeidlich der Kontext der aufrufenden Prozedur (im Programm-Stapelspeicher) zu retten ist, damit er beim [[Rücksprung]] wieder hergestellt werden kann.</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* Bei iterativer Programmierung kann der Speicherbedarf schärfer durch den Programmierer zugeschnitten und kontrolliert werden, wogegen bei rekursiver bei jedem Selbstaufruf unvermeidlich der Kontext der aufrufenden Prozedur (im Programm-Stapelspeicher) zu retten ist, damit er beim [[Rücksprung]] wieder hergestellt werden kann.</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* Darüber hinaus ist der Speicherbedarf für den Programm-[[Stapelspeicher]] programmiersprachlich schwer oder gar nicht kontrollierbar, wovon die berüchtigten [[Stapelüberlauf|Stapelüberläufe]] eine Folge sind.</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* Darüber hinaus ist der Speicherbedarf für den Programm-[[Stapelspeicher]] programmiersprachlich schwer oder gar nicht kontrollierbar, wovon die berüchtigten [[Stapelüberlauf|Stapelüberläufe]] eine Folge sind.</div></td> </tr> </table> Arilou https://de.wikipedia.org/w/index.php?title=Iterative_Programmierung&diff=211138987&oldid=prev Aka: Punkt vor und nach Ref-Tag korrigiert 2021-04-20T18:29:06Z <p>Punkt vor und nach Ref-Tag korrigiert</p> <table style="background-color: #fff; color: #202122;" data-mw="interface"> <col class="diff-marker" /> <col class="diff-content" /> <col class="diff-marker" /> <col class="diff-content" /> <tr class="diff-title" lang="de"> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Nächstältere Version</td> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Version vom 20. April 2021, 20:29 Uhr</td> </tr><tr> <td colspan="2" class="diff-lineno">Zeile 1:</td> <td colspan="2" class="diff-lineno">Zeile 1:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Die '''[[:wikt:iterativ|iterative]] Programmierung''' (von ''[[Latein|lat.]]'' iterare = wiederholen) ist ein Konzept, bei dem mehrfach auszuführende Arbeitsschritte in [[Schleife (Programmierung)|Schleife]]n (Wiederholungen von [[Anweisung (Programmierung)|Anweisungen]] oder Anweisungsfolgen) umgesetzt werden.</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Die '''[[:wikt:iterativ|iterative]] Programmierung''' (von ''[[Latein|lat.]]'' iterare = wiederholen) ist ein Konzept, bei dem mehrfach auszuführende Arbeitsschritte in [[Schleife (Programmierung)|Schleife]]n (Wiederholungen von [[Anweisung (Programmierung)|Anweisungen]] oder Anweisungsfolgen) umgesetzt werden.</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Im Unterschied dazu wird bei [[rekursive Programmierung|rekursiver Programmierung]] die Wiederholung erreicht, ohne dass das Programm explizite Schleifen enthält.&lt;ref&gt; [[Niklaus Wirth]]: ''Algorithmen und Datenstrukturen'', [[B. G. Teubner]] 1983, Seite 150&lt;/ref&gt;<del style="font-weight: bold; text-decoration: none;">.</del> Anstatt Schleifenkontrollanweisungen enthält das Programm einen sogenannten Selbstaufruf der betreffenden Funktion, die dadurch (bei [[Endrekursion]]) unendlich oft ausgeführt werden könnte. Um eine endliche Anzahl Wiederholungen zu erreichen, benötigt das Programm ebenso eine [[Abbruchbedingung]] wie die Schleife bei der iterativen Programmierung.</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>Im Unterschied dazu wird bei [[rekursive Programmierung|rekursiver Programmierung]] die Wiederholung erreicht, ohne dass das Programm explizite Schleifen enthält.&lt;ref&gt; [[Niklaus Wirth]]: ''Algorithmen und Datenstrukturen'', [[B. G. Teubner]] 1983, Seite 150&lt;/ref&gt; Anstatt Schleifenkontrollanweisungen enthält das Programm einen sogenannten Selbstaufruf der betreffenden Funktion, die dadurch (bei [[Endrekursion]]) unendlich oft ausgeführt werden könnte. Um eine endliche Anzahl Wiederholungen zu erreichen, benötigt das Programm ebenso eine [[Abbruchbedingung]] wie die Schleife bei der iterativen Programmierung.</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Abgrenzung ==</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Abgrenzung ==</div></td> </tr> </table> Aka https://de.wikipedia.org/w/index.php?title=Iterative_Programmierung&diff=211134844&oldid=prev Idohl: - überflüss. Rest 2021-04-20T16:02:16Z <p>- überflüss. Rest</p> <table style="background-color: #fff; color: #202122;" data-mw="interface"> <col class="diff-marker" /> <col class="diff-content" /> <col class="diff-marker" /> <col class="diff-content" /> <tr class="diff-title" lang="de"> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Nächstältere Version</td> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Version vom 20. April 2021, 18:02 Uhr</td> </tr><tr> <td colspan="2" class="diff-lineno">Zeile 1:</td> <td colspan="2" class="diff-lineno">Zeile 1:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Die '''[[:wikt:iterativ|iterative]] Programmierung''' (von ''[[Latein|lat.]]'' iterare = wiederholen) ist ein Konzept, bei dem mehrfach auszuführende Arbeitsschritte in [[Schleife (Programmierung)|Schleife]]n (Wiederholungen von [[Anweisung (Programmierung)|Anweisungen]] oder Anweisungsfolgen) umgesetzt werden.</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Die '''[[:wikt:iterativ|iterative]] Programmierung''' (von ''[[Latein|lat.]]'' iterare = wiederholen) ist ein Konzept, bei dem mehrfach auszuführende Arbeitsschritte in [[Schleife (Programmierung)|Schleife]]n (Wiederholungen von [[Anweisung (Programmierung)|Anweisungen]] oder Anweisungsfolgen) umgesetzt werden.</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Im Unterschied dazu wird bei [[rekursive Programmierung|rekursiver Programmierung]] die Wiederholung erreicht, ohne dass das Programm explizite Schleifen enthält.&lt;ref&gt; [[Niklaus Wirth]]: ''Algorithmen und Datenstrukturen'', [[B. G. Teubner]] 1983, Seite 150&lt;/ref&gt;<del style="font-weight: bold; text-decoration: none;">. indem ein [[Rekursion|rekursiver]] Vorgang inganggesetzt wird</del>. Anstatt Schleifenkontrollanweisungen <del style="font-weight: bold; text-decoration: none;">e3nthält</del> das Programm einen sogenannten Selbstaufruf der betreffenden Funktion, die dadurch (bei [[Endrekursion]]) unendlich oft ausgeführt werden könnte. Um eine endliche Anzahl Wiederholungen zu erreichen, benötigt das Programm ebenso eine [[Abbruchbedingung]] wie die Schleife bei der iterativen Programmierung.</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>Im Unterschied dazu wird bei [[rekursive Programmierung|rekursiver Programmierung]] die Wiederholung erreicht, ohne dass das Programm explizite Schleifen enthält.&lt;ref&gt; [[Niklaus Wirth]]: ''Algorithmen und Datenstrukturen'', [[B. G. Teubner]] 1983, Seite 150&lt;/ref&gt;. Anstatt Schleifenkontrollanweisungen <ins style="font-weight: bold; text-decoration: none;">enthält</ins> das Programm einen sogenannten Selbstaufruf der betreffenden Funktion, die dadurch (bei [[Endrekursion]]) unendlich oft ausgeführt werden könnte. Um eine endliche Anzahl Wiederholungen zu erreichen, benötigt das Programm ebenso eine [[Abbruchbedingung]] wie die Schleife bei der iterativen Programmierung.</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Abgrenzung ==</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Abgrenzung ==</div></td> </tr> </table> Idohl https://de.wikipedia.org/w/index.php?title=Iterative_Programmierung&diff=211134790&oldid=prev Idohl: + EN für: ohne dass das rek. Programm explizite Schleifen enthält. 2021-04-20T16:00:08Z <p>+ EN für: ohne dass das rek. Programm explizite Schleifen enthält.</p> <table style="background-color: #fff; color: #202122;" data-mw="interface"> <col class="diff-marker" /> <col class="diff-content" /> <col class="diff-marker" /> <col class="diff-content" /> <tr class="diff-title" lang="de"> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Nächstältere Version</td> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Version vom 20. April 2021, 18:00 Uhr</td> </tr><tr> <td colspan="2" class="diff-lineno">Zeile 1:</td> <td colspan="2" class="diff-lineno">Zeile 1:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Die '''[[:wikt:iterativ|iterative]] Programmierung''' (von ''[[Latein|lat.]]'' iterare = wiederholen) ist ein Konzept, bei dem mehrfach auszuführende Arbeitsschritte in [[Schleife (Programmierung)|Schleife]]n (Wiederholungen von [[Anweisung (Programmierung)|Anweisungen]] oder Anweisungsfolgen) umgesetzt werden.</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Die '''[[:wikt:iterativ|iterative]] Programmierung''' (von ''[[Latein|lat.]]'' iterare = wiederholen) ist ein Konzept, bei dem mehrfach auszuführende Arbeitsschritte in [[Schleife (Programmierung)|Schleife]]n (Wiederholungen von [[Anweisung (Programmierung)|Anweisungen]] oder Anweisungsfolgen) umgesetzt werden.</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Im Unterschied dazu wird bei [[rekursive Programmierung|rekursiver Programmierung]] die Wiederholung erreicht, <del style="font-weight: bold; text-decoration: none;">indem</del> <del style="font-weight: bold; text-decoration: none;">ein</del> [[<del style="font-weight: bold; text-decoration: none;">Rekursion|rekursiver</del>]] <del style="font-weight: bold; text-decoration: none;">Vorgang</del> <del style="font-weight: bold; text-decoration: none;">inganggesetzt</del> <del style="font-weight: bold; text-decoration: none;">wird:</del> <del style="font-weight: bold; text-decoration: none;">Zusätzlich</del> <del style="font-weight: bold; text-decoration: none;">zum</del> [[<del style="font-weight: bold; text-decoration: none;">Blockstruktur</del>|<del style="font-weight: bold; text-decoration: none;">Anweisungsblock</del>]] wird <del style="font-weight: bold; text-decoration: none;">anstatt</del> <del style="font-weight: bold; text-decoration: none;">der</del> Schleifenkontrollanweisungen <del style="font-weight: bold; text-decoration: none;">ein</del> <del style="font-weight: bold; text-decoration: none;">sogenannter</del> Selbstaufruf der betreffenden Funktion<del style="font-weight: bold; text-decoration: none;"> durchgeführt</del>, die dadurch (bei [[Endrekursion]]) unendlich oft ausgeführt werden könnte. Um eine endliche Anzahl Wiederholungen zu erreichen, benötigt das Programm ebenso eine [[Abbruchbedingung]] wie die Schleife bei der iterativen Programmierung.</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>Im Unterschied dazu wird bei [[rekursive Programmierung|rekursiver Programmierung]] die Wiederholung erreicht, <ins style="font-weight: bold; text-decoration: none;">ohne</ins> <ins style="font-weight: bold; text-decoration: none;">dass das Programm explizite Schleifen enthält.&lt;ref&gt;</ins> [[<ins style="font-weight: bold; text-decoration: none;">Niklaus Wirth</ins>]]<ins style="font-weight: bold; text-decoration: none;">:</ins> <ins style="font-weight: bold; text-decoration: none;">''Algorithmen</ins> <ins style="font-weight: bold; text-decoration: none;">und</ins> <ins style="font-weight: bold; text-decoration: none;">Datenstrukturen'',</ins> <ins style="font-weight: bold; text-decoration: none;">[[B.</ins> <ins style="font-weight: bold; text-decoration: none;">G. Teubner]] 1983, Seite 150&lt;/ref&gt;. indem ein</ins> [[<ins style="font-weight: bold; text-decoration: none;">Rekursion</ins>|<ins style="font-weight: bold; text-decoration: none;">rekursiver</ins>]]<ins style="font-weight: bold; text-decoration: none;"> Vorgang inganggesetzt</ins> wird<ins style="font-weight: bold; text-decoration: none;">.</ins> <ins style="font-weight: bold; text-decoration: none;">Anstatt</ins> Schleifenkontrollanweisungen <ins style="font-weight: bold; text-decoration: none;">e3nthält das Programm einen</ins> <ins style="font-weight: bold; text-decoration: none;">sogenannten</ins> Selbstaufruf der betreffenden Funktion, die dadurch (bei [[Endrekursion]]) unendlich oft ausgeführt werden könnte. Um eine endliche Anzahl Wiederholungen zu erreichen, benötigt das Programm ebenso eine [[Abbruchbedingung]] wie die Schleife bei der iterativen Programmierung.</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Abgrenzung ==</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Abgrenzung ==</div></td> </tr> </table> Idohl