03.11.2013 Aufrufe

SMALLTALK K1ex127-.45ex51275ahler/Bothner

SMALLTALK K1ex127-.45ex51275ahler/Bothner

SMALLTALK K1ex127-.45ex51275ahler/Bothner

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

126 6 Einsatz von Basis-Methoden<br />

Sammler "Bag"<br />

"WerteErfassung11"<br />

31<br />

37<br />

35<br />

31<br />

37<br />

37<br />

39<br />

size<br />

7<br />

asSortedCollection<br />

Fall: "ungerade"<br />

Fall: "gerade"<br />

31 31 35 37 37 37 39 Sammler "SortedCollection"<br />

Index: (7 + 1) / 2<br />

31 31 35 37 37 37 37 39 Sammler "SortedCollection"<br />

Index: 8/2 Index: (8/2) + 1<br />

Abbildung 6.8: Grundidee zur Berechnung eines Medians<br />

Auf der Basis dieser Skizze läßt sich der Lösungsplan durch das folgende Struktogramm<br />

angeben:<br />

Richte einen Sammler als Wert der temporären Variablen "varSortColl" ein und<br />

übertrage in ihn alle Werte von "werteBag" der Instanz "WerteErfassung11",<br />

so daß sortierte ganzzahlige Werte abgelegt sind<br />

Anzahl der Werte von "varSortColl" ungeradzahlig?<br />

true<br />

false<br />

Ordne den Wert der temporären Variablen<br />

"medianwert" zu, der innerhalb von<br />

"varSortColl" an der Stelle enthalten ist,<br />

die sich durch Halbierung der um 1<br />

erhöhten Wertezahl von "varSortColl"<br />

ergibt<br />

Ordne der temporären Variablen<br />

"position" die halbierte Wertezahl<br />

von "varSortColl" zu<br />

Ordne der temporären Variablen<br />

"medianwert" den Mittelwert der<br />

durch "position" und "position + 1"<br />

innerhalb von "varSortColl"<br />

bestimmten Werte zu<br />

Abbildung 6.9: Struktogramm zur Berechnung eines Medians<br />

Indem wir auf die zuvor vorgestellten Basis-Methoden “asSortedCollection”, “odd”,<br />

“ifTrue:ifFalse:” und “at:” zurückgreifen, können wir das Struktogramm wie folgt<br />

umformen:<br />

|varSortColl position medianwert|<br />

varSortColl := (WerteErfassung11 bereitstellenWerte<br />

collect: [:einObjekt|einObjekt asInteger])<br />

asSortedCollection.<br />

varSortColl size odd<br />

ifTrue: [medianwert:=varSortColl at:(varSortColl size)+1/2]

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!