Vorlesungsskript - Hochschule Emden/Leer
Vorlesungsskript - Hochschule Emden/Leer
Vorlesungsskript - Hochschule Emden/Leer
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
c○ Prof. Dr. B. Bartning, HS <strong>Emden</strong>/<strong>Leer</strong> Rumpfskript ” Informatik I/II“ (WS/SS 2010/11) 28<br />
2.5 Schachtelung der drei Algorithmenstrukturen<br />
(2.50) Übb Diese drei Algorithmenstrukturen Folge, Auswahl, Wiederholung können beliebig<br />
ineinander geschachtelt werden. (Die Schachtelung einer Folge innerhalb einer Auswahl oder<br />
Wiederholung ist bereits in früheren Diagrammen angedeutet worden.)<br />
Nur durch Benutzung dieser drei Strukturen mit der Möglichkeit, sie ineinander zu schachteln,<br />
können beliebig komplizierte Algorithmen gebaut werden. Wie bereits in (2.13b) erwähnt,<br />
reichen diese Grundstrukturen aus; insbesondere ist es nicht nötig, direkte Sprunganweisungen<br />
( ” goto“) zu benutzen. Solche Sprunganweisungen sind im Rahmen dieses Kurses für die<br />
Studierenden verboten; daher werden sie in C ++ auch nicht eingeführt.<br />
Theoretisch kann die Schachtelung in beliebige Tiefe gehen. Eine für die Praxis äußerst<br />
wichtige Grenze liegt in der Forderung, dass die Algorithmenstruktur für den menschlichen<br />
Leser noch überschaubar bleiben muss. Daher wird in diesem Kurs auf das Lay-out von<br />
Programmtext (als Pseudocode oder in einer Programmiersprache) sehr großer Wert gelegt.<br />
Im folgenden Punkt (2.51) werden die Grundregeln erläutert; dieselben Regeln, dort noch<br />
etwas ausführlicher, werden in (4.73) auf C ++ angewendet.<br />
Die Punkte (2.52) und (2.53) bringen Beispiele für Schachtelungen. Das zweite Beispiel, der<br />
Algorithmus ” Bubble-Sort“, kann ggf. auch für spätere Anwendungen benötigt werden; ein<br />
Auswendiglernen ist nicht erforderlich, Erinnern und Wiederauffinden reichen aus.<br />
(2.51) Empf – für Studierende nicht nur eine Empfehlung, sondern ein Muss –<br />
Anfang und Ende der verschiedenen Schachtelungsebenen müssen streng beachtet werden.<br />
Im Pseudocode geschieht dieses durch Einrückungen, vgl. (2.52a).<br />
Wichtig wird es beim Programmieren sein, selbst so viel Disziplin beim Lay-out des<br />
Programmtextes zu zeigen, dass die Einrückungen für die einzelnen Schachtelungsebenen<br />
genau vorgenommen werden (je Schachtelungsstufe mit einem bestimmten<br />
Einrückabstand) – und zwar nur wegen der Übersichtlichkeit für den betrachtenden<br />
Menschen. Ein C ++-Compiler überliest die Einrückungen. da die Sprache ein beliebiges<br />
Lay-out gestattet.<br />
Auch hierbei gilt weiterhin (2.22b): Jede Anweisung sollte jeweils (i. a.) in eine Zeile<br />
geschrieben werden. Ist eine Anweisung zu lang: Fortsetzung eingerückt in der<br />
Folgezeile.<br />
Ausnahmen, und zwar keine Einrückung, obwohl Fortsetzung einer Anweisung (einer<br />
Kontrollstruktur):<br />
• Zweiseitige Auswahl: SONST direkt unter WENN, nicht eingerückt (2.32, 2.34 ↑↑),<br />
• WENN-SONSTWENN-Kette (2.36),<br />
• Fußgesteuerte Wiederholung: SOLANGE direkt unter TUE, nicht eingerückt –<br />
obwohl problematisch (2.42 Anm); zu C ++/C s. (4.73).<br />
Im Struktogramm werden die Schachtelungsebenen durch ein echtes Ineinander-Schachteln<br />
der Rechtecke deutlich, vgl. (2.52c).<br />
(2.52) Bsp Zu den Schachtelungsebenen des folgenden Beispiels: In der obersten (ersten) Schachtelungsebene<br />
gibt es – neben der Angabe der benötigten Speicherplätze – insgesamt drei Anweisungen.<br />
Die zweite unter ihnen hat eine Unterstruktur, sie ist eine zweiseitige Auswahl;<br />
in der nächsten Schachtelungsebene sieht man, dass sowohl der DANN-Zweig als auch der<br />
SONST-Zweig wieder aus je einer zweiseitigen Auswahl (jeweils zweite Schachtelungsebene)<br />
bestehen. Die einzelnen Zuweisungen stehen in der dritten Schachtelungsebene.<br />
(a) Pseudocode – einmal normal mit Einrückungen, einmal mit Extrakennzeichnung der Schachtelungsebenen: