"Programmierung II" (Strukturiertes Programmieren II) (B2AI1) im Studiengang "Angewandte Informatik"

Wintersemester 2009/2010


Gliederung

Termine Aktuelle Informationen Termine und Materialien  
Übungen Übungsgruppen Belegarbeiten Benotung
Durchführung der Übungen und Belegarbeiten Durchführung der Klausur Literatur  

Termine

  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  


Aktuelle Informationen

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.


Vorlesungs- und Übungstermine, Folien

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.
Organisation der Übungsgruppen
Besprechung der Vorkenntnisse
Inhalte der Lehrveranstaltung

Zeigervariablen in C: Motivation, Definition von Zeigervariablen: Bezeichner, Typ und Wert; Verwendung, Beispiele.

6.10.2009

 

 

 

Themen

 

 

 

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

Binärer Baum

Dynamische Felder

Rekursion

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

KlassenUndObjekte

Klasse String

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

Datei-EA

Namensräume

Klassenmethoden

Parameterübergabe

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

Standardbibliotheken von C++

Klassische Normalform

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

Schlüssenlwort const

Output-Operator

6.1. Ü 2 siehe 23.12.    
12.1. V   Vererbung; Konstruktoren.

26.1.2010

26.1.2010

Vererbung

Konstruktoren

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

Boost

Objektorientiertes Paradigma

Unterschiede zwischen C++ und Java

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      

Übungen


Hier finden Sie die Übungsbeispiele für die Übungen.


Übungsgruppen

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)
Acksel, Robert   Büchner, Abel
Buchwaldt, Michael   Graichen, Andrea
de Cuveland, Joschka   Holz, Christian
Ebert, Christopher   Köhler, Felix
Felsche, Matthias   Kulpe, Tim
Fenner, Benjamin   Kultus, Dirk
Fiebelkorn, Jonathan   Langer, Lars
Frank, Tobias   Ludwig, Sebastian
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    

 


Belegarbeiten

Beachten Sie bitte bei der Erstellung Ihrer Programme die Programmierrichtlinien.


Benotung

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.

Achtung!

Eine erfolgreiche Teilnahme an der Lehrveranstaltung setzt voraus, daß beide Belegarbeiten bearbeitet und jede mit der Note 4 oder besser bewertet wird. Die Klausur muß ebenfalls mit der Note 4 oder besser bewertet sein.
Das heißt also, daß die Lehrveranstaltung vollständig wiederholt werden muß, wenn eine der Belegarbeiten nicht mit ausreichend beurteilt wurde bzw. wenn die Klausur und eventuell die Nachklausur schlechter als ausreichend ausgefallen ist.


Durchführung der Übungen und Belegarbeiten

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.


Durchführung der Klausur

In der Klausur sind keine Hilfsmittel zugelassen.


Literatur

Die Bücher, aus denen ich Teile für diese Veranstaltung verwende, sind - geordnet nach Wichtigkeit - die folgenden:

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

Weitere Bücher zur Einführung in die Programmierung und zur Programmiersprache C finden Sie in der Bibliothek der FHTW oder anderen Bibliotheken. Da die Menge der Bücher zum Programmieren in C und C++ unüberschaubar groß ist, verzichte ich hier auf eine Vorstellung.
Eine Übersicht über Bücher zu dem Thema der Lehranstaltung finden Sie auch bei Lehmann's Online-Bookshop oder in anderen Bücherläden.


Letzte Änderungen am 28.01.2010 --- Email: Horst dot Hansen at FHTW-Berlin.DE

<= Homepage von Horst Hansen <= Homepage des Servers