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.