06.10.2013 Aufrufe

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

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!