Guido Krüger's Web Service

Programming Asssignments - Instructions


(This page is available in German only. )

Erläuterungen zu den Aufgaben

Struktur der Aufgaben

Die hier aufgeführten Aufgaben sind an die Kapitelstruktur des Buchs "Java 1.1 lernen" angelehnt. Sie konnten aus Platzgründen nicht mehr im Buch untergebracht werden. Ihr Nutzen besteht darin, neben den Programmierbeispielen im Buch weitere Möglichkeiten zur Verfügung zu stellen, daß erworbene Wissen auszuprobieren und in der Praxis anzuwenden.

Die Aufgaben haben sehr unterschiedlichen Charakter und unterschiedliche Schwierigkeitsgrade. Das Spektrum reicht von ganz einfachen Aufgaben, die nach dem aufmerksamen Studium des Kapitels unmittelbar gelöst werden können, bis zu anspruchsvollen Problemen, die nur im Team oder als Projektarbeit zu bewältigen sind. Zur besseren Abschätzung des Bearbeitungsaufwands wurden die Aufgaben in die Klassen A bis D eingeteilt:

Die Unterteilung in Klassen kann nur einen groben Anhalt für den tatsächlichen Bearbeitungsaufwand geben. In der Praxis ist die Bearbeitungsdauer von weiteren Faktoren wie beispielsweise persönlichen Neigungen und Vorkenntnissen und sogar von der Tagesform abhängig. Zudem liegt der Aufwand bei vielen Aufgaben in der Mitte zwischen zwei Klassen und stellt sich daher unter Umständen etwas höher oder niedriger heraus, als es der zugeordnete Buchstabe vermuten läßt. So sind beispielsweise einige C-Aufgaben annähernd so schwierig wie D-Aufgaben, während - genügend Ausdauer vorausgesetzt - die D-Aufgaben durchaus auch in Einzelarbeit bewältigt werden können. Die Aufgaben des Typs A und B sollten in jedem Fall mit vertretbarem Zeitaufwand lösbar sein, wenn der Stoff verstanden wurde.

Die Aufgaben lassen sich weiterhin in Verständnisfragen und Programmierprobleme unterteilen. Verständnisfragen testen das erworbene Wissen unmittelbar, indem sie Details aus dem Kapiteltext abfragen oder beschriebene Zusammenhänge hinterfragen. Programmieraufgaben erfordern die Entwicklung eines eigenständigen Programms, das als Applikation oder Applet ein vorgegebenes Problem löst. Die meisten der hier vorgestellten Aufgaben sind Programmierprobleme.

Musterlösungen

Zu vielen der Aufgaben wurden Musterlösungen erstellt, die durch ein Sternensymbol hinter der Aufgabe angezeigt werden. Alle Lösungen befinden sich in einer .java-Datei, die über einen Link geladen werden kann. Auch rein textuelle Lösungen wurden aus Gründen der Einheitlichkeit in einer .java-Datei abgelegt, sie können natürlich nicht übersetzt werden. Zum Übersetzen einer Musterlösung ist die Datei auf den eigenen PC zu kopieren, mit einem 1.1-kompatiblen Java-Compiler zu übersetzen und anschließend mit dem Java-Interpreter zu starten.

Soll beispielsweise die Musterlösung zu Aufgabe 01.16 ausprobiert werden, so sind folgende Schritte auszuführen:

  1. Der hinter der Aufgabe stehende Link auf Aufg0116.java ist anzuklicken.
  2. Je nach Konfiguration des Browsers für .java-Dateien wird diese Datei nun direkt gespeichert oder sie muß durch Aufrufen des entsprechenden Programmpunkts auf dem lokalen Rechner gespeichert werden.
  3. Nun kann die Datei übersetzt werden. Wird beispielsweise das JDK 1.1.2 verwendet, so ist dazu der Befehl javac Aufg0116.java) einzugeben.
  4. Der Compiler hat nun eine .class-Datei Aufg0116.class erzeugt, die durch Eingabe des Befehls java Aufg0116 gestartet werden kann.
Die meisten Musterlösungen sind Applikationen. Handelt es sich ausnahmsweise um ein Applet, so ist zusätzlich die ebenfalls mit einem Link angegebene .html-Datei auf dem lokalen Rechner abzulegen und das übersetzte Programm durch Aufruf des AppletViewers zu starten.

