Zusatzübung. Abgabetermin: Gruppe: G1 (Löberbauer) G2 (Prähofer) G3 (Prähofer)

Ähnliche Dokumente
Zusatzübung. Abgabetermin: Aufgabe Punkte gelöst abzugeben schriftlich abzugeben elektronisch. Java-Programm. Testfälle und Testausgabe

GI Vektoren

Übung Grundlagen der Programmierung WS 2008/09. Übung 04: Methoden. Abgabetermin: Prosabeschreibung Java-Programm.

Schriftlicher Test zu C (90 Minuten) VU Einführung ins Programmieren für TM. 1. Oktober 2012

Institut für Informatik und Angewandte Kognitionswissenschaften

Schriftliche Prüfung zur Computergestützten Mathematik zur Linearen Algebra (PO 2014: Erste Klausur / PO 2008: Klausur)

Institut für Programmierung und Reaktive Systeme 7. Mai Programmieren II. 11. Übungsblatt

Programmiertechnik 1 FOR-SCHLEIFEN

Programmierkurs Java

Übung 10: Dynamische Datenstrukturen und Rekursion

Programmierstarthilfe SS 2010 Fakultät für Ingenieurwissenschaften und Informatik 6. Blatt Für die Woche vom bis zum 4.6.

Programmiertechnik 1 FOR-SCHLEIFEN

Gruppe I (SS 2010) VU Einführung ins Programmieren für TM. 23. März 2010

Algorithmen, Datenstrukturen und Programmieren I WS 2001/2002

Übung Grundlagen der Programmierung. Übung 03: Schleifen. Testplan Testergebnisse

EPROG 2.Teilprüfung. Aufgabe 1:

Klausur Kompaktkurs Einführung in die Programmierung Dr. T. Weinzierl & M. Sedlacek 25. März 2011

R-Wörterbuch Ein Anfang... ein Klick auf einen Begriff führt, sofern vorhanden, zu dessen Erklärung.

Erste Java-Programme (Scopes und Rekursion)

Strings. Daten aus Dateien einlesen und in Dateien speichern.

9. Vektoren. (auch Felder/array)

Praktikum zur Vorlesung Einführung in die Programmierung WS 14/15 Blatt 3

Einführung in die Programmierung

Programmieren. Aufgabe 1 (Eine erste Datenstruktur)

Institut für Programmierung und Reaktive Systeme 10. Mai Programmieren II. 11. Übungsblatt

Klausur: Grundlagen der Informatik I, am 27. März 2009 Gruppe: F Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.

Aufgabe 16. Aufgabe 17

Institut für Programmierung und Reaktive Systeme 24. April Programmieren II. 10. Übungsblatt

Programmierstarthilfe SS 2009 Fakultät für Ingenieurwissenschaften und Informatik 4. Blatt Für die Woche vom bis zum 22.5.

Dabei handelt es sich um eine Tabelle, in der die Zeilen- und Spaltenüberschriften die Knotenbezeichner sind.

Einstieg in die Informatik mit Java

Tutoraufgabe 1 (Zweierkomplement): Lösung: Programmierung WS16/17 Lösung - Übung 2

Übung 09: Vererbung und Dynamische Bindung

Schriftlicher Test zu C++ (90 Minuten) VU Einführung ins Programmieren für TM. 22. Juni 2012

Übung Datenstrukturen. Objektorientierung in C++

Institut für Programmierung und Reaktive Systeme 5. Dezember Programmieren I. 5. Übungsblatt

Übung Grundlagen der Programmierung. Übung 05: Arrays. Abgabetermin: xx.xx.xxxx. Java-Programm Testplan Testergebnisse

Grundlagen der Informatik

Programmierstarthilfe SS 2008 Fakultät für Ingenieurwissenschaften und Informatik 5. Blatt Für den 26. und

Übung Informatik I - Programmierung - Blatt 8

Informatik für Schüler, Foliensatz 2 Ausdrücke, Variablen, Datentypen, Ein- und Ausgabe

Einführung in die Programmierung. (K-)II/Wb17

Aufgabenblatt 1. Kompetenzstufe 1. Allgemeine Informationen zum Aufgabenblatt:

Programmieren, Wintersemester 13/14 Übungsleiter: Sebastian Ebers Aufgabenblatt 3

