Info 1 Aufgabensammlung 2003 by Andreas Scholz [email protected]

Die folgenden Aufgaben und Lösungen sind natürlich ohne Garantie auf Richtigkeit bzw. Relevanz für die Klausur.

Und immer daran denken: Behauptung: Jedes Programm lässt sich um mindestens eine Anweisung kürzen. Jedes Programm hat mindestens einen Fehler. Durch Induktion können wir schließen: Jedes Programm ist reduzierbar auf eine Anweisung, die nicht funktioniert...

I: UML Aufgabe 1 Modellieren Sie folgende Aussage in einem UML Klassendiagramm: „Ein Verzeichnis enthält Dateien oder andere Verzeichnisse. Eine Datei besitzt einen Namen und eine Größe. Ein Verzeichnis besitzt ebenfalls einem Namen, außerdem ist in ihm die Anzahl der enthaltenen Dateien und Verzeichnisse gespeichert.“ Lösung: Wichtig sind folgende Punkte: - Es ist sinnvoll den Namen in Element zu definieren da alle abgeleiteten Klassen ein Name-Attribut besitzen - Man muss hier unbedingt das Kompositionsmuster verwenden! Wir können folgendes Klassendiagramm aus dem Text extrahieren:

Aufgabe 2 Erstellen sie ein Objektdiagramm basierend auf dem obigen Klassendiagramm das folgende Struktur repräsentiert: root/files/test.txt (20 Bytes) root/files/hallo.txt (50 Bytes) root/files/temp/trash.txt (1200 Bytes) root/foo.exe (60 Bytes)

dabei sollen folgende Regeln gelten: - root ist das Wurzelverzeichnis - / trennt Verzeichnisnamen (wie in Unix) - bei Dateien ist in Klammern die Größe angegeben Lösung: Wichtig sind folgende Punkte: - Alle Attribute müssen einen Wert haben - Es darf auf keiner Assoziation eine * Kardinalität vorkommen - Die Namen der Objekte sind frei wählbar (man kann sie auch weglassen, der : muss aber immer dastehen) - Unterstreichen nicht vergessen

II. Java Programmierung Aufgabe 3 Implementieren Sie die Funktion double[][] MatrizenMultiplikation(double [][] A, double[][] B)

die die Matrizenmultiplikation A*B für quadratische Matrizen berechnet und als Ergebnis zurückgibt. Verwenden sie einen Multiplikationsalgorithmus Ihrer Wahl. Lösung: double[][] MatrizenMultiplikation(double [][] A, double[][] B) { double[][] erg=new double[A.length][A.length]; for(int i=0;i u

b) aba -(7)-> uaba -(1)-> agba -(3)-> abga -(2)-> abcu -(6)-> abc

(normalerweise steht die Nummer auf dem Strich)