Fast alle Beispiele wurden mit dem JDK 1.1.2 entwickelt und getestet, für manche wurde auch die Kommandozeilenversion des Java-Compilers von Visual Cafe 2.0 verwendet (er ist kompatibel zum JDK 1.1.3). Die Beispiele wurden unter Windows-95 entwickelt und der verwendete Zeichensatz entspricht dem Windows-95-Zeichensatz. Umlaute etc. müssen daher auf UNIX-Systemen unter Umständen angepaßt werden. Die Quelltexte können sowohl Leerzeichen als auch Tabulatoren zur Formatierung enthalten, die Tabulatorweite beträgt 2 Zeichen.

Literaturhinweise

Nachfolgend eine kleiner Ausschnitt der Titel, die für die Erstellung der Aufgaben bedeutsam waren oder diese in irgendeiner Weise motiviert haben. Einige der Titel haben eine bedeutendere Rolle gespielt, wie beispielsweise die Bücher von Bentley, Dewdney, Heyderhoff, Knuth, Roberts, Salmon oder Sedgewick. Andere traten nur in Nebenrollen auf oder waren als Lieferant für Ideen oder Ideen für Ideen nützlich. Hier nicht genannt ist eine große Anzahl von Zeitschriftenartikeln, von denen die meisten aus der c't stammen.
[ACM Press Anthology Series 87] ACM Press Anthology Series. ACM
  Turing Award Lectures, The first Twenty Years. ACM Press, New York,
  1987.
[Aho 88] Aho, A.V., Sethi, R. und J.D. Ullmann. Compilers:
  Principles, Techniques and Tools. Addison-Wesley, 1988.
[Albert 83] Albert, J. und Th. Ottmann. Automaten, Sprachen und
  Maschinen für Anwender. Bibliographisches Institut, 1983.
[Bach 86] Bach, M.J. The design of the UNIX operating system.
  Prentice-Hall, 1986.
[Bamberg 91] Bamberg, G. und F. Baur. Statistik, 7. Auflage.
  Oldenbourg, 1991.
[Bentley 86] Bentley, J. Programming Pearls. Addison-Wesley, 1986.
[Bentley 88] Bentley, J. More Programming Pearls: Confessions of a
  coder. Addison-Wesley, 1988.
[Berners-Lee 95] Berners-Lee, T. and D. Connolly. Hypertext Markup
  Language - 2.0. RFC 1866.
[Bronstein 79] Bronstein, I.N. und K.A. Semendjajew. Taschenbuch der
  Mathematik, 21./22. Auflage. Harri Deutsch, Thun und Frankfurt
  (Main), 1979.
[Brooks 75] Brooks, F.P., jr. The mythical man-month. Addison-Wesley,
  1975.
[Carroll 93] Carroll, L. Alice im Wunderland. DTV, München, 1993.
[Deitel 90] Microsoft Corporation. MS-DOS Operating System:
  Programmers Reference Manual. .
[Deitel 97] Deitel, H.M. and P.J.Deitel. JAVA - How To Program.
  Prentice Hall, 1997.
[Dewdney 95] Dewdney, K.A. Der Turing Omnibus. Springer, Berlin,
  Heidelberg, New York, 1995.
[Dörner 92] Dörner, D. Die Logik des Mißlingens. Rowohlt, 1992.
[Ernst 94] Ernst, B. Der Zauberspiegel des M.C.Escher. Benedikt
  Taschen Verlag, Köln, 1994.
[Flanagan 96] Flanagan, D. Java in a Nutshell. O'Reilly & Associates,
  Sebastopol, 1996.
[Freund 76] Freund, H. und P. Sorger. Logik, Mengen, Relationen. B.G.
  Teubner, 1976.
[Gardner 88] Gardner, M. Mathematische Hexereien. Ullstein, 1988.
[Gosling 96a] Gosling, J. et. al. The Java Application Programming
  Interface, Volume 1 - Core Packages. Addison Wesley, Reading,
  Massachusetts, 1996.
