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