Aufgabenblatt 2 Suchen und Sortieren. Aufgabe 1: Vergleiche und Sortieren in Java

Übungsklausur Programmieren / Algorithmen und Datenstrukturen 2

Grundzüge der objektorientierten Programmierung

Grundlagen der Informatik

Einstieg in die Informatik mit Java

1 Berechnung von Summen (ca = 10 Punkte)

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

1. Die rekursive Datenstruktur Liste

Übungsblatt 2. Thema: Formale Sprachen & Grammatiken, Boolesche Logik, Zahlendarstellung, Java

In diesen Canvas können Punkte an gültigen Koordinaten gezeichnet werden.

Institut für Programmierung und Reaktive Systeme 6. Juli Programmieren II. Übungsklausur

Institut für Programmierung und Reaktive Systeme 7. Juli Programmieren II. Übungsklausur

Musterübung 09: Vererbung und Dynamische Bindung

2 Eine einfache Programmiersprache. Variablen. Operationen Zuweisung. Variablen

2 Eine einfache Programmiersprache

PROCESSING EINE ZUSAMMENFASSUNG. Created by Michael Kirsch & Beat Rossmy

Labor Software-Entwicklung 1

hue12 January 24, 2017

Prüfung A Informatik D-MATH/D-PHYS :15 14:55

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

Übungsblatt 9. Thema: Methoden-Dispatching, Datenstrukturen, Abstrakte Datentypen

Klausur: Informatik I am 06. Februar 2009 Gruppe: D Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.: Punkte:

C++ Notnagel. Ziel, Inhalt. Programmieren in C++

Übungen zu Programmieren 3 (C++) (4-1)

Schriftlicher Test (120 Minuten) VU Einführung ins Programmieren für TM. 23. Januar 2017

C++ Teil Schleifen. Man kann bestimme Anweisungen in einem Programm mehrfach ausführen lassen. Dazu gibt es in C++ verschiedene Schleifen.

Programmierkurs (Java) 30. Oktober 2017 Institut für Informatik ÜBUNGBLATT 02. Dieses Übungsblatt wird in der Woche des 06. November besprochen.

2 Eine einfache Programmiersprache

Übersicht Shell-Scripten

Einführung in die Programmierung für Computerlinguisten

Übung zur Vorlesung EidP (WS 2018/19) Blatt 4

Geometrische Algorithmen in der Ebene

2 Eine einfache Programmiersprache

SQL. SQL SELECT Anweisung SQL-SELECT SQL-SELECT

2 Eine einfache Programmiersprache

Programmierung für Mathematik HS10

Arrays. Theorieteil. Inhaltsverzeichnis. Begriffe. Programmieren mit Java Modul 3. 1 Modulübersicht 3

Verwenden Sie für jede Aufgabe die C++ IDE von Eclipse (pro Aufgabe ein Projekt).

Grundlagen der Informatik

Übungsblatt Programmierung und Software-Entwicklung Generizität, Interfaces, Listen, Sortieralgorithmen & JUnit

Schleifen. JOHANNES KEPLER UNIVERSITY LINZ Research and teaching network Softwareentwicklung 1 (gtec) Hanspeter Mössenböck, Herbert Prähofer 45

Informatik für Schüler, Foliensatz 10 Wiederholung und Listen

Hochschule Darmstadt Informatik-Praktikum WS 2016/2017 WIng Bachelor 4. Aufgabenblatt Modularisierung, Funktionen, Unterprogramme

Bitte beachten Sie, dass diese Aufgaben keinerlei Beschränkung des zu prüfenden Stoffes noch sonstige Rückschlüsse auf die Klausur begründen.

Algorithmen und Datenstrukturen

Tag 4 Repetitorium Informatik (Java)

Klausur: Grundlagen der Informatik I, am 06. Februar 2009 Gruppe: A Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.

Klausur: Grundlagen der Informatik I, am 27. März 2009 Gruppe: E Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.

Stud.-Nummer: Datenstrukturen & Algorithmen Seite 1

Kontrollstrukturen und Logik

Programmieren in C. Rekursive Strukturen. Prof. Dr. Nikolaus Wulff

Die Klasse string Verfasser: Christian Bartl

Übungspaket 12 Der Datentyp char

Transkript:

