Atari Logo
Atari Computer

Hauptseite -
Welches System? -
Hardware -
Software -
Emulatoren -
Internet
MausNet
Programmieren
Verweise
Über

C

Home Funktionen Funktionspointer Preprozessor

10.9 Cookie Jar

Und zum Schluß nochnmals zu unserem Cookie Jar. Wir können jetzt einige Teile auch in Funktionen auslagern.

#ifdef __TURBOC__
#include <tos.h>
#else
#ifdef __GNUC__
#include <osbind.h>
#else
#include <tosbind.h>
#endif
#endif
#include <stdio.h>

typedef struct cookie_entry {
   union {
      unsigned long name_long;
      char name_array[4];
   } name;
   unsigned long value;
} CookieEntry;

CookieEntry *GetCookieJar(void)
{  long OldStack;
   CookieEntry *CookieJar;

   OldStack = Super(0L);
   CookieJar = *((CookieEntry**)0x5a0L);
   Super((void *)OldStack);
   return CookieJar;
}

void PrintCookie(CookieEntry *Cookie)
{
   printf("Name des Cookies: %d\n", Cookie->name.name_long);
   printf("Wert des Cookies: %d\n", Cookie->value);
}

int IsNullCookie(CookieEntry *Cookie)
{
   return (Cookie->name.name_long == 0);
}

void TraverseCookieJar(CookieEntry *Cookie)
{
   while (!IsNullCookie(Cookie))
   {
      PrintCookie(Cookie);
      Cookie++;
   }
}

int main(void)
{  CookieEntry *CookieJar;

   CookieJar = GetCookieJar();
   if (CookieJar == (CookieEntry *)0)
      printf("Dieses System hat keinen Cookie Jar\n");
   else
      TraverseCookieJar(CookieJar);
   return 0;
}

Was haben wir jetzt gewonnen außer mehr Code? Zum einen können die Funktionen an anderer Stelle wiederverwendet werden. Auch in einem anderen Programmen, wie wir im Kapitel über modulares Compilieren sehen werden. Zum anderen wird das Programm leichter verständlich. Denn jede Teilaufgabe ist in eine Funktion verschoben worden, die ihre Aufgabe auch als Namen trägt. Und diese Vorgehensweise erlaubt es, ein Programm nicht sofort komplett verstehen oder auch programmieren zu müssen. Zuerst nimmmt man sich main vor. Wir ermitteln den CookieJar und wenn wir einen Zeiger darauf bekommen, durchwandern wir ihn. Eigentlich doch ganz einfach. Und dann können wir uns einer der beiden Funktionen zuwenden und sie weiter analysieren. Bei der Entwicklung wird diese Vorgehensweise "top down" genannt. Wir zerlegen das große Problem in kleinere Teilprobleme, die wir nacheinander lösen. Diese Teilprobleme kann man wieder weiter zerlegen. Dies führt man solange durch, bis sich das Teilproblem leicht lösen läßt.


Home Funktionen Funktionspointer Preprozessor


Best viewed with any browser English version not yet available.

Änderungen und Irrtümer vorbehalten. Letzte Änderung:
14 September 2001.
Home - Mail an den Webmaster - Impressum