Testat zur Definition einer Funktion in C++. (), Testat, Seite 721338
http://www.purl.org/stefan_ram/pub/testat_c++_funktion_de ist die kanonische URI dieser Seite.
Stefan-Ram-Startseite

Präsenztestat Definition einer Funktion in C++

Bei dieser Aufgabe ist es wichtig, den Unterschied zwischen Rückgabe  und Ausgabe  zu verstehen und die Aufgabenstellung genau zu beachten. Es ist bei dieser Aufgabe genauso falsch, etwas zu machen, das so nicht  verlangt war, wie etwas nicht zu machen, das verlangt war.

Der Dozent wird Ihnen jeweils eine individuelle Aufgabe zur Definition einer Funktion  stellen.

Dabei kommen zwei Typen von Funktionen vor: reine Wertfunktionen  und reine Wirkfunktionen.

Eine reine Wirkfunktion  hat eine Wirkung  und gibt keinen Wert zurück.

Eine reine Wertfunktion  gibt einen Wert als Ergebnis  zurück und hat keine Wirkung.

Ein Spezialfall einer reinen Wertfunktion ist eine reine Abbildungsfunktion, bei der der zurückgegebene Wert für die gleichen Argumentwerte immer wieder der gleiche ist.

In der Aufgabenstellung wird bei einer reinen Wertfunktion der Datentyp des Ergebnisses mitgeteilt. Gegebenenfalls wird der Typ der Parameter der Funktion mitgeteilt. Es wird geschildert, welches Verhalten die Funktion zeigen soll, also ob sie einen Wert oder eine Wirkung haben soll, und wovon der Wert bzw. die Wirkung abhängen soll.

Alle Parameter, für die dies nach der Aufgabenstellung möglich ist, müssen mit dem Schlüsselwort "const" gekennzeichnet werden.

Beispielsweise könnte der Dozent Ihnen folgende Aufgabe stellen:

Schreiben Sie eine Definition einer reinen Abbildungsfunktion, mit einem Ergebnis vom Datentyp "int" und einem Parameter vom Datentyp "int". Das Ergebnis soll für Parameterwerte zwischen 0 und 16383 das Doppelte des Parameters sein.

Eine mögliche richtige Lösung wäre die Definition der Funktion "doppel".

doppel [Funktionsdefinition]
int doppel( int const i ){ return i + i; }

(Für Parameterwerte, bei denen C++  nicht mehr die mathematisch richtigen Ergebnisse liefert, weil sie außerhalb des Bereichs liegen, für den die richtigen Ergebnisse mit C++  ohne weiteres (bei Verwendung der in den Aufgabenstellungen vorgegebenen Datentypen) berechnet werden können, brauchen keine besonderen Vorkehrungen getroffen werden. Die obigen Aufgabenstellung soll diesbezüglich also nur klarstellen, daß nicht verlangt wird, daß die Summe für andere Parameterwerte berechnet wird. Auch wenn dies in einer Aufgabe nicht so steht, gilt es sinngemäß immer. Ist also die Summe zweier Zahlen zu berechnen, so braucht diese nur für Zahlen hinreichend kleinen Betrags mit der normalen Summe übereinzustimmen, da C++  bei größeren Zahlen nicht mehr ohne weiteres die richtige Summe berechnen kann.)

Falls eine solche Aufgabenstellung vorgelegt wird, darf die Funktion keine Wirkung  haben. Insbesondere darf sie nichts ausgeben, wohl aber soll sie etwas zurückgeben.

Der Dozent könnte Ihnen aber auch folgende Aufgabe stellen:

Schreiben Sie eine Definition einer reinen Wirkfunktion mit einem Parameter vom Typ "int", die für Parameterwerte zwischen 0 und 16383 eine dezimale Darstellung des Doppelten des Parameterwertes auf den Ausgabestrom "::std::cout" ausgibt.

Falls eine solche Aufgabenstellung vorgelegt wird, darf die Funktion keinen Wert zurückgeben.

Eine mögliche richtige Lösung wäre die Definition der Funktion "doppelausgabe".

doppelausgabe [Funktionsdefinition]
void doppelausgabe( int const i ){ ::std::cout << i + i; }