Zusatzübung Abgabetermin: 1. 3. 2006 Name: Matrikelnummer: Gruppe: G1 (Löberbauer) G2 (Prähofer) G3 (Prähofer) Aufgabe Punkte gelöst abzugeben schriftlich abzugeben elektronisch korr. Pkte Aufgabe 11.1 12 Prosabeschreibung, Aufgabe 11.2 12 Prosabeschreibung, Aufgabe 11.3 12 Prosabeschreibung, Aufgabe 11.4 12 Prosabeschreibung, Aufgabe 11.5 12 Prosabeschreibung, Aufgabe 11.6 12 Prosabeschreibung,

Aufgabe 11_1: Näherungsweise Berechnung der Exponentialfunktion e x Der Wert der Exponentialfunktion e x für ein gegebenes x kann mit Hilfe der Taylorreihe x 1 2 1 3 1 4 1 5 y( x) = e = 1+ x + x + x + x + x + 2! 3! 4! 5! angenähert werden. Entwickeln Sie ein das die Werte der Exponentialfunktion für alle Werte in einem variablen Wertebereich x = [ x a x e ] an durch eine variable Schrittweite dx bestimmten Stellen mit einer variablen Fehlerschranke ε berechnet und ausgibt. Für jeden näherungsweise berechneten Funktionswert soll auch der exakte Wert der Exponentialfunktion (mittels Math.exp(x)) und der Fehler f ( x) = yexakt ( x) y genaehert ( x) ausgegeben werden, wohl wissend, dass man keinen wirklich exakten Funktionswert ermitteln kann. Eine Sitzung soll folgendermaßen aussehen: Bitte geben Sie den Startpunkt ein: 0 Bitte geben Sie den Endpunkt ein: 10 Bitte geben Sie die Schrittweite ein: 1 Bitte geben Sie die Fehlerschranke ein: 0.001 # x exp(x)(genähert) exp(x)(exakt) Fehler 1: 0.0 1.0 1.0 0.0 2: 1.0 2.7182539682539684 2.7182818284590455 2.7860205077168132E-5 3: 2.0 7.388994708994708 7.38905609893065 6.138993594273501E-5 4: 3.0 20.08546859390609 20.085536923187668 6.832928157862739E-5 5: 4.0 54.5978829056501 54.598150033144236 2.6712749413349E-4 6: 5.0 148.4129510721643 148.4131591025766 2.0803041229555674E-4 7: 6.0 403.42863583131975 403.4287934927351 1.5766141535777933E-4 8: 7.0 1096.6330406760985 1096.6331584284585 1.1775235998356948E-4 9: 8.0 2980.957677782414 2980.9579870417283 3.0925931423553266E-4 10: 9.0 8103.08370349121 8103.083927575384 2.2408417407859815E-4 11: 10.0 22026.465632423035 22026.465794806718 1.6238368334597908E-4 Tipp: Die Berechnung des Näherungswertes soll abbrechen, sobald der Beitrag eines Terms zur Näherung kleiner als oder gleich der Fehlerschranke ε ist.

Aufgabe 11_2: Multiplikation Matrix mit Vektor Die Multiplikation einer Matrix A (mit n Zeilen und m Spalten) mit einem Vektor b (der Länge m) ist folgend definiert: m 1 ci = Aijbj, i = 1.. n j= 0 (Hinweis: damit ist das Ergebnis ein Vektor c der Länge n.) Beispiel einer Multiplikation einer Matrix mit einem Vektor: 2.0 1.0 4.0 0.0 1.0 3.0 2.0 1.0 + 4.0 2.0 3.0 6.0 8.0 2.0 = = 6.0 1.0 1.0 + 0.0 2.0 + 6.0 6.0 37 6.0 Entwickeln Sie ein Programm, das eine Matrix A und einen Vektor b einliest, die Multiplikation durchführt und das Ergebnis schön formatiert ausgibt. Implementieren Sie eigene Methoden für: das Einlesen der Matrix (um das Einlesen zu erleichtern, sollen zuerst die Dimensionen der Matrix, d.h. Anzahl der Zeilen n und Spalten m, eingelesen werden) das Einlesen des Vektors (d.h. Einlesen der Länge des Vektors und Einlesen der Werte) die Multiplikation der Matrix mit dem Vektor die Ausgabe des Ergebnisvektors Gehen Sie bei der Lösung folgend vor: Beschreiben Sie alle Methoden in Prosa. Verwenden Sie für die Beschreibung der Operationen Notationen wie z.b.: für alle Zeilen i von 0 bis n-1 oder für alle Spalten j von 0 bis m-1 Implementieren Sie das Verfahren in Java Stellen Sie für jede Methode einzeln einen Testplan auf und testen Sie die Methoden.

