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

Sommersemester 2009


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:

mittwochs 12:00 - 13:30 Uhr (3.E)

dienstags 13:45 - 17:00 Uhr (4. und 5.E) im wöchentlichen Wechsel
Ort: Raum HG 125 Raum VG 218
Lehrkraft: H. Hansen  


Aktuelle Informationen

14.7.2009
Leider werde ich am Mittwoch die Klausuren noch nicht korrigiert haben!

3.6.2009
Hier finden Sie jetzt die 2. Belegaufgabe! Viel Erfolg!

5.5.2009
Leider habe ich die Abgabetermine für die erste Belegarbeit auf dem Blatt der Aufgabenstellung falsch angegeben! Es muß aufgrund der Wochenaufteilung (gerade Woche Gruppe 1, ungerade Woche Gruppe 2) natürlich heißen: Abgabe der Belegarbeit: Gruppe 2 am 19.5. und Gruppe 1 am 26.5. Entschuldigen Sie bitte die Verwechslung.

22.4.2009
Hier finden Sie jetzt die 1. Belegaufgabe zusammen mit einigen Testdaten.

24.3.2009
Die Lehrveranstaltung beginnt am 1.4.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
1.4. 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. Adressoperator &: referenzieren; Operator *: dereferenzieren

1.4.2009

 

 

 

Themen

 

 

 

7.4. Ü 2 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.    
8.4. V   Ziele der Programmiersprache C; Einführung von Zeigervariablen; Programmbeispiele für die Verwendung von Zeigervariablen; Wertzuweisungen unter Verwendung von Zeigervariablen. 22.4.2009

Ziele von C

Zeigervariablen

14.4. Ü 2 siehe 7.4.    
15.4. V  

Entwicklung einer generischen dynamischen Datenstruktur "einfach verkettete Liste"; Festlegung der Anforderungen an eine Implementierung einer solchen Datenstruktur; Komplexität von Listenoperationen; Verbesserung der Komplexität durch Implementierungstricks;

22.4.2009 Dynamische Datenstrukturen
21.4. Ü 2 Fortsetzung der Implementierung des generischen dynamischen Datentyps "Liste"; Einführung von Funktionsvariablen; Verwendung von Funktionsvariablen.    
22.4. V   Funktionsvariablen: Motivation, Verwendung; Benutzung von Funktionsvariablen in der Implementierung des generischen dynamischen Datentyps "Liste"; Andere dynamische Datentypen: Binäre Bäume. 22.4.2009 Funktionsvariablen
28.4. Ü 1 siehe 21.4.    
29.4. V   Binäre Bäume (Fortsetzung); Rekursive Funktionen auf binären Bäumen; Prinzipien für die Implementierung von Bibliotheken: Das Prinzip der "Verantwortung"; Vergleich der Implementierung der einfach verketteten Liste und des binären Baumes in Hinblick auf Verantwortung für den Speicher der Inhalte der dynamischen Datenstrukturen.    
5.5. Ü 2 Beispiel für die Anwendung von Funktionsvariablen; Sortierung von einfach verketteten Listen; rekursive Funktionen auf binären Bäumen; Verwendung von "make" zur Organisation von Programmierprojekten.    
6.5. V   Projektorganisation mit make und ant. Dynamische mehrdimensionale Felder.

11.5.2009

11.5.2009

Projektorganisation

Dynamische Felder

12.5. Ü 1 siehe 5.5.    
13.5. V   Einführung in die Objektorientierung: Klassen als rechnerverarbeitbare Beschreibung von Konzepten aus der Umgangssprache, Objekte als "Exemplare", "Instanzen", die entsprechend dieser Beschreibung "hergestellt" werden. 10.6.2009 Klassen und Objekte
19.5. Ü 2 Abgabe der 1. Belegarbeit    
20.5. V   Erläuterung von Klassen und Objekten anhand des Beispiels "Komplexe Zahlen"; Erklärung von "call by reference" in C++ anhand des Beispiels der Klasse "Komplexe Zahlen"    
26.5. Ü 1 Abgabe der 1. Belegarbeit
27.5. V   Anlegen von Objekten auf dem Stack und auf dem Heap: Betrachtung möglicher Probleme    
2.6. Ü 2 Implementieren der Klasse "Complex": Headerdatei mit der Klassendeklaration "Complex.hpp", Implementierung der Methoden in "Complex.cpp"; Schreiben einer separaten Testanwendung; Verwendung von Naumensräumen. Überführung des generischen strukturierten Datentyps Liste in eine objektorientierte Implementierung.    
3.6. V   Klasse "string" aus der Standardbibliothek von C++; Namensraum in C++: Motivation, Verwendung; Namensraum der C-Standardbibliotheken bei Verwendung in C++; Klassenmethoden und Klassenvariablen: Sie gehören nicht in objektorientierte Programme!

