ä Arbeitsblatt Datentypen - 1/2 - Prof. Dr.-Ing. Hermann
Arbeitsblatt Datentypen
Vorbereitung
Beginnen Sie mit dem Endstand aus Video s3e3. Sie finden diesen Endstand in dem Archiv structdemo_endstand.zip.
Falls Sie Visual Studio benutzen, können Sie das Projekt in dem Archiv gleich benutzen.
Andernfalls importieren Sie die Quelldateien structdemo.c und structdemo.h in Ihre Entwicklungsumgebung für C.
Aufgabe 1
Bisher wird die Kategorie des POI nicht ausgegeben. Schreiben Sie dazu die in Abbildung 1 begonnene Funktion fertig.
// Ausgabe der Kategorie
void ausgabe_kategorie(kategorie_t kat) {
}
Abbildung 1: Funktion zur Ausgabe einer Kategorie
Rufen Sie dann die Funktion in der Funktion zur Ausgabe eines POI auf und testen Sie das Ergebnis. Sie können selbst bestimmen, welchen Text Sie jeweils ausgeben wollen.
Aufgabe 2
In Aufgabe 1 wird der Parameter als Wert übergeben (call by value), nicht als Zeiger auf den Wert (call by reference).
1. Ist es überhaupt möglich, einen Zeiger auf eine Aufzählung zu übergeben?
2. Falls ja: Warum wird es hier nicht getan?
Aufgabe 3
Einige Zeit nach der Entwicklung des Programms wurde die Aufzählung um das Element AUSSICHTSPLATTFORM erweitert.
Erweitern Sie die Funktion aus Aufgabe 1 so, dass für (zur Entwurfszeit) unbekannte Kategorien der Text Andere ausgegeben wird.
Aufgabe 4
Analog zu der Positionsangabe ist es sinnvoll, auch die Adressangabe in eine eigene Struktur zu verpacken.
Definieren Sie eine Struktur vom Typ adresse_t so, dass darin in je einem Element ein Name,
eine Postleitzahl und eine Ortsangabe untergebracht werden können. Die Elementnamen
können Sie frei wählen. Für die Postleitzahl verwenden Sie den am besten geeigneten Integertyp
(siehe Video, Kapitel 1).
ä Arbeitsblatt Datentypen - 2/2 - Prof. Dr.-Ing. Hermann Aufgabe 5
Schreiben Sie jetzt das Programm so um, dass die neue Struktur auch genutzt wird. Führen Sie dazu dieselben Schritte durch, die auch bei dem „Herausziehen“ der Position nötig waren.
Testen Sie das Ergebnis!
Aufgabe 6
Alle Strukturen eines Typs sind in C gleich groß. Das gilt auch für die Struktur, die Sie eben in Aufgabe 5 definiert haben, obwohl die Adressangaben unterschiedliche Länge haben.
Wie ist das möglich?
Hinweis: Sehen Sie sich den Datentyp der Elemente an.
Aufgabe 7
Zu Positionen gehört auch eine Höhenangabe.
1. Erweitern Sie die Struktur geopos_t um eine Höhenangabe. Höhen werden im Bereich [-400, +9999]
liegen. Suchen Sie sich den dafür am besten passenden Datentyp aus.
2. Ändern Sie das Programm dann so ab, dass nur dem Schloss zu Beginn die Höhe 940 zugewiesen wird. Lassen Sie bei der Ausgabe auch die Höhe mit ausgeben.
3. Welche Höhe wird bei dem Restaurant ausgegeben?
Aufgabe 8
Höhenangaben sind nicht immer verfügbar. Falls bei der Initialisierung die Höhe nicht angegeben wird, soll auch bei der Ausgabe diese Angabe weggelassen werden.
Führen Sie einen neuen Aufzählungstyp ein, der nur zwei Elemente hat (DEFINIERT, NICHT_DEFINIERT) und sorgen Sie dafür, dass das Element NICHT_DEFINIERT) den Wert 0 zugewiesen bekommt.
1. Nehmen Sie den Aufzählungstyp auch als ein Element mit in die Struktur geopos_t mit auf.
2. Ändern Sie dann das Programm so ab, dass bei der Ausgabe die Höhe nur ausgegeben wird, wenn die Höhe entweder nicht 0 ist oder wenn die Höhe als DEFINIERT gekennzeichnet ist.