[Gosling 96b] Gosling, J. et. al. The Java Application Programming
  Interface, Volume 2 - Window Toolkit and Applets. Addison Wesley,
  Reading, Massachusetts, 1996.
[Hannah 96] Hannah, M.J. HTML Reference Manual. 2 January 1996. URL:
  http://www.sandia.gov/sci_compute/html_ref.html (14.04.96).
[Heyderhoff 89] Heyderhoff, P. (Hrsg.). Bundeswettbewerb Informatik -
  Aufgaben und Lösungen Band 1. Ernst Klett Schulbuchverlag, Stuttgart,
  1989.
[Heyderhoff 90a] Heyderhoff, P. (Hrsg.). Bundeswettbewerb Informatik
  - Aufgaben und Lösungen Band 2. Ernst Klett Schulbuchverlag,
  Stuttgart, 1990.
[Heyderhoff 90b] Heyderhoff, P. (Hrsg.). Bundeswettbewerb Informatik
  - Aufgaben und Lösungen Band 3. Ernst Klett Schulbuchverlag,
  Stuttgart, 1990.
[Heyderhoff 90c] Heyderhoff, P. (Hrsg.). Bundeswettbewerb Informatik
  - Aufgaben und Lösungen Band 4. Ernst Klett Schulbuchverlag,
  Stuttgart, 1990.
[Heyderhoff 92] Heyderhoff, P. (Hrsg.). Bundeswettbewerb Informatik -
  Aufgaben und Lösungen Band 5. Ernst Klett Schulbuchverlag, Stuttgart,
  1992.
[Heyderhoff 93] Heyderhoff, P. (Hrsg.). Bundeswettbewerb Informatik -
  Aufgaben und Lösungen Band 6. Ernst Klett Schulbuchverlag, Stuttgart,
  1993.
[Hofstadter 85] Hofstadter, D.R. Gödel, Escher, Bach. Klett-Cotta,
  Stuttgart, 1985.
[Horowitz 84] Horowitz, E. Fundamentals Of Programming Languages,
  Second Edition. Computer Science Press, 1984.
[Horstman 97] Horstman, C.S. and G. Cornell. Core JAVA Second
  Edition. SunSoft Press, A Prentice Hall Title, 1997.
[JavaSoft 96] JavaSoft, Inc. The Java Language & API. 1996. URL:
  http://java.sun.com:80/language.html (29.07.96).
[Kernighan 78] Kernighan, B.W. and D.M. Ritchie. The C Programming
  Language. Prentice Hall, 1978.
[Kirckhoff 88] Kirckhoff, M. Mind Mapping. Synchron, Berlin, 1988.
[Knuth 73a] Knuth, D.E. The Art of Computer Programming, Vol. 1,
  Fundamental Algorithms. Addison-Wesley, Reading, Massachusetts, 1973.
[Knuth 73b] Knuth, D.E. The Art of Computer Programming, Vol. 3,
  Sorting and Searching. Addison-Wesley, Reading, Massachusetts, 1973.
[Knuth 81] Knuth, D.E. The Art of Computer Programming, Vol. 2,
  Seminumerical Algorithms. Addison-Wesley, Reading, Massachusetts,
  1981.
[Krüger 87] Krüger, G. Complexe Rechenhilfe - Simulation eines
  Taschenrechners für komplexe Zahlen. c't Magazin für Computertechnik
  1987, 6, 144-149.
[Krüger 88] Krüger, G. Gelernt ist gelernt - Ein Tic-Tac-Toe-Spiel in
  Modula-2. MC Die Mikrocomputer-Zeitschrift 1988, 11, 112-114.
[Krüger 95] Krüger, G. Programmieren in C, 2. Auflage.
  Addison-Wesley, Bonn, 1995.
[Lammers 87] Lammers, S. Faszination Programmieren. Markt und
  Technik, Haar bei München, 1987.
[Lanzerath 90] Lanzerath, E. Verfahren der Kompression digitaler
  Daten. Praxis der Informationsverarbeitung und Kommunikation 1990, 2,
  83-90.
[Lektorat des B.I. Wissenschaftsverlags 93] Lektorat des B.I.
  Wissenschaftsverlags. Duden Informatik. Dudenverlag, Mannheim, 1993.
