07.10.2013 Aufrufe

Vorlesungsskript - Hochschule Emden/Leer

Vorlesungsskript - Hochschule Emden/Leer

Vorlesungsskript - Hochschule Emden/Leer

MEHR ANZEIGEN
WENIGER ANZEIGEN

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“)

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!