Eine Einführung in die Programmiersprache C und ... - C /C++ Ecke
Eine Einführung in die Programmiersprache C und ... - C /C++ Ecke
Eine Einführung in die Programmiersprache C und ... - C /C++ Ecke
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
<strong>E<strong>in</strong>e</strong> <strong>E<strong>in</strong>führung</strong> <strong>in</strong> <strong>die</strong> Informatik <strong>und</strong> <strong>die</strong> <strong>Programmiersprache</strong> C<br />
20 Modulares Programmieren<br />
Jedes grössere Programm wird normalerweise <strong>in</strong> mehrere Module (Dateien) aufgeteilt. E<strong>in</strong> Modul<br />
ist e<strong>in</strong>e Sammlung von Funktionen oder Prozeduren, <strong>die</strong> zusammen e<strong>in</strong>e logische E<strong>in</strong>heit bilden.<br />
Jedes Modul hat e<strong>in</strong>e Schnittstelle. Die Schnittstelle def<strong>in</strong>iert <strong>die</strong> Funktionen, welche von dem Modul<br />
gegen aussen zur Verfügung gestellt werden.<br />
E<strong>in</strong> Modul enthält üblicherweise lokale Variablen <strong>und</strong> Funktionen/Prozeduren, welche nur <strong>in</strong>nerhalb<br />
des Moduls verwendet werden <strong>und</strong> von aussen nicht zugänglich s<strong>in</strong>d, sowie globale Funktionen<br />
<strong>und</strong> Variablen, auf welche von anderen Modulen aus zugegriffen werden kann.<br />
(Globale Variablen sollten allerd<strong>in</strong>gs vermieden werden, da sie <strong>die</strong> Wartbarkeit e<strong>in</strong>es Programmes enorm erschweren).<br />
E<strong>in</strong> Beispiel für e<strong>in</strong> Modul wäre stdio.h. Die Funktion pr<strong>in</strong>tf() gehört zur Schnittstelle <strong>die</strong>ses<br />
Moduls, aber <strong>in</strong>nerhalb <strong>die</strong>ses Moduls gibt es noch lokale Funktionen, <strong>die</strong> z. B. <strong>die</strong> Umwandlung<br />
von Zahlen <strong>in</strong> Text vornehmen <strong>und</strong> <strong>die</strong> von aussen nicht zugänglich s<strong>in</strong>d.<br />
E<strong>in</strong> Modul sollte möglichst wenig Elemente global def<strong>in</strong>ieren. Das hat den Vorteil, dass Änderungen<br />
an lokalen Funktionen ke<strong>in</strong>e direkten Auswirkungen auf andere Module haben können. (Das<br />
Ändern von globalen Funktionen, <strong>in</strong>sbesondere wenn Namen, Typ oder Anzahl von Argumenten<br />
oder Typ des Rückgabewertes ändern, betrifft allen Code, der <strong>die</strong> entsprechenden Funktionen benutzt.)<br />
20.1 Modulschnittstelle<br />
Die Schnittstelle e<strong>in</strong>es Moduls(.c) wird normalerweise <strong>in</strong> se<strong>in</strong>er Headerdatei (.h) def<strong>in</strong>iert.<br />
20.2 Globale Variablen<br />
In C s<strong>in</strong>d alle Variablen global, welche nicht explizit als lokal (static) def<strong>in</strong>iert werden. In e<strong>in</strong>em<br />
anderen Modul def<strong>in</strong>ierte Variablen müssen <strong>in</strong> jedem Modul <strong>in</strong> dem sie verwendet werden als<br />
extern deklariert werden (Geschieht normalerweise durch E<strong>in</strong>b<strong>in</strong>den der Headerdatei):<br />
extern <strong>in</strong>t GlobalVar; /* Reserviert ke<strong>in</strong>en Speicherplatz */<br />
extern float f; /* <strong>die</strong> Variable ist <strong>in</strong> e<strong>in</strong>em anderen Modul */<br />
Üblicherweise wird das Schlüsselwort extern <strong>in</strong> Headerdateien (.h) verwendet <strong>und</strong> nicht <strong>in</strong>nerhalb<br />
der Implementationsdatei (.c).<br />
20.3 Lokale Variablen.<br />
In C werden lokale Variablen durch das Voranstellen des Schlüsselwortes static def<strong>in</strong>iert:<br />
static <strong>in</strong>t LocalVar; /* Modul lokale Variable, nicht <strong>in</strong>nerhalb e<strong>in</strong>es Blockes */<br />
static float f; /* def<strong>in</strong>iert, gilt für <strong>die</strong> ganze Datei (Modul) */<br />
20.4 Globale Funktionen<br />
In C s<strong>in</strong>d alle Funktionen global, wenn sie nicht explizit als lokal (static) def<strong>in</strong>iert werden.<br />
Funktionen, <strong>die</strong> <strong>in</strong> e<strong>in</strong>em anderen Modul def<strong>in</strong>iert s<strong>in</strong>d, sollten <strong>in</strong> jedem Modul <strong>in</strong> dem sie verwendet<br />
werden als externer Prototyp aufgeführt werden (extern deklariert werden) :<br />
extern <strong>in</strong>t f1(<strong>in</strong>t a, <strong>in</strong>t b) /* Funktion ist woanders def<strong>in</strong>iert */<br />
Üblicherweise werden externe Prototypen <strong>in</strong> Headerdateien (.h) deklariert.<br />
20.5 Lokale Funktionen.<br />
In C werden lokale Funktionen durch das Voranstellen des Schlüsselwortes static def<strong>in</strong>iert:<br />
static <strong>in</strong>t f2(<strong>in</strong>t a);<br />
Gedruckt am 11.09.2008 13:04:00 Letzte Änderung am: 11. September 2008 Version 2.4, I. Oesch 82/147