Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Programmieren in C Module und Bibliotheken

Ähnliche Präsentationen


Präsentation zum Thema: "Programmieren in C Module und Bibliotheken"—  Präsentation transkript:

1 Programmieren in C Module und Bibliotheken
Hochschule Fulda – FB AI Wintersemester 2014/15 Peter Klingebiel, HS Fulda, DVZ

2 Module 1 Um größere Programmprojekte überschaubar und sicherer zu machen, wird die Aufgabe in kleinere Teilaufgaben (= Module) zerlegt  Reduktion der Komplexität  separates Entwickeln und Testen  Wiederverwendbarkeit von Programmteilen  Erstellen von Programmbibliotheken Abstraktion von Daten und Funktionen Kapselung von Daten Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

3 Module 2  Black Box Ein Modul in C ist eine Quelldatei, in der eine oder mehrere Funktionen zusammengefasst werden Interne Funktionen möglich, die nur innerhalb des Moduls sichtbar sind Interne Variable möglich, die nur innerhalb des Moduls zugreifbar sind  Definition als static Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

4 Module 3 Projekt: Module und Bibliotheken
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

5 Module 4 Schnittstellen eines Moduls, Funktionen und ggfs. Variablen in Headerdatei beschrieben Getrennte Übersetzung der Quelldateien und Erzeugen von Objektkode Erstellen von Programmbibliotheken zur leichten Wiederverwendbarkeit Zusammenmontieren des ausführbaren Programms aus Objektkode der Quellen und der Module sowie aus Bibliotheken Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

6 Module 5 Beispiel: mydraw4.c - nicht modular!
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

7 Module 6 Beispiel: mydraw5 - Moduldatei md.h
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

8 Module 7 Beispiel: Moduldatei md_main.c
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

9 Module 8 Beispiel: Moduldatei md_object.c
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

10 Module 9 Beispiel: Moduldatei md_line.c
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

11 Module 10 Beispiel: Moduldatei md_rect.c
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

12 Module 11 Beispiel: Moduldatei md_circle.c
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

13 Module 12 Beispiel: Moduldatei md_svg.c
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

14 Module 13 IDEs wie Code::Blocks, Netbeans unterstützen Modularisierung durch sog. Projekte Sonst: Steuerung der Compilierung bzw. der durchzuführenden Aktionen zur Erzeugung eines Programms oder Objekts durch sog. Makefiles Makefiles beschreiben die Abhängigkeit eines Objekts oder Programms von Quelldateien, Modulen und Bibliotheken beschreiben die notwendigen Aktionen, um Programme, Objektfiles usw. zu erstellen einige Grundaktionen sind vordefiniert, z.B. C-Quelldatei  Objektfile Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

15 Module 14 Aktionen abhängig von Zeitstempeln der Dateien
Beispiel: prog.exe: main.o modul1.o modul2.o gcc -o prog.exe main.o \ modul1.o modul2.o -lm -lc Programm prog.exe abhängig von Objektfiles main.o, modul1.o und modul2.o Aktion: Binden der Objektfiles mit Libs libm und libc Automatisches Neucompilieren einer Quelle und Neubinden des Exe bei Änderung einer Quelldatei Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

16 Module 15 Beispiel: Makefile für mydraw5
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

17 Module 16 Beispiel: Makefile gesteuerte Übersetzung
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

18 Bibliotheken 1 in der Programmiersprache C sind nur die notwendigsten Grundfunktionalitäten definiert es fehlen z.B. Funktionen für Ein-/Ausgabe, Funktionen für Dateihandling, Funktionen für Stringhandling, höhere mathematische Funktionen und vieles andere mehr ... erleichtert die Entwicklung eines C-Compilers leichtere Anpassung / Übertragung auf andere Hardware oder Betriebssysteme Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

19 Bibliotheken 2 Sehr viele der in der Sprachdefinition nicht enthaltenen Funktionen werden in sog. Funktionsbibliotheken, wie z.B. der C-Standardbibliothek, mitgeliefert In der Standardbibliothek sind u.a. enthalten Ein- und Ausgabefunktionen, Dateihandling, Stringfunktionen u.v.m.  libc Mathematische Funktionen  libm und viele, viele weitere Funktionen Die C-Standardbibliothek ist „genormt“ Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

20 Bibliotheken 3 Funktionen sind zu funktionalen Gruppen zusammengefasst  jeweils eine eigene Headerdatei In den Headerdateien sind Prototypen der Funktionen, Typen, Konstanten, Makros usw. definiert oder deklariert Beispiele: Ein- und Ausgabe  stdio.h Stringfunktionen  strings.h Mathematische Funktionen  math.h Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

21 Bibliotheken 4 Beispiel 1: md.h (Fragment)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

22 Bibliotheken 5 Beispiel 2: stdio.h (Fragment)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

23 Bibliotheken 6 das Handling von Dateien/Files ist ein sehr gutes Beispiel für Modularisierung in C die Definition des Typs FILE ist in stdio.h „verborgen“ benötigt wird für Ein-/Ausgabe in C-Programmen nur der Typ FILE die Implementierung des Typs FILE ist für die Verwendung in Programmen unwichtig sie sollte auf gar keinen Fall in Programmen verwendet werden, da sie systemabhängig ist! alle benötigten Konstanten und EA-Funktionen sind in stdio.h definiert bzw. deklariert Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

24 Bibliotheken 7 Bsp: älteres UNIX typedef struct { int _cnt; unsigned char *_ptr; unsigned char *_base; unsigned char _flag; unsigned char _file; } FILE; extern FILE _iob[]; Bsp: devcpp typedef struct _iobuf { char *_ptr; int _cnt; char *_base; int _flag; int _file; int _charbuf; int _bufsiz; char *_tmpfname; } FILE; extern FILE *_imp___iob)[]; Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

25 Bibliotheken 8 FILE  abstrakter Datentyp für Datei-EA
Typ FILE muss (!) unabhängig von der realen Implementierung genutzt werden, da diese systemabhängig (Betriebssystem, Compiler) ist Konstanten teilweise auch systemabhängig Bsp: devcpp  _imp___iob #define _iob (*_imp___iob) #define stdin (&_iob[STDIN_FILENO]) #define stdout (&_iob[STDOUT_FILENO]) #define stderr (&_iob[STDERR_FILENO] Programmieren in C - Peter Klingebiel - HS Fulda - DVZ


Herunterladen ppt "Programmieren in C Module und Bibliotheken"

Ähnliche Präsentationen


Google-Anzeigen