| Termine | Aktuelle Informationen | Termine und Materialien | |
| Übungen | Übungsgruppen | Belegarbeiten | Benotung |
| Durchführung der Übungen und Belegarbeiten | Durchführung der Klausur | Literatur |
| Vorlesung | Übung | |
| Zeit: | dienstags 9:45 - 11:15 Uhr (2.E) |
mittwochs 9:45 - 13:30 Uhr (2. und 3.E) im wöchentlichen
Wechsel Gruppe 1: gerade Wochen Gruppe 2: ungerade Wochen |
| Ort: | Raum C 444 | Labor C 635 L |
| Lehrkraft: | H. Hansen |
14.1.2010
Für die Teilnehmer der 1. Übungsgruppe gibt es hier das fertiggestellte
Beispiel mit virtuellen Methoden!
8.12.2009
Hier finden Sie jetzt die 2. Belegarbeit! Als Testdaten können Sie die vom 1. Beleg wiederverwenden.
23.11.2009
Leider hat sich herausgestellt, daß die von mir letzte Woche bereitgestellten Textdateien in der Mac-Version nicht verwendbar sind. Deshalb gibt es hier neue funktionsfähige Testdaten für den Mac! Und jetzt gibt es auch zwei Dateien mit Anwenderkommandos: Kommandos.txt und Kommandos.extra.txt. Die letztere Datei enthält auch Kommandos zum Testen der Extras aus der Aufgabenstellung.
16.11.2009
Hier sind die angekündigten Testdaten. Es gibt drei Dateien mit unterschiedlich vielen Daten. Natürlich muß Ihr Programm mit allen plattformspezifischen Testdaten richtig funktionieren. Da vermutlich einige von Ihnen auf Windows entwickeln, habe ich von allen Dateien zwei Versionen bereitgestellt: Die mit "mac" im Namen sind mit der Mac-Erweiterung des ASCII-Zeichensatzes kodiert, die mit "dos" mit der Microsoft-Erweiterung des ASCII-Zeichensatzes. Die "mac"-kodierten Dateien haben ein UNIX-Zeilenende, die "dos"-kodierten das DOS-Zeilenende! Bei der Vorführung, die ja am Mac erfolgt, müssen die "mac"-kodierten Dateien verwendet werden.
27.10.2009
Hier finden Sie jetzt die 1. Belegarbeit. Testdaten folgen ...
18.9.2009
Die Lehrveranstaltung beginnt am 6.10.2009 mit der Vorlesung. Die Gruppeneinteilung richtet sich nach dem LSF.
Für alle, denen das Arbeiten am Mac bisher nicht so vertraut ist, habe ich Informationen darüber zusammengestellt. Außerdem gibt es noch eine spezielle Website zum Mac-Labor.
Hier finden Sie alle Vorlesungs- und Übungstermine mit den geplanten Inhalten und den zugehörigen Materialien.
Alle Folien zur Lehrveranstaltung werden nach und nach hier
als PDF-Dateien zur Verfügung gestellt, wobei 4 Folien auf einer Druckseite
angeordnet sind, um beim eventuellen Ausdruck Papier zu sparen.
| Datum |
Art |
Gruppe |
Themen |
Version vom |
Foliensatz |
| 6.10. | V | Organisation: Festlegungen zur Benotung
und Klausur, usw. Zeigervariablen in C: Motivation, Definition von Zeigervariablen: Bezeichner, Typ und Wert; Verwendung, Beispiele. |
6.10.2009
|
|
|
| 7.10. | Ü | 2 | umzugsbedingter Ausfall: Labor noch nicht fertig! | ||
| 13.10. | V | Fortsetzung Zeigervariablen: Adressoperator &: referenzieren; Operator *: dereferenzieren | 14.10.2009 | Zeiger | |
| 14.10. | Ü | 1 | Einrichtung der Benutzungsoberfläche am Mac; Erstes Programm: HelloWorld; Programm zum Arbeiten mit Zeigervariablen; Überlegungen zur Anwendung von Zeigervariablen für dynamische Datentypen; Beginn der Implementierung eines dynamischen Datentyps Liste. | ||
| 20.10. | V | Speicheraufteilung: Code, Daten, Stack und Heap; Lebenszeit von Variablen; Spezifikation, Entwurf und Implementierung der dynamischen Datenstruktur "einfach verkettete Liste". | 14.10.2009 | Dynamische Datenstrukturen | |
| 21.10. | Ü | 2 | siehe 14.10. | ||
| 27.10. | V | Fortsetzung "dynamische Liste": zusätzliche Überlegungen zu einer "generischen dynamischen Liste" | 9.11.2009 | Dynamische Datenstrukturen (neue Version) | |
| 28.10. | Ü | 1 | Umstellung der Implementierung der Liste auf eine "generische dynamische einfach verkettete" Liste; Implementierung erster Callbackfunktionen; Test der Listenfunktionen mittels Listen mit unterschiedlichen Inhalten; Aufteilung des Programmcodes auf Header- und Implementierungsdateien. | ||
| 3.11. | V | Fortsetzung "dynamische Liste": Probleme mit dem ersten Entwurf einer dynamischen Liste; Behebung der Probleme; Unmöglichkeit der Behebung aller Probleme bei Verwendung der Programmiersprache C. Funktionsvariablen von C; Verwendung von Funktionsvariablen für Callback-Funktionen. | 9.11.2009 | Funktionsvariablen | |
| 4.11. | Ü | 2 | siehe 28.10. | ||
| 10.11. | V | "Generischer dynamischer binärer Baum"; Dynamische Felder; Rekursive Funktionen. | 9.11.2009 9.11.2009 9.11.2009 |
||
| 11.11. | Ü | 1 | Weitere Anwendungen von Funktionsvariablen; Rekursive Funktionen auf Bäumen; Verwendung von make. | ||
| 17.11. | V | Projektorganisation mit make; Motivation von ant. | 15.12.2009 | Projektorganisation | |
| 18.11. | Ü | 2 | siehe 11.11. | ||
| 24.11. | V | Einführung in die Objektorientierung: Konzepte Klasse und Objekt; Klasse aus "philosophischer" Sicht und aus programmiertechnischer Sicht; Beispielklasse "Complex" für das Rechnen mit komplexen Zahlen. | 15.12.2009 15.12.2009 |
||
| 25.11. | Ü | 1 | Abgabe der 1. Belegarbeit | ||
| 1.12. | V | Dynamische Felder in C++; Klasse String. | 15.12.2009 | Felder | |
| 2.12. | Ü | 2 | Abgabe der 1. Belegarbeit | ||
| 8.12. | V | Datei-EA von C++; Namensräume; Klassenmethoden und Klasseneigenschaften; Arten der Parameterübergabe in C++. |
15.12.2009 15.12.2009 15.12.2009 15.12.2009 |
||
| 9.12. | Ü | 1 | Messung der verbrauchten CPU-Zeit und der Laufzeit von Programmen mit C-Funktionen; Deklaration und Implementierung der Klasse Complex; Diskussion von verschiedenen Arten der Parameterübergabe mit ihren Vor- und Nachteilen. | ||
| 15.12. | V | Benutzung der Standardbibliotheken von C und C++ in verschiedenen Namensräumen; Klassische Normalform von Klassen: Motivation; Realisierung am Beispiel Liste. | 15.12.2009 15.12.2009 |
||
| 16.12. | Ü | 2 | siehe 9.12. | ||
| 22.12. | V | Entwurf von Programmierschnittstellen (APIs): Kriterien zum Entwurf von "guten" Programmierschnittstellen | 26.1.2010 | Entwurf von APIs | |
| 23.12. | Ü | 1 | 2. Beispiel: Reimplementierung der generischen Liste als Klasse in C++. | ||
| 5.1. | V | Const-Correctness: Intensive Verwendung des Schlüsselworts "const" zur Erleichterung der Programmierung in C und C++; Definition des Ausgabeoperators "<<" für selbst definierte Typen als globaler Operator. | 26.1.2010 26.1.2010 |
||
| 6.1. | Ü | 2 | siehe 23.12. | ||
| 12.1. | V | Vererbung; Konstruktoren. | 26.1.2010 26.1.2010 |
||
| 13.1. | Ü | 1 | Abstrakte Klassen und virtuelle Methoden: Beispiel Figur und konkrete Klassen Kreis, Rechteck, usw. | ||
| 19.1. | V | Vererbung: Virtuelle Methoden und ihre Implementierung; abstrakte Klassen; grober Überblick über die Standard Template Library (STL) von C++. | 26.1.2010 | Einführung in die STL | |
| 20.1. | Ü | 2 | siehe 13.1. | ||
| 26.1. | V | Bibliotheksideen für den neuen C++ - Standard: Grober Überblick über "Boost"; Das objektorientierte Paradigma: Hintergrund des Konzepts; Unterschiede zwischen C++ und Java. | 26.1.2010 26.1.2010 26.1.2010 |
||
| 27.1. | Ü | 1 | Abgabe der 2. Belegarbeit | ||
| 2.2. | V | bestätigter Klausurtermin | |||
| 3.2. | Ü | 2 | Abgabe der 2. Belegarbeit | ||
| 9.2. | V | eventuell Klausureinsicht und Nachbesprechung der Lehrveranstaltung | |||
| 10.2. | Ü | 1 |
Hier finden Sie die Übungsbeispiele für die
Übungen.
In der folgenden Tabelle finden Sie nach Beginn der Lehrveranstaltung zu
Ihrer Erinnerung die Teilnehmer der beiden Übungsgruppen. Bitte denken
Sie daran, daß diese Einteilung für die Abgabe der Belegarbeiten
verbindlich ist. Wer hier nicht aufgeführt ist, muß am ersten
Abgabetermin abgeben!
Wer nicht in der für seine Gruppe geplanten Woche abgibt, der gibt verspätet
ab - mit entsprechenden Konsequenzen für die Benotung!
| Nr | Übungsgruppe 1 Beginn am 14.10. (gerade Wochen) |
|
Übungsgruppe 2 Beginn am 7.10. (ungerade Wochen) |
| 1 | Acksel, Robert | Büchner, Abel | |
| 2 | Buchwaldt, Michael | Graichen, Andrea | |
| 3 | de Cuveland, Joschka | Holz, Christian | |
| 4 | Ebert, Christopher | Köhler, Felix | |
| 5 | Felsche, Matthias | Kulpe, Tim | |
| 6 | Fenner, Benjamin | Kultus, Dirk | |
| 7 | Fiebelkorn, Jonathan | Langer, Lars | |
| 8 | Frank, Tobias | Ludwig, Sebastian | |
| 9 | Gerlach, Romy | Martini, Enrico | |
| 10 | Kirchherr, Andreas | Nguyen, Quang Dat | |
| 11 | Liedle, Waldemar | Papadopoulou, Alexandra | |
| 12 | Lucas, Cynthia | Podkowik, Christoph | |
| 13 | Mittenzwei, Robert | Stephan, Erik | |
| 14 | Polenz, Stefanie | Truong, Khoi Nguyen | |
| 15 | Rommel, Martin | Ural, Hakan | |
| 16 | Schiffer, Philip | Weber, Jens | |
| 17 | Schlitter, Jan | Weiß, Felix | |
| 18 | Staudemeyer, Joern | Zybell, Marian | |
| 19 | Vo, Quang Duc | ||
| 20 | Wiese, Florian |
Beachten Sie bitte bei der Erstellung Ihrer Programme die Programmierrichtlinien.
Mit seiner Belegung der Lehrveranstaltung
akzeptiert jeder Studierende die folgenden Festlegungen:
Die in der Vorlesung und in den Übungen erworbenen Kenntnisse werden getrennt
benotet. Die Gesamtnote zur Veranstaltung ergibt sich dann als das (nach den
Stundenanteilen) gewichtete Mittel aus den beiden Noten. In dieser Veranstaltung
gehen also beide Noten mit jeweils 50 % ein.
Die Note zu den Übungen ergibt sich zu 50 % aus der Note der 1. Belegarbeit
und zu 50 % aus der Note der 2. Belegarbeit.
Zur Notengebung beachten Sie bitte die Festlegungen aus der Rahmenprüfungsordnung der FHTW:
Wenn also alle Anforderungen für die gestellte Aufgabe
erfüllt sind, so wird das mit der Note 3,0 bewertet. Wenn die Durchführung
der Aufgabe sehr sauber und sorgfältig erfolgt ist, führt das zur
Benotung 2,3. Wenn über die Anforderungen hinaus mehr oder besonders gute
Leistungen erbracht wurden, so führt auch das zu einem Notenbonus. Was
derartige besondere Leistungen sein könnten, wird vom Dozenten bei Ausgabe
der Belegarbeit in der Vorlesung erläutert.
Wenn nicht alle Anforderungen
erfüllt sind, so hat das Notenabschläge zur Folge. Eine Aufgabe gilt
als nicht gelöst, wenn das Programm falsche Ergebnisse produziert oder "abstürzt" — somit Note 5. Vom Dozenten bereitgestellte Daten sind Testdaten, d.h. das Programm
muß natürlich nicht nur für diese Daten korrekte Ergebnisse
liefern!!!
Eine verspätete Abgabe führt zu einem Notenabschlag von mindestens 2 Stufen. (Eine befriedigende Lösung (Note 3,0), die zu spät abgegeben
wird, wird also z.B. mit 3,7 bewertet.) Verspätete Abgaben müssen innerhalb der auf den Abgabetermin folgenden Woche erfolgen. Noch spätere Abgaben gibt es nicht — die nicht erbrachte Teilleistung wird mit der Note 5 bewertet.
Jeder Teilnehmer der LV erhält eine Benutzerkennung und
ein Paßwort. Unter dieser Benutzerkennung kann er seine Übungsaufgaben
bearbeiten. Die Übungsräume stehen derzeit von 8.00 - 18.00 Uhr für
die Bearbeitung der Belegarbeiten zur Verfügung, sofern sie nicht durch
eine andere Veranstaltung belegt sind. Es steht ein Fileserver
zur Verfügung.
Alles, was im Rahmen der LV an Texten, Programmen und Daten anfällt, kann
auf dem privaten Nutzerbereich auf dem Fileserver im jeweiligen Teilnehmerverzeichnis
abgelegt werden. Bitte beachten Sie, daß Sie für Ihre auf dem Fileserver
abgelegten Daten selbst verantwortlich sind. Die Laboringenieure des Studiengangs
"Angewandte Informatik" führen zwar regelmäßige Backups durch
- dennoch kann nicht gewährleistet werden, daß bei Hardwareproblemen
die aktuellsten Dateien wieder hergestellt werden können. Deshalb sollten
Sie selbst durch Kopien auf anderen Medien oder per Netzwerk für die Verfügbarkeit
Ihrer Daten sorgen! (Datenverlust als Ausrede für verspätete Abgabe
ist also ein denkbar ungeeignetes Argument.)
Jeder Student muß Übungsaufgaben als Belegarbeiten zur Benotung abgeben.
Die Belegarbeiten können in Gruppen von maximal zwei Studenten gemeinsam
bearbeitet und abgegeben werden. Die Belegarbeiten werden dem Dozenten persönlich
abgegeben, wobei eine Vorführung des jeweiligen Programmes an einem Laborrechner
im für die Lehrveranstaltung vorgesehenen Raum erfolgt. Wenn ein
Beleg von zwei Studenten gemeinsam fertiggestellt wurde, so müssen beide
bei der Abgabe in der Lage sein, alle Fragen des Dozenten zum Beleg zu beantworten
- also auch jeweils zum durch den anderen Studierenden bearbeiteten Teil!
Zum Testen der Belegarbeiten steht ein Rechner mit ssh-Zugang zur Verfügung: osx1.f4.fhtw-berlin.de . Er besitzt eine ähnliche Softwareausstattung wie die Macs im Labor.
| Autor | Titel | Bemerkung | Erscheinungsort | ISBN |
| Programmiersprache C | ||||
| House, R. | Beginning with C | Sehr zu empfehlendes Buch für Programmieranfänger. Nur englisch erschienen und wohl vergriffen ... | International Thompson Publishing, 1994 | 0-534-94122-2 |
| Kernighan, B.W., Ritchie, D.M. | Programmieren in C | Nachschlagewerk zu allen Feinheiten der Programmiersprache C von ihren Erfindern. Zum Erlernen des Programmierens und zum Erlernen von C völlig ungeeignet! | Carl Hanser Verlag, 1983 | 3-446-13878-1 |
| Programmiersprache C++ | ||||
| Breymann, U. | C++ - Eine Einführung | Eine gute, ausführliche Einführung in die Programmiersprache C++. | 3. Auflage; Carl Hanser Verlag, 1996 | 3-446-18498-8 |
| Stroustrup, B. | The C++ Programming Language | Ähnlich wie das Werk von Kernighan und Ritchie nichts zum Erlernen der Sprache ... | 2. Auflage; Addison-Wesley Publishing Company, 1991 | 0-201-53992-6 |
| Koenig, A., Moo, B.E. | Intensivkurs C++ — Schneller Einstieg über die Standardbibliothek | Eine gute Einführung in C++, aber durch die Verwendung der Standard Template Library (STL) von Beginn des Buches an anspruchvoller als das Buch von Breymann. | Pearson Studium, 2003 | 3-8273-7029-9 |
| Softwaretechnik | ||||
| Hering, Ekbert | Software-Engineering | 3. Auflage; Vieweg-Verlag, 1992 | 3-528-24284-1 | |
| Algorithmen und Datenstrukturen | ||||
| Horovitz, E., Sahni, S., Anderson-Freed, S. | Grundlagen von Datenstrukturen in C | Ein klassisches Buch über Datenstrukturen und Algorithmen, die hier in der Sprache C aufgeschrieben sind ... | International Thompson Publishing GmbH, 1994 | 3-929821-00-1 |
| Sedgewick, R. | Algorithmen in C++ | Inzwischen schon klassisches Buch zu Algorithmen und Datenstrukturen. Ausführlich und verständlich geschrieben. Hier werden die Algorithmen in C++ notiert — es gibt das Buch auch in Varianten für C und Java! | 3. überarbeitete Auflage, Pearson Studium, 2002 | 3-8273-7026-4 |