literaturverzeichnis - home - springer978-3-662-10819...liskov, b. und guttag, j. (1986):...
TRANSCRIPT
Literaturverzeichnis
Zustandsorientiertes und strukturiertes Programmieren
DIJKSTRA, E. W. (1976): A Discipline ofProgramming. Prentice-Hall.
DIJKSTRA, E. W. und FEIJEN, W. H. J. (1988): A Method ofProgramming. Addison-Wesley.
GRIES, D. (1981): The Science ofProgramming. Springer Verlag, New York.
LISKOV, B. und GUTTAG, J. (1986): Abstraction and Specification in Program Development. The MIT Press.
Objektorientiertes Programmieren BALZERT, H. (1995): Methoden der objektorientierten Systemanalyse. BI Wissenschaftsverlag,
Mannheim.
BOOCH, G. (1991): Object-Oriented Design with Applicatiom. Benjamin/Cummings Publishing Company, Reading, Mass.
BUDO, T. (1991): An Introduction to Object-Oriented Programming. Addison-Wesley.
FoWLER, M. und SCOTT, K. (1997): UML - konzentriert - Die Standardobjektmodellierungssprache Anwenden. Addison-Wesley.
JACKSON, M. A. (1975): Principles ofProgram Design. Academic Press.
]ACOBSON, I. und BOOCH, G. (1997): The Unified Modeling Language Version 1.1. Techn. Ber., Rational Software Corporation, Santa Clara. http://www.rational.com/umll.
JACOBSON, 1., CHRISTERSON, M.,JONSSON, P. und OVERGAARD, G. (1992): Object-OrientedSoftware Engineering: A Use Case Driven Approach. Addison-Wesley.
MEYER, B. (1988): Object-Oriented Software Comtruction. Prentice Hall.
OESTEREICH, B. (1998): Objektorientierte Softwareentwicklung - Analyse und Design mit der UniJied Modeling Language. Oldenbourg, vierte Aufl.
OMG UML REvISION TASK FORCE (1998): OMG UML 1.2. Techn. Ber., Object Management Group.
RUMBAUGH, J., BLAHA, M., PREMERLANI, W. et al. (1993): Objektorientiertes Modellieren und Entwerfen. Carl Hanser Verlag.
SHLAER, S. und MELLOR, S. J. (1988): Object-Oriented Systems Analysis - Modelling the World in Data. Prentice Hall.
SHLAER, S. und MELLOR, S. J. (1992): Object Lift Cycles - Modelling the World in States. Prentice Hall.
U LLMAN, J. D. (1982): Principles of Database Systems. Computer Science Press, zweite Aufl.
WIRFS-BROCK, R. J., WILKERSON, B. und L. WIENER (1993): Objektorientiertes Software-Design. Carl Hanser Verlag.
340 Literaturverzeichnis
Objektorientierte Sprachen DAHL, o. J., MYHRHAUG, B. und NYGAARD, K. (1968): Simula 67, Common Base Language.
Norwegisches Rechenzentrum, Oslo.
ELLIS, M. A. und STROUSTRUP, B. (1992): The Annotated C++ Reftrenee Manual. Addison Wesley.
GOLD BERG, A. (1984): Smalltalk-BO, the Interaetive Programming Environment. Addison Wesley.
GOLDBERG, A. und ROBSON, D. (1983): Smalltalk-BO: the Language and its Implementation. Addison Wesley.
Goos, G. (1997): Sather-K - The Language. Software- Concepts and Taofs, 18: 91-109.
GOSLING, J., JOY, B. und STEELE, G. (1996): The Java Language Speeifieation. The Java Series. Addison-Wesley.
MEYER, B. (1992): Eiffil: the Language. Prentice Hall.
ODERSKY, M. und WADLER, P. (1997): PIZZA into JAVA. In Proe. 24th ACM Symp. on Prineiples 01 Programming Languages, 146-159. Implementierung verfügbar von http://wwwipd.ira.uka.deJ- pizza.
ROHLFING, H. (1973): Simula -Eine Einfohrung, Bd. 747. BI-Wissenschaftsverlag.
WIRTH, N. und GUTKNECHT, J. (1992): Projeet Oberon: the Design 01 an Operating System and Compiler. Addison Wesley.
Objektorientiertes Programmieren: Weiterführende Literatur
BUSCHMANN, E, MEUNIER, R., ROHNERT, H. et al. (1996): Pattern-Oriented Software Arehiteeture -A System 0IPatterm. John Wiley & Sons.
DATE, C. J. (1986): An Introduetion to Database Systems, Bd. 1. Addison-Wesley, vierte Auf!.
GAMMA, E., HELM, R., JOHNSON, R. und VLISSIDES, J. (1996): Entwurfimuster: Elemente wiederverwendbarer objektorientierter Software. Addison-Wesley.
LANG, S. M. und LoCKEMANN,P. C. (1995): Datenbankeimatz. Springer Verlag.
PAGE, B. (1991): Diskrete Simulation. Springer Verlag.
PREE, W. (1994): Design Patterm Jor Objeet-Oriented Software Development. Addison-Wesley.
Vom Programm zur Maschine ABELSON, H., SUSSMAN, G. J. und SUSSMAN, J. (1991): Struktur und Interpretation von
Computerprogrammen. Springer Verlag.
JONES, R. und LINS, R. (1996): Garbage Colleetion: Algorithms Jor Automatie Dynamie Memory Management. John Wiley & Sons.
Algorithmen und Datenstrukturen AHO, A., HOPCROFT, J. und ULLMAN, J. (1974): The Design and Analysis olComputer Algorithms.
Addison-Wesley.
CORMEN, T. H., LEISERSON, C. E. und RivEST, R. L. (1990): Introduetion to Aigorithms. The MIT Press.
OTTMANN, T. und WIDMAYER, P. (1996): Algorithmen undDatenstrukturen. Spektrum Akademischer Verlag, dritte Auf!.
OTTMANN, T. (Hrsg.) (1998): Prinzipien des Algorithmenentwurfi. Spektrum Akademischer Verlag.
WIRTH, N. (1983): Algorithmen und Datemtrukturen. B. G. Teubner Verlag, dritte Auf!.
Literaturverzeichnis 341
Weitere Quellen AHRENS, W (1921): Mathematische Unterhaltungen und Spiele. B. G. Teubner Verlag, Leipzig.
APT, K. R. und OWEROG, E. -R. (1991): Verification ofSequential and Concurrent Programs. Springer Verlag.
BAUER, F. L. und WÖSSNER, H. (1972): Zuses "Plankalkül", ein Vorläufer der Programmiersprachen - gesehen vom Jahre 1972. Elektronische &chenanlagen, 14(3): 111-118
BOYER, R. S. und MOORE, S. J. (1977): A Fast String Searching Algorithm. Comm. ACM, 20(10): 762-772.
DEREMER, F. und KRON, H. H. (1976): Programming in the Large versus Programming in the Small. IEEE Tramactiom on Software Engineering, 2(2): 80-86.
DIJKSTRA, E. W (1970): Srructured Programming. In Software Engineering Techniques, herausgegeben von Buxton, J. N. und RandelI, B., S. 84-88. Reporr on a Conference, Rome,
27.-31. Oct. 1969. NATO Science Committee.
DIJKSTRA, E. W, DAHL, 0.-]. und HOARE, C. (1972): Structured Programming. Academic Press.
D IN (1983): DIN 66001, Informationsverarbeitung; Sinnbilder und ihre Anwendung. Deutsches
Institut für Normung e.v., Beuth Verlag.
OWICKI, S. S. und GRIES, D. (1976): An axiomatic proof technique for parallel programs I. Acta In!, 6: 319-340.
GRIES, D. (Hrsg.) (1978): Programming Methodology - a Collection of Articles by Members ofIPIP WG2.3. Springer Verlag.
GUJBAS, L. J. und ODLYZKO, A. M. (1980): A New Proof of the Linearity of the Boyer-Moore String SearchingAlgorithm. Siam] Comput., 9(4).
HOARE, C. (1969): An axiomatic basis for computer programming. Communicatiom of the ACM, 12: 576-583.
HOARE, C. A. R. und WIRTH, N. (1973): An Axiomatic Definition ofthe Programming Language PASCAL. Acta Informatica, 2: 335-355.
KNuTH, D. E. (1973): Sorting and Searching, Bd. 3 von The Art ofComputer Programming. AddisonWesley.
KNUTH, D. E., MORRIs, J. H. und PRATT, V. R. (1977): Fast Pattern Matching in Strings. SIAM Journal on Computing, 6: 323-350.
MAnSEN, O. L. und M0LLER-PEDERSEN, B. (1988): What Object-Oriented Programming may be - and what it does not have to be. In Proceedings ofthe European Con/erence on Object-Oriented Programming (ECOOP), Bd. 322 von LNCS, S. 1-20. Springer Verlag.
MANBER, U. (1989): Introduction toAlgorithms. Addison-Wesley.
MEHLHORN, K. (1986): Sortieren und Suchen, Bd. 1 von Datemtrukturen und effiziente Algorithmen. B. G. Teubner Verlag.
METROPOLIS, N., ROSENBLUTH, W, ROSENBLUTH, M. und TELLER, A. (1953): Equation of State
Calculations by Fast Computer Machines.] Chem. Phys., 21: 1087.
MINSKY, M. (1975): A Framework for Representing Knowledge. In The Psychology of Computer Vision, herausgegeben von Winston, P. H., S. 211-277. McGraw Hili.
M01WANI, R. und RAGHAVAN, P. (1995): Randomized Algorithms. Cambridge University Press.
MURER, S., OMOHUNDRO, S., STOUTAMIRE, D. und SZYPERSKI, C. (1996): Iteration Abstraction in
Sather. TOPLAS, 18(1): 1-15.
PARK, S. K. und MILLER, K. W (1988): Random Number Generators: Good Ones Are Hard to Find. Comm. ACM, 31(10): 1192-1201.
342 Literaturverzeichnis
PARNAS, D. (1 972a): A Technique for Software Module Specification wich Exarnples. Comm. ACM, 15(5): 330-336.
PARNAS, D. (1972b): On the Criteria To Be Used in Decomposing Systems into Modules. Comm. ACM, 15(12): 1053-1058.
RABIN, M. O. (1980): Probabilistic Algorithms for Testing Primality. J Number Theory, 12: 128-138.
SIMON, H. A. (1981): The Sciences ofthe Artificial The MIT Press.
SUNDAY, D. M. (1990): A Vety Fast Substring SearchAlgorithm. Comm. ACM, 33(8): 132-142.
WIRTH, N. (1972): Systematisches Programmieren. B. G. Teubner Verlag.
ZUSE, K. (1944): Ansätze einer allgemeinen Theorie des Rechnens unter besonderer Berücksichtigung des Aussagenkalküls und dessen Anwendung auf Relaisschaltungen. In ZUSE (1972). Original geschrieben 1944/45.
ZUSE, K. (1972): Der Plankalkül. Bericht Nr. 63, GMD, St. Augustin.
Anhang C
SATHER im Überblick
Dieser Anhang enthält die rur den praktischen Gebrauch wichtigsten Eigenschaften der Programmiersprache SATHER. Aussagen aus den Kap. 8 - 10 über die Bedeutung von Sprachelementen sind nicht wiederholt. Eine vollständige Beschreibung findet der Leser in (Goos, 1997). Der Bericht, weitere Literatur und Verweise auf Implementierungen findet man im Internet unter http://i44www.info.uni-karlsruhe.de/sather.
Die Syntax der Sprache geben wir mit Syntaxdiagrammen, vgl. 1.6.3, wieder.
C.1 Syntaxdiagramme
C.1.1 Grundsymbole
Ein Programmtext besteht aus Grundsymbolen, die durch Leerzeichen, Tabulatorzeichen, Zeilenumbrüche oder Kommentare getrennt sein können. Grundsymbole sind Bezeichner, natürliche Zahlen, Gleitpunktzahlen, Einzelzeichen, Texte, Sonderzeichen und Schlüsselwörter.
Bezeichner dienen in SATHER als Schlüsselwörter und als Namen rur Klassen, deren Merkmale und rur lokale Größen. Ein Bezeichner besteht aus einer Folge von Buchstaben, Ziffern und Unterstrichen, und beginnt mit einem Buchstaben. Die folgenden Bezeichner sind Schlüsselwörter und haben festgelegte Bedeutung: abstract, and, assert, bind, beg in, break, case, dass, constant, div, else, elsif, end, except, external, false, if, indude, Inf, is, loop, mod, NaN, not, or, pragma, private, procedure, readonly, resume, return, shared, stream, like, then, true, typecase, value,
void, when, while. Andere Bezeichner haben in SATHER eine festgelegte Bedeutung und sollten
nur mit dieser Bedeutung benutzt werden: aget, aset, arg, invariant, main, res, self, str, terminated, type.
Klassennamen schreiben wir in SATHER mit Großbuchstaben. Die in SATHER vordefinierten Klassen, die auch als Basisklassen bezeichnet werden, haben die Namen: ARR, ARRAY, BITS, BOOL, BYTE, CHAR, ERR, EXTOB, FILE, FLT, FLTD, INT, INTINF,
344 C SATHER im Überblick
LONG_INT. LONG_UNSIGNED, OB, SHORT_INT. SHORT_UNSIGNED, STR, STRING, SYSTEM,
TYPE,UNSIGNED.
Die Signaturen der wichtigsten Basisklassen sind in C.2 wiedergegeben. Ebenfalls vordefiniert sind die Bezeichner der Ausnahmen: FLOAT_OVERFLOW, FLOAT_UNDERFLOW, INTEGER_OVERFLOW, ZERO_DIVIDE,
NUMERICERROR, INDEX_ERROR, REFERENCE_ERROR, ASSERTION_ERROR,
INVARIANT_ERROR, STREAM_TERMINATION, EXIT
Kommentar
beliebige Zeichen bis Zeilenende
Pragmas sind Kommentare, die vom Übersetzer interpretiert werden.
C.1.2 Klassenvereinbarungen und Typen
Ein Programm ist eine Folge von Klassenvereinbarungen, getrennt durch Strichpunkte, vgl. 9.3.1.
Programm Klassenart
external
Klassenvereinbarung
Klassenparameter
Klassen ohne Klassenart sind Referenzklassen. Die Klassenarten value, abstract und external definieren Wertklassen, abstrakte Klassen bzw. Schnittstellenklassen zu externen Programmteilen. Referenz- und Wertobjekte sind Ausprägungen von Referenz- bzw. Wertklassen. Objekte der anderen Klassenarten gibt es nicht.
Vergleich und Zuweisung beziehen sich bei Referenzobjekten auf die Referenzen, bei Wertobjekten auf die Werte der Objekte, siehe Beispiel 9.9. Bei der Parameterübergabe eines Referenzobjekts mit Wertaufruf wird eine Kopie der Referenz, bei einem Wertobjekt aber eine Kopie des Wertes übergeben. Im zweiten Fall sind Änderungen des Objektzustands innerhalb einer Methode nach außen unsichtbar.
C.l Syntaxdiagramme 345
Abstrakte Klassen, vgl. 10.4.1, beschreiben Schnittstellen implementierungsunabhängig. Externe Klassen definieren die Signaturen von Programmteilen, die in einer anderen Programmiersprache, z. B. in C, geschrieben sind.
Der Kopf einer Klassenvereinbarung kann Reihungsgrenzen und Klassenparameter enthalten.
Grenzen Klassenparameter
Klassen mit Grenzen definieren Reihungen. Beispiele sind die Reihungsklassen ARRAY[*](T), ARRAY[*, *](T), ARRAY[*, *, *](T) ... und ARR[*](T) aus 8.1.4 und 9.3.3. Die Anzahl der Sterne steht für die Anzahl der Stufen; die Klasse ARRAY
ist für beliebige Anzahl von Stufen definiert. Bei der Vereinbarung benutzerdefinierter Reihungsklassen, die von anderen Reihungsklassen erben, muß die Dimension durch eine entsprechende Anzahl von Sternen angegeben werden.
Eine generische Klasse definiert eine ganze Familie von Klassen. Die Klassenparameter T einer generischen Klasse, siehe 10.1.2, dienen im Klassenrumpf als Platzhalter für beliebige Typen. Die Operationen der Typschranke dürfen auch auf Objekte des Typs T angewandt werden. Daher muß T konform zur Typschranke sein, vgl. dazu 10.2.4. Eine explizite Untertypbeziehung wird jedoch nicht verlangt.
Klassen benutzt man durch Angabe einer Klassenkennung. Bei generischen Klassen müssen dabei für alle Parameter konkrete Typen angegeben werden, die dann die Parameter im Rumpf der Klasse textuell ersetzen. So können wir z. B. mit Hilfe der generischen Vereinbarung von ARRAY Klassen mit Klassenkennungen ARRAY[*](INT), aber auch ARRAY[*](ARRAY[*](CHAR)) definieren. Klassenkennung
Bezeichner 1--.-------------7'"""<""--------~-
Die Indexgrenzen einer Klassenkennung bestimmen den Umfang in der jeweiligen Reihungsdimension. Beim Bilden eines Reihungsobjekts muß man sie explizit als ganzzahlige Ausdrücke angeben. In allen anderen Fällen, z. B. bei Methodenparametern besagt ein Stern, daß der Umfang beliebig ist.
346 C SATHER im Überblick
7jp
Signatur
Typen werden durch Klassenkennungen angegeben. SAME bezeichnet immer die aktuelle Klasse in deren Kontext es auftritt. Die Konstruktoren procedure und stream definieren Typen für gebundene Methoden, siehe 10.3.3; stream !
definiert den Typ eines Stromobjekts, vgl. 10.3.3.1. Polymorphe Typen, werden mit Hilfe des $-Operators erzeugt.
Klassenrumpf
Vererbung
Klassenkennung h------------r--r-
Bei der Verwendung einer Klasse werden Vererbungen textuell durch den Rumpf der geerbten Klasse ersetzt. Dabei können durch Modifikationen einzelne Merkmale umbenannt oder gelöscht werden. Auch das gezielte Erben eines einzelnen Merkmals ist in der Form Klassenkennung::Modifikation möglich. Die verschiedenen Arten von Vererbung sind in 10.2.4 beschrieben. Bei der Vererbung mit like muß die Unterklasse wie in Abb. 10.35 konform zur Oberklasse
sem.
C.l Syntaxdiagramme 347
Modifikation
Merkmale einer Klasse sind Attribute oder Methoden, siehe 8.1.2 und 8.1.6.4. Mit den Schlüsselwörtern private, shared, constant und readonly erhalten sie die in 9.4 erklärten Eigenschaften. constant-Vereinbarungen müssen initialisiert sein; spätere Zuweisungen sind nicht erlaubt.
Merkmal Attribut
---,---------.,-llokale Vereinbarung
lokale Vereinbarung
allg. Ausdruck
Methode
Methparameter
Das Schlüsselwort stream unterscheidet die Vereinbarung von Strömen, siehe 10.3.2, von Prozedurvereinbarungen. Das Schlüsselwort abstract zeigt an, daß die Signatur der Methode festgelegt ist, eine Implementierung jedoch noch aussteht. Dies ist nur in abstrakten und externen Klassen sinnvoll, vgl. 10.4.1.
Methparameter Parameterart
Bei Parametern von Strömen bedeutet constant, daß diese Parameter nur beim ersten Aufruf ausgewertet werden und danach konstant sind. Ein & erklärt den entsprechenden Parameter zum Ausgabeparameter. Wert-Ergebnisparameter werden mit && vereinbart, vgl. 8.1.6.4.
348 C SATHER im Überblick
C.1.3 Methodenrümpfe
Der Rumpf einer Methode ist ein Block, siehe 8.1.3.
Block
Bei der optionalen Ausnahmebehandlung, vgl. 8.2.8, ist Id ein Bezeichner, der das Ausnahmeobjekt benennt. Die WHEN-Klauseln der Typauswahl müssen Untertypen des Typs EXCEPTION unterscheiden.
Anweisung
-......--1 Zuweisung 1---------,-
bedingte Anweisung 1-------1
Fallunterscheidung 1--------1
Typunterscheidung 1----------1
Klassenkennung
Ausdruck 1-------'
break ist die Abbruchanweisung für Schleifen, siehe 8.1.6.3, mit return wird die aktuelle Methode verlassen, vgl. dazu 8.1.6.4, resume erlaubt, wie in 10.3.2 beschrieben, die Rückkehr zum Aufrufer eines Stroms. Zum Auslösen von Ausnahmen mittels raise und zu assert siehe 8.1.6.5 und (8.25).
Zuweisung
~ Name ~ allg. Ausdruck ~
Die linke Seite der Zuweisung, vgl. 8.1.1, benennt eine Variable, d.h. ein Attribut, ein Reihungselement oder eine lokale Variable. Der Typ der rechten
C.l Syntaxdiagramme 349
Seite muß gleich dem Typ der linken Seite sein, ein Untertyp davon, oder automatisch anpaßbar, vgl. 8.5.
bedingte Anweisung
Fallunterscheidung
Die bedingte Anweisung und die Fallunterscheidung sind in 8.2.4 und 8.2.5 beschrieben. Alle Werte der einzelnen when-Klauseln müssen verschieden sein. Als Vergleichswerte sind ganze Zahlen, Einzelzeichen und boolesche Konstanten zugelassen.
1jpunterscheidung
1jpauswahl
~.p then Block ~
l~~ Die Typunterscheidung entspricht der Fallunterscheidung mit dem Unter
schied, daß die when-Klauseln Typen unterscheiden. Diese müssen Untertypen des Typs des Bezeichners im Kopf der Typunterscheidung sein. Wird dieser im Kopf nur benannt, jedoch nicht vereinbart, so muß er eine lokale Größe bezeichnen. Ausgewählt wird die textuell erste Alternative, zu deren Typ der dynamische Typ des Bezeichners verträglich ist. Existiert keine solche Alternative, so wird,
falls vorhanden, der else-Teil ausgeführt.
Schleift
~AUSdruck
350 C SATHER im Überblick
Schleifen werden in 8.1.6.3 beschrieben.
Aufruf
Das Ausrufezeichen kennzeichnet Stromauf rufe. & bzw. && kennzeichnen wie bei der Methodenvereinbarung Ausgabe- und Wert-Ergebnisparameter.
allg. Ausdruck
Ausdruck f-----.--
Typkonstruktor
partieller Aufruf
C.1.4 Ausdrücke
Ausdruck
Den Vorrang der Operatoren und die ihnen entsprechenden Methodenbezeichner zeigt Tab. 8.2. Sie entsprechen Prozeduraufrufen, die self als ersten Operanden benutzen. Binäre Operatoren benötigen einen weiteren Parameter in der Signatur. Man kann die Operatoren auch für andere Typen definieren, indem man den entsprechenden Methodenbezeichner neu (als Methode mit entsprechender Parameterzahl) vereinbart.
7Jpkomtruktor
Objekte bildet man mit dem in 9.3.1 eingeführten Typkonstruktor. In der Form #T wird ein Objekt des Typs T erzeugt, durch ##a ein Objekt des Typs von a. Zur Initialisierung von Objekten kann man Aggregate benutzen.
C.l Syntaxdiagramme 351
Aggregat
Grundterm Wert
false }----1
Inf }-----1
Ein Ausdruck der Form a as T ist eine Typanpassung des Ausdrucks a an den Typ T. Dabei müssen T und der Typ von a beide numerische Typen, oder T ein Obertyp des Typs von asein.
Zahlen, Einzelzeichen und Texte schreibt man wie in 8.1.1 eingeführt. Für Einzelzeichen und in Texten sind alle darstellbaren Zeichen erlaubt. Steuerzeichen können durch Zeichenkombination dargestellt werden, die mit einem Rückstrich (\') beginnen; es gelten die gleichen Regeln wie in C, unter anderem entsprechen \t', \n' und \r' dem horiwntalen Tabulator, Zeilenumbruch bzw. Wagenrücklauf. Anführungszeichen als Einzelzeichen werden als \' bzw. \" geschrieben.
partieller Auftuf
Partielle Aufrufe liefern als Ergebnis eine gebundene Methode, siehe 10.3.3, bei der einzelne Parameter bereits festgelegt sein können. Die restlichen Argumente müssen beim Aufruf der gebundenen Methode angegeben werden.
352 C SATHER im Überblick
Name
--.--...------1 Klassenkennung
Als Namen sind einfache und qualifizierte Bezeichner zulässig, vgl. 9.3.1 und 9.4, sowie Reihungszugriffe, die zu entsprechenden Aufrufe der Methoden aget bzw. aset aufgelöst werden.
(.2 Basisbibliothek
Im folgenden beschreiben wir ausschnittsweise die Schnittstellen der wichtigsten Basisbibliotheken von SATHER. Diese umfassen die einfachen Datentypen aus Tab. 8.1 und die Klasse MATH der transzendenten Methoden, vgl. Beispiel 9.14.
copy: SAME string: STRING is_equal(x: $OB): BOOl
OB Kopie von self textuelle Darstellung von self Gleichheit
ORDERED(T) isJt(x: T): BOOl isJeq(x: Tl: BOOl is_gt(x: D: BOOl
<
> is_geq(x: T): BOOl ;;;.
Die Klasse OB bildet die Wurzel der Klassenhierarchie in SATHER. Alle anderen Klassen erben implizit von OB. OB definiert Methoden und Attribute, über die jedes Objekt verfügt. ORDERED ist die Eigenschaftsklasse aus Programm 10.11. Von den hier beschriebenen Klassen besitzen CHAR, INT, FlT, FlTD und STRING entsprechende Vergleiche.
BOOL negate(b: BOOL): BOOL xor(b: BOOL): BOOl nand(b: BOOl): BOOl nor(b: BOOl): BOOl
implies(b: BOOL): BOOl
Negation exklusive Disjunktion Peirce-Funktion Sheffer-Funktion Implikation
Daneben sind für BOOl die Operationen and und or mit Kurzauswertung definiert, vgl. (8.2) .
.-------~ARRA~~Y~[*~](=T~)-un~d~ARR~7.[*~](=T~)--------.
asize:INT aset(i: INT; x: D aget(i: INT): T extend(i: INT):SAME
Größe der Reihung setze i-tes Element lese i-tes Element Reihungserweiterung, (nur bei ARRAY)
C.2 Basisbibliothek 353
Flexible, n + I-stufige Reihungen ARRAY[* , ... , *](T) besitzen Attribute asizeO ...
asizen und entsprechend zusätzliche Parameter bei aset und aget. Bei Über- oder Unterschreiten des Indexbereichs wird die Ausnahme INDEX_ERROR ausgelöst.
isalpha: BOOl
isupper: BOOl islower: BOOl isdigit: BOOL isxdigit: BOOl isalnum: BOOl
isspace: BOOl ispunct: BOOl isprint: BOOl
iscntrl: BOOL isgraph: BOOl
toupper: CHAR tolower: CHAR
int: INT succ: CHAR pred: CHAR
CHAR self ist ein Buchstabe self ist ein Großbuchstabe self ist ein Kleinbuchstabe self ist eine Ziffer self ist eine Sedezimalziffer self ist ein Buchstabe oder eine Ziffer self ist ein Zwischenraum self ist ein Interpunktionszeichen self ist ein druckbares Zeichen self ist ein Steueneichen self ist ein Graphikzeichen Umwandlung in Großbuchstabe Umwandlung in Kleinbuchstabe Umwandlung nach ganze Zahl Nachfolger; (self.int+ 1 ).char Vorgänger; (self.int-1).char
int liefert für jedes Zeichen in Abhängigkeit der internen Repräsentation eine
ganze Zahl. Es gilt c.int.char = c und aus c "* c' folgt c.int "* c'.int;
max:INT plus(x: INT): INT minus(x: INT): INT
times(x: INT): INT quotient(x: INT): FLTD divide(x: INT): INT minus: INT odd: BOOl modulo(x: INT): INT pow(x: INT): INT
abs: INT fit: FlT
char: CHAR fltd: FlTD stream upto(constant upper: INT): INT
stream downto(constant lower: INT): INT
INT
maxint, größte darstellbare ganze Zahl self + x self - x self * x seifix
Ganzzahldivision unäre Subtraktion self ist ungerade self mod x, voneichengleich mit self selF
Iselfl Umwandlung in einfache Gleitpunknahl Umwandlung in Einzelzeichen Umwandlung in doppeltgenaue Gleitpunktzahl vgl. Beispiel 10.14 vgl. Beispiel 10.14
Die Klasse FLTD beschreibt Gleitpunktzahlen doppelter Genauigkeit, FLT Gleitpunktzahlen einfacher Genauigkeit. Die Methoden entsprechen IEEE 754-1985.
354 C SATHER im Überblick
FLTD (FLT entsprechend) plus(x: FlTD): FlTD self + x minus(x: FLTD): FlTD self - x times(x: FlTD): FLTD quotient(x: FlTD): FlTD minus: INT modulo(x: FlTD): FlTD pow(x: FLTD): FlTD
sqrt: FlTD rem(x: FLTD): FlTD exp: FlTD abs: FLTD round: FLTD floor: FlTD ceiling: FlTD trunc: FlTD int: INT finite: BOOl isnan: BOOl iszero: BOOl unordered(x: FlTD): FLTD
constant pi: FlTD constant e : FlTD sin(x: FlTD): FLTD cos{x: FlTD): FlTD tan(x: FlTD): FlTD asin(x: FlTD): FlTD acos(x: FLTD): FlTD atan(x: FlTD): FlTD sinh(x: FLTD): FLTD cosh(x: FlTD): FlTD tanh(x: FLTD): FlTD log(x: FlTD): FlTD log 1 Q(x: FlTD): FlTD log2(x: FlTD): FlTD
self * x self/x unäre Subtraktion self mod x, vorzeichengleich mit self seit' ..j5eif res = self - x * (~.round) e'elf x
Betrag Runden zur nächsten ganzen Zahl Runden nach - 00
Runden nach 00
Runden nach 0 ganzzahliger Anteil von self weder NaN noch Inf NaN, vgl. 8.1.4 self = 0 oder-O self und x sind nicht vergleichbar
MATH 3.14159265358979323846264 2.71828182845904523536028 smus cosinus tangens arcussinus arcuscosinus arcustangens hyperbolischer sinus hyperbolischer cosinus hyperbolischer tangens natürlicher Logarithmus Zehnerlogarithmus Zweierlogarithmus
Zeichenketten werden durch die Klasse STRING beschrieben. Der Zugriff auf
Einzelzeichen erfolgt wie bei einer Reihung mit Elementen des Typs CHAR.
length: INT empty: BOOl aset(i: INT; c: CHAR) aget(i: INT): CHAR substr{from, to: INT): STRING stream elts: CHAR append(s: STRING): STRING tolower toupper position(c: CHAR): INT
STRING Länge der Zeichenkette length = 0 serze i-tes Zeichen lese i-tes Zeichen Zeichenkette von Position from bis to einschließlich Strom aller Zeichen hängt s an self an alle Buchstaben in Kleinbuchstaben wandeln alle Buchstaben in Großbuchstaben wandeln Position des ersten Vorkommens von c in self
8.1 8.2 8.3 8.4 8.5 8.6 9.1 9.2 9.3 9.4 9.5 9.6 9.7 9.8 9.9 9.10 9.11 9.12 9.13 9.14 9.15 9.16 9.17 10.1 10.2
10.3 10.4 10.5 10.6
10.7
Programmverzeichnis
FLOYD-WARSHALL-Algorithmus. . . . . . . . . . . Berechnung von u, v mit a * u + b * v = ggT(a, b) . Sortieren von 5 Zahlen mit Beweisvorgabe . Längste Folge gleicher Namen Binärsuche . . . . . . Hornerschema . . . . Nächste Permutation. Türme von Hanoi . . Erzeuge-und-Teste am Beispiel n Damen. n-Damenproblem mit Rücksetzen Sortieren durch Auswahl ........ . Iteratives Sortieren durch Auswahl . . . . Sortieren durch Einfügen mit Binärsuche Sortieren durch Zerlegen . . . . . . Baumsortieren . . . . . . . . . . . . Prozedur sinken für Baumsortieren . . Schema des Sortierens durch Mischen Sortieren durch paarweises Mischen mit Reihungen Mischen mit Reihungen . . . Natürliches Mischen . . . . . Fachsortieren mit Reihungen . Binäres stellenweises Sortieren Standard-Zufallszahlen generator Methodenrumpf mit Kontrolle des Verhaltensmodells schreiben in eine Datei . . . . . . . . . . .
Aktore und Mehrprozeßsimulation .... Implementierung der Tabellenkalkulation I Tabellenkalkulation 11: die Inhaltsklassen Sequentielle Suche mit einer Strommethode Ströme für Listen ......... .
10.8 Sieb des ERATOSTHENES mit Strömen 10.9 Simpson-Integration.. 10.10 Mischen zweier Ströme ...... .
25 28 48
57 67 69 76 79 80 82 87 89 92 96
103 104 106 107 108 111 117 118 138 199 199 201 204 205 210
211 212 213 217
356 Programmverzeichnis
10.11 Eigenschaftsklasse ORDERED ..... 218 10.12 Abstrakte Klasse KELLER(T) ...... 219 10.13 Abstrakte Klasse MEHRFACHMENGE(T) 222 10.14 Sortierte Mehrfachmenge in Reihung 227 10.15 Reihungserweiterung . . . . . . . . . 228 10.16 Mehrfachmenge mit einfach verketteten Listen 229 10.17 Verkettetes Haschen 234 10.18 Offenes Haschen . . . 236 10.19 Klasse BINBAUM( G; B) 243 10.20 Klasse BIN_EC KE( G) 244 10.21 Abstrakte Klasse GRAPH 251 10.22 Ausspähen von Graphen 253 10.23 Breitensuche . . . . . . 256 10.24 Tiefensuche ...... 258 12.1 Berechnung der Fibonacci-Zahlen 302 12.2 Binomialkoeffizienten und Pascalsches Dreieck 303 12.3 Optimale Klammerung von Matrixprodukten . 305 12.4 Algorithmus von COCKE, KASAMI und YOUNGER . 307 12.5 Erhöhung eines Binärzählers . . . . . . . . . . . 309 12.6 find und union mit Höhenabgleich und Pfadverkürzung 313 12.7 Einfache Textsuche . . . . . . . . . . . . . . 318 12.8 Textsuche kmp nach KNUTH, MORRIS, PRATT 320 12.9 Vorberechnung zu kmp. . . . . . 321 12.10 Initialisierung von delta_2 für bm 323 12.11 Initialisierung von delta_l für bm 323 12.12 BOYER-MooRE-Verfahren bm .. 324 12.13 Primzahltest ........... 328 12.14 Zeugen für den Primzahltest nach MILLER-RABIN 330 12.15 Allgemeiner Las Vegas Algorithmus 331 12.16 Zufällige Färbung von Elementen 332 12.17 Zufalls gesteuerte Listensuche . . . . 336
Stichwortverzeichnis
A A-Suche, A* -Suche 254 Abbildung 13,181,279 Abbruchanweisung 25 Abhängigkeit, kausale 171 Ablauf, sequentieller 43 Ablaufsteuerung 17 Ablaufverfeinerung 84 Abschnitt 13 Abstraktion 147,179,203
prozedurale 26, 75 Ackermannfunktion 338 G. M. AoEL'SON-VEL'SKII 246 Adjazenzliste 250 Adjazenzmatrix 250 Adreßarithmetik 263 Adresse 263,296
absolute 263,266 indirekte 264 relative 280 symbolische 265 virtuelle 282
Adressierungsart 280 Adreßraum 263,296 ADT siehe Datentyp, abstrakter Äquivalenz, semantische siehe
Verhaltensgleichheit Aggregat 123,165,350 Aggregation 151, 164, 198 Akkumulator 270 Aktivitätsdiagramm 153, 169 Aktor 149,154 Alarm 32 Algorithmenklasse 140 Algorithmus 295,297
Las Vegas 325,331 Macao 325 Monte Carlo 324 online- 311 p-korrekter 324 zufallsgesteuerter 324
Alias 126 Aliasproblem 127 Analyse
amortisierte 308 Anforderungs- 73 objektorientierte 143 Substantiv-Verb- 156
Anbieter 157 Anschlag 12,93 Anweisung 4,348
bedingte 18,46,349 bewachte 49,349 Fehleranweisung 33 interferenzfreie 59 leere 18,41
Anweisungsfolge 17 Anwendungsfall 145,153 Arbeitsgang 106 Argument, konstantes 209 Assoziation 151,159,160,198 Attribut 122,146,159,197,347 Auftrag 145 AufWand 23
erwarteter 325 mittlerer 325
Ausprägung 137 Ausdruck 14,350
undefinierter 16 zulässiger 10
Ausführung ereignisgesteuerte 200 prozeßorientierte 200
Ausgabeparameter 27 Ausgabestrom 203 Ausnahme 31 Ausnahmebehandlung 30,71 Ausnahmetyp 31 Ausprägung 146 Ausrichtung 279 Auswertung
faule 10
358
kollaterale 16 sequentielle 10 strikte 10 zeitlich verzahnte 16
i\\TL-Baum 247,308
B Basisadresse 279 Basisregister 279 Baum
ausgewogener 241, 246 i\\TL- 247,308
Baumkante 253 Baumuster 122 bedingte i\nweisung 18 Bedingungsanzeige 294 Befehl 261
arithmetischer 292,296 Ein-/i\usgabe- 296 logischer 292 privilegierter 294 Schift- 292 Sonder- 294 Sprung- 293,296 Transport- 292,296
Befehlscodierung 295 Befehlszähler 265 Behälterklasse 217 BELLMAN, R. E. 338 Berechenbarkeit 297 Beweisvorgabe 44 Bezeichner 4,343 Bezug 121 Bezugsobjekt 121 Binärsuche 66 Bindung
dynamische 150 statische 150
Binomialkoeffizient 302 Bitvektor 223,230 Block 8, 18,43,348 Botschaft 145 R. S. BOYER 322 branch and bound 255 Breitensuche 254,255 Buchhaltungsanalyse 309
Stichwortverzeichnis
Byte 276
C C 5-7 C++ 6,7 Carmichael-Zahl 329 CATALANSche Zahl 306 N.1\. CHOMSKY 307 Chomsky-Normalform 307 CISC 269 J. COCKE 306 CPL 5 curryen 14
o O.J. DAHL 259 n-Damenproblem 79 Datenfluß 145 DatenmodelIierung 160 Datentyp, abstrakter 135,142,217 Datenverfeinerung 84 DeMorgan 273 H.D.DEMUTH 19 Dereferenzieren 126 Deskriptor 283 Dialogobjekt 202 Dienst 145,197 E. W DI]KSTRA 39,49,73,75 Doppelwort 276 Dreiadreßform 264 dynamisch 144,150
E Echtzeitbedingung 172 Echtzeitsystem 172 Eigenschaft, nicht-funktionale 35 Eigenschaftsklasse 217 Einadreßform 270 Einbau, offener 67 Eingabeparameter 27 Eingabestrom 203 Einmalzuweisung 4 Entscheidbarkeit 297 Entscheidungsbaum 240 Entwurf
aus der Mitte 74 basisorientierter 73
Stichwortverzeichnis
durch Vertrag 157 nach Zuständigkeit 154 objektorientierter 143 zielorientierter 73
Entwurfsmuster 74,191,208 ER-Diagramm 160 ERATOSTHENES 211 Ereignis 145
bewachtes 178 Ergebnisaufruf 27,290 Ergebnisparameter 27 Ergebnistyp 6 Erreichbarkeit 286 Erzeuge-und-Teste 80 Export 141
F Fachsortieren 115 Faden 200 Fallmarke 22 Fallunterscheidung 22,49,51,349 Fehleranweisung 33,41 Feld 14,122 Fließbandverarbeitung 206 R. FLOYD 36 FLOYD-WARSHALL-A1gorithmus 25 Flußdiagramm 271 Fokus 202 Freiliste 228 Funktion 26
berechenbare 297 erzeugende 306
Funktional 213 Funktionsaufruf siehe Prozeduraufruf Funktionsprozedur 6,26
G C. F. GAUSS 79 Geflecht 129,167,250,286 Geheimnisprinzip 135,151,158 Gleitpunktregister 277 Gödelnumerierung 298 Graph 249,250,310
abstrakte Klasse 251 Ausspähen 252 Breitensuche 256
Tiefensuche 257 D. GRIES 44,55,59,65,72 Größe 3 Grundzustand 146, 181 Gültigkeitsbereich 7,9,123
H Halbwort 276 Halde 286 harmonische Zahl 239 Haschen
doppeltes 237 gleichverteiltes 235 offenes 235 perfektes 231
Haschfunktion 231 Haschtabelle 231 Hauptprogramm 7 Hierarchie 148
Benutzt- 157 Vererbungs- 148
Histogramm 117 C. A. R. HOARE 36,73 HOARE-Logik 39 Höhenabgleich 312 Hornerschema 68
I Import 141 Indeterminismus 40 Indexmenge 12 Indexregister 282 Inhalt 263 Initialisierung 6 Instanz 146 interface 149 Interpretierer 261 Invariante 146, 181, 197 Iterator 208
J M. A. JACKSON 179 JAVA 6,7
K Kante 253,254 Kantorowitsch-Baum 203
359
360
Kapselung 135 Kardinalität 161 T. I<AsAMI 306 A. KAY 259 Kellermaschine 270 Kellerpegel 288 Kernmethode 149 Kernmodus 294 Klasse 122,146
(beschränkt) generische 151 abstrakte 147,218 anonyme 214 Behälter- 217 Eigenschafts- 217 innere 214 konkrete 147
Klassenattribut 160 Klassendiagramm 159 Klasseninvariante 146, 181, 197, 218 Klassenkarte 144, 155 Klassenkennung 345 Klassenvariable 138 Klassenvereinbarung 122, 344 D. E. KNUTH 319 KNuTH-MORRIs-PRATT
Textsuche nach 319 Kollision 231, 237
Primär- 237 Sekundär- 237
Kollisionsauflösung 233,237 Kollisionsliste 233 Kommunikation
asynchrone 177 synchrone 176
Komplexität 112 Komposition 164 Konfigurierung 142 Konformität 148,181 Konstante 3
benannte 4 Konstantenvereinbarung 4 Kontra-Kovarianz 181 Kontravarianz 181 Kooperation 154, 172 Kooperationsdiagramm 153, 167 Kooperationsmodell 158
Stichwortverzeichnis
Kopf einer Datenstruktur 133 Kopiersemantik 141 Koroutine 176,291 Korrektheit
funktionale 35 partielle 23,35,37 totale 23,35
Kovarianz 181 KRuSKALS Algorithmus 310 Kunde 157 Kunden-Anbieter-Modell 157 Kurzauswertung 10, 273 KZK-Karte 144,155
L Lade-ISpeichere-Architektur 269 Läufer 208 E. M. LANDIS 246 Las Vegas Algorithmus 325,331 Lastfaktor 231 Lauf 109 Laufzeitkeller 288 Lebensdauer 9 Leeranweisung 18, 41 Leerverweis 125 C. LEWERENTZ 259 Linksrekursion 70 Liste 226
doppelt verkettete 131 einfach verkettete 129 kompakte 335 symmetrische 132
Listenkopf 131 Literal 4 log' n 315 loop-Sprache 299
M Macao Algorithmus 325 Makroaufruf 29 Marke 265 Maschine, abstrakte 74,261 Maschinenprogramm 261 Maschinensprache 263 Matrixprodukt 304 Mehrfachmenge 221
5tichwortverzeichnis
Mehrfachvererbung 149 Menge 221
berechenbare 297 disjunkte 310 entscheidbare 297
Merkmal 14,122,146,347 abgeleitetes 149 Kern- 149
Methode siehe Prozedur abgeleitete 219 gebundene 213
Methodenaufruf siehe Prozeduraufruf partieller 214, 351
Mischen 3-Bänder- 110 ausgeglichenes 11 0 natürliches 111
Modell Gegenstands-Beziehungs- 160 Kooperations- 158 Kunden-Anbieter- 157 Objekt- 144, 159 5ystem- 157 Verhaltens- 144, 153, 167
Modellierung daten orientierte 142 objektorientierte 152 prozedurale 142
Modellwelt 143 Modul 134,135 Monte Carlo Algorithmus 324 5.J. MOORE 322 J. H. MORRIS 319 B. MYHRHAUG 259
N Nachbedingung 36,197,218 Name 3,351
qualifizierter 14, 123 Namensaufruf 29 Namensraum 123 Navigieren 129 Nebenwirkung 16 Nulladresse 282 K. NYGAARD 259
o Oberklasse 147,179 Obertyp 147 Objekt 2,3,144,146
aktives 145,197 anonymes 121, 128 passives 145,197 Referenz- 121 unerreichbares 286 Wert- 120
Objektattribut 138 Objektmodell 144,152 Objektorientierung 143 online-Algorithmus 311 Operation 9
atomare 294 5.0WICKI 59
p P-Baum 103 Parallelität, virtuelle 200 Parameter
generischer 151, 345 transienter 28
Parameterübergabe 27,290,347 Pascalsches Dreieck 302 Petrinetz 169 Pfadausdruck 171, 172 Pfadverkürzung 312 Pflichtenheft 73 Phase 106 Plankalkül 3
361
Polymorphie 150,179,180,198,218,346 Potentialanalyse 309 Prädikattransformation 38 V. R. PRATT 319 Primärkollision 237 Primzahltest 327 Prioritätsschlange 103 Programm 7, 344 Programmablaufplan 271 Programmausführung, symbolische Programmentwicklung, evolutionäre Programmieren
defensives 25 dynamisches 301
34 143
362
im Großen 147,220 im Kleinen 147,197 imperatives 2 maschinen nahes 261 objektgestütztes 146 objektorientiertes 143, 147 strukturiertes 73 zustandsorientiertes
Programmiersprache höhere 261 imperative 2
Programmodul 135 Programmumkehr 179,200 Programmvariable 278 Protokoll 136 Protokollbedingung 172 Prozedur 6,26,60,72,145,197,208
eigentliche 7 Funktions- 6
Prozeduraufruf 6,26,62,350 Prozedurkopf 7 Prozedurrumpf 7,348 Prozedurvereinbarung 6 Prozessor 263
Q Qualifikation 163 Qualifikator 14,123 Quelle 206 Querkante 254
R RAM 296 Rechtsrekursion 68 Referenz 3 Referenzaufruf 28,71,290 Referenzsemantik 121 Referenztyp 121 Register 269
allgemeines 277 Index- 282
Reihenfolgediagramm 153, 158 Reihung 12, 226, 282
n-stufige 283 dynamische 12,283 flexible 134, 283
Stichwortverzeichnis
leere 13 offene 133 statische 283
Reihungsdeskriptor 283 Reihungserweiterung 226 Reißverschlußprinzip 105 Rekursion
Links- 70 Rechts- 68
Relation, zwischen Objekten Relativadresse 263,279 Rendezvous 176 Restrukturierung 184 RISC 269 Rolle 155,163 Routine 72 Rückhaltestrategie 289 Rückkante 253 Rückkehradresse 290 Rückruf 201,214 Rücksetzen 79 Rückwärtsanalyse 38 Rundspruch 174
S K. SAMELSON 8 Schablone 217 Schachtel 280 Schema
externes 164 konzeptuelles 164
Schleife 22,51,54,349 until- 24 while- 22 Zähl- 24
Schleifenaxiom 53, 54 Schleifeninvariante 22,52,53 Schleifenrumpf 22 Schlüssel 84,160 Schnittstelle 134,157,218
schwarze 137 Schnittstellenklasse 147 Schrittweite 282 Sekundärkollision 237 self 139
151
Stichwortverzeichnis
semantische Äquivalenz siehe Verhai tensgleichheit
Senke 206 Sicht 164 Sieb des ERATosTHENEs 211 Signatur 7,135,147,218,346 SIMPLICIUS 263 Simulation 143,298,300 Sondieren
lineares 237 permutierendes 237 quadratisches 237
Sortieren 19, 84 durch Auswählen 86 durch Einfügen 91 durch Mischen 106 durch Vertauschen 90 Fach- 114,115 minimale Vergleichszahl 112 stabiles 84 stellenweises mit Vertauschen 118 zufallsgesteuertes 333
Sortierschlüssel 84 Speicher 263,276 Speicherabbildung 278 Speicherabbildungsfunktion 282 Speicherbereinigung 287 Speicherung
spaltenweise 283 zeilenweise 283
Speicherzelle 263,276 Spezialisierung 148, 180, 182 Spezifikation 35 Sprache, kontextfreie 306 Sprung 263,265
bedingter 266 indizierter 266 unbedingter 265
Sprungleiste 274 Sprungziel 265 Spur 173 SRAM 296 Standardausgabe 206 Standardeingabe 206 statisch 144, 150 Stellensortieren 114
363
Stereotyp 149 Stirlingsche Formel 83,93, 113 C. STRACHEY 5 Streufunktion 231 Streuspeicherverfahren siehe Haschen Strom 24, 175,203,260 Stromaufruf 291
direkter 215 Strommethode 208
robuste 213 Stromobjekt 208,215,291 Strukturkollision 179 Substantiv-Verb-Analyse 156 Substitution, zulässige 8 Suchbaum 80, 240
binärer 241 Suche, zufallsgesteuerte 335 Suchnummer 252 Suchraum 240 Suchwald 253 Summenanalyse 308 Symboltabelle 232 syntaktischer Zucker 14 System 144,145,197
paralleles 176 reaktives 33 Teil- 144 verteiltes 176
Systemaufruf 294 Systeminvariante 146 Systemmodell 157 Systemmodus 294 Szenario 172
T Tabellenkalkulation 166,174 Taxonomie 148 Teilobjekt 2 Terminierungsfunktion 23 Textsuche 319,320,322 thread 200 Tiefennummer 254 Tiefensuche 254 Transaktion 169 Transition 153, 169 Transparenz, referentielle 137,147
364
trie 114 Tschebyscheffsche Ungleichung 326 Türme von Hanoi 78 Typ 9,122,146,345
einfacher 122 polymorpher siehe Polymorphie primitiver 122 Referenz- 121, 122 Wert- 120 zusammengesetzter 122
Typabhängigkeitsgraph 148 Typanpassung 11 Typfreiheit 276 Typkonstruktor 123,350 Typparameter 151 Typschranke 151,345 Typsicherheit 148,181,198,264
U Überladen 150 Überlauf 292 Überschreiben 149,165 Übersetzer 261 Übertrag 292 Umgebungszeiger 288 UML siehe unified modeling language Umstiegspunkt 112 unified modeling language 144 union-jind 311 Unterklasse 147,179 Unterprogramm 72, 266 Unterprogrammsprung 290 Untertyp 147,181
konformer 181, 220
V Validierung 36 Variable 3
anonyme 278 direkt erreichbare 279 dynamische 278 erreichbare 279 nicht-vorbesetzte 6 statische 139,278
Verallgemeinerung 179 Verbund 13,281
Stichwortverzeichnis
Vereinbarung 4,6,347 globale 8 lokale 8 polymorphe 198
Vererbung 141,148,179,346 konforme 182, 183 kovariante 182
Vererbungsgraph 148,198 Vererbungshierarchie 148 Verfeinerung
prozedurale 75 schrittweise 75,83,141
Verhalten 147, 179 Verhaltensgleichheit 48,146,179,220 Verhaltensmodell 144,153,167 Verifikation 35 Verknüpfung 161
von Objekten 151 Verweis 3,121,285 Verweiskette 279 void 125,286 Vorbedingung 36, 197, 218
schwächste 39 Vorberechnung 318 Vorbesetzung 6 Vorgänger
dynamischer 288 statischer 288
Vorgang 145 Vorwärtsanalyse 37 Vorwärtskante 254
W Wechselgespräch, strenges 176 Wert 3,351 Wert-Ergebnisaufruf 28 Wertaufruf 27,290
strikter 27 Wertobjekt 120 Wertsemantik 120 Werttyp 120 while-Schleife 275 while-Sprache 299 Wiederverwendung 74,184,198 J. WILLIAMS 97 N. WIRTH 141
Stichwortverzeichnis
Wort 276 wp-Kalkül 39
Y D. H. YOUNGER 306
Z Zählschleife 24 Zeigerumkehr 313 Zeit
echte 172 virtuelle 170
Zerteilung 306 Zeuge 325,327 W ZIMMERMANN 141 Zufallszahl 137
Zufallszahlengenerator 138 zufallsgesteuerter Algorithmus 324 Zugriffs funktion 3 K. ZUSE 3 Zusicherung 34,36, 197 Zusicherungskalkül 33,36,39 Zuständigkeit 190 Zustand 1, 146 Zustandsdiagramm 153, 171 Zustandsübergang 171
zusammengesetzter 17,26 Zustandsvariable 1 Zuweisung 4,41,348
atomare 60 Zuweisungsaxiom 42 Zweiadreßform 269
365
Springer und
Umwelt Als internationaler wissenschaftlicher
Verlag sind wir uns unserer besonderen
Verpflichtung der Umwelt gegenüber
bewußt und beziehen umweltorientierte
Grundsätze in Unternehmens
entscheidungen mit ein. Von unseren
Geschäftspartnern (Druckereien,
Papierfabriken, Verpackungsherstellern
usw.) verlangen wir, daß sie sowohl
beim Herstellungsprozess selbst als
auch beim Einsatz der zur Verwendung
kommenden Materialien ökologische
Gesichtspunkte berücksichtigen.
Das für dieses Buch verwendete Papier
ist aus chlorfrei bzw. chlorarm
hergestelltem Zellstoff gefertigt und im
pH-Wert neutral.
Springer