21.11.2013 Aufrufe

Eine Einführung in die Programmiersprache C und die Grundlagen ...

Eine Einführung in die Programmiersprache C und die Grundlagen ...

Eine Einführung in die Programmiersprache C und die Grundlagen ...

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

E<strong>in</strong> etwas grösseres Beispiel zum E<strong>in</strong>satz von Funktionspo<strong>in</strong>tern:<br />

typedef void (*FunPtr)(<strong>in</strong>t *x); /* Typedef, ergibt e<strong>in</strong>fachere Syntax */<br />

/* Anwenden ruft fuer alle Daten <strong>die</strong> Funktion Fkt auf */<br />

void Anwenden(<strong>in</strong>t *Daten, FunPtr Fkt, <strong>in</strong>t Len)<br />

{<br />

while (Len > 0) { /* Solange nicht Datenende erreicht */<br />

Fkt(Daten); /* Funktion auf aktuellen Wert anwenden */<br />

Daten ++; /* Zum naechsten Wert gehen */<br />

Len--;<br />

}<br />

}<br />

/* Funktion ersetzt Wert durch se<strong>in</strong>en Betrag, passt zu FunPtr */<br />

void Betrag(<strong>in</strong>t *Wert)<br />

{<br />

if (*Wert < 0) {<br />

*Wert = -*Wert;<br />

}<br />

}<br />

/* Funktion ersetzt Wert durch se<strong>in</strong> Quadrat, passt zu FunPtr */<br />

void Quadriere(<strong>in</strong>t *Wert)<br />

{<br />

*Wert = *Wert * *Wert;<br />

}<br />

/* Funktion schreibt Wert auf den Bildschirm, passt zu FunPtr */<br />

void Pr<strong>in</strong>t(<strong>in</strong>t *Wert)<br />

{<br />

pr<strong>in</strong>tf("%3d ", *Wert);<br />

}<br />

<strong>in</strong>t ma<strong>in</strong> (<strong>in</strong>t argc, char *argv[])<br />

{<br />

<strong>in</strong>t Daten[] = {-3, -2, -1, 0, 1, 2, 3};<br />

Anwenden(Daten, Pr<strong>in</strong>t, 7); /* Gibt Alle Daten aus */<br />

Anwenden(Daten, Betrag, 7); /* Berechnet Betrag von Daten */<br />

Anwenden(Daten, Pr<strong>in</strong>t, sizeof(Daten)/sizeof(Daten[0])); /* Ausgabe */<br />

/* Mit dem sizeof() Ausdruck wird */<br />

/* <strong>die</strong> Arraygroesse ausgerechnet */<br />

}<br />

Anwenden(Daten, Quadrieren, 7); /* Berechnet Quadrat von Daten */<br />

Anwenden(Daten, Pr<strong>in</strong>t, 7); /* Gibt Alle Daten aus */<br />

return 0;<br />

Damit kann <strong>die</strong> Funktion Anwenden() sehr universell e<strong>in</strong>gesetzt werden, sie kann auch Funktionen<br />

verwenden, <strong>die</strong> beim Programmieren der Funktion Anwenden noch gar nicht bekannt waren.<br />

Durch den E<strong>in</strong>satz der Funktion Anwenden() ist es auch sehr e<strong>in</strong>fach, <strong>die</strong> Datenstruktur zu ändern.<br />

Wenn <strong>die</strong> Daten nicht mehr <strong>in</strong> e<strong>in</strong>em Feld, sondern <strong>in</strong> e<strong>in</strong>er Liste abgelegt werden sollen, muss nur<br />

<strong>die</strong> Funktion Anwenden() angepasst werden. Wenn anstelle der Funktion Anwenden() überall e<strong>in</strong>e<br />

eigene Schlaufe verwendet worden wäre, müssten bei Änderungen alle Schlaufen angepasst werden.<br />

Gedruckt am 10.09.2009 14:23:00 Letzte Änderung am: 10. September 2009 Version 2.4.1, I. Oesch 64/147

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!