Übung zur Vorlesung Programmierung

Ähnliche Dokumente
Übung zur Vorlesung Programmierung

Übung zur Vorlesung Programmierung

Übung Informatik I - Programmierung - Blatt 8

Innere Klassen. Innere Klassen. Page 1. Lernziele: innere Klassen, statische geschachtelte Klassen, anonyme Klassen.

Konkatenation zweier Listen mit concat

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 1. Kapitel 11. Listen. Listen

Übung 10: Dynamische Datenstrukturen und Rekursion

Abgabe: (vor 12 Uhr)

// Objekt-Methoden: public void insert(int x) { next = new List(x,next); } public void delete() { if (next!= null) next = next.next; } public String

Klausur: Java (Liste P)

ALP II Dynamische Datenmengen

Objektorientierte Programmierung

Hochschule Augsburg, Fakultät für Informatik Name:... Prüfung "Programmieren 1", IN1bac, WS 10/11 Seite 1 von 6

Einführung in die Programmierung

16. Dezember 2004 Dr. M. Schneider, P. Ziewer

Informatik II Übung 5

1. Typen und Literale (6 Punkte) 2. Zuweisungen (6 = Punkte)

Allgemeine Hinweise:

3. Übungsblatt zu Algorithmen I im SoSe 2017

7.0 Arbeiten mit Objekten und Klassen

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 16/17. Kapitel 13. Listen. Listen 1

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 15/16. Kapitel 12. Listen. Listen 1

! 1. Rekursive Algorithmen.! 2. Rekursive (dynamische) Datenstrukturen. II.3.2 Rekursive Datenstrukturen - 1 -

1 of :17:14

Schwerpunkte. Verkettete Listen. Verkettete Listen: 7. Verkettete Strukturen: Listen. Überblick und Grundprinzip. Vergleich: Arrays verkettete Listen

1 of :26:26

II. Grundlagen der Programmierung. Beispiel: Merge Sort. Beispiel: Merge Sort (Forts. ) Beispiel: Merge Sort (Forts. )

Prof. Dr. Uwe Schmidt. 30. Januar 2017

Geordnete Binärbäume

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

Algorithmen und Datenstrukturen

Parallele und funktionale Programmierung Wintersemester 2015/ Übung Abgabe bis , 10:00 Uhr

Einführung in die Programmierung WS 2014/15. Übungsblatt 13: Typsicherheit, Datenstrukturen

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

3. Übungsbesprechung Programmkonstruktion

Einführung in die Programmierung für Wirtschaftsinformatik

Informatik II - Übung 07

Probeklausur Informatik 2 Sommersemester 2013

Musterlösung Stand: 5. Februar 2009

C++ Teil 12. Sven Groß. 18. Jan Sven Groß (IGPM, RWTH Aachen) C++ Teil Jan / 11

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 16/17. Kapitel 14. Bäume. Bäume 1

Einführung in die Programmierung

6. Verkettete Strukturen: Listen

Tutoraufgabe 1 (Seiteneekte):

Arten des universellen Polymorphismus

Algorithmen und Datenstrukturen

ALP II Dynamische Datenmengen Datenabstraktion (Teil 2)

13. Dynamische Datenstrukturen

II.3.1 Rekursive Algorithmen - 1 -

Javakurs für Anfänger

