Home   Impressum   Zur Person   Dienstleistung   Partner   Verbindungen   Geschichte  
Ein kleiner C-Kurs   Tips zu Sendmail®   Software   FreeBSD   Agenda Vr3   Projekte   Schulungen  

Inhalt des Kurses zurück weiter

C Kurs Tag 4: Die Datentypen Teil 2

Nach Bewältigung der technischen Probleme kann es jetzt weitergehen. Heute wollen wir die übrigen Basis-Typen in C besprechen.

Der Typ =char=, bereits als Zahl vorgestellt, steht auch für die Darstellung als Zeichen. Eine Zeichenkonstante in C wird durch zwei einfache Hochkommas gekennzeichnet. Der Buchstabe (groß) A wird mit 'A' als Konstante vereinbart. Mit diesen Konstanten kann man auch Rechnen. So liefert der Ausdruck ( 'A' + 5 ) das Zeichen 'F'.

Aufgepaßt: In C gibt es keinen Unterschied zwischen Zeichen und ganzen Zahlen.

Die Typen =float= und =double= stellen reelle Zahlen dar. In C sollte man grundsätzlich mit =double= rechnen. Der Typ =float= hat im allgemeinen eine Genauigkeit von ca. 7 Dezimalstellen. Diesen Typ sollte man nur verwenden, wenn der Speicher nicht ausreicht. Die meisten C-Compiler arbeiten bei jeder(!) Berechnung in =double=. Der Typ =double= hat i.a. eine Genaugikeit von ca. 14 Dezimalstellen. Die reellen Zahlen werden, genau so wie im Taschenrechner, mit Exponent und Mantisse gespeichert. Die Grenzen dieser Typen sollte man ebenfalls in der Datei 'limits.h' wiederfinden.

Bevor wir nun unser erstes vernünftiges Programm schreiben, brauchen wir bereits fertige Funktionen aus der Bibliothek. zuerst muß die Funktion dem Compiler bekannt gemacht werden. Dies machen wir mit der Zeile:

#include <stdio.h>

Die Datei 'stdio.h' enthält die Definitionen für einfache Ein- und Ausgabe. Im unserem Fall die Definition für die Funktion printf. Sie stellt uns eine unabhängige formatierte Ausgabe zur Verfügung.

int printf( const char *format, ... );

Hier sind zwei Besonderheiten.

1. Der Stern vor dem Namen des ersten Parameters.

Dies bedeutet das hier kein Zeichen erwartet wird, sondern eine Referenz oder Adresse auf ein Zeichen. Dieser Stern wird später noch ausführlich behandelt. An dieser Stelle wird eine Zeichenkette erwartet. Eine Zeichekette ist in C durch doppelte Anführungszeichen eingeschloßen auch Gänsefüßchen genannt: "eine Zeichenkette".

2. Die drei Punkte dahinter.

Sie stehen für eine beliebige Anzahl von Parametern.

Die Zeichenkette enthält beliebige Zeichen und Steuerkommandos. Ein Steuerkommando beginnt mit einem Prozentzeichen. hier ein paar Beispiele.

printf( " Eine Zeichenkette " );

printf( " Eine Zeichenkette mit Zeilenende \n" );

printf( " Eine ganze Zahl (int) %d \n", ganze_zahl );

printf( " Eine reelle Zahl (double) %lf \n", reelle_zahl );

printf( " von = %d, bis = %d \n", von, bis );

Nun aber unser Programm:

Download der Datei "division1.c"


/*

DIVISION.C

Version 1

28.01.92

*/

#include <stdio.h>

int main ( void )

{

/* Ganzahlige Division auf belibig viele Stellen genau */

/* lokale Varibalen, nur hier bekannt */

long zaehler; /* Zaehler des Bruches */

long nenner; /* Nenner des Bruches */

long stellen; /* Anzahl der Nachkommastellen */

long quotient; /* ganzzahliger Anteil */

long ziffer; /* aktuelle Dezimalstelle */

long rest; /* aktueller Rest */

long i; /* Laufvariable der Schleife */

/* frei aenderbare Werte */

zaehler = 333;

nenner = 4711;

stellen = 60;

/* hier eine Ganzahlige Division, Ergbnis: Vorkommastellen */

quotient = zaehler / nenner;

/* hier wird der ganzzahlige Rest ermittelt */

rest = zaehler - ( quotient * nenner );

/* Ausgabe des Vorkommaanteils */

printf( " %ld / %ld = %ld,", zaehler, nenner, quotient );

/*

Schleife beginnt mit i = 1

Schleife arbeit solange wie i <= stellen ist

Schleife erhoeht bei jedem Durchlauf die Variable i um 1

*/

for ( i = 1; i <= stellen ; i = i + 1 )

{

/* Rest mal 10 fuer neue Division, naechste Ziffer */

rest = rest * 10;

/* Ziffer ist gesuchte nachkommastelle */

ziffer = rest / nenner;

/* anhaengen der Ziffer an die Ausgabe */

printf( "%ld", ziffer );

/* neuer Rest */

rest = rest - ( ziffer * nenner );

}

/* Ende der Schleife */

/* Hier gehts weiter, wenn die Schleife fertig ist */

/* und Zeilenende ausgeben */

printf( "\n" );

/* und Ende! */

return 0;

}

/* ENDE DER DATEI */