literaturverzeichnis - home - springer978-3-662-10819...liskov, b. und guttag, j. (1986):...

28
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.

Upload: buithuan

Post on 14-Jul-2018

217 views

Category:

Documents


0 download

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. Addison­Wesley.

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 Eigen­schaften der Programmiersprache SATHER. Aussagen aus den Kap. 8 - 10 über die Bedeutung von Sprachelementen sind nicht wiederholt. Eine vollständi­ge Beschreibung findet der Leser in (Goos, 1997). Der Bericht, weitere Li­teratur 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, Tabula­torzeichen, Zeilenumbrüche oder Kommentare getrennt sein können. Grund­symbole 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 Strich­punkte, vgl. 9.3.1.

Programm Klassenart

external

Klassenvereinbarung

Klassenparameter

Klassen ohne Klassenart sind Referenzklassen. Die Klassenarten value, ab­stract und external definieren Wertklassen, abstrakte Klassen bzw. Schnittstellen­klassen 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 Re­ferenzen, 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 implementierungs­unabhä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 Klassenpa­rameter enthalten.

Grenzen Klassenparameter

Klassen mit Grenzen definieren Reihungen. Beispiele sind die Reihungsklas­sen 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 benutzer­definierter 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 Klassen­parameter 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 Typschran­ke 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 einzel­ne 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 Verer­bung 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 initiali­siert 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 Un­tertypen 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 Aus­nahmen 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 bezeich­nen. 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 Methoden­bezeichner 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. Steuer­zeichen können durch Zeichenkombination dargestellt werden, die mit einem Rückstrich (\') beginnen; es gelten die gleichen Regeln wie in C, unter ande­rem 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 Argu­mente 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 defi­niert, 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 Gleit­punktzahlen 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