P04 Modularisieren von C Code: remove stale draft and old Praktika description
This commit is contained in:
parent
287351d945
commit
23f8d9f07e
Binary file not shown.
Binary file not shown.
|
@ -1 +0,0 @@
|
||||||
<mxfile host="Electron" modified="2022-02-07T21:41:53.021Z" agent="5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/16.5.1 Chrome/96.0.4664.110 Electron/16.0.7 Safari/537.36" etag="nbLc9Vjb_iVSFHhKpDKu" version="16.5.1" type="device"><diagram id="L8fo7XVtsVLzhWI8Oabt" name="Page-1">7VnRcuIgFP2aPLoTiIn6WLXd7sx2ptPuTrf7RhM0TDG4BGvs1y9RYgLoGjPqVLtPkgtc4Jx74IKON5hkXzmaxncswtSBbpQ53tCBEAReR/7kloWyuK67sow5iZStNDySd1w0VNYZiXCqNRSMUUGmujFkSYJDodkQ52yuNxsxqo86RWNsGR5DRG3rE4lErKwg6JUVt5iMYzV0F6oVT1DRWK0kjVHE5hWTd+14A86YWJUm2QDTHL0Cl1W/my2164lxnIg6He5GrYenJLv986310P99tfj56oKW8vKG6EwtWE1WLAoEcBJd5UDKr5CiNCXhj5gkjtePxYRKI5BFzmZJhPOBXPkle9wQWtStHOLIwrmcOFjDIQMJswkWfCGbzEvAfQViXIG6sHFMkSBvunukeB+v3a1HuGdEDgxdFaR+EWoqRNtdV3eRshkPsepVBdhw1G3vcCQQH2NhOZKFyrJL05K/PbiE/7n0oUFBryGXpiMAT8ultxeXCUvwv0j86LQFro62Z6Jdl7ZOoDuC7dPSVmwlFd6oTZzk4Tt6kSelRhmiZJzkwpScYC4Nb5gLIk+iK1UxIVGU++hznJJ39LL0l9M7zZezXKDfd/zhmvDcAc40TtQxqTqXh1M1FLYHpB0fyrv7BcBuT4f+IJHR0p0WuigcsNEoxUdhst1EgBFK46XowDmr0RTR2aqxY3EYX4YY2zvEGLQ7UNcNOEhkGAoPTiVG//OK0TwaG2c0O8/YI4sxsDh8+QAkrq+lqx5ntsE25bR0dHztdj+vdk2eG2t3Z8AcWbu9z8vhwa4m5jPDqTkE9lPPPbBolCmK0OlKBWeveMAo4yW3I0KpYaqfMc1jIvDjFIX5mHOOpluCYkPGVCMsCri7vgY37NlbPNwQNp67PUI0SvbGH9r42zK6GPyt3H/DEXta/Bs9qdTbxHBGxK9K+Vm1ysvDrFIxXOy57cnpLfeXnYH1UVIb36DdvPI13S7r3h1PmdoA+16SXa6ireftoJ6iTeIOp2g7LVlcLvymIIBbD34zzagBv/ws/5ZaiaX8d8+7/gs=</diagram></mxfile>
|
|
Binary file not shown.
Before Width: | Height: | Size: 7.1 KiB |
|
@ -1,127 +0,0 @@
|
||||||
# 04 - Modularisieren von C Code
|
|
||||||
|
|
||||||
___
|
|
||||||
## 1. Übersicht
|
|
||||||
|
|
||||||
In diesem Praktikum wird eine kleine Sammlung von Funktionen als Modul erstellt.
|
|
||||||
|
|
||||||
In der ersten Aufgabe schreiben Sie zu einem bestehenden C Programm die notwendigen Header Files plus passen das Makefile so an, dass die entsprechenden Module mit kompiliert werden.
|
|
||||||
|
|
||||||
In der zweiten Aufgabe erstellen Sie Makefile Regeln um aus Konfigurationsdateien graphischen Darstellungen zu erzeugen.
|
|
||||||
|
|
||||||
___
|
|
||||||
## 2. Lernziele
|
|
||||||
|
|
||||||
In diesem Praktikum lernen Sie die Handgriffe um ein Programm zu modularisieren, d.h. in mehrere Module aufzuteilen.
|
|
||||||
|
|
||||||
- Sie wissen, dass ein Modul aus einem C-File und einem passenden H-File bestehen.
|
|
||||||
- Sie können Header Files korrekt strukturieren.
|
|
||||||
- Sie wissen wie **Include Guards** anzuwenden sind.
|
|
||||||
- Sie können Module im **Makefile** zur Kompilation hinzufügen.
|
|
||||||
- Sie können anhand einer Beschreibung Typen und Funktionen in den passenden Header Files deklarieren.
|
|
||||||
- Sie können **Makefile** Regeln schreiben.
|
|
||||||
|
|
||||||
Die Bewertung dieses Praktikums ist am Ende angegeben.
|
|
||||||
|
|
||||||
Erweitern Sie die vorgegebenen Code Gerüste, welche im **git** Repository **snp-lab-code** verfügbar sind.
|
|
||||||
|
|
||||||
___
|
|
||||||
## 3. Aufgabe 1: Modularisieren
|
|
||||||
|
|
||||||
![](./P04_Aufgabenstellung.png)
|
|
||||||
|
|
||||||
### 3.1 Teilaufgabe Modules einbinden, Header Files schreiben
|
|
||||||
|
|
||||||
- src/objects.h
|
|
||||||
- 2 Datenstukturen definieren
|
|
||||||
- `struct point` mit 2 double für x und y Koordinate
|
|
||||||
- `struct line` mit 2 point
|
|
||||||
- src/functions.h und .c
|
|
||||||
- 2 Funktionen deklarieren und definieren
|
|
||||||
- Berechnung der Länge `get_length`einer Linie (Annahme: Koordinaten sind alle positiv)
|
|
||||||
- l = sqrt(h^ 2 + b^ 2)
|
|
||||||
- ev. muss hier in den Anhang `#include <math.h>`
|
|
||||||
- Berechnung der Steigung `get_slope` der Linie gegenüber dem Koordinatensystem
|
|
||||||
- m = h / b
|
|
||||||
- tests vorgeben
|
|
||||||
|
|
||||||
- src/objects.h
|
|
||||||
- Include Guard
|
|
||||||
- Includes
|
|
||||||
- Struct für Punkt und Linie
|
|
||||||
- Include Guard
|
|
||||||
- src/functions.h
|
|
||||||
- Include Guard
|
|
||||||
- Includes
|
|
||||||
- Deklarationen der Funktionen für Berechnung der Länge und Steigung
|
|
||||||
- Include Guard
|
|
||||||
- src/functions.c
|
|
||||||
- Includes
|
|
||||||
- Definitionen der Funktionen für Berechnung der Länge und Steigung
|
|
||||||
- Include Guard
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
___
|
|
||||||
## 4. Aufgabe 2: Makefile Regeln
|
|
||||||
|
|
||||||
Makefile ergänzen, damit Modul `functions` korrekt eingebunden und kompiliert wird.
|
|
||||||
|
|
||||||
1. Kompilieren Sie das ganze mittels **make clean default**. Es sollten keine Compiler Fehler auftreten.
|
|
||||||
|
|
||||||
### 4.1 Neue Regeln hinzufügen
|
|
||||||
|
|
||||||
- Vorraussetzung: tab2svg.sh aus Praktikum 3 wird um die Möglichkeit erweitert eine Linie zu zeichnen (`line:x1:y1:x2:y2:color`)
|
|
||||||
- Studierende erstellen
|
|
||||||
- mind. 2 Files `long.line` und `short.line` mit 2 unterschiedlichen Linien
|
|
||||||
- Makefile Regeln um aus einem File `.line` ein File `.svg` mit Hilfe des Scripts zu erstellen
|
|
||||||
- PHONY Regel `display` um beide `.svg` mit Firefox darzustellen
|
|
||||||
- Vorgabe: sie sollen eine Variable für die Input-Dateien nutzen
|
|
||||||
|
|
||||||
Nachdem das Programm in Aufgabe 1 umgesetzt ist, geht es nun darum, im **Makefile** Regeln zu definieren welche die einzelnen Schritte von den Source Files zu den **png** Files ausführen.
|
|
||||||
|
|
||||||
Prüfen Sie schliesslich die Umsetzung mittels `make display`.
|
|
||||||
|
|
||||||
___
|
|
||||||
## 5. Aufgabe 3
|
|
||||||
- Studierende sollen Ausgabe von `make doc` analysieren und die Include Diagramme erklären können
|
|
||||||
```
|
|
||||||
make doc
|
|
||||||
firefox doc/index.html &
|
|
||||||
```
|
|
||||||
|
|
||||||
___
|
|
||||||
## 6. Bewertung
|
|
||||||
|
|
||||||
|
|
||||||
Die gegebenenfalls gestellten Theorieaufgaben und der funktionierende Programmcode müssen der Praktikumsbetreuung gezeigt werden. Die Lösungen müssen mündlich erklärt werden.
|
|
||||||
|
|
||||||
___
|
|
||||||
## 7. Erweiterung Doxyfile für Abhängigkeitsanalyse
|
|
||||||
|
|
||||||
```
|
|
||||||
--- /home/vagrant/huno/snp-new/snp/praktika/Shared/work/Doxyfile 2022-02-07 21:16:42.343302707 +0100
|
|
||||||
+++ /home/vagrant/snp/Doxyfile 2022-02-07 22:22:36.266839126 +0100
|
|
||||||
@@ -297,14 +297,14 @@
|
|
||||||
UML_LOOK = NO
|
|
||||||
UML_LIMIT_NUM_FIELDS = 10
|
|
||||||
TEMPLATE_RELATIONS = NO
|
|
||||||
-INCLUDE_GRAPH = NO
|
|
||||||
-INCLUDED_BY_GRAPH = NO
|
|
||||||
+INCLUDE_GRAPH = YES
|
|
||||||
+INCLUDED_BY_GRAPH = YES
|
|
||||||
CALL_GRAPH = NO
|
|
||||||
CALLER_GRAPH = NO
|
|
||||||
-GRAPHICAL_HIERARCHY = NO
|
|
||||||
-DIRECTORY_GRAPH = NO
|
|
||||||
+GRAPHICAL_HIERARCHY = YES
|
|
||||||
+DIRECTORY_GRAPH = YES
|
|
||||||
DOT_IMAGE_FORMAT = png
|
|
||||||
-INTERACTIVE_SVG = NO
|
|
||||||
+INTERACTIVE_SVG = YES
|
|
||||||
DOT_PATH =
|
|
||||||
DOTFILE_DIRS =
|
|
||||||
MSCFILE_DIRS =
|
|
||||||
```
|
|
Loading…
Reference in New Issue