Vorlesungsskript - Hochschule Emden/Leer
Vorlesungsskript - Hochschule Emden/Leer
Vorlesungsskript - Hochschule Emden/Leer
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
c○ Prof. Dr. B. Bartning, HS <strong>Emden</strong>/<strong>Leer</strong> Rumpfskript ” Informatik I/II“ (WS/SS 2010/11) 30<br />
(2.53) Algorithmus zum Sortieren:<br />
Bubble-Sort, deutsch sinngemäß:<br />
Sortieren durch Nachbarvertauschungen.<br />
Der Typ<br />
Ganzzahl-FELD[anzahl]<br />
bedeute ein Feld oder Array<br />
von anzahl Ganzzahl-Elementen;<br />
die Nummerierung laufe<br />
von 0 bis (anzahl-1).<br />
Entwicklung dieses Algorithmus<br />
und nähere Besprechung s. Vorlesung.<br />
Aufgabe:<br />
Zeichnen Sie ein Struktogramm<br />
zum nebenstehenden Algorithmus.<br />
ALGORITHMUS BubbleSort<br />
ANFANG<br />
VARIABLE nr TYP Ganzzahl<br />
VARIABLE vertauschung TYP Boolesch<br />
KONSTANTE anzahl TYP Ganzzahl WERT . . .<br />
VARIABLE zahlFeld TYP Ganzzahl-FELD[anzahl]<br />
Lies anzahl Zahlen, besetze damit zahlFeld<br />
TUE<br />
vertauschung ← falsch<br />
nr ← 0<br />
SOLANGE nr < anzahl−1 TUE<br />
nr ← nr + 1<br />
WENN zahlFeld[nr-1] < zahlFeld[nr] DANN<br />
Vertausche beide Zahlen<br />
vertauschung ← wahr<br />
SOLANGE vertauschung<br />
Schreibe zahlFeld<br />
ENDE<br />
(2.54) Prinzip der schrittweisen Verfeinerung 〈top-down-design〉: eine Zerlegungsform, die<br />
sich am Ablauf zur Problemlösung orientiert. Je Verfeinerungsstufe wird der Ablauf in kleinere<br />
Handlungseinheiten zerlegt, bis er nur noch aus Elementaralgorithmen besteht (d. h.<br />
Algorithmen, die der Prozessor direkt ausführen kann). In jedem Verfeinerungsschritt können<br />
die drei Algorithmenstrukturen Folge, Auswahl und Wiederholung eingesetzt werden.<br />
↑↑ Für manche Autoren sind ” schrittweise Verfeinerung“ 〈wörtlich: stepwise refinement〉 und<br />
” top-down-design“ nicht synonym.<br />
2.6 Operatoren, logische Verknüpfungen<br />
(2.60) Übb Dieses Unterkapitel befasst sich zunächst mit der Erläuterung von Operatoren (d. h.<br />
Symbole für Funktionen) und ihren Anwendungen (2.61). Danach werden spezielle Ausdrücke<br />
näher betrachtet, und zwar die logischen Ausdrücke oder Aussagen (sie können nur ” Wahr“<br />
oder ” Falsch“ sein). Hierbei werden insbesondere die zugehörigen Operatoren vorgestellt<br />
(2.62ff.). Diese Begriffe werden in den Folgekapiteln auf die Sprache C ++ angewandt, sie werden<br />
dort für das Verständnis unbedingt benötigt.<br />
(2.61)<br />
(a) Ein Operator 〈operator〉 ist ein Symbol für eine Funktion, nämlich für eine eindeutige<br />
Zuordnungsvorschrift, und zwar zwischen einem oder mehreren Elementen, den sog. Operanden,<br />
und dem Ergebniswert.<br />
(b) Ein Ausdruck 〈expression〉 kann bestehen aus:<br />
• einer Konstanten (ohne Operator oder als Operand) oder<br />
• einer Variablen (ohne Operator oder als Operand) oder<br />
• einem Operator einschließlich der zugehörigen Operanden,<br />
dieses rekursiv beliebig tief geschachtelt.<br />
(c) Man unterscheidet die Operatoren z. B. anhand der Anzahl ihrer Operanden:<br />
(1) Ein Operator mit genau einem Operand heißt unär oder monadisch 〈unary〉.<br />
Unterschiedliche Schreibweise in Bezug auf Reihenfolge Operator und Operand (Operatorsymbol<br />
sei ⊛, Operand a):<br />
⊛a präfix 〈prefix〉 Bsp f(a), −a (Vorzeichen als Operator),<br />
a⊛ postfix 〈postfix〉 Bsp<br />
¬p (log. Negation, s. (2.63))<br />
4! (Fakultät)<br />
(2) Ein Operator mit genau zwei Operanden binär oder dyadisch 〈binary〉.<br />
Schreibweise (Operatorsymbol sei ⊛, Operanden a, b):<br />
⊛ab präfix Bsp f(a, b), +(3, 4)<br />
a ⊛ b infix 〈infix〉 Bsp 5 + 6, 4 · 3<br />
ab⊛ postfix Bsp 5 6 +, vgl. manche HP-Taschenrechner ( ” umgekehrte polnische Notation“)