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.

120 6 Einsatz von Basis-Methoden<br />

|summe zaehler|<br />

zaehler := 1.<br />

summe := 0.<br />

[zaehler < 6] whileTrue: [summe := summe + (zaehler * zaehler).<br />

zaehler := zaehler + 1].<br />

summe<br />

Da es in bestimmten Fällen sinnvoll sein kann, die Wiederholung einer Block-<br />

Ausführung davon abhängig zu machen, daß eine Bedingung zu einem bestimmten<br />

Zeitpunkt nicht mehr zutrifft, steht neben “whileTrue:” zusätzlich die Basis-<br />

Methode “whileFalse:” zur Verfügung, die wie folgt verwendet werden muß:<br />

ˆ [] whileFalse: <br />

Im Hinblick auf die Ausführung dieser Methode ist folgendes festzustellen:<br />

ˆ “whileFalse:”:<br />

Das Empfänger-Objekt der Message “whileFalse:” muß ein logischer Block<br />

sein.<br />

Ist das Ergebnis-Objekt, das aus der erstmaligen Ausführung des logischen<br />

Blockes resultiert, gleich der Pseudovariablen “true”, so wird der Argument-<br />

Block, d.h. der Block, der als Argument des Selektors “whileFalse:” angegeben<br />

ist, nicht ausgeführt.<br />

Ergibt sich dagegen die Pseudovariable “false” als Ergebnis-Objekt, so erfolgt<br />

die erstmalige Ausführung des Argument-Blockes. Anschließend wird<br />

der logische Block erneut ausgewertet. Je nachdem, welche Pseudovariable als<br />

Ergebnis-Objekt resultiert, wird die Wiederholung beendet oder fortgesetzt.<br />

Die Ausführung des Argument-Blockes wird solange wiederholt, bis die Pseudovariable<br />

“true” als Ergebnis-Objekt des logischen Blockes erhalten wird.<br />

Als Ergebnis-Objekt der Message “whileFalse:” ist die Pseudovariable “nil”<br />

festgelegt.<br />

Unter Einsatz der Methode “whileFalse:” kann die oben angegebene Berechnung<br />

des Summenwertes wie folgt modifiziert werden:<br />

|summe zaehler|<br />

zaehler := 1.<br />

summe := 0.<br />

[zaehler > 5] whileFalse: [summe := summe + (zaehler * zaehler).<br />

zaehler := zaehler + 1].<br />

summe<br />

Hinweis: Als Alternative läßt sich die Berechnung des Summenwertes auch in der Form<br />

VarBag := Bag new. VarBag add: 1; add: 2; add: 3; add: 4; add: 5.<br />

VarBag inject:0 into:[:summe :eineZahl|summe + (eineZahl * eineZahl)]<br />

durch den Einsatz der Basis-Methode “inject:into:” ermitteln.

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!