Softwarepraktikum LEDA/C++ Lehrstuhl fuer Datenstrukturen und effiziente Algorithmen Prof. Naeher Dozent: Daniel Scmitt
Inhalte Grundlegende Elemente in C++ Einfuehrung in die LEDA Bibliothek (Library of Efficient Data Types and Algorithms) Implementierung einfacher Datenstrukturen und Typen. Implementierung geometrischer Algorithmen und Graphalgorithmen. Visualisierung
Voraussetzungen Informatik I Wir gehen davon aus das Sie: einen Editor benutzen koennen schon mal programmiert haben in Java also wissen was Klassen sind und die Syntax einer prozeduralen Programmiersprache gesehen haben Empfohlen aber nicht notwendig ist Informatik II: Datenstrukturen Sortieralgorithmen Graphalgorithmen
Organisation 2 Phasen: 1. Phase: Praktikum mit begleitenden Uebungen 2. Phase: Projekt Zulassung zum Projekt: min 50 % der Punkte aus den Uebungen hoechsten einmal 0 Punkte Scheinvergabe: Abgabe des Projekts mit Ausarbeitung (Webseite) Kurzvortrag (Beamer, Folien)
Organisation Anmeldung erfolgt schriftlich an einem der ersten beiden Termine Anwesenheitspflicht !! Abgabe der Uebungen per bis darauffolgenden Donnerstag 8:30 Wir bestehen auf Gruppenabgaben. Die Bewertung des Projekts erfolgt Gruppenweise Benotung ist optional
Termine – jeweils Donnerstags 8:30 Uebungen mit Anwesenheitspflicht Einteilung der Gruppen/Aufgaben fuer das Projekt Abgabe Code Abgabe Ausarbeitung Abgabe Vortrag Vortraege
Was ist C++ ? Features: Unterstuetzte Programmierparadigmen: Datenabstarktion, Objektorientierte Programmierung Prozedurale Programmierung Generische Programmierung Kompatibilitaet mit C Effizienz
Was ist C++ ? Historisches: Entwickelt von Bjarne Stroustrup (AT&T) 1980 erweiterte er C um ein Klassenkonzept zu ”C mit Klassen”, seit 1983 C durch starke Verbreitung Einberufung eines ANSI-Komitees zur Standardisierung von C erste Entwurf eines ISO C++-Standards 1998 Ratifizierung des Entwurfs
Warum C++ und nicht Java ? Die Hauptmerkmale von Java sind Portierbarkeit und Sicherheit, erst dann folgt Effizienz. Die Laufzeit von C++ Programmen kann deutlich besser sein. Die Java Garbe Collection verbirgt oft das eigentliche Problem. C++ ermoeglicht maschinennahes Programmieren.
Was ist LEDA ? Leda ist eine C++ Klassenbibliothek fuer effiziente datenstrukturen und Algorithmen. LEDA implementiert Algorithmen zur Loesung von: Graph- and Netzwerkproblemen Geometrische Berrechnungen und weitere...
Online Referenzen C++: LEDA: Online-Reference: solutions.info/leda_manual/manual.html LEDA Tutorial: tutorial.org/en/unofficial/ LEDA Book: inf.mpg.de/~mehlhorn/LEDAbook.html
Ein erstes Programm Suchen in einem sortierten array Array sortieren Funktionsdeklaration Referenzen Rekursion
Kompilieren + Linken Kompilieren: g++ -I dirh -c filename.cpp dirh: Verzeichnis der header Dateien (/usr/local/LEDA-5.1/incl) erzeugt eine Objektdatei filename.o Linken: g++ -L dirl -o executable object.o -llib dirh: Verzeichnis der vorkompilierten Bibliotheken (/usr/local/LEDA-5.1) libraries: -lP -lG -lL (Reihenfolge beachten !!!) erzeugt eine ausfuehrbare Datei executable Kompilieren + Linken g++ -I dirh -L dirl -o executable filename.cpp -llib
Uebungsaufgaben Das erste Uebungsblatt ist online. Donnerstag , 8:30 per an: