Informatik Grundlagen, WS04, Seminar 13 Informatik Informatik Grundlagen, Seminar 13 WS04 1
Was wir heute besprechen Nachbesprechen von Übungsblatt 11 Rekursion Grundprinzipien Übung Besprechung Übungsblatt 12 Fragen Eventuelle Unklarheiten zum Klausurstoff Übungsblatt,... Informatik Grundlagen, Seminar 13 WS04 2
Übungsblatt 11 Aufgabe 1 Ziel war Kennenlernen der zur Verfügung stehenden File- Operationen in C Vielfach wurden die einzulesenden Integerwerte manuell Zeichen für Zeichen eingelesen und schließlich in Zahlen konvertiert. Völlig in Ordnung so lange das Ergebnis stimmt, allerdings wurde oft darauf vergessen, dass Integerwerte auch negativ sein können. Zudem unnötige Arbeit und Zeitaufwand (vielleicht abgesehen vom Training) Sicherer und vor allem leichter: die passende Funktion für die Aufgabe verwenden: fscanf() ist hier geeigneter als fgetc() Informatik Grundlagen, Seminar 13 WS04 3
Übungsblatt 11 Der int - Rückgabewert der Funktion wurde häufig übersehen. Er könnte z.b. sinnvoll dazu genutzt werden, die Anzahl der gelesenen Zeichen oder einen Fehler zurückzugeben. int LoadData(const char* pfilename, int *pvalues) { FILE *pfile = fopen(file_name, "r"); /*open text file for reading*/ int readcount = -1; /* default is error */ } if (pfile == NULL) { printf("file %s could not be opened for reading!\n", FILE_NAME); } else { readcount = 0; while (!feof(pfile) && readcount < MAX_VALS) { fscanf(pfile, "%d", (pvalues+readcount)); readcount++; } fclose(pfile);/* don t forget to close the file */ } return readcount; Informatik Grundlagen, Seminar 13 WS04 4
Übungsblatt 11 Aufgabe 2 Ziel war hier das Üben im Umgang mit Listen (und damit auch mit Zeigern). Wer im letzten Seminar mitgemacht hat, war wirklich im Vorteil. Wo lagen die Hauptschwierigkeiten? -> Durchgehen einer Beispiel-Lösung Informatik Grundlagen, Seminar 13 WS04 5
Übungsblatt 11 Generelles: Pointervariablen tatsächlich nach Programmier-richtlinien benennen, unabhängig davon, was in Beispielcode verwendet wird. FILE *pfile = NULL; statt FILE *file = NULL; ListNode **pphead... statt ListNode **phead... Reicht Aufgaben ein, auch wenn die nicht alles machen was auf dem Aufgabenblatt gefordert ist. Weniger als wenn ihr nichts abgebt, könnt ihr nicht bekommen. Bearbeitung ist gutes Training und Vorbereitung auf Klausur. Informatik Grundlagen, Seminar 13 WS04 6
Rekursion Was ist eine rekursive Funktion? Jede rekursive Lösung lässt sich auch iterativ umsetzen. Vorteile der rekursiven Lösung? Nachteile der rekursiven Lösung? Wann bietet sich die Verwendung von Rekursion an? Welches Kriterium ist bei der Rekursion äußerst wichtig? Informatik Grundlagen, Seminar 13 WS04 7
Rekursion Übung Erstellen Sie ein Programm, das eine Liste von Zahlen in umgekehrter Reihenfolge ausgibt. Die Liste soll zuerst aus einem File aufgebaut werden und dann per Rekursion in umgekehrter Reihenfolge auf den Bildschirm ausgegeben werden. Erweitern sie das Programm so, dass die Liste nicht nur umgekehrt auf dem Bildschirm ausgegeben wird, sondern tatsächlich umgekehrt wird - wieder mit Anwendung von Rekursion (also das letzte Element soll danach das erste sein, das zweit-letzte das zweite usw.). Informatik Grundlagen, Seminar 13 WS04 8
Übungsblatt 12 Ziel Einstieg in die Thematik des Sortierens Vertiefen der Kenntnisse über Rekursion und Umgang mit fremden Bibliotheken. Abgabetermin ist erst am 27.1. - also erst nach der Klausur und dem letzten Seminar. Info: Die Datei saro.c enthält leider Windows-spezifischen Code, damit kommt es beim Programmablauf zwischendurch immer wieder zu Fehlermeldungen unter Linux/Unix Abhilfe: Ersetzen von system( cls ) durch system( clear ) in der Datei saro.c sollte das ganze Linux/ Unix-tauglich machen. Informatik Grundlagen, Seminar 13 WS04 9
Fragen? Unklarheiten bei Klausurstoff? Sonstige Fragen? Informatik Grundlagen, Seminar 13 WS04 10