int x = 3; int y = 11; public A () { this.x = z; y *= z;

Kapitel 9 Schnittstellen

Einführung in die Programmierung WS 2009/10. Übungsblatt 7: Imperative Programmierung, Parameterübergabe

Tutoraufgabe 1 (Fibonacci-Zahlen):

class ListElement { int value; ListElement next; ListElement() { next=null; value=0;

Musterlösung: IntToGerman

OOP. Tagesprogramm. Generizität

CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik)

Arrays. Gilbert Beyer und Annabelle Klarl. Einführung in die Informatik. Zentralübung zur Vorlesung Einführung in die Informatik

Übergang von funktionaler zu OOP. Algorithmen und Datenstrukturen II 1

Informatik II Prüfungsvorbereitungskurs

II.4.5 Generische Datentypen - 1 -

! 1. Unterklassen und Vererbung! 2. Abstrakte Klassen und Interfaces! 3. Modularität und Pakete. II.4.2 Abstrakte Klassen und Interfaces - 1 -

Lösungshinweise/-vorschläge zum Übungsblatt 5: Software-Entwicklung 1 (WS 2017/18)

Aufgabe 1 (Programmanalyse, Punkte)

Strukturiertes Programmieren

Praktische Informatik 1 Datenstrukturen

Informatik II Musterlösung

3 Objektorientierte Konzepte in Java

Algorithmen und Programmierung III

Programmieren 2 Übung Semesterwoche 2

13. Bäume: effektives Suchen und Sortieren

Informatik I Eprog HS12

Übung Informatik I - Programmierung - Blatt 8

Tag 8 Repetitorium Informatik (Java)

Probeklausur: Programmieren I

Kapitel 9. Programmierkurs. Attribute von Klassen, Methoden und Variablen. 9.1 Attribute von Klassen, Methoden und Variablen

Fortgeschrittene Programmiertechnik Klausur SS 2015 Angewandte Informatik Bachelor

Übung 4: Die generische Klasse AvlBaum in Java 1

Einfache Arrays. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Strukturiertes Programmieren

Einführung in die Programmierung für NF MI. Übung 04

Advanced Programming in C

Informatik III Wintersemester 2016/17. Aufgabenblatt 4

Tag 7 Repetitorium Informatik (Java)

II.4.2 Abstrakte Klassen und Interfaces - 1 -

Institut für Programmierung und Reaktive Systeme. Java 6. Markus Reschke

Programmierkurs Java

Abgabe: keine Pflichtabgabe (vor 12 Uhr) Aufgabe 10.1 (P) Vererbung Gegeben seien folgende Java-Klassen:

Interfaces und Generics

Aufgaben NF 11; Seite 1

ALP II Dynamische Datenmengen Datenabstraktion

PIWIN 1 Übung Blatt 5

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

Lösungen zum Übungsblatt 10: Entwicklung von Softwaresystemen I (WS 2003/04)

Nachname: Vorname: Matr.-Nr.: Punkte: 1. Aufgabe: ( / 25 Pkt.) Gegeben ist das folgende Struktogramm zur Berechnung von sin(x) mit Hilfe einer Reihe.

Lösungen der P1-Musterprüfungsaufgaben

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

Übungsstunde 9. Einführung in die Programmierung I

Transkript:

RWTH Aachen Lehrgebiet Theoretische Informatik Frohn Reidl Rossmanith Sánchez Ströder WS 2013/14 Übungsblatt 2 4.11.2013 Übung zur Vorlesung Programmierung Aufgabe T4 Wir wollen die Klasse Liste aus der Vorlesung um folgende Funktionalitäten erweitern: 1. Die Methode int size() soll die Länge einer Liste zurückgeben. 2. Die Methode Liste sum(liste a,liste b) erzeugt aus zwei Listen eine neue Liste, welche die Summen der Elemente mit gleicher Position enhält. So ist z.b. sum([1, 2, 3], [1, 1, 0]) = [2, 3, 3]. Sind die Listen nicht gleicher Länge, so gibt die Methode null zurück. Implementieren Sie beide Methoden sowohl rekursiv als auch iterativ. Sie dürfen dabei auf die Attribute der Klasse zugreifen und die Funktionen head(), tail(), isempty() und add(int elem) verwenden. class Liste { private boolean empty; // Liste leer? private int value; // erstes Element private Liste rest; // restliche Elemente int head() {... Liste tail() {... boolean isempty() {... // Erzeuge neue Liste [elem, alte Liste] Liste add(int elem) {... int size() { int len = 0; while(!ca.isempty()) { len++; return len; int size() { if(isempty()) { return 0;

return 1 + tail().size(); static Liste sum(liste a, Liste b) { if(a.size()!= b.size()) { return null; Liste res = new Liste(); for(int i = a.size() 1;i >= 0;i ) { int pos = i; Liste ca = a; Liste cb = b; while(pos > 0) { cb = cb.tail(); pos ; res = res.add(ca.head() + cb.head()); return res; static Liste sum(liste a, Liste b) { if(a.size()!= b.size()) { return null; if(a.isempty()) { return new Liste(); Liste res = sum(a.tail(),b.tail()); return res.add(a.head() + b.head()); Aufgabe T5 Für das Finanzunternehmen Megacapital Inc. sollen Sie eine Organisationssoftware entwerfen. Jeder Mitarbeiter von Megacapital hat (neben einem Namen) einen direkten Vorgesetzten. Die Firmenstruktur ist so definiert, daß zwei Mitarbeiter dann in der gleichen Abteilung arbeiten, wenn Sie einen gemeinsamen nicht notwendigerweise direkten Vorgesetzten haben. Entwerfen Sie eine Klasse Person, welche die Gegebenheiten der Firma abbildet. Dazu soll diese Klasse Methoden anbieten, um folgende Aufgaben zu bewältigen: Den Namen einer Person zurückgeben Den direkten Vorgesetzten einer Person zurückgeben und setzen; letzters ist allerdings nur möglich, wenn die Person noch keinen Vorgesetzten hat.

Den obersten Vorgesetzten einer Person bestimmen und zurückgeben. Die Abteilungen zweier beliebiger Mitarbeiter zusammenlegen; dazu soll der Chef der einen Abteilung den Chef der anderen Abteilung als direkten Vorgesetzten erhalten. Implementieren Sie diese Methode als takeoverdepartmentof (Person other) in der Klasse Person, der Abteilungschef der Person other wird dann dem Abteilungschef der Person this untergeordnet. class Person { String name; Person directboss; // Erzeugt einen neue Person ohne Vorgesetzten public Person(String name) { this.name = name; // Weist einen Vorgesetzten zu public void setboss(person newboss) { if(directboss == null) { directboss = newboss; // Gibt den Vorgesetzten zurueck public Person getboss() { return directboss; // Gibt den Abteilungsleiter zurueck public Person getdepartmentboss() { if(directboss == null) { return this; return directboss.getdepartmentboss(); // Legt die Abteilung dieses Mitarbeiters mit der Abteilung // des anderen Mitarbeiters zusammen public void takeoverdepartmentof (Person other) { Person myboss = getdepartmentboss(); Person hisboss = other.getdepartmentboss(); hisboss.setboss(myboss); // Gibt den Namen der Person zurueck public String getname() { return name; Aufgabe H4 (4+6 Punkte) 1

Wir wollen die Klasse Liste aus der Vorlesung um folgende Funktionalitäten erweitern: 1. Die Methode boolean contains(int element) soll testen, ob diese Liste die Zahl element enthält. 2. Die Methode boolean issorted() gibt zurück, ob die Liste aufsteigend sortiert ist. Implementieren Sie beide Methoden sowohl rekursiv als auch iterativ. boolean contains(int element) { while(!ca.isempty()) { if(ca.head() == element){ boolean contains(int element) { if(isempty()) { return head() == element tail().contains(element); boolean issorted() { if(size() <= 1) { do { int current = ca.head(); ca = ca.next(); int next = ca.head(); if(current > next) { while(ca.size() > 1); boolean issorted() { if(size() <= 1) {

int current = head(); int next = tail().head(); if(current > next) { return tail().issorted(); Aufgabe H5 (5 Punkte) 1 Implementieren Sie die Klasse Person aus Aufgabe T5. Testen Sie Ihre Implementierung anhand des folgenden Beispiels: public static void main(string[ ] args){ Person joe = new Person("Joe"); Person hamlet = new Person("Hamlet"); Person maggie = new Person("Maggie"); Person julia = new Person("Julia"); Person oliver = new Person("Oliver"); // Maggie s department joe.setboss(hamlet); hamlet.setboss(maggie); // Oliver s department julia.setboss(oliver); System.out.println(joe.getDepartmentBoss().getName());// Should be Maggie System.out.println(oliver.getDepartmentBoss().getName());// Should be Oliver // Merge joe.takeoverdepartmentof (julia); System.out.println(oliver.getDepartmentBoss().getName());// Should be Maggie Abgabe zum 12.11.2013 1 Bitte Quelltext für die Abgabe ausdrucken und zusätzlich per E-mail an den jeweiligen Tutor senden.