10.6.2009

10.6.2009

10.6.2009

Klasse "string"

Namensraum

Klassenmethoden

9.6. Ü 1 siehe 2.6.  
10.6. V   Arten der Parameterübergabe in C++; Felder; Dateiein- und Ausgabe von C++.

10.6.2009

10.6.2009

10.6.2009

Parameterübergabe

Felder

EA von C++

16.6. Ü 2 Restrukturieren der Klasse Liste für C++; Notwendigkeit von get- und set-Methoden; Reimplementierung von Algorithmen in C++.    
17.6. V   Standardbibliotheken von C++; "Klassische Normalform" von Klassen in C: Motivation, Realisierung.

30.6.2009

30.6.2009

Standardbibliotheken von C++

Klassische Normalform

23.6. Ü 1 siehe 16.6.    
24.6. V   Verbesserung von C++-Programmen durch intensive Verwendung des Schlüsselworts "const": Bedeutung von "const" an verschiedenen Stellen in OOP; Vererbung: Motivation, Verwendung anhand von Beispielen.

30.6.2009

30.6.2009

Schlüsselwort "const"

Vererbung

30.6. Ü 2 Abgabe der 2. Belegarbeit    
1.7. V   Vererbung (Fortsetzung): "virtuelle" Methoden. Einführung in die STL. 30.6.2009 STL-Einführung
7.7. Ü 1 Abgabe der 2. Belegarbeit    
8.7. V   bestätigter Klausurtermin    
14.7. Ü 2      
15.7. V   Nachbesprechung der Lehrveranstaltung    

Ü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 1.10. (gerade Wochen)


Übungsgruppe 2
Beginn am 8.10. (ungerade Wochen)
Berschneider, Marcel   Acksel, Robert
Brauner, Roman   Becker, Daniel
Buhrtz, Tom   Bortfeld, Laurence
Hartmann, Jonas   Brandt, Sebastian
Heinz, Alexander   Brysch, Maurice
Horn, Peter   Busch, Alexander
Kinsky, Michael   Ellmer, Daniel
Kulpe, Tim   Hinrichsen, Eric
Langer, Lars   Kappe, Leonard
10  Liedle, Waldemar   Karsten, Marcel
11  Müller, Johannes   Knutti, Dennis
12  Podkowik, Christoph   Konitzer, Wojciech
13  Przybilla, Stefan   Lindner, Marco
14  Rekowski, Dario   Liu, Xuelin
15  Rötz, Patrick   Mertinat, Mariano
16  Schackow, Andy   Müller, Tim
17  Schlitter, Jan   Neidt, Enrico
18  Schröder, Pascal   Nestler, Mathias
19 Stellbrink, Leonard   Paasch, Marcel
20 Thomas, Martin   Rommel, Martin
21 Warnt, Danny   Rüschenberg, Stefan
22 Wilhelm, Alena   Schäfer, Sebastian
23 Wilhelm, Meike   Sprick, Christian
24     Weber, Jens
25     Werner, Kevin
26     Zgircibaba, Alexei

 


Belegarbeiten

3.6.2009
Hier finden Sie jetzt die 2. Belegaufgabe! Viel Erfolg!

22.4.2009
Hier finden Sie jetzt die 1. Belegaufgabe zusammen mit einigen Testdaten.

Beachten Sie bitte bei der Erstellung Ihrer Programme die Programmierrichtlinien.


Benotung

Mit seiner Eintragung in die Belegliste der Lehrveranstaltung akzeptiert jeder Student 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,0. 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 Testdaten sind Testdaten, d.h. das Programm muß natürlich nicht nur für diese Daten korrekte Ergebnisse liefern!!!

Die verspätete Abgabe einer Belegarbeit führt (je nach Verspätung) 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.) Eine Verspätungswoche beginnt am auf die vorgesehene Abgabe folgenden Tag! Verspätungen um mehr als einen Übungstermin gibt es außer bei Krankheit nicht! Der Beleg ist dann nicht bestanden.

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 im Verwaltungsgebäude (Räume VG 212, VG 207, VG 218 und VG 225) 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 stehen ein Fileserver und ein Druckservice 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, 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 14.07.2009 --- Email: Horst dot Hansen at FHTW-Berlin.DE

<= Homepage von Horst Hansen <= Homepage des Servers