Übung: Algorithmen und Datenstrukturen
Übung: Algorithmen und Datenstrukturen
Übung: Algorithmen und Datenstrukturen
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
<strong>Übung</strong>: <strong>Algorithmen</strong> <strong>und</strong> <strong>Datenstrukturen</strong><br />
Einführung<br />
Hanno Sternberg, Christian Uhlig, Helga Karafiat<br />
WINTERSEMESTER 2013 / 2014
Übersicht<br />
• Beteiligte<br />
• Ablauf <strong>und</strong> Termine<br />
• Regularien<br />
• Abgaben / Semesterziel<br />
• Aufgaben<br />
• Code-Abnahmen / Test<br />
• Verhalten / Unterstützung<br />
• Dokumentation<br />
• Werkzeuge<br />
• Compiler / make<br />
• SVN<br />
• Test<br />
C-<strong>Übung</strong>, Wintersemester 2013 / 2014 2
Beteiligte<br />
• <strong>Übung</strong>sleitung<br />
• Hanno Sternberg:<br />
• Christian Uhlig:<br />
• Helga Karafiat:<br />
• Studentische Abnehmer:<br />
• Christian Kulpa<br />
~stg<br />
Raum N15<br />
~uhl<br />
Raum N15<br />
~kar<br />
Raum N17<br />
C-<strong>Übung</strong>, Wintersemester 2013 / 2014 3
Ablauf <strong>und</strong> Termine<br />
• Umfang:<br />
7 Aufgaben<br />
• Einführung: Montags, 12:30 Hörsaal 5<br />
• Bearbeitungszeit: min. 1 Woche, in dieser Zeit ist die Aufgabe zu<br />
lösen <strong>und</strong> zu testen.<br />
• Servertest:<br />
Einmal pro St<strong>und</strong>e, Ausgabe des<br />
prozentualen Anteils der bestandenen Tests.<br />
• Automatischer Test: Montags, 14:00 Uhr für alle Gruppen.<br />
Fehlgeschlagene Tests sind im Protokoll<br />
einzusehen.<br />
• Abnahme:<br />
Besprechung des Ergebnisses / Codes<br />
ggf. Durchführung von Nachbesserungen<br />
• Ziel (FH):<br />
80% Erfolgsquote im Test<br />
• Ziel (PTL):<br />
Benotung anhand Notenskala<br />
C-<strong>Übung</strong>, Wintersemester 2013 / 2014 4
Ablauf <strong>und</strong> Termine<br />
• Aufgabe 1<br />
4 Punkte<br />
• Vorstellung: 28.10.2013<br />
• Abnahmetest: 04.11.2013<br />
• Aufgabe 2<br />
10 Punkte<br />
• Vorstellung: 04.11.2013<br />
• Abnahmetest: 11.11.2013<br />
• Aufgabe 3<br />
14 Punkte<br />
• Vorstellung: 11.11.2013<br />
• Abnahmetest: 18.11.2013<br />
• Aufgabe 4<br />
12 Punkte<br />
• Vorstellung: 18.11.2013<br />
• Abnahmetest: 25.11.2013<br />
C-<strong>Übung</strong>, Wintersemester 2013 / 2014 5
Ablauf <strong>und</strong> Termine<br />
• Aufgabe 5<br />
18 Punkte<br />
• Vorstellung: 28.10.2013<br />
• Abnahmetest: 04.11.2013<br />
• Aufgabe 6<br />
18 Punkte<br />
• Vorstellung: 09.12.2013<br />
• Abnahmetest: 06.01.2014<br />
• Aufgabe 7<br />
24 Punkte<br />
• Vorstellung: 06.01.2014 (16.12.2013)<br />
• Abnahmetest: 20.01.2014<br />
http://fh-wedel.de/~stg/c/termine.html<br />
C-<strong>Übung</strong>, Wintersemester 2013 / 2014 6
Aufgaben<br />
• Inhalte<br />
• Konzentration auf <strong>Algorithmen</strong> <strong>und</strong> <strong>Datenstrukturen</strong><br />
• Keine GUIs, eher PS1 als PS2<br />
• Natürlich auch etwas I/O, z.B. File-I/O (zusätzlich zur Vorlesung)<br />
• Bei erheblichen Abweichungen von der Vorlesung (Inhalte, die weder in<br />
Vorlesung noch <strong>Übung</strong> erläutert werden) bitte entsprechender Hinweis<br />
• Veröffentlichung<br />
• Auf der Webseite C-<strong>Übung</strong> → Aufgaben → Aufgabe x<br />
http://www.fh-wedel.de/~stg/c/aufgaben.html<br />
• Abhängigkeiten: Aufgabe 3 <strong>und</strong> 5 (Implementierung)<br />
Aufgaben 3, 5 <strong>und</strong> 7<br />
(Thema)<br />
C-<strong>Übung</strong>, Wintersemester 2013 / 2014 7
Code-Abnahme<br />
• In der Regel nur in der Veranstaltung, für die man angemeldet ist<br />
• Die Montags um 14:00 Uhr im SVN eingecheckte <strong>und</strong> vom Testserver<br />
geprüfte Lösung wird betrachtet<br />
• Von uns bestimmte, wechselnde Abnahmereihenfolge <strong>und</strong> Zuordnung<br />
von Abnehmern zu Gruppen in den Veranstaltungen<br />
• Abgabe erfolgt an den Computern in der ersten Reihe des<br />
Rechenzentrums (Die komplette erste Reihe bitte frei halten!)<br />
C-<strong>Übung</strong>, Wintersemester 2013 / 2014 8
Code-Abnahme<br />
• Anforderungen für die erfolgreiche Abgabe einer Lösung:<br />
1. Anwesenheit<br />
• Gruppenmitglieder im Rechenzentrum (zu Beginn des Termins)<br />
• Ausnahmen sind im Vorwege mit uns zu vereinbaren, krankheitsbedingte Ausfälle<br />
unmittelbar nach Genesung nachzuweisen<br />
• Lösung im SVN (Montags 14:00 Uhr); liegt für eine Aufgabe keine Lösung vor, wird diese<br />
mit 0% bewertet. Eine Teilnahme an der Code-Abnahme ist in diesem Fall natürlich nicht<br />
mehr erforderlich.<br />
2. Erläuterung<br />
• Beide Gruppenmitglieder müssen Programm erklären können<br />
• Tipps <strong>und</strong> Verbesserungsvorschläge vom Abnehmer<br />
3. Codequalität<br />
• Gegebenenfalls Durchführung von geforderten Code-Nachbesserungen<br />
• Abgabe via SVN zu einem vereinbarten Termin<br />
C-<strong>Übung</strong>, Wintersemester 2013 / 2014 9
Der Test<br />
• Ablauf (automatisiert):<br />
1. SVN ausschecken<br />
2. Kompilieren (mit –ansi –pedantic –Wall –Wextra –Werror)<br />
3. Ausführung des Tests (Abbruch nach 3 Timeouts)<br />
• Testfälle werden nicht bekannt gegeben.<br />
• Ausgaben:<br />
Erfolgsquote <strong>und</strong> ggf. Anzahl an Schutzverletzungen,<br />
Zusicherungen <strong>und</strong> mutmaßlichen Endlosschleifen<br />
• Test kann einmal pro St<strong>und</strong>e ausgeführt werden.<br />
You must<br />
really, really<br />
love to test!<br />
• Reklamationen sind kurzfristig nach dem Test anzusprechen<br />
(nicht während der Abnahmen)<br />
https://abnahme.fh-wedel.de/fhw<br />
C-<strong>Übung</strong>, Wintersemester 2013 / 2014 10
Verhalten<br />
In Ordnung<br />
• Gegenseitige Unterstützung (Newsgroup)<br />
• Rechtzeitige Kommunikation mit uns bei Problemen<br />
Nicht in Ordnung<br />
• Weitergabe von Programmcode (vollständig oder teilweise)<br />
Führt zum Ausschluss aller beteiligten Gruppen<br />
• Den Gruppenpartner die Arbeit machen lassen<br />
Führt ggf. zur Trennung der Gruppe oder zum Ausschluss eines Teilnehmers<br />
• Unentschuldigte Abwesenheit<br />
Führt zum Ausschluss<br />
• Uns die Arbeit machen lassen<br />
• Kurzfristigkeit / mangelnde Kommunikation<br />
C-<strong>Übung</strong>, Wintersemester 2013 / 2014 11
Unterstützung<br />
• Zeit für Fragen <strong>und</strong> Hilfestellungen<br />
1. Während der Vorstellung der Aufgaben im Hörsaal<br />
2. In der Newsgroup (fhw.c)<br />
3. Während früherer Abgabetermine im RZ<br />
4. Zu anderen Zeiten im Büro<br />
5. In Ausnahmefällen auch per E-Mail<br />
• Anforderungen<br />
• Präzise Fragestellung<br />
• Bei Problemen:<br />
Erläuterung der eigenen (bis dato erfolglosen) Lösungssuche<br />
• Funktionsdokumentationen / -referenzen<br />
http://www.fh-wedel.de/~stg/hinweise/referenz.html<br />
C-<strong>Übung</strong>, Wintersemester 2013 / 2014 12
Newsgroup (fhw.c)<br />
• Administrative Hinweise<br />
(z.B. Terminverschiebungen)<br />
• Inhaltliche Hinweise<br />
(z.B. Ergänzung oder Korrektur der Aufgabenstellung)<br />
• Diskussionen der <strong>Übung</strong>steilnehmer untereinander, evtl. Austausch<br />
von Links zu eigenen Tests<br />
• Klärung von Fragen auch durch uns<br />
• Regelmäßiges Lesen (einmal täglich) ist Pflicht:<br />
Wir gehen von der Kenntnisnahme aller relevanten Inhalte aus!<br />
C-<strong>Übung</strong>, Wintersemester 2013 / 2014 13
Dokumentation<br />
• Ist Pflicht<br />
• Besteht aus:<br />
• Modulköpfen<br />
• Funktionsköpfen<br />
• Inline-Dokumentation (insbesondere Beschreibung der <strong>Algorithmen</strong>)<br />
• Format: Doxygen (ähnlich Javadoc)<br />
• Semantische Auszeichnungen zur automatischen Erzeugung z.B. einer HTML-<br />
Dokumentation<br />
• Orientierung an Beispielen auf der Webseite<br />
• (C-<strong>Übung</strong> -> Richtlinien -> Sonstiges)<br />
C-<strong>Übung</strong>, Wintersemester 2013 / 2014 14
Entwicklung<br />
• Nach ANSI-C Standard<br />
Wird von vielen Compilern auf<br />
unterschiedlichen Plattformen unterstützt<br />
• Compiler: GCC (GNU Compiler Collection)<br />
Infos zur Nutzung <strong>und</strong> Installation unter:<br />
http://www.fh-wedel.de/~stg/hinweise/compiler.html<br />
• Betriebssysteme:<br />
Linux oder Windows mit Cygwin<br />
• Makefile:<br />
wird jeweils vorgegeben<br />
C-<strong>Übung</strong>, Wintersemester 2013 / 2014 15
Versionskontrolle: SVN<br />
• Bekannt aus PS2 / Unix<br />
• Jede Gruppe erhält ein Subversion-Repository<br />
• Wird während der Entwicklung zur Versionsverwaltung <strong>und</strong> zum<br />
gemeinsamen Arbeiten genutzt<br />
• Wird von den automatisierten Tests zum Abrufen der Lösungen genutzt<br />
• Dient auch der Datensicherung<br />
• Die Benutzung ist Pflicht!<br />
C-<strong>Übung</strong>, Wintersemester 2013 / 2014 16
Beispiel: HelloWorld.c<br />
• Anlegen einer Quelldatei (HelloWorld.c)<br />
/**<br />
* Dieses Beispielprogramm schreibt „Hello World“<br />
* auf die Standardausgabe.<br />
*/<br />
/* Standard Ein-/Ausgabe-Bibliothek laden */<br />
#include <br />
/** Einstiegsfunktion definieren.<br />
* @param argc Anzahl der Parameter<br />
* @param argv Feld mit übergebenen Parametern<br />
*/<br />
int main(int argc, char * argv[]) {<br />
printf("Hallo Welt!\n");/* Text ausgeben */<br />
return 0; /* Programm mit Fehlercode 0 (kein Fehler) beenden */<br />
}<br />
C-<strong>Übung</strong>, Wintersemester 2013 / 2014 17
• Übersetzen<br />
• gcc<br />
HelloWorld.c kompilieren<br />
-ansi<br />
(Sprachstand ISO C89/90)<br />
-pedantic<br />
(Warnungen bei Verstoß gegen ISO C89/90)<br />
-Wall<br />
(Warnungen bei fragwürdigen Code-Konstrukten)<br />
-Wextra<br />
(Warnungen bei weiteren fragwürdigen Code-Konstrukten)<br />
-Werror<br />
(Warnungen als Fehler behandeln)<br />
-o HelloWorld (Name des ausführbaren Programms)<br />
HelloWorld.c (Quelldatei)<br />
• Ausführen:<br />
• Ausgabe:<br />
./HelloWorld<br />
Hallo Welt<br />
C-<strong>Übung</strong>, Wintersemester 2013 / 2014 18