7. Übung zu Algorithmen und Datenstrukturen



Ähnliche Dokumente
Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 14/15. Kapitel 11. Fehler und Ausnahmen 1

Javakurs zu Informatik I. Henning Heitkötter

Große Übung Praktische Informatik 1

Beispiel: Methode mit einem Fehler. Diese Methode wird problematisch, wenn von außen eine Dauer von 0 Sekunden angegeben wird, etwa im Aufruf

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Gliederung Grundlagen Schlüsselworte try-catch Fehlerobjekte Fehlerklassen Schlüsselwort finally Schlüsselwort throws selbst erstellte Exceptions

Exceptions. Prof. Dr. Margarita Esponda SS M. Esponda-Argüero

5.13 Umgang mit Fehlern

Programmierung in C. Grundlagen. Stefan Kallerhoff

Java: Vererbung. Teil 3: super()

Erfahrungen mit Hartz IV- Empfängern

Menü auf zwei Module verteilt (Joomla 3.4.0)

ANLEITUNG - WIE UNTERSTÜTZE ICH AUF STARTNEXT?

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:

Abwesenheitsnotiz im Exchange Server 2010

Scala kann auch faul sein

Typdeklarationen. Es gibt in Haskell bereits primitive Typen:

Zählen von Objekten einer bestimmten Klasse

CodeSaver. Vorwort. Seite 1 von 6

Einführung in die Programmierung

Professionelle Seminare im Bereich MS-Office

Operationalisierbare Qualitätskriterien für die Programmierung mit Erfahrungen aus PRÜ1 und PRÜ2

Einführung in die Java- Programmierung

Wir machen neue Politik für Baden-Württemberg

Primzahlen und RSA-Verschlüsselung

Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!.

Lineare Gleichungssysteme

Übungsaufgaben Tilgungsrechnung

Enigmail Konfiguration

Monatstreff für Menschen ab 50 Temporäre Dateien / Browserverlauf löschen / Cookies

Einführung in die Programmierung

Einführung in die Programmierung Blockkurs Java

W-Rechnung und Statistik für Ingenieure Übung 11

Informationen zum neuen Studmail häufige Fragen

Grundlagen der höheren Mathematik Einige Hinweise zum Lösen von Gleichungen

Anwendungsbeispiele Buchhaltung

7 Rechnen mit Polynomen

Downloadfehler in DEHSt-VPSMail. Workaround zum Umgang mit einem Downloadfehler

Diana Lange. Generative Gestaltung Operatoren

Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2015/16. Vorbereitende Aufgaben

9. Fehlerbehandlung Advanced Programming Techniques. Wintersemester 2009 / 2010 Prof. Dr. Bernhard Humm Hochschule Darmstadt, FB Informatik

Schrittweise Anleitung zur Erstellung einer Angebotseite 1. In Ihrem Dashboard klicken Sie auf Neu anlegen, um eine neue Seite zu erstellen.

Anleitung zur Erstellung von Serienbriefen (Word 2003) unter Berücksichtigung von Titeln (wie Dr., Dr. med. usw.)

Statuten in leichter Sprache

Was meinen die Leute eigentlich mit: Grexit?

Deutsches Rotes Kreuz. Kopfschmerztagebuch von:

Grundlagen der Theoretischen Informatik, SoSe 2008

VibonoCoaching Brief -No. 18

Gezielt über Folien hinweg springen

L10N-Manager 3. Netzwerktreffen der Hochschulübersetzer/i nnen Mannheim 10. Mai 2016

Objektorientierte Programmierung. Kapitel 0: Begrüssung

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

Wenn man nach Beendigung der WINDOWS-SICHERUNG folgendes angezeigt bekommt

Objektorientierte Programmierung

Outlook-Daten komplett sichern

In vergleichsbasierten Suchbäumen wird nicht in Schlüssel hineingeschaut.

Angebot. UVV-Prüfungen und Wartungen von mobilen Abfallpressen

Fotogalerie mit PWGallery in Joomla (3.4.0) erstellen

Simulation LIF5000. Abbildung 1

sondern alle Werte gleich behandelt. Wir dürfen aber nicht vergessen, dass Ergebnisse, je länger sie in der Vergangenheit

JackCRS Reiseversicherung

Anspruchsvolle Dreierausdrücke zum selbstständigen Lernen

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

1 Vom Problem zum Programm

Wir arbeiten mit Zufallszahlen

Informationsblatt Induktionsbeweis

Angebot. UVV-Prüfungen und Wartungen von mobilen Abfallpressen

FRAGEBOGEN ANWENDUNG DES ECOPROWINE SELBSTBEWERTUNG-TOOLS

Vermeiden Sie es sich bei einer deutlich erfahreneren Person "dranzuhängen", Sie sind persönlich verantwortlich für Ihren Lernerfolg.

Suchmaschinen. Universität Augsburg, Institut für Informatik SS 2014 Prof. Dr. W. Kießling 23. Mai 2014 Dr. M. Endres, F. Wenzel Lösungsblatt 6

Kapitel 5: Dynamisches Programmieren Gliederung

OECD Programme for International Student Assessment PISA Lösungen der Beispielaufgaben aus dem Mathematiktest. Deutschland

Advoware mit VPN Zugriff lokaler Server / PC auf externe Datenbank

Media Teil III. Begriffe, Definitionen, Übungen

Auswertung des Jahresabschlusses Bilanzanalyse 2

ACDSee 10. ACDSee 10: Fotos gruppieren und schneller durchsuchen. Was ist Gruppieren? Fotos gruppieren. Das Inhaltsverzeichnis zum Gruppieren nutzen

S/W mit PhotoLine. Inhaltsverzeichnis. PhotoLine