Aufgabe 11.3: Autokorrektur Schreiben Sie ein welches einen Text (Folge von Zeichen) von einer Datei einliest, wie folgt korrigiert und die korrigierte Version auf eine Ausgabedatei ausgibt: a) Mehr als einmal auftretende Leerzeichen und Tabulatoren sind zu eliminieren. Am Anfang des Textes soll überhaupt kein Leerzeichen kommen. Bsp: " Das Wetter ist schön. -> "Das Wetter ist schön." b) Nach einem Satzzeichen (hierzu zählen:.!?) sowie ganz am Anfang soll der erste Buchstabe, wenn nötig, in einen Großbuchstaben konvertiert werden. Bsp: "heute schön! morgen regen. -> "Heute schön! Morgen regen." Gehen Sie bei der Lösung folgend vor: 1. Machen Sie eine genaue Problemanalyse, d.h., überlegen Sie, wie man als Mensch an die Aufgabe herangehen würde. Beschreiben Sie dann in wenigen Worten die grundsätzliche Idee zu dem Verfahren. 2. Beschreiben Sie das Verfahren in Prosa. 3. Implementieren Sie das Verfahren in Java, indem Sie das in Prosa beschriebene Verfahren in Java umsetzen. Verwenden Sie Methoden für klar definierte Aufgaben. 4. Legen Sie sich eine Testdatei an, welche die wichtigen Testfälle beinhaltet. Hinweis: Lösen Sie die Aufgabe in 2 Schritten. Überlegen Sie sich eine Lösung für a) und implementieren Sie diese Lösung. Überlegen Sie sich dann eine Lösung für b) und bauen Sie die Lösung von b) in die Lösung von a) ein.

Aufgabe 11_4: Römische Zahlen Schreiben Sie eine Klasse RomanNumber für die Darstellung römischer Zahlen. Objekte dieser Klasse sollen aus einer Zahl (vom Datentyp int) oder einer römischen Zahl (vom Datentyp String) erzeugt werden können. Auf RomanNumber-Objekte sollen Methoden zum Ermitteln des numerischen Wertes (als int) und zur Darstellung als römische Zahl (Datentyp String) angewendet werden können. Es soll auch möglich sein, Zahlen zwischen den beiden Darstellungen (int/string) umzuwandeln, ohne dafür erst ein Objekt der Klasse RomanNumber erzeugen zu müssen. Beim Umwandeln müssen folgende Regeln eingehalten werden: I steht nur vor V oder X, X nur vor L oder C, C nur vor D oder M: 99=XCIX (nicht IC), 999=CMXCIX (nicht IM) I, X und C stehen nur vor maximal einem höherwertigen Symbol: 19=XIX (nicht IXX), 190=CXC (nicht XCC) Wird ein Objekt der Klasse RomanNumber aus einer Zeichenkette erzeugt, so sind auch abweichende Darstellungen (wie z.b. IC=99, IXX=19, IIII=4) erlaubt. Beim Umwandeln in eine Zeichenkette soll dann auch die beim Erzeugen des Objekts angegebene Darstellung zurückgegeben werden. Beispiel: RomanNumber x=new RomanNumber(99), y=new RomanNumber("IC"); IO.writeLn(x.toInt()); // 99 IO.writeLn(x.toString()); // XCIX IO.writeLn(y.toInt()); // 99 IO.writeLn(y.toString()); // IC Hinweise: Gibt es für eine Zahl keine römische Darstellung (also 0 oder negative Zahlen), soll das durch die Zeichenkette "???" ausgedrückt werden. Definieren Sie hierfür eine Konstante. Achten Sie darauf, daß etwaige Hilfsmethoden, die nur innerhalb der Klasse verwendet werden, von außen nicht zugänglich sind. Römische Zahlen, die nicht zulässige Symbole enthalten, sollen als 0 dargestellt werden. Wie Sie mit unsinnigen Kombinationen aus gültigen Symbolen umgehen (wie z.b. LDDCCMD), bleibt Ihnen überlassen.