[Lemay 96] Lemay, L. and C. L. Perkins. Teach yourself JAVA in 21
  days. Sams.net publishing, 1996.
[Maguire 95] Maguire, S. Nie wieder Bugs: Die Kunst der fehlerfreien
  C-Programmierung. Microsoft Press, 1995.
[Mandelbrot 91] Mandelbrot, B.B. Die fraktale Geometrie der Natur.
  Birkhäuser, 1991.
[Meyer 88] Meyer, B. Object-oriented Software Construction.
  Prentice-Hall, 1988.
[Meyers Lexikonredaktion (Hrsg.) 92] Meyers Lexikonredaktion (Hrsg.).
  Meyers grosses Taschenlexikon in 24 Bänden, Gesamtwerk, 4. Auflage.
  B.I. Taschenbuchverlag, Mannheim Leipzig Wien Zürich, 1992.
[Milenkovic 92] Milenkovic, M. Operating Systems: Concepts and
  Design. McGraw Hill, 1992.
[Miller 87] Miller, N.E. File Structures Using Pascal. The
  Benjamin/Cummings Publishing Company, 1987.
[Peters 74] Peters, F.E. Einführung in mathematische Methoden der
  Informatik. Bibliographisches Institut, Zürich, 1974.
[Pirsig 94] Pirsig, R.M. Zen und die Kunst ein Motorrad zu warten.
  Fischer, 1994.
[Polya 88] Polya, G. How to solve it, Second Edition. Princeton
  University Press, Princeton, New Jersey, 1988.
[Randow 94] Randow, G. von. Das Ziegenproblem, Denken in
  Wahrscheinlichkeiten. Rowohlt Taschenbuch Verlag, Reinbek, 1994.
[Roberts 95] Roberts, E.S. The Art and Science of C. Addison-Wesley,
  1995.
[Salmon 92] Salmon, W.I. Structures and Abstractions. Richard D.
  Irwin Inc., 1992.
[Scherr 86] Scherr, G.H. Journal der unwiederholbaren Experimente.
  Krüger, Frankfurt, 1986.
[Scheurer 94] Scheurer,  T. Foundations of Computing. Addison-Wesley,
  1994.
[Schöneburg 94] Schöneburg, E., Heinzmann, F. und S. Feddersen.
  Genetische Algorithmen und Evolutionsstrategien. Addison-Wesley, 1994.
[Sebasta 93] Sebasta, R.W. Concepts Of Programming Languages, Second
  Edition. The Benjamin/Cummings Publishing Company, 1993.
[Sedgewick 88] Sedgewick, R. Algorithms. Addison-Wesley, 1988.
[Smullyan 86] Smullyan, R. Spottdrosseln und Metavögel. S. Fischer,
  Frankfurt am Main, 1986.
[Sommerville 87] Sommerville, I. Software Engineering.
  Addison-Wesley, Bonn, 1987.
[Stevens 92] Stevens, W.R. Programmieren von UNIX-Netzen. Hanser,
  München, 1992.
[Stevens 94] Stevens, W.R. TCP/IP Illustrated, Vol. 1.
  Addison-Wesley, 1994.
[Stroustrup 94] Stroustrup, B. The C++ Programming Language - Second
  Edition. Addison Wesley, 1994.
[Tanenbaum 87] Tanenbaum, A.S. Operating Systems: Design and
  Implementation. Prentice-Hall, 1987.
[Tischer 88] Tischer, M. PC Intern 2.0, 4. Auflage. Data Becker, 1988.
[Ullmann 88] Ullmann, J.D. Principles of Database and Knowledge-Base
  Systems. Computer Science Press, 1988.
[Vieillefond 87] Vieillefond, C. Programmierung des 80286. Sybex,
  Düsseldorf, 1987.
[Waite 93] Waite, M. and S. Prata. New C Primer Plus. SAMS
  Publishing, 1993.
[Weiss 93] Weiss, M.A. Data Structures and Algorithm Analysis in C.
  Benjamin/Cummings, 1993.
[Wirth 83] Wirth, N. Algorithmen und Datenstrukturen. B.G. Teubner,
  Stuttgart, 1983.

© 1995 - 2012 Guido Krüger - Back to top-level page