Programme
Transcription
Programme
Prof. Dr. Christian Kanzow Dr. Alexandra Schwartz Wintersemester 2012/13 15.10.2012 Hinweise zur Bearbeitung von Programmieraufgaben Hier finden Sie ein kleines Beispiel, welches Ihnen illustrieren soll, wie wir uns die Bearbeitung einer Programmieraufgabe vorstellen. Aufgabe: Schreiben Sie ein Programm, dass bei Eingabe eines Vektors mit positiven Komponenten das arithmetische, geometrische und harmonische Mittel der Vektorkomponenten bestimmt. Testen Sie Ihr Programm an den Vektoren v1 = (1, 1, 1, 1), v2 = (1, 2, 3, 4), v3 = (1, 2, 4, 8). Lösung: Sie müssen nun zwei (je nach Aufgabe können es auch mal mehr sein) Dateien schreiben. Bitte denken Sie daran Ihren Namen (und eventuell den Ihres Übungspartners) in allen Dateien kenntlich zum machen. Zunächst benötigen Sie eine Datei, in der sich das gewünschte Programm befindet. In MATLAB könnte diese wie in Abbildung 1 aussehen. function [arithmetic, geometric, harmonic] = means(vector) % % % % % % % % The function means expects a vector with positive components as input and returns the arithmetic, geometric and harmonic mean of the elements of the vector. Input: Output: vector arithmetic geometric harmonic a row or column vector with positive components the arithmetic mean of the vector components the geometric mean of the vector components the harmonic mean of the vector components % Code written by Dr. Jekyll and Mr. Hyde n = length(vector); arithmetic = sum(vector)/n; geometric = nthroot(prod(vector),n); harmonic = n/sum(1./vector); Abbildung 1: Das Programm means Zusätzlich dazu schreiben Sie ein kurzes Skript, in dem die in der Aufgabe vorgegebenen Testdaten enthalten sind und Ihr obiges Programm aufgerufen wird. In MATLAB könnte diese Testdatei wie in Abbildung 2 gezeigt aussehen. % testfile for the means function % Code written by Dr. Jekyll and Mr. Hyde vector1 = [1 1 1 1] [arithmetic, geometric, harmonic] = means(vector1) vector2 = [1 2 3 4] [arithmetic, geometric, harmonic] = means(vector2) vector3 = [1 2 4 8] [arithmetic, geometric, harmonic] = means(vector3) Abbildung 2: Eine Testdatei für das Programm means Diese Testdatei ist zum einen für Sie selbst nützlich, weil Sie so Ihr Programm testen können ohne die Daten mehrfach eingeben zu müssen und falsche Ergebnisse aufgrund von Eingabefehlern bei den Testdaten leicht vermeiden können. Sie erleichtert außerdem den Korrektoren die Arbeit, da diese dann nicht für jede Abgabe herausfinden müssen, in welchem Format und in welche Reihenfolge dem Programm die Eingabedaten übergeben werden müssen. Abgabe: Für die Abgabe einer Programmieraufgabe drucken Sie Ihren Quellcode inclusive der Testdatei und die in der Aufgabe geforderten Ergebnisse (manchmal auch Zwischenergebnisse/Iterationsverläufe) aus. Bei MATLAB würden Sie also außer den Dateien aus Abbildung 1 und 2 auch die Ausgabe aus dem Command Window, vergleiche Abbildung 3, ausdrucken. (Sie dürfen die Ergebnisse natürlich auch gerne ansprechender formatieren, als dies hier der Fall ist.) >> testfile_means vector1 = arithmetic = geometric = harmonic = 1 1 1 1 1 1 1 vector2 = arithmetic = geometric = harmonic = 1 2 2.5000 2.2134 1.9200 3 4 vector3 = arithmetic = geometric = harmonic = 1 4 8 2 3.7500 2.8284 2.1333 Abbildung 3: Ergebnisse der Testdatei im Command Window Zusätzlich dazu laden Sie alle Dateien, die nötig sind um Ihr Programm laufen zu lassen, und Ihre Testdatei bei WueCampus hoch. In diesem Beispiel wären das also das Programm aus Abbildung 1 und das Skript aus Abbildung 2. Beachten Sie, dass das Hochladen nur während der Bearbeitungszeit für das Übungsblatt möglich ist, d.h. es gilt die gleiche Abgabefrist wie für die Übungsblätter. Diese doppelte Form der Abgabe ermöglicht es uns zum einen, Ihre Programme tatsächlich zu testen und so eventuell vorhandene Fehler schneller zu finden. Zum anderen können wir Ihnen auf dem ausgedruckten Code Fehler und Verbesserungsmöglichkeiten mitteilen.