Programmieren in C

von Prof. Dr. Rainer Thomas

2. Grundlagen

2.1 Aufbau eines C-Programms
2.2 Bezeichner und reservierte Worte
2.3 Datentypen (Überblick und einfache Typen)
2.4 Darstellung von Konstanten
2.5 Variable, Variablenvereinbarung
2.6 Funktionsdefinition und -deklaration
2.7 Anweisung für den Preprozessor
2.8 Erzeugung eines ausführbaren Maschinenprogramms

2.1 Aufbau eines C-Programms

Programmbeispiel in C

/* -------------------------------------------------------------- */
/* Programm ZLAENGE                                               */
/* -------------------------------------------------------------- */
/* Ermittlung der Laenge von Eingabezeilen                        */
/* Programmende bei Eingabe von End-of-File zu Beginn einer Zeile */
/* -------------------------------------------------------------- */


#include <stdio.h>                       /* Preprozessoranweisung */

#define NL '\n'                          /* Preprozessoranweisung */


int cZeich;                              /* Variablendefinition   */

int ZeileEin(int);                       /* Funktionsdeklaration  */


void main(void)                          /* Funktionsdefinition   */
{
  int iLaenge;

  while ((cZeich=getchar())!=EOF)
  { iLaenge=ZeileEin(cZeich);
    printf("Laenge der Zeile = %-d\n",iLaenge);
  }
}


int ZeileEin(int iErstzeich)             /* Funktionsdefinition   */

  /* Ermittlung der Laenge einer Zeile durch
     Einlesen der restlichen Zeichen der Zeile.
     Zeilenabschluss mit NL.
     Parameter erstzeich ist erstes Zeichen
     der Zeile */
{
  int iZeich, iZaehl;

  iZaehl=0;
  for (iZeich=iErstzeich; iZeich!=NL; iZaehl++,iZeich=getchar());
    return (iZaehl);
}
 

Struktur eines C-Programm-Moduls


2.2 Bezeichner und reservierte Worte

Bezeichner und Wortsysmbole in C

  • In einigen C-Systemen existieren weitere Wortsymbole, z.B.
  •  
    asm   
    pascal   
    cdecl   
    near   
    far   

    Empfehlungen zur Vergabe von Namen (Bezeichnern)


    2.3 Datentypen (Überblick und einfache Typen)


    Arithmetische Datentypen in C

    Wertebereiche der arithmetischen Datentypen in C


    2.4 Darstellung von Konstanten

    Integer- und Gleitpunkt-Konstante in C

    Zeichenkonstante in C

    Zeichenketten- (String) Konstante in C

    Aufzählungstypen und Aufzählungskonstante in C


    2.5 Variablen, Variablenvereinbarung

    Die Qualifier "const" und "volatile" in C


    2.6 Funktionsdefinition und -deklaration

    Funktionen in C - Allgemeines

    Funktionen in C - Funktionsdefinition

    Funktiondefinition (neue Art, ANSI-C) - vereinfachte Syntaxdiagrame

    Funktiondefinition (alte Art) - vereinfachte Syntaxdiagrame

    Funktionen in C - Funktionsdeklaration

    Funktionsdeklaration - vereinfachte Syntaxdiagramme

    Beispiel zur Funktionsvereinbarung (neue Art, ANSI-C)

    /*--------------------------------------------------------------------*/
    /* Programm FKTVERN                                                   */
    /*                                                                    */
    /* Beispiel zur Funktionsdefinition und -deklaration (neue Art)       */
    /*--------------------------------------------------------------------*/
    
    #include <stdio.h>
    
    /*--------------------------------------------------------------------*/
    
    void main(void)
    
    { int   a=3,   b=10;
      float x=3.0, y=10.0;
    
      float realadd(float,float);   /* Vorwärtsdeklaration */
    
      int intadd(int,int);          /* Vorwaertsdeklaration fuer intadd zwar
                                       nicht erforderlich, da Ergebnis vom
                                       Typ int,
                                       aber ohne Vorwärtsdeklaration wird
                                       keine Parameterüberprüfung durch den
                                       Compiler vorgenommen  */
    
      a=intadd(a,b);
      x=realadd(x,y);
      printf("%d\n%f\n",a,x);
    }
    
    /*--------------------------------------------------------------------*/
    
    int intadd(int a,int b)       /* Typangabe nicht erforderlich, da int */
    
    {
      return(a+b);
    }
    
    /*--------------------------------------------------------------------*/
    
    float realadd(float s,float t)
    
    {
      return(s+t);
    }
    
    /*--------------------------------------------------------------------*/
    Bildschirmausgabe:

    Beispiel zur Funktionsvereinbarung (alte Art

    /*---------------------------------------------------------------------*/
    /* Programm FKTVERA                                                    */
    /*                                                                     */
    /* Beispiel zur Funktionsdefinition und -deklaration (alte Art)        */
    /*---------------------------------------------------------------------*/
    
    #include <stdio.h>
    
    /*---------------------------------------------------------------------*/
    
    main()
    
    { int   a=3,   b=10;
      float x=3.0, y=10.0;
    
      float realadd();          /* Vorwaertsdeklaration */
    
      a=intadd(a,b);            /* Vorwaertsdeklaration fuer intadd nicht
                                       erforderlich, da Ergebnis vom Typ int  */
      x=realadd(x,y);
      printf("%d\n%f\n",a,x);
    }
    
    /*---------------------------------------------------------------------*/
    
    int intadd(a,b)             /* Typangabe nicht erforderlich, da int */
    int a,b;                    /* Parameterdeklaration */
    
    {
      return(a+b);
    }
    
    /*---------------------------------------------------------------------*/
    
    float realadd(s,t)
    float s,t;                  /* Parameterdeklaration */
    
    {
      return(s+t);
    }
    
    /*---------------------------------------------------------------------*/
    Bildschirmausgabe:

    2.7 Anweisungen für den Preprozessor


    2.8 Erzeugung eines ausführbaren Maschinenprogramms

    Vom C-Quell-Modul zum ausführbaren Maschinenprogramm





    Zum Inhaltsverzeichnis Zum nächsten Abschnitt


    Copyright © FH München, FB 04, Prof. Dr. Rainer Thomas
    V - PC - 211 - 00 - TH - 06
    V - PC - 212 - 00 - TH - 02
    V - PC - 221 - 00 - TH - 07
    V - PC - 222 - 01 - TH - 01
    V - PC - 230 - 00 - TH - 02
    V - PC - 231 - 00 - TH - 07
    V - PC - 232 - 00 - TH - 02
    V - PC - 233 - 00 - TH - 03
    V - PC - 241 - 01 - TH - 01
    V - PC - 241 - 02 - TH - 03
    V - PC - 242 - 00 - TH - 07
    V - PC - 243 - 00 - TH - 01
    V - PC - 244 - 00 - TH - 03
    V - PC - 251 - 00 - TH - 04
    V - PC - 253 - 00 - TH - 02
    V - PC - 261 - 00 - TH - 02
    V - PC - 263 - 00 - TH - 03
    V - PC - 264 - 01 - TH - 05
    V - PC - 264 - 02 - TH - 05
    V - PC - 265 - 00 - TH - 02
    V - PC - 266 - 00 - TH - 06
    V - PC - 267 - 01 - TH - 04
    V - PC - 267 - 02 - TH - 04
    V - PC - 271 - 01 - TH - 05
    V - PC - 271 - 02 - TH - 03
    V - PC - 281 - 00 - TH - 02