Aufgabe 11_5: Telefonbuch 12 Punkte a) Implementieren Sie ein Telefonbuch (Klasse PhoneBook) mit einer Funktionalität, wie sie (einfache) Telefonbücher auf Handys aufweisen. Jeder Telefonbucheintrag (Klasse Entry) bestehe aus Namen, Vorwahl und Nummer. Im Telefonbuch sollen die Einträge nach dem Namen sortiert sein. Das Telefonbuch soll folgende Operationen unterstützen: void insertentry(entry e) fügt einen neuen Eintrag in das Telefonbuch ein, Entry firstentry() liefert den ersten Eintrag im Telefonbuch, Entry nextentry() liefert den jeweils nächsten Eintrag im Telefonbuch, Entry lookupentry(string name) liefert den Eintrag mit gegebenen Namen, Hinweise: Für die Speicherung der Telefonbucheinträge in aufsteigender Reihenfolge eignet sich eine sortierte lineare Liste. Orientieren Sie sich bei Ihrer Implementierung an der in der Vorlesung besprochenen Implementierung sowie der linearen Liste in Übung 6. Für den Vergleich der Namen sollten sie die Methoden comparetoignorecase und equalsignorecase der Klasse String verwenden. Zur Vereinfachung der Aufgabe sollen in Namen nur die Standardzeichen A bis Z und a bis z und keine Sonderzeichen wie Ä, Ö, ü, etc. verwendet werden. b) Schreiben Sie einen Dialog (nur Text-basiert), mit dem ein Benutzer das Telefonbuch bearbeiten kann. In einer Schleife soll zuerst ein Operationscode eingelesen, daraufhin eventuell benötigte Daten gelesen, die Operation ausgeführt und schließlich das Ergebnis ausgegeben werden. Beispieldialog: Telefonbuch =========== Folgende Operationen stehen zur Verfügung: i - insert: Einfügen eines Eintrags f - first: ersten Eintrag anzeigen n - next: nächsten Eintrag anzeigen s - search: eine Eintrag nach Namen nachschlagen q - quit: Programm verlassen Bitte Operation auswählen: (i, f, n, s, q): i Bitte Namen eingeben: Gustav Bitte Vorwahl eingeben: 1 Bitte Nummer eingeben: 698634 Bitte Operation auswählen: (i, f, n, s, q): i Bitte Namen eingeben: franz Bitte Vorwahl eingeben: 565 Bitte Nummer eingeben: 234342 Bitte Operation auswählen: (i, f, n, s, q): s Bitte Namen eingeben: franz --> franz: (0565) 234342 Bitte Operation auswählen: (i, f, n, s, q): n --> Gustav: (01) 698634 Bitte Operation auswählen: (i, f, n, s, q): q --> Ende

Aufgabe 11_6: Buchstabenindex für Telefonbuch 12 Punkte Implementieren Sie einen Buchstabenindex (Klasse PhoneBookIndex) für das Telefonbuch aus Aufgabe 1. Über den Index soll es möglich sein, direkt zum ersten Eintrag eines gegebenen Buchstabens zu gelangen (gibt es keinen Eintrag für den Buchstaben, soll man zum ersten Eintrag nach diesem Buchstaben gelangen). Index a b c d e f g h i Entries Alex 699 2471293 Alois 7221 63152 Edith 650 2341282 Florian 2342 3472942 Franz 732 2374092 Fritz 7433 9274219 Gustav 7732 293420 Hans 1 29342923 Helmut 3322 23472 Erweitern Sie dann die Klasse PhoneBook um eine Methode Entry firstentrywithchar(char ch) welche den ersten Eintrag mit Buchstaben ch liefert (bzw. den ersten Eintrag nach dem Buchstaben ch, wenn kein Eintrag mit Buchstaben ch existiert). Erweitern Sie den Dialog aus Aufgabe 1.b um eine weitere Operation c - character: ersten Eintrag nach bestimmten Buchstaben anzeigen mit der direkt zum ersten Eintrag eines einzulesenden Buchstabens gesprungen wird. Beispieldialog: Bitte Operation auswaehlen: (i, f, n, s, c, q): c Bitte Buchstaben eingeben: a --> alois: (0446) 2342323 Bitte Operation auswaehlen: (i, f, n, s, c, q): c Bitte Buchstaben eingeben: f --> franz: (0565) 234342