Erstellen von x-y-diagrammen in OpenOffice.calc

Programmierkurs Java

NoClick. Eine kurze Anleitung. Kommhelp e.v Vereinsregister. Spendenkonto kommhelp e. V. Konto Horstweg 25

Kreativ visualisieren

public class SternchenRechteckGefuellt {

Windows Server 2012 RC2 konfigurieren

Grundlagen der Programmierung Prof. H. Mössenböck. 14. Schrittweise Verfeinerung

Lehrer: Einschreibemethoden

Zinssicherung im B2B Markt April 2010

SCHRITT 1: Öffnen des Bildes und Auswahl der Option»Drucken«im Menü»Datei«...2. SCHRITT 2: Angeben des Papierformat im Dialog»Drucklayout«...

Institut für Programmierung und Reaktive Systeme 25. August Programmier-Labor Übungsblatt. int binarysearch(int[] a, int x),

Schnittgeschwindigkeitsberechnung in C#

Konzepte der Informatik

Der Gabelstapler: Wie? Was? Wer? Wo?

1. Weniger Steuern zahlen

5. Abstrakte Klassen. Beispiel (3) Abstrakte Klasse. Beispiel (2) Angenommen, wir wollen die folgende Klassenhierarchie implementieren:

Win-Digipet V 9.2 Premium Edition Wie bastele ich mir steuerbare Kontakte. Wie bastele ich mir steuerbare Kontakte? -Quick-And-Dirty-Lösung-

Erfolg beginnt im Kopf

Java-Programmierung mit NetBeans

Überblick. Lineares Suchen

Programmierung 2. Übersetzer: Code-Erzeugung. Sebastian Hack. Klaas Boesche. Sommersemester

Erweiterung AE WWS Lite Win: AES Security Verschlüsselung

teamsync Kurzanleitung

Transkript:

7. Übung zu Algorithmen und Datenstrukturen Dynamisches Programmieren Greedy Algorithms Exceptions 1

Dynamische Programmierung nutzt gezielt aus, dass man bei manchen Problemen den Rechenaufwand extrem veringern kann, indem man Zwischenergebnisse zwischenspeichert. 2

fib(10) fib(9) fib(8) fib(8) fib(7) *snip* *snip* fib(7) fib(6) *snip*... 3

Pseudocode: Funktion fib(zahl n) Falls n < 2, gebe n zurück. Berechne a = fib(n-1) Berechne b = fib(n-2) Gebe (a + b) zurück. 4

Pseudocode mit dynamischer Programmierung: Funktion fib(zahl n) Falls n < 2, gebe n zurück. Überprüfe, ob fib(n) schon einmal berechnet wurde. Wenn ja: Gebe das zwischengespeicherte Ergebnis zurück. Wenn nicht: Berechne a = fib(n-1) Berechne b = fib(n-2) Speichere (a+b) als Zwischenergebnis von fib(n) Gebe (a + b) zurück. 5

In Java: int fib(int n) { if(n < 2) return n; return fib(n-1) + fib(n-2); 6

In Java mit dynamischer Programmierung: Wir erkaufen uns Geschwindigkeit durch zusätzlichen Speicher. int[] cache = new int[1000]; int fib(int n) { if(n < 2) return n; else if(cache[n] > 0) return cache[n]; else { int x = fib(n-1) + fib(n-2); cache[n] = x; return x; 7

In Java mit dynamischer Programmierung: Aber: Neuer Ausnahmefall! Funktioniert nurnoch für n < 1000. int[] cache = new int[1000]; int fib(int n) { if(n >= 1000) throw new Exception("n >= 1000 not supported!"); else if(n < 2) return n; else if(cache[n] > 0) return cache[n]; else { int x = fib(n-1) + fib(n-2); cache[n] = x; return x; 8

Greedy Algorithms Ein gieriger Algorithmus wählt schrittweise den nächsten auszuführenden Schritt aus, der in diesem Moment den größten Gewinn verspricht. Das alte Beispiel: Objekte mit verschiedenen Größen: 1 3 4 5 sollen in Rucksack mit limitierter Größe gepackt werden. Optimale Lösung sehr aufwändig, aber durch gierigen Algorithmus gut approximierbar. Beispiel siehe Tafel. 9

Exceptions & Errors Selbst wenn man ein Programm zu 100% richtig programmiert hat, kann es trotzdem Ausnahmesituationen geben. z.b: Festplatte voll Netzwerkverbindung zusammengebrochen Division durch 0 Katze legt sich auf die Tastatur 10

Exceptions & Errors In Java gibt es dafür Exceptions und Errors. Wenn diese Auftreten werden sie geworfen. throw new InterruptedException( Ich will nicht aufgeweckt werden!); Und dann wieder gefangen: Die Funktion wirft eine SQLException try { executesql(string datenbankanfrage); catch(databaseexception e) { System.out.println( Fehler in DB: + e.getmessage()); Der Exceptionhandler (try/catch) fängt die Exception. Wenn keine Exception aufgetreten ist wird der catch-block ignoriert. 11

Exceptions & Errors Checked Exceptions: String[] readdatabase() throws SQLException { // hier kann eine SQLException geworfen werden Unchecked Exceptions: int getlen(string s) { return s.length(); Wenn s==null ist wird eine NullPointerException geworfen. NullPointerException erbt von RuntimeException. Diese dürfen auch geworfen werden OHNE throws-deklaration an der Methode. 12

Exceptions & Errors Throwable Exception Error RuntimeException InterruptedException VirtualMashineError StackOverflowError NullPointerException IndexOutOfBoundsException http://download.oracle.com/javase/1.4.2/docs/api/java/lang/throwable.html 13