1. Aufgabenstellung

  2. types.c: Beispiel für Datentypen und deren Speicherbedarf

  3. miniparser.c: Beispiel für Zeichenkettenoperationen in einem kleinen Parser

  4. world2.c: Weitere Ausarbeitung der Miniwelt mit Hilfe von Strukturen

  5. Verschiedene Aufgaben


C-KURS WS 01/02 - Übungen8 - Ergänzungen zur Vorlesung


AUTHOR: Gerd Döben-Henisch
DATE OF FIRST GENERATION: Nov-18, 2001
DATE OF LAST CHANGE: Nov-20, 2001
EMAIL:
Gerd Döben-Henisch



Aufgabenstellung

In Ergänzung zur Vorlesung soll hier anhand von Beispielprogrammen gezeigt werden, wie (i) man den Speicherbedarf der verschiedenen Datentypen ermitteln kann, (ii) wie man Zeichenkettenoperationen benutzen kann, um einen kleinen Parser zu bauen und schliesslich (iii) ein ausführlicheres Beispiel zur Nutzung der Datentypen Strukur und Pointer bei der Konstruktion einer Miniwelt.

START



types.c: Beispiel für Datentypen und deren Speicherbedarf

Im Demoprogramm types.c wird demonstriert, wie man Arrays zu den verschiedenen Datentypen anlegen kann, ferner wie man die Adresse der Arrayelemente mittels Pointer vom gleichen Typ abfragen kann, und wie man aus der Differenz der Adressen zwischen benachbarten Feldern den tatsächlichen Speicherbedarf ermitteln kann. Zugleich wird deutlich, dass der Unterschied zwischen zwei benachbarten Arrayelementen eines Typs TYP auf der Ebene des abstrakten Datentyps 1 beträgt, während er auf der Ebene der realen Speicherelemente davon abhängig ist, wieviele Bytes einem abstrakten Datentyp zugeordnet sind. Zusätzlich wird noch die Funktion sizeof() benutzt, um den Speicherinhalt anzuzeigen.

Die Funktion der Funktion sizeof() wird auch am Beispiel komplexer Datentypen wie struct vorgeführt.

Abschliessend wird gezeigt, wie man mit Hilfe des Datentyps union herausfinden kann, ob es sich bei der darunterliegenden Maschine um eine Big-Endian oder um eine Little-Endian Maschine handelt.

START



miniparser.c: Beispiel für Zeichenkettenoperationen in einem kleinen Parser

Im Demoprogram miniparser.c wird gezeigt, wie man mit den Zeichenkettenfunktionen strtok(), strcmp() sowie atoi() auf einfache Weise einen einfachen Parser bauen kann.

START


world2.c: Weitere Ausarbeitung der Miniwelt mit Hilfe von Strukturen

Im (noch nicht vollendeten) Demoprogramm world2.c findet man reichlich Anschauungsmaterial, wie man mit Hilfe von Strukturen und Pointern eine Miniwelt bauen kann.


START


Verschiedene Aufgaben

  1. Definieren Sie ein paar eigene Daten vom Typ struct. Berechnen Sie 'per Hand' den dazugehörigen Speicherbedarf und überprüfen Sie Ihr Ergebnis mit dem sizeof()-Operator.

  2. Wiederholen Sie den Test bzgl. Byteorder auf ihrem eigenen Computer

  3. Bauen Sie eigene Beispiel mit den Zeichenkettenoperationen strlen() (Länge einer Zeichenkette berechnen), strcpy(), strncpy() (Inhalt einer Zeichenkette in eine andere hineinkopieren), strcat(), strncat() (zwei Zeichenketten aneinanderhängen.

  4. Bauen Sie mit dem Zufallsgenerator und der Funktion strcat() einen künstlichen 'Poeten', der zufallserzeugte Zeichenketten produziert.

  5. Erweitern Sie den Miniparser so, dass er auch noch andere Befehle erkennen kann.

  6. Erarbeiten Sie ein Struktogramm zum Programm world2.c


START