Institut für Mathematik Universität Augsburg Logo des Instituts für Mathematik
Klaus Bernt
Klaus BERNT
Lehrstuhl für Rechnerorientierte Statistik und Datenanalyse
 

 

Programmieraufgaben zur Numerischen Mathematik I:
Punkte-Kriterien

Für jede Programmieraufgabe werden maximal 12 Punkte vergeben:
  • Funktion (4 Punkte)
    Ein gutes Programm muß selbstverständlich korrekte Ergebnisse liefern. Liefert es diese nicht, kann es auch nicht effizient sein.
    Speziell für scilab-Programmierer: scilab-Variablen sind prinzipiell Matrizen, und die Standard-Operatoren führen Matrix-Operationen aus. Solange die Aufgabe nicht ausdrücklich die Verwendung dieser Matrix-Operatoren gestattet, sind solche Aktionen 'von Hand' durchzuführen, also mit zusätzlichen Schleifen usw. zu programmieren. Wer ohne Erlaubnis die (eleganten und sehr viel schnelleren) Standard-Matrix-Operatoren verwendet, muß mit Punkt-Abzug rechnen!
     
  • Effizienz (4 Punkte)
    Maß für die Effizienz eines Programmes ist die Anzahl der "wesentlichen Operationen" (Additionen/Multiplikationen sowie Unterprogramm-Aufrufe) in Relation zur Größe des Problems (Länge von Vektoren, Größe von Matrizen usw.). Ein gutes Programm braucht möglichst wenig solche Operationen.
    Beispiel: Die Multiplikation zweier N×N-Diagonalmatrizen benötigt N Multiplikationen. Wer für diese Operation den Algorithmus der Standard-Matrix-Multiplikation verwendet, führt statt dessen Multiplikationen und N³-N² Additionen aus - und erhält dafür keinen Effizienz-Punkt! Den Effizienz-Gewinn erzielt man, indem man im Algorithmus die speziellen Eigenschaften des Problems (hier: Diagonalmatrizen) berücksichtigt.
    Mitunter liefert ein korrektes Programm seine Ergebnisse dermassen langsam, daß das Warten auf die Lösung zur Zumutung wird, obwohl ein anderer Algorithmus das gleiche Ergebnis in wenigen Sekunden liefern würde. In einem solchen Fall beeinträchtigt die fehlende Effizienz auch die Funktion.
     
  • Layout (2 Punkte)
    Die Struktur des Programmes soll bereits optisch im Listing klar werden. Dies wird durch eine sinnvolle Einrück-Strategie (z.B. bei Verzweigungen, Schleifen, Unterprogrammen) erreicht. Sie helfen damit sich und anderen (z.B. dem Korrektor!), das Programm zu verstehen und Fehler schneller zu finden.
    Die Verwendung von Sprungmarken ist in Ausnahmefällen sinnvoll; meist mindern sie jedoch die Lesbarkeit des Programms und führen dann zur Punkte-Reduktion.
     
  • Kommentare (2 Punkte)
    Kommentieren Sie Ihr Programm sinnvoll. Das bedeutet, daß einerseits Kommentare im Quellcode enthalten sein sollen. Andererseits soll aber nicht jede einzelne Zeile kommentiert werden, sondern nur Abschnitte oder wichtige Schritte (z.B. "Rückwärtssubstitution:", "Assemblierung der Matrix und der rechten Seite").
    Am Anfang des Programms sollten wichtige Informationen als Kommentar vorhanden sein: Aufruf des Programms, Ein- und Ausgabe-Formate, welche Algorithmen werden verwendet, Autor(en), Datum, Literatur- und Quellenangaben. Vor einem Unterprogramm sollten ähnliche Informationen stehen: Aufruf, Ein- und Ausgabe-Parameter, was tut es und wie, Autoren- und Quellenangaben. Es kommt öfters vor, daß ein Unterprogramm an eine andere Stelle kopiert wird; dann sind diese Infos nützlich.
Weitere Bemerkungen finden Sie in Hinweise zu den Programmieraufgaben zur Numerischen Mathematik und Tipps und Tricks für Programmierer.

 

Beratung

Wenn Ihr Programm 'ums Verrecken' nicht korrekt arbeiten will, sollten Sie sich beraten lassen: mitunter sieht ein Unbeteiligter auf den ersten Blick, wo das Problem liegt. Wenn Ihre Kommilitonen nicht helfen können, dürfen Sie auch die Korrektoren-Sprechstunde besuchen.
Im WS 2006/2007: Do 15:30-17:00 oder nach Vereinbarung: Klaus Bernt, Büro: L1-3028, Telefon: (0821) 598-2242, e-mail: Klaus.Bernt@math.uni-augsburg.de .
Schriftliche Beratung (per e-mail) ist relativ zeitaufwändig und daher weniger erwünscht.

 

Klaus Bernt, 22.07.2015

[Uni Augsburg]  [Math.-Nat. Tech. Fakultät]  [Institut für Mathematik]  [Lehrstuhl]  [Print-Version]  [E-Mail]  aktualisiert am: 22.07.2015;  © Uni Augsburg