Demoprogramm

/* demo.c - 
 Dieses Programm demonstriert einige Elemente von C.
 Jedes Programm sollte mit ausreichend Kommentaren versehen sein!
 z.B. ueber den Zweck des Programmes, oder spezielle Programmierkniffe.
 Ein Kommentar endet mit: */
/* leitet einen Kommentar ein
 */

/* Am Beginn jedes Programmes muessen verschiedene
 Definitionsdateien eingebunden werden. Diese Dateien sind im INCLUDE
 Subdirectory des jeweiligen Compilers abgelegt. Der Befehl lautet:
 #include <Datei>
 Es ist eine Anweisung an den sogenannten Praeprozessor, der
 zu Beginn noch vor der eigentlichen Uebersetzung des Quellcodes
 ausgefuehrt wird.
 */
#include <stdio.h>              /* Definitionen für Ein/Ausgabe */
#include <conio.h>              /* DOS console input/output (nicht ANSI Standard) */

/* Deklaration symbolischer Konstanten:
 Mit #define erfolgt durch den Praeprozessor ein Textersatz im Quellcode.
 */
#define E 2.7182818
/* Immer wenn im Quellcode die Abkuerzung E auftaucht wird vor der
 Kompilierung durch den Praeprozessor 2.7182818 eingesetzt.

 Vor dem eigentlichen Hauptprogramm (main) sollten saemtliche anderen
 verwendeten Funktionen deklariert werden.
 */
void display_euler(void);

/* Deklaration von Variablen (global):
 globale Variablen sind im gesamten Programm zugaenglich.
 */
int numer = 17;                       /* Ganze Zahlen */
int denom = 6;                        /* Variablen koennen gleich zu
                                         Beginn initialisiert werden.
                                         An die Variable numer wird der
                                         Wert 17 uebergeben und an die
                                         Variable denom wird der
                                         Wert 6 uebergeben */

char  *meldung = "Weiter mit <RETURN>! "; /* Zeichenkette */
float zahl1, zahl2, summe;                /* Gleitkommazahlen */
float differenz, produkt, quotient;
char  name[41];                           /* Text 40 Zeichen lang */
char  zeichen;                            /* einzelnes Zeichen */

int main(void)                            /* Start des Hauptprogrammes */
{
/* Deklaration von Variablen (lokal):
 lokale Variablen haben nur in der jeweiligen Funktion Gueltigkeit.
 */
int    anz = 1;

clrscr();            /* Loescht den Bildschirm (nicht ANSI Standard)
                        ist in der include Datei conio.h definiert */

/* Eingabeteil */
  printf("\n");      /* printf dient zur Ausgabe von Text und Variablen  */
                     /* Eine Leerzeile wird geschrieben. Fuer   */
                     /* die Darstellung bestimmter Zeichen      */
                     /* gibt es sogenannte Ersatzdarstellungen: */
                     /*   \n = neue Zeile     */

  printf("         Guten Tag, wie heiszen Sie\?\n");
  printf("\n         Bitte geben Sie Ihren Namen ein : ");

  scanf("%s",&name); /* scanf dient zur Eingabe von Werten an Variable */
                     /* Die Eingabe wird in der Variable name gespeichert. 
                        Der Typ der Variablen wird in der Formatzeichenkette 
                        durch Umwandlungszeichen angegeben */

  printf("\n");
  printf(" Hallo, %s!\n Bitte geben Sie zwei Zahlen ein !\n", name); 
  printf("         Erste Zahl  : ");
  scanf("%f", &zahl1);
  printf("         Zweite Zahl : ");
  scanf("%f", &zahl2);

/* Verarbeitungsteil (Rechenteil) */
  summe = zahl1 + zahl2;            /* Die mathematischen Operatoren der */
  differenz = zahl1 - zahl2;        /* Grundrechnungsarten sind in C definiert. */
  produkt = zahl1 * zahl2;
  quotient = zahl1 / zahl2;

/* Ausgabeteil */
  printf("\n  Summe     : %f + %f = %f",zahl1, zahl2, summe);
                  /* Auch fuer die Ausgabe von Variablen muss durch Umwandlungszeichen
                     in einer Formatzeichenkette, der Typ der Ausgabevariablen
                     gekennzeichnet werden */
  printf("\n  Differenz : %f - %f = %f",zahl1, zahl2, differenz);
  printf("\n  Produkt   : %f * %f = %f",zahl1, zahl2, produkt);
  printf("\n  Quotient  : %f / %f = %f",zahl1, zahl2, quotient);

/* Wichtig ist es auch, innerhalb des Programmes 
   Entscheidungen treffen zu koennen */
  if (quotient > 1)
     printf("\n  Der Quotient ist groesser als eins!");
  else
     printf("\n  Der Quotient ist kleiner als eins!");
  printf("\n");
  printf("\nBei der Division %d / %d bleibt %d Rest\n",numer,denom,numer%denom);
  printf("\n");
  display_euler();
  printf("%s\n", meldung);
  zeichen=getch();    /* wartet auf <RETURN> (nicht ANSI Standard)
                         mit zeichen=getchar() kann auch ein einzelnes Zeichen
                         eingelesen werden. Zur Uebernahme des Zeichens muss 
                         jedoch die Eingabetaste gedrueckt werden. */
  printf("\nEnde des %d.ten Programmes\n", anz);
  return 0;
}  /* Ende des Hauptprogrammes */


/* Funktionsdefinition */
void display_euler(void)
{
  printf("Die Euler\'sche Zahl betraegt %f\n\n",E);
}
/* Ende des Programmes */

Jedes C-Programm besteht zumindest aus der main() Funktion. Diese Funktion stellt den Einsprungspunkt des Programmes dar. Die runden Klammern nach dem Namen (hier main) enthalten die Liste (hier leer) der Aufrufargumente. Die Funktionsdefinition beginnt mit der öffnenden geschweiften Klammer ({) und wird durch die }-Klammer beendet. Zwischen diesen Klammern werden die Schritte beschrieben, die innerhalb der Funktion ausgeführt werden sollen. Zuerst müssen Variablen, die im Programm verwendet werden sollen, deklariert werden. Die weiteren Schritte im Demo-Programm sind Aufrufe anderer Funktionen, und zwar der Funktion printf(), die für die Ausgabe auf den Bildschirm verantwortlich ist, und scanf() die für die Wertannahme von der Tastatur zuständig ist. Diese Funktionen sind schon vordefiniert und Bestandteil der Standardbibliothek, die eine Vielzahl von fertigen Funktionen enthält. Um die Funktionen der Standardbibliothek nutzen zu können, müssen dazu passende Informationen, die in einzelnen Headerdateien zusammengestellt sind, in den Programmcode eingetragen werden. Diese Aufgabe wird durch den Präprozessor übernommen.
Um die Übersichtlichkeit eines Programmes und dessen Verwaltung zu verbessern, sollte man, wo es möglich ist, das Programm in kleine zusammenhängende Teilfunktionen zerlegen und diese von main() aus aufrufen.
home