ZEIT
VL Di 8:15 - 9:45, Raum: BCN 332
Übung1: Do 8:15 - 9:45, Raum: BCN 202
Übung2: Do 10:00 - 11:30, Raum: BCN 202
Beginn der Vorlesung: >>> Di 7.Okt 2003 <<<
Beginn der Übungen: >>> Do 9.Okt. 2003 <<<
Dieser Plan kann Änderungen unterliegen.
Letzte Änderung: 3.Mai 2004
KW |
THEORIE |
ÜBUNGEN |
41 |
Vorstellen des UML-Modellierungstools 'umbrello' sowie |
|
42 |
VL2: Vom Problem zum OO-Modell unter Verwendung der SW 'umbrello'; Theorie und Beispiel | |
43 |
Wegen akuter Grippe u. Erkältung keine Übungen am |
|
44 |
||
45 |
VL5: Lexikalische Analyse von Texten mit Hilfe des Werkzeuges 'flex' | |
46 |
VL6: Synatktische Analyse von Texten mit dem Werkzeug 'bison' | |
47 |
VL7: Die Kombination der Werkzeuge 'flex' und 'bison' und deren Interaktion mit einer C++-Klasse I | |
48 |
VL8: Die Kombination der Werkzeuge 'flex' und 'bison' und deren Interaktion mit einer C++-Klasse II | |
49 |
||
50 |
||
51 |
||
2 |
Einfache GUIs mit Qt I |
|
3 |
||
4 |
|
|
5 |
Tutorium |
Abgabe der Übung Nr.11 |
6 |
Klausur: Di, 10.Febr. 14:30, PC-Labore BCN 202+203, Ergebnisse |
|
19 |
|
Der bisherige Lehrplan umschreibt die Lehrinhalte für Programmieren 3 wie folgt:
Realisierung von umfangreichen Programmieraufgaben mit einer objektorientierten Programmiersprache. Themen im einzelnen:
Was ist objektorientiertes Programmieren?
Klassen
Vererbung und Polymorphismus
Schnittstellen
Ausnahmebehandlung
Dateien und Datenströme
Grafisch-interaktive Benutzeroberfläche (GUI)
Da diese Themen alle schon --wenn auch nur in ersten Grundlagen-- in der VL Programmieren 2 behandelt worden sind, kann es in der VL Programmieren 3 nur darum gehen, diese Themen zu vertiefen. Dabei werden folgende Akzente gesetzt:
Warum C++ und nicht Java?
Die beiden am meisten eingesetzten objektorientierten Sprachen dürften heute C++ und Java
sein. Da schon in Programmieren 1 die Sprache C und in Programieren 2 die Sprache C++
eingesetzt wurde, kann man zurecht die Frage stellen, warum dann nicht jetzt in
Programmieren 3 die Sprache Java. Auf diese Frage gibt es keine eindeutig 'gute' Antwort,
sondern nur ein Abwägen mehrerer Argumente und letztlich dann eine pragmatische Entscheidung.
Dass in diesem Fall für den Einsatz von C++ entschieden wurde liegt u.a. an den folgenden
Aspekten: in grossen Bereichen (speziell Automatisierung, Betriebssysteme, Grafik) ist C/C++
immer noch die alles dominierende Sprache; C++ ist so komplex, dass ein sinnvolles
Verständnis in einem Semester kaum vermittelt werden kann; die entscheidend
objektorientierten Eigenschaften können erst in einem zweiten Semester --eben Programmieren
3-- vermittelt werden; der Übergang von C++ zu Java ist für jemanden, der C++ verstanden
hat, vergleichsweise einfach, da Java --sieht man von den vielen Bibliotheken ab-- eine
quasi vereinfachte Version von C++ darstellt.
Objektorientierte Programmierprojekte
Die objektorientierten Eigenschaften von C++ sollen anhand von ausgewählten Programmierprojekten
weiter illustriert und geübt werden. Jedes Projekt ist ein in sich geschlossenes Modul; diese Module
werden aber so konzipiert, dass man sie später zu einem grösseren Projekt zusammenfassen kann. Um
dies bewältigen zu können, wird konsequent von verschiedenen Programmierwerkzeugen Gebrauch gemacht
werden. Zugleich werden die Übungen konsequent dazu benutzt werden, dass einzelne --oder kleine
Gruppen-- parallel zur Vorlesung Aufgaben selbständig lösen und dann vor der gesamten Gruppe
vorstellen können. Für gelöste Aufgaben wird es Leistungspunkte geben, die für die Klausurleistung
zählen.
Vernetzung mit anderen Lehrveranstaltungen
Parallel zur VL Programmieren 3 läuft die VL Theoretische Informatik. In dieser werden
schwerpunktmässig die Themen formale Sprachen und Automaten behandelt. Erfahrungsgemäss besteht in
dieser Vorlesung oft nicht genügend Zeit, diese Inhalte hinreichend praktisch umzusetzen. Die
Vorlesung Programmieren 3 bietet hier die Möglichkeit, anhand der Themen 'Parsen von Texten'
(Teilthema von formale Sprachen) sowie 'Simulation von Automaten' diese theoretischen Inhalte
praktisch zu vertiefen. Ferner wird das Thema 'Graphen und Bäume als Datenstrukturen' aus der
Vorlesung Algorithmen und Datenstrukturen wieder aufgegriffen und anhand konkreter Beispiele
vertieft; so werden die Inhalte geparster Texte in Baumstrukturen abgelegt, die zur simulation von
Prozessen benutzt werden.
Grafische Benutzeroberfläche
Das Thema 'grafische Benutzeroberflächen' ist Neuland und hat keine Entsprechung
in anderen Lehrveranstaltungen. Ziel ist es, eine erste einfache GUI für die Programme zu
bauen, die im Kurs entwickelt worden sind.
(Noch vorläufig)
ISO/IEC 2382: Information Technology - Vocabulary
ISO/IEC 14882 First edition 1998-09-0: Programming languages C++ Langages de programmation C++
Peter A.DARNELL/ Philip E.MARGOLIS [1988], "Software Engineering in C", Springer Verlag, New York
John R.ELLIS [1994], "Objectifying Real-Time Systems", SIGS Books, New York
Helmut HEROLD [1992], "lex und yacc. Lexikalische und syntaktische Analyse", Addison-Wesley Publishing Company, Bonn - München - Paris et al
Helmut HEROLD/ Jörg ARNDT [2002], "C-Programmierung unter Linux", SuSE Press, Nürnberg
Nicolai M. JOSUTTIS [2001, 2nd ed.], "Objektorientiertes Programmieren in C++. Ein Tutorial für Ein- und Umsteiger", Addison-Wesley, München - Boston - San Francisco et. al
Nicolai M. JOSUTTIS [1999], "The C++ Standard Library. A Tutorial and Rference", Addison-Wesley, München - Boston - San Francisco et. al
Danny Kalev [1999], "The ANSI/ISO C++ Professional Programmer's Handbook", Que Corporation, Indianapolis (Indiana)
Craig LARMAN [2001], "Applying UML and Patterns ", Prentice Hall PTR Indianapolis (Indiana)
Stanley B.LIPPMANN [1996],"Inside the C++ Object Model", Addison-Wesley, Reading (MA) et al.
James MARTIN/ James J.ODELL [1995], "Object Oriented Methods. A Foundation", PTR Prentice Hall, Englewood Cliffs (NJ); in Deutsch mit Aktualisierung: James MARTIN/ James J.ODELL [1999], "Objektorientierte Modellierung mit UML: Das Fundament", München - London et al.
Helmut Richter [2000], Online-Skript: Reguläre Sprachen, Leibniz-Rechenzentrum, München
Reinhard Völler [1999?], Online-Skript: Automaten und formale Sprachen, Hochschule für angewandte Wissenschaften, Hamburg.
OMG Unified Modeling Language Specification, Version 1.3, March 2000 (siehe: OMG Documents)
C/C++-Link: http://cplus.kompf.de/index.html
(Eine Auswahl)
(Es kommt ausschliesslich 'freie' Software zum Einsatz)
Name |
Kurzbeschreibung |
---|---|
SuSe 7.2/ 7.3 / 8.0/ 8.1/ 8.2 SuSe Linux Distribution |
Freie Version des Betriebssystems GNU-Linux |
Freies Werkzeug zur Modellierung in UML mit einfacher Quellkodererzeugung |
|
GNU xemacs |
Einer von vielen Editoren |
GNU g++ Vers. 3.3 |
C/C++-Compiler |
GNU make/ autoconf/ configure |
Tools zum Verwalten von Dateien eines SW-Projektes |
Werkzeug zum Erstellen von Make-Files; Bestandteil von Qt |
|
Grafisches Frontend von Qt-Designer zum Erstellen von GUIs mit Qt |
|
GNU gdb ab Vers. 5.0 |
Tool zum Debuggen von Objekt-Code |
Freie Werkzeuge zur Compiler-Konstruktion |
|
XFree86 ab Version 3.3.5 |
Freies X-Wondow-System mit Unterstützung von Hardwarebeschleunigung im Fenster |
cpp2html |
c++/Java-zu-HTML-Konverter |
quanta |
HTML-Editor |
GNU gimp |
GNU Image Manipulation Program, zum Editieren und Umformatieren von 2D-Bildern |
Für solche, die den Übergang zu Linux aus irgendwelchen Gründen nicht schaffen, aber dennoch mit einem freien Compilerarbeiten wollen, hier ein Hinweise auf einen guten freien Compiler unter Windows. | |
Gute Übersicht über freie Compiler und Compiler-Werkzeuge |
Für die Prüfungsleistung werden Noten von 1-5 vergeben:
NOTE |
PUNKTE |
---|---|
1 |
>69 |
2 |
55-69 |
3 |
40-54 |
4 |
25-39 |
5 |
<25 |
Grundsätzlich gilt, dass Leistungspunkte in der Klausur erworben werden. Diese wird am Rechner stattfinden. Man wird eine einfache Aufgabe mit den in der Vorlesung vorgestellten Methoden und Werkzeugen exemplarisch bearbeiten müssen. Zusätzlich kommt den Übungen eine zentrale Rolle zu. Leistungspunkte aus den Übungen werden für die Klausur angerechnet. Dabei gilt die Formel (im scilab-format)
function [resultat]=endnote(klausur,labor) if klausur >= labor-3 then, resultat=klausur + labor else resultat = klausur + (labor/log(labor - klausur)) end [resultat]=return(resultat) endfunction
Für Übungen gelten die folgenden Regeln:
Sie sind innerhalb der vorgegebenen Fristen abzugeben, sonst zählen sie nicht.
Jeder muss seine Lösung vor der Gruppe persönlich vorstellen und begründen.
Gruppenarbeit ist möglich,muss aber so ausgelegt sein, dass die Eigenanteile der Teammitglieder klar fassbar sind.
Pro Übung kan es im Schnitt bis zu 3.5 Leistungspunkte geben.
Die offizielle Übungszeit wird vorwiegend dazu genutzt, Ergebnisse vorzustellen und zu überprüfen.