Übungen zu Algorithmik I Wintersemester 2004/05 Prof. Dr. Herbert Stoyan, Dr.-Ing. Bernd Ludwig Aufgabenblatt 1 (Lösungen) vom 18.10.2004 Aufgabe 1 Einige Grundbegriffe der Algorithmik 30 Punkte 1. Vgl. Skript! (a) Endliche 1 Beschreibung 1 einer Berechnung einer Probleml ösung 2 4 (b) Umsetzung 1 eines Algorithmus 1 in einer bestimmten 1 Programmiersprache 1 4 (c) Formale Sprache 2 zur Formulierung von Computerprogrammen 2 4 (d) Loslösung 2 von der Darstellung von Daten in einem Rechner 1 hin zu einer problemorientierten Sichtweise 1 2. effektiv: Berechnung braucht endlich viele Schritte; 3 effizient: Berechnung braucht möglichst wenige Schritte, Zeit, Resourcen 3 6 3. Objekt: abstrakte Einheit eines Programms, das zur Laufzeit entsteht, 1 einen inneren Zustand hat, und Methoden ausführen kann. 1 Klasse: Vor der Laufzeit feststehende terminologische Einheit, 1 die Objekte mit denselben Methoden und Feldern gruppiert. 1 4 4. Methode: Formulierung einer Vorschrift, 2 wie die Objekte einer Klasse eine gegebene Funktion berechnen sollen. 2 4 30 Aufgabe 2 Erstellen und Compilieren von Java-Programmen Tafelübung 1. Festlegung von Parameterwerten für die Ausführung von Programmen unter Linux 2. je nach shell anders; in der tcsh über setenv. Zu Details siehe man setenv! 3. Die Umgebungsvariable CLASSPATH listet alle Verzeichnisse und Klassenarchieve auf, in denen beim aktuellen Compiliervorgang bzw. Programmstart nach extern definierten Klassen gesucht wird. 4. javac test.java 1 5. java test Aufgabe 3 Hello, world! Tafelübung 1. Siehe HelloWorld.java! 2. Eine public deklarierte Klasse, die heißt, wie die Datei (ohne .java) und die Methode public static void main (String [] args). Aufgabe 4 Konventionen für Code und Kommentare Tafelübung 1. Siehe links! 2. Siehe Lösung zu Aufgabe 3.1! 3. javadoc HelloWorld.java 4. Siehe Kommentar zu main in Aufgabe 3.1! Alternative: Lege ein Objekt von HelloWorld (mittels new) an und rufe dort eine Methode auf, die die Ausgabe des Textes durchf ührt. Aufgabe 5 Konventionen für Code und Kommentare 30 Punkte 1. Siehe ALGOFileReader.java! Lernziele: • Man braucht Konstruktoren, die private Variablen der Instanz richtig intialisieren. 4 4 • main oder eine Methode von ALGOFileReader, die das angegebene CodeFragment nutzt. Wird die Datei nicht byteweise in einer Schleife eingelesen, muss die Länge der Datei ermittelt und dann die Datei im Ganzen eingelesen werden. 5 5 • Dateiinhalt schrittweise in string speichern und dann ausgeben. 4 • Fehlerbehandlung: exceptions von read, open und close abfangen. 5 4 5 2. Siehe ALGOFileReader.java! Lernziele: • Variablen-, Methoden- und Klassennamen entsprechend Konvention 3 2 3 • Dokumentation aller Konstruktoren und Methoden 3 • Kommentare zur Implementierung 3 3 3 3. javadoc ALGOFileReader.java Lernziel: fehler- und warnungsfreier Durchlauf von javadoc 3 3 30 3