31.12.2013 Aufrufe

Übung: Algorithmen und Datenstrukturen

Übung: Algorithmen und Datenstrukturen

Übung: Algorithmen und Datenstrukturen

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!