Vorkommen können der Datentyp "int", der Datentyp "double" und der Datentyp "bool".

Vorkommen können auch Aufgabenstellungen aus den folgenden Themenbereichen:

Fragen zu diesen Themenbereichen können vor Beginn des Testats geklärt werden.

Als Ergebnis muß in einem Editorfenster oder auf einem Blatt Papier nur  die Funktionsdefinition stehen (nichts anderes, insbesondere kein vollständiges Programm). Lesen Sie die Festlegung der Punktabzüge für häufig vorkommende Fehler sorgfältig vor Beginn des Testats und vermeiden Sie diese Punkteabzüge, besonders natürlich die hohen Punkteabzüge.

Bearbeitungszeit: maximal 6 Minuten.

Punkteabzüge

−0 P Wenn auf einem Blatt Papier oder in einem Editorfenster nichts anderes steht als die verlangte Funktionsdefinition (und eventuelle C++ -Kommentare).

−10 P Wenn die Funktionsdefinition unnötige Bestandteile enthält.

−10 P Falls ein Parameter, der mit dem Schlüsselwort "const" gekennzeichnet werden könnte, nicht damit gekennzeichnet wird.

−20 P Für jeden falschen Datentyp.

−20 P Für jedes ausgegebene Zeilenende, dessen Ausgabe nicht verlangt war.

−20 P Für jedes ausgegebene druckbare Zeichen, dessen Ausgabe nicht verlangt war. Für jedes nicht ausgegebene druckbare Zeichen, dessen Ausgabe verlangt war. Für jedes falsch ausgegebene Zeichen, das anstelle eines anderen auszugebenden Zeichens ausgegeben wird.

−30 P Wenn vor oder nach der Funktionsdefinition noch irgendetwas anderes steht (außer C++ -Kommentaren).

−30 P Wenn es nicht nur eine  Rückgabeanweisung am Ende des Blocks (Rumpfes) der Funktion gibt. (Also bei mehreren Rückgabeanweisungen oder bei Rückgabeanweisungen, die nicht am Ende des Funktionsrumpfs stehen.

−40 P Falls ein Fehler in Zusammenhang damit auftritt, daß mehrere  Parameter vorkommen sollen und diese nicht richtig notiert werden (beispielsweise, wenn die Parameter nicht richtig voneinander getrennt werden).

−40 P Wenn ein angegebener Rückgabetyp nicht mit einer verwendeten oder nicht verwendeten Rückgabeanweisung verträglich ist.

−50 P Wenn statt der Funktionsdefinition ein vollständiges Programm vorgelegt wird (also eine Übersetzungseinheit, in der auch eine Funktion "main" definiert wird).

−50 P Wenn das Funktionsergebnis falsch berechnet wird, aber der Aufbau (Kopf und Rumpf) der Funktion noch richtig ist.

−70 P Falls eine Funktion, die nur einen Wert zurückgeben soll, irgendetwas ausgibt (Ausgabeoperatoren oder Ausgabefunktionsaufrufe enthält) oder eine andere Wirkung hat (wenn dies nicht verlangt war).

−70 P Falls eine Funktion, die nur etwas ausgeben soll, einen Wert zurückgibt (wenn dies nicht verlangt war).

−100 P Wenn die Funktion nicht wie verlangt definiert wurde und das vorgelegte Ergebnis auch keine gute Annäherung an ein richtiges Ergebnis mehr darstellt, weil gleich mehrere Fehler darin vorkommen.

Falls ein Fehler gemacht wurde, der in der obenstehenden Liste nicht vorkommt, so legt der Dozent einen Punkteabzug nach billigem Ermessen fest. Derart festgelegte Punkteabzüge werden alsdann in die obige Liste eingetragen, damit andere Studenten im Wiederholungsfall den gleichen Punkteabzug erhalten.

Von der Stefan-Ram-Startseite ausgehend finden sich oft noch mehr Informationen zu Themen, die auf einer Seite angesprochen wurden. (Eine Verbindung zur Stefan-Ram-Startseite befindet sich ganz oben auf dieser Seite.)  |   Seiteninformation und Impressum  |   Formular für diese Seite betreffende Mitteilungen an den Herausgeber  |   Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram. slrprd, PbclevtugFgrsnaEnz