Praktikum 4

Die letzte Vorlesung handelte von Projektstrukturierung.

Daher arbeiten wir heute nur mit einer großen Anwendung, die aus mehreren cpp- und h-Dateien besteht.

Das Grundgerüst finden Sie wie immer im “Quellcode” Archiv.

  • Verzichten Sie auf using namespace std;
  • Vergessen Sie nicht die Include-Guards
  • Für eigene Dateien verwendet man beim Include übrigens "", also z.B. #include "minmax.h". Die spitzen Klammern <> sind den Systemheadern vorbehalten.
  • Dokumentationskommentare wären auch nicht schlecht

Projektstruktur am Ende:

  • CMakeLists.txt
  • main.cpp: Enthält main()
  • minmax.h/.cpp: Enthält min, max und clamp
  • calc.h/.cpp: Enthält sum und abs_sum
  • euklid.h/.cpp: Enthält euklid

Testen mit assert

Zum testen des Programms sind asserts sehr praktisch. Schreiben Sie diese einfach in Ihre main()-Funktion. Der Fachbegriff dafür ist Unit Test. In der Praxis verwendet man professionellere Lösungen als assert, z.B. Google Test oder doctest, aber für unsere Zwecke ist es vollkommen ausreichend.

assert befindet sich im Header cassert (#include <cassert>) und lässt das Programm abstürzen, wenn die Bedingung im assert falsch ist.

Beispiel:

// Wert speichern, dann prüfen
int m = min(3, 4);
assert(m == 3); // OK

// Direkt aufrufen und prüfen
assert(min(3, 4) == 3) // OK
assert(min(4, 3) == 4) // FEHLER

Gehen Sie Schritt für Schritt vor. Schreiben Sie z.B. erst min, dann einen Testaufruf in main und dann erst max.

Struktogramme für minmax.cpp/.h

Struktogramme für calc.cpp/.h

Struktogramm für euklid.cpp/.h

Zuletzt geändert: Dienstag, 20. April 2021, 15:10