2023-04-22 14:33:40 +02:00
|
|
|
<!-- vim: set ft=markdown: -->
|
|
|
|
<!-- LTeX: language=de-DE -->
|
2023-04-22 14:45:43 +02:00
|
|
|
<!-- SPDX-License-Identifier: GPL-3.0-or-later -->
|
2023-04-22 14:33:40 +02:00
|
|
|
# Praxisaufgabe 1 Einführung in die Computergrafik
|
|
|
|
|
|
|
|
## Team
|
|
|
|
|
|
|
|
* Simon Bruder, Matrikelnummer: 5075324
|
|
|
|
|
|
|
|
## Bearbeitete Zusatzaufgaben
|
|
|
|
|
|
|
|
* Rekursive Traversierung: `node::print_recursive()`
|
|
|
|
* Iterative Traversierung: `node::print_iterative()`
|
|
|
|
* Bauen einer dynamischen Bibliothek `libtree.so` (siehe unten für Hinweise)
|
|
|
|
* Bauen einer statischen Bibliothek `libtree.a`
|
|
|
|
|
|
|
|
## Hinweise
|
|
|
|
|
|
|
|
### Signatur der Traversierungsmethoden
|
|
|
|
|
|
|
|
Die rekursive und iterative Traversierung sollen laut Aufgabenstellung
|
|
|
|
„ähnlich zum `<<`-Operator“ implementiert werden.
|
|
|
|
Da es aber pro Klasse nur eine Implementation des `<<`-Operators geben kann,
|
|
|
|
habe ich die Funktionen so implementiert, dass sie `std::string` zurückgeben
|
|
|
|
und damit die Anwendung ähnlich ist wie bei Verwendung von `print` (aus 1.2.3):
|
|
|
|
|
|
|
|
```cpp
|
|
|
|
// statt
|
|
|
|
std::cout << n;
|
|
|
|
// ist es für die anderen Traversierungsmethoden
|
|
|
|
std::cout << n.print_recursive();
|
|
|
|
// bzw.
|
|
|
|
std::cout << n.print_iterative();
|
|
|
|
```
|
|
|
|
|
|
|
|
### Statische und dynamische Bibliothek
|
|
|
|
|
|
|
|
Im Normalfall baut das CMake-Projekt eine statische Bibliothek und linkt `main` dagegen.
|
|
|
|
Damit ist Zusatzaufgabe 3 erfüllt.
|
|
|
|
|
|
|
|
Um eine dynamische Bibliothek zu bauen und `main` dagegen zu linken,
|
|
|
|
kann CMake mit `-DBUILD_SHARED_LIBS=ON` aufgerufen werden.
|
|
|
|
Da unter GNU keine spezifischen Annotationen dafür nötig sind, ist Zusatzaufgabe 4 erfüllt.
|