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
 | 
			
		||||
 | 
			
		||||

 | 
			
		||||
 | 
			
		||||
### 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