Box Generator / Sprache Smalltalk
StartSeite | BoxGenerator/ | Neues | TestSeite | ForumSeite | Teilnehmer | Kategorien | Index | Hilfe | Einstellungen | Ändern
Klassenbeschreibung | |
| | value |
class name | Randbox |
superclass | Object |
instance variable names | x y product first second available random |
comment | I generate gaussian random deviates |
|
|
class methods | |
instance creation | |
new
instance methods | |
instance initialization | |
initialize
| random := Random new.
available := false |
|
|
random number generation | |
next moves to the next element of the pseudo random sequence
| available
ifTrue: [ available := false ]
ifFalse: [ self generate ] |
|
|
inquiry | |
lastGaussian returns a pseudo random deviate from the gaussian distribution
| ^available
ifTrue: [ first ]
ifFalse: [ second ] |
|
|
private | |
randuniv returns a random deviate from a uniform distribution on the unit interval
| random next.
^random lastUniform |
|
|
randpoint from a uniform distribution on the area of the unit circle
| product := 2 .
[product <= 1] whileFalse:
[
x := (self randuniv) * 2 - 1.
y := (self randuniv) * 2 - 1.
product := (x * x) + (y * y).
] |
|
|
generate two pseudo random deviates from a gaussian distribution
| | p |
self randpoint.
p := ((-2 * (product log)) / product) sqrt.
available := true.
first := p * x.
second := p * y |
|
|
Bemerkungen | |
Teile der Smalltalk Syntax, etwa die Klassendefinition, werden bei Smalltalk in eine dafür vorgesehene Text-Schablone innerhalb eines Code-Browsers eingegeben. Für den fertigen Code gibt es verschiedene Ablagemöglichkeiten und Formate.
Eine Implementation in SpracheSmalltalk ist deshalb nicht ohne weiteres in die Form eines Textes zu bringen.
fett sind die Nachrichten angegeben, die zum Protokoll von Randbox gehören. kursiv sind die Protokollbeschreibungen der einzelnen Nachrichten aufgeführt. Die Informationen über die Klasse selbst stehen oben in tabellarischer Form. Die Kategorien des Protokolls von Randbox sind als Gliederung dieses Quelltextes angegeben.
Wenn es der verwendete Zeichensatz hergeben würde, wäre der :=-Operator ein Pfeil nach links und der ^-Operator ein Pfeil nach oben.
Die Lesart bei Smalltalk ist satzähnlich, wobei die Objekte die Subjekt sind und die Methoden die Prädikate. Ergebnis jeder Kombination aus Objekt und Methode ist wieder ein Objekt. Methoden ohne expliziten Rückgabewert liefern self (das Objekt, an das die Methode geschickt wurde). Bei Methoden mit Parametern muss man den "Satz" klammern, um sein Ergebnisobjekt weiterverwenden zu können. Da es keinen Operatorvorrang a la Punkt- vor Strichrechnung gibt, muss diese Klammerung in Rechnungen meist explizit erfolgen.
KategorieProgrammierBeispiele KategorieSmalltalk
StartSeite | BoxGenerator/ | Neues | TestSeite | ForumSeite | Teilnehmer | Kategorien | Index | Hilfe | Einstellungen | Ändern
Text dieser Seite ändern (zuletzt geändert: 24. November 2003 22:32 (diff))