Abbildungsausdrücke in C
Abbildungen können in C durch Funktionen realisiert werden. Den Wert einer Abbildung für einen bestimmten Argumentwert schreibt man mit einem Funktionsausdruck, dessen Aufbau hier etwas vereinfacht vorgestellt wird.
- 〈Funktionsausdruck 〉 ::=
- 〈Funktion 〉 "(" [〈Argument 〉] ")".
Nach der Angabe der Funktion folgt also ein Paar runder Klammern, innerhalb derer ein eventuelles Argument notiert werden kann. Bei einer Abbildungsfunktion steht der gesamte Funktionsausdruck für den Wert der Funktion für den Wert des angegebenen Arguments.
Eine in der Standardbibliothek vordefinierte Funktion wird Standardfunktion genannt.
Die Standardfunktion "fabs"
Die Standardfunktion "fabs" ergibt den Betrag des Argumentwertes.
Diese Standardfunktion hat einen Parameter vom Typ "double" und einen Funktionswert vom Typ "double".
Die folgende Synopsis soll daran erinnern, daß bei Verwendung dieser Standardfunktion die Kopfdatei "math.h" einzubinden ist und von welchem Typ Parameter und Funktionswert sind.
fabs [Synopsis]#include <math.h>
double fabs( double x );
Der Parameter der Funktion wird in der Synopsis durch den Text "double x" beschrieben. (Manchmal wird auch nur "double" verwendet.) Das bedeutet, daß der Parameter mit dem Namen "x" bezeichnet wird und vom Typ "double" ist. Es heißt aber nicht, daß bei der Anwendung etwa der Text "double x" oder der Text "double" in die Klammern zu schreiben ist. Vielmehr ist bei einer Anwendung ein Ausdruck vom Datentyp "double" in die runden Klammern zu schreiben.
Genauso erklärt das vorangestellte "double", daß das Ergebnis der Funktion vom Typ "double" ist. Es bedeutet aber nicht, daß vor eine Anwendung der Funktion der Text "double" geschrieben werden soll.
Auf keinen Fall ist die Verwendung einer Funktion mit einer Synopsis, die den Datentyp "double" erwähnt ein Grund dafür in dem Programmgerüst den Text "int main" irgendwie zu verändern: Der Text "int main" darf nicht verändert werden.
Das folgende Beispiel zeigt einen Ausdruck mit dieser Funktion im Zusammenhang eines Programms, das den Wert des Funktionsausdrucks "fabs( -2 )" ausgibt.
fabs.c#include <stdio.h>
#include <math.h>
int main(){ printf( "%g\n", fabs( -2 ) ); }
Die Standardfunktion "rand"
Die Standardfunktion "rand" ist keine Abbildungsfunktion. Sie hat keinen Parameter und bei einer Abbildung müßte der Wert dann konstant sein, was aber nicht der Fall ist.
Übungsaufgaben
Wer bei der Bearbeitung der folgenden Aufgaben die letzte Zeile der Synopsis in das Programm kopiert, macht wahrscheinlich einen Fehler. Die letzte Zeile der Synopsis soll nicht kopiert werden. Sie gibt dem Programmierer Informationen über eine Funktion, aufgrund derer die Funktion dann richtig in ein Programm eingebaut werden kann. Dieser Einbau geschieht aber meistens nicht dadurch, daß die letzte Zeile der Synopsis einfach in das Programm kopiert wird.
- Anwendung der Funktion "isprint"
isprint [Synopsis]
#include <ctype.h>
int isprint( int c );- Die Funktion "isprint" ermittelt, ob ein Zeichen als “druckbar” gilt. Sie ergibt Null genau dann, wenn das nicht zutrifft.
- Auf einem Computer hat jedes Zeichen eine Kennzahl. Die Funktion "isprint" akzeptiert als Argument die Kennzahl des zu untersuchenden Zeichens.
- Ermitteln Sie durch Verwendung der Funktion "isprint", ob das Zeichen 20 ein druckbares Zeichen ist.
- Anwendung der Funktion "tolower"
tolower [Synopsis]
#include <ctype.h>
int tolower( int c );- Auf einem Computer hat jedes Zeichen eine Kennzahl. Die Funktion "tolower" akzeptiert als Argument die Kennzahl eines zu untersuchenden Zeichens.
- Wenn das Argument die Kennzahl eine Versalie ist, dann ist das Ergebnis der Funktion "tolower" die Kennzahl der entsprechenden Gemeinen. (Sonst ist das Argument das Ergebnis.)
- Ermitteln Sie durch Verwendung der Funktion "tolower", den Code der Gemeinen zur Versalie 65.