Informatik Grundlagen, WS04, Seminar 11 Informatik Informatik Grundlagen, Seminar 11 WS04 1 Was wir heute besprechen Evaluation Wiederholung aus der Vorlesung: structs Besprechung und Ausarbeitung von Übungsblatt 10 Nachbesprechung Übungsblatt 9 und 10 Informatik Grundlagen, Seminar 11 WS04 2 Evaluation Ziel der Evaluation Erhalt von Feedback um den Übungsablauf zu verbessern. Macht mit - das ist DIE Chance. Ablauf Jeder bekommt jeweils ein Kärtchen pro Leitfrage. Auf diese Kärtchen schreibt ihr Anmerkungen/Vorschläge zur jeweiligen Frage Danach werden die Karten eingesammelt und die Antworten gemeinsam durch diskutiert. Jede Kritik ist willkommen !!! Informatik Grundlagen, Seminar 11 WS04 3 Evaluation Leitfragen Was hat Ihnen in diesem Kurs wirklich geholfen etwas über Programmieren zu lernen? Bitte nennen Sie ein bis zwei Beispiele. Was/Welches Verhalten des Lehrbeauftragten hat Ihnen das Lernen in diesem Kurs schwer gemacht? Bitte nennen Sie ein bis zwei Beispiele. Machen Sie bitte ein bis zwei konkrete Änderungsvorschläge, die der Lehrbeauftragte umsetzen könnte, um Ihren Lernerfolg in diesem Kurs zu unterstützen. Informatik Grundlagen, Seminar 11 WS04 4 Wiederholung Vorlesung structs Wofür braucht man strukturierte Datentypen? Strukturen in C Schlüsselwort struct struct Point { int x; int y; }; struct gehört mit zum Datentyp (auch bei Funktionsschnittstellen): struct Point p1; Informatik Grundlagen, Seminar 11 WS04 5 Wiederholung Vorlesung structs Verwendung von Strukturen struct Point { int x; int y; }; /* Initialisierung */ struct Point p = {5,10}; /* direkte Zuweisung */ struct Point p2 = p; /* Zugriff auf Komponenten */ printf(”p.x = %d”, p.x); printf(”p.y = %d”, p.y); Informatik Grundlagen, Seminar 11 WS04 6 Wiederholung Vorlesung structs Strukturen als Parameter von Funktionen werden als ganzes kopiert. Daher genau überlegen ob es nicht sinnvoller (oder ohnehin erforderlich) ist, die Parameter mit Call by Reference zu übergeben. Dynamische Speicherallokierung macht bei Strukturen erstmals richtig Sinn (z.B. bei Grafikanwendung steht nicht von vornherein fest, wieviele Punkte/Rechtecke denn gezeichnet werden). Wichtig: jedem malloc muss unbedingt ein free gegenüber stehen. Informatik Grundlagen, Seminar 11 WS04 7 Wiederholung Vorlesung structs Hat man einen Pointer auf eine Struktur gibt es verschiedene Möglichkeiten auf die Komponenten zuzugreifen: Derefenzierung und Punktoperator Pfeiloperator. void PrintPoint(struct Point *pPoint) { /* Dereferenzierung und Punktoperator */ printf(”x: %d”, (*pPoint).x); printf(”y: %d”, (*pPoint).y); /* Pfeiloperator Alternative */ printf(”x: %d”, pPoint->x); printf(”y: %d”, pPoint->y); } Informatik Grundlagen, Seminar 11 WS04 8 Wiederholung Vorlesung structs Übung: Erstellen Sie eine Struktur für eine Adresse mit relevanten Komponenten, initialisieren Sie diese Struktur und schreiben Sie eine Funktion zur Ausgabe dieser Struktur in zwei Varianten: Struktur wird als Wert übergeben und Struktur wird als Pointer übergeben. Verwenden Sie bei der Pointer-Variante auch die unterschiedlichen Möglichkeiten, um an die Komponenten heran zu kommen. Informatik Grundlagen, Seminar 11 WS04 9 Übungsblatt 10 Tipps... Einträge für Tabellen (Daten der Personen) können Sie hardcoded eingeben, also z.b. struct Address {...} addresses[30] = { {6912,”Hoerbranz”},...} Sie dürfen für Eingabe der PLZ scanf oder Funktion GetInt aus Ü9 verwenden. Achtung: “Verkettung” von Personen und Adressen soll wie in Abbildung geschehen. Keine Pointer von Adr. nach Person (Richtung!) Informatik Grundlagen, Seminar 11 WS04 10 Informatik Grundlagen, Seminar 11 WS04