Tutoraufgabe 1 (Seiteneffekte):

Größe: px
Ab Seite anzeigen:

Download "Tutoraufgabe 1 (Seiteneffekte):"

Transkript

1 Prof. aa Dr. J. Giesl M. Brockschmidt, F. Emmes, C. Otto, T. Ströder Allgemeine Hinweise: Die Hausaufgaben sollen in Gruppen von je 2 Studierenden aus der gleichen Kleingruppenübung (Tutorium) bearbeitet werden. Namen und Matrikelnummern der Studierenden sind auf jedes Blatt der Abgabe zu schreiben. Heften bzw. tackern Sie die Blätter! Die Nummer der Übungsgruppe muss links oben auf das erste Blatt der Abgabe geschrieben werden. Notieren Sie die Gruppennummer gut sichtbar, damit wir besser sortieren können. Die Lösungen müssen bis Freitag, um 8:00 Uhr in den entsprechenden Übungskasten eingeworfen werden. Sie finden die Kästen am Eingang Halifaxstr. des Informatikzentrums (Ahornstr. 55). Alternativ können Sie die Lösungen auch in Ihrem Tutorium vor der Abgabefrist direkt bei Ihrer Tutorin/Ihrem Tutor abgeben. In einigen Aufgaben müssen Sie in Java programmieren und.java-dateien anlegen. Drucken Sie diese aus und schicken Sie sie per vor Freitag, den um 8:00 Uhr an Ihre Tutorin/Ihren Tutor. Stellen Sie sicher, dass Ihr Programm von javac akzeptiert wird, ansonsten werden keine Punkte vergeben. Beachten Sie auch die Codekonventionen auf der Webseite zur Vorlesung (Verstöße gegen diese Konventionen können zu Punktabzügen führen). Tutoraufgabe 1 (Seiteneffekte): Betrachten Sie das folgende Programm: public class TSeiteneffekte { public static void main ( String [] args ) { Wrapper [] ws = new Wrapper [2]; ws [0] = new Wrapper (); ws [1] = new Wrapper (); ws [0]. i = 2; ws [1]. i = 1; f(ws [1], ws [1], ws [0]); f(ws [1], ws ); // Speicherzustand hier zeichnen public static void f( Wrapper w1, Wrapper... ws) { int sum = 0; // Speicherzustand hier zeichnen for ( int j = 0; j < ws. length ; j ++) { Wrapper w = ws[j]; sum += w.i; w.i = j + 2; ws [0] = w1; w1 = ws [1]; w1.i = -sum ; 1

2 public class Wrapper { public int i; Es wird nun die Methode main ausgeführt. Stellen Sie den Speicher (d.h. alle (implizit) im Programm vorkommenden Arrays (außer args) und alle Objekte) an folgenden Programmstellen graphisch dar: nach der Deklaration von sum in jedem Aufruf der Methode f vor Ende der main Methode Aufgabe 2 (Seiteneffekte): Betrachten Sie das folgende Programm: public class HSeiteneffekte { public static void main ( String [] args ) { Wrapper w1 = new Wrapper (); Wrapper w2 = w1; ( = 6 Punkte) w1.i = 1; w2.i = 2; int x = 3; int [] a = { 4, 5 ; f(w2, x, a); f(w1, x, 6, a [1]); // Speicherzustand hier zeichnen public static void f( Wrapper w, int x, int... a) { // Speicherzustand hier zeichnen x = a [0]; a [1] = w.i; w.i = x; public class Wrapper { public int i; Es wird nun die Methode main ausgeführt. Stellen Sie den Speicher (d.h. alle (implizit) im Programm vorkommenden Arrays (außer args) und alle Objekte) an folgenden Programmstellen graphisch dar: bei jedem Aufruf der Methode f vor Ende der main Methode 2

3 Tutoraufgabe 3 (Refactoring): In dieser Tutor- und der nachfolgenden Hausaufgabe betrachten wir die Datei Geometry.java, welche Sie von unserer Webseite herunterladen müssen. Diese benötigt zusätzlich die Datei Point.java, welche ebenfalls auf unserer Webseite herunterzuladen ist. Beim sogenannten Refactoring geht es darum, die Syntax eines Programms zu verändern, dabei aber die Semantik des Programms unverändert zu belassen. Ziel des Refactorings ist es, den Programmcode hinsichtlich seiner Les- und Wartbarkeit zu verbessern. Die vorgegebene Datei Geometry.java enthält eine main Methode, welche ein durch seine Eckpunkte bestimmtes Polygon im zweidimensionalen Raum einliest und es anschließend auf der Konsole ausgibt. Das gesamte Programm befindet sich hierbei in der main Methode, welche dadurch groß und unübersichtlich ist. Ein besserer Programmierstil ist es, wenn das Programm in mehrere Abschnitte unterteilt und in verschiedenen Methoden implementiert ist. So wird die Hauptstruktur direkt ersichtlich, das Programm kann schneller verstanden und eventuelle Fehler können leichter gefunden werden. Um die Größe einer Methode zu messen, existieren verschiedene Metriken. Eine solche Metrik ist die NCSS (Non-Commenting Source Statements) Metrik. Diese zählt die Anweisungen, Verzweigungen und Schleifen innerhalb einer Methode. Setzt man voraus, dass jede Schleife und jede Verzweigung Blockanweisungen benutzt (also z. B. Verzweigungen der Form if (Bedingung) {Anweisung(en), aber nicht der Form if (Bedingung) Anweisung;), so entspricht diese Metrik der Anzahl der Semikola am Ende von Anweisungen und der öffnenden geschweiften Klammern innerhalb einer Methode (d. h. die erste öffnende geschweifte Klammer des Methodenrumpfes selbst zählt nicht dazu). Die main Methode des gegebenen Programms hat eine NCSS von 35. a) Im ersten Teil des Programms werden die vier Variablen minx, maxx, miny und maxy initialisiert und in der anschließenden Schleife mit den Extremkoordinaten (Minimum und Maximum) in beiden Dimensionen belegt. Schreiben Sie eine Klasse ExtremeCoordinates, welche vier nicht-statische int Attribute minx, maxx, miny und maxy hat. Schreiben Sie in dieser Klasse zusätzlich eine statische Methode create() mit Rückgabetyp ExtremeCoordinates, welche ein neues Objekt dieses Typs anlegt, alle seine Attribute mit 0 belegt und dieses Objekt dann zurück liefert. b) Lagern Sie nun den ersten Teil des Programms (vom Kommentar Eingabe der Punkte des Polygons und Bestimmung der Extremkoordinaten bis zum Kommentar Ausgabe des Polygons auf der Konsole ) in eine statische Methode input(point[] polygon) mit Rückgabetyp ExtremeCoordinates aus. Ersetzen Sie dabei die Initialisierung der Variablen minx, maxx, miny und maxy durch einen Aufruf der create() Methode aus der Klasse ExtremeCoordinates und die Belegung der ersetzten Variablen durch eine Belegung der entsprechenden Attribute im erzeugten ExtremeCoordinates Objekt. Liefern Sie dieses Objekt am Ende der Methode input zurück. In der main Methode müssen Sie ebenfalls alle Vorkommen der ersetzten Variablen durch Zugriffe auf die entsprechenden Attribute des zurückgelieferten ExtremeCoordinates Objektes ersetzen. c) Lagern Sie nun den zweiten Teil des Programms (ab dem Kommentar Ausgabe des Polygons auf der Konsole ) in eine statische Methode output(extremecoordinates ex, Point[] polygon) ohne Rückgabe aus. Sie benötigen nun in der main Methode keine Variable mehr, welche das in der input Methode erzeugte ExtremeCoordinates Objekt speichert, sondern können den Aufruf der input Methode direkt als erstes Argument der output Methode nutzen. Die NCSS der main Methode soll anschließend 3 betragen. Nun spiegelt die main Methode genau die oben beschriebene Struktur des Programms wider. Aufgabe 4 (Refactoring): (1 + 4 = 5 Punkte) In dieser Hausaufgabe soll das Refactoring aus der vorigen Tutoraufgabe weitergeführt werden. Die dort ausgelagerten Methoden input(point[] polygon) und output(extremecoordinates ex, Point[] polygon) sind immer noch recht komplex und können weiter in sinnvolle Unterabschnitte gegliedert werden. Außerdem wollen wir ein wiederholtes Auftreten des gleichen komplexen Ausdrucks (sogenannte Code-Duplikation) eliminieren. 3

4 a) Schreiben Sie eine Methode readint() vom Typ int, welche einen vom Benutzer eingegebenen int Wert einliest. Ersetzen Sie sämtliche Vorkommen des Ausdrucks durch Aufrufe Ihrer neuen Methode. Integer.parseInt(System.console().readLine()) b) Lagern Sie weitere Methoden in der Datei Geometry.java aus (ohne die Semantik zu verändern), sodass die NCSS jeder Methode in der resultierenden Datei jeweils höchstens 8 beträgt. Hinweise: Die Programmkommentare liefern gute Hinweise, welche Abschnitte sinnvoll als Methoden ausgelagert werden können (überall da, wo mindestens 4 Anweisungen oder Blöcke zu einem Kommentar gehören, lässt sich die NCSS durch Methodenauslagerung reduzieren). Überlegen Sie sich, welche Variablen innerhalb eines Code-Abschnitts und nach einem Code-Abschnitt benötigt werden. Aus diesen Informationen lassen sich die Argumente und Rückgabetypen der Methoden erschließen. In Methoden kann eine Schleife durch die return Anweisung direkt verlassen werden. Dadurch kann die Verwendung der Variablen in vom Typ boolean in Kombination mit der break Anweisung vermieden werden. Tutoraufgabe 5 (Blümchen): In dieser Aufgabe soll eine einfache Gartensimulation erstellt werden. Hierbei hat der Benutzer die Aufgabe, sich um das Wohlergehen verschiedener Blümchen zu kümmern, indem er diese mit der richtigen Menge Wasser versorgt. Hierbei ist es auch möglich, dass Blümchen mehr Wasser bekommen, als sie speichern können, und deswegen sterben. Weiterhin ist es möglich, nach Einsatz eines Bienchenschwarms durch Bestäubung neue Blümchen zu erzeugen. In dieser Simulation sollen mehrere Blümchenbeete verwaltet werden, wobei jedes Beet mehrere Blümchen enthalten kann. Sowohl für die Anzahl der Beete als auch für die Anzahl der Blümchen pro Beet ist eine Maximalkapazität vorgegeben. Die Simulation verläuft in Tagesschritten. Die folgende Ausgabe ist ein Beispiel für einen möglichen Tagesablauf: Tag 2 bricht an! Deine Beete sehen aktuell so aus: Beet 1: (1) Rittersporn [6/20] (Verbrauch: 6) (3) Sumpf-Schwertlilie [5/32] (Verbrauch: 5) (1) Rittersporn [12/20] (Verbrauch: 6) (3) Sumpf-Schwertlilie [10/32] (Verbrauch: 5) (1) Rittersporn [12/20] (Verbrauch: 6) (3) Sumpf-Schwertlilie [10/32] (Verbrauch: 5) Beet 2: Beet 3: (3) Sumpf-Schwertlilie [17/32] (Verbrauch: 5) Moechtest du Beet 1 giessen (Wassermenge: 12)? (1 fuer ja, sonst nein) 1 Das Bluemchen (1) Rittersporn [12/20] (Verbrauch: 6) wurde ertraenkt! Das Bluemchen (1) Rittersporn [12/20] (Verbrauch: 6) wurde ertraenkt! Moechtest du Beet 2 giessen (Wassermenge: 12)? (1 fuer ja, sonst nein) 4

5 0 Moechtest du Beet 3 giessen (Wassermenge: 12)? (1 fuer ja, sonst nein) 0 Deine Beete sehen aktuell so aus: Beet 1: (1) Rittersporn [18/20] (Verbrauch: 6) (3) Sumpf-Schwertlilie [17/32] (Verbrauch: 5) (3) Sumpf-Schwertlilie [22/32] (Verbrauch: 5) (3) Sumpf-Schwertlilie [22/32] (Verbrauch: 5) Beet 2: Beet 3: (3) Sumpf-Schwertlilie [17/32] (Verbrauch: 5) Moechtest du die Bienchen losschicken? (1 fuer ja, sonst nein) 1 In welchem Beet sollen die Bienchen starten? 2 In welchem Beet sollen die Bienchen ihre Reise beenden? 3 Durch das Wunder der Bestaeubung ist das neue Bluemchen (3) Sumpf-Schwertlilie [15/32] (Verbrauch: 5) entstanden! Durch das Wunder der Bestaeubung ist das neue Bluemchen (3) Sumpf-Schwertlilie [15/32] (Verbrauch: 5) entstanden! Druecke Enter, um den naechsten Tag zu beginnen. Der Typ eines jeden Blümchens ist durch den Aufzählungstypen (enum) Typ realisiert. In dieser Aufgabe wird auch häufig der Ordinalwert (berechnet durch typ.ordinal()) verwendet. Beachten Sie folgende Anforderungen an das System: Die Simulation soll in einzelnen Tagen ablaufen, wobei pro Tag folgende Schritte in dieser Reihenfolge durchgeführt werden: 1. Der aktuelle Tag wird angezeigt. 2. Alle Blümchen verbrauchen eine Tagesration Wasser. 3. Der Zustand der Beete wird ausgegeben. Bei jedem Blümchen wird jeweils der Ordinalwert des Typs (z.b. (1)), der Name (z.b. Rittersporn), der aktuelle Wasservorrat des Blümchens (z.b. 6), der maximale Wasservorrat, den das Blümchen verträgt (z.b. 20) sowie sein Tagesverbrauch an Wasser (z.b. Verbrauch: 6) angegeben. 4. Die Beete werden nach Wunsch des Benutzers gegossen. Hierdurch erhöht sich die Wassermenge jedes Blümchens im Beet um 12 Einheiten. Falls dadurch der maximal erlaubte Wasservorrat des Blümchens überschritten wird, stirbt es. 5. Der Zustand der Beete wird ausgegeben. 6. Auf Wunsch des Benutzers wird der Bienchenschwarm losgeschickt. Die Simulation endet, wenn kein Blümchen mehr existiert. Pro Tag wird der Wasserverbrauch der einzelnen Blümchen simuliert, indem der Wasservorrat pro Blümchen um den jeweiligen Tagesverbrauch verkleinert wird. Gibt es für ein Blümchen beim Wasserverbrauchen nicht genug Wasser in seinem aktuellen Vorrat, stirbt es und existiert ab diesem Zeitpunkt nicht mehr im entsprechenden Beet. 5

6 Jeden Tag ist es pro Beet möglich, alle Blümchen in diesem Beet zu gießen. Es ist nicht möglich, nur einzelne Blümchen zu gießen, es werden immer alle Blümchen des Beetes gegossen. Wird ein Blümchen so stark gegossen, dass der Maximalvorrat überschritten wird, stirbt es und existiert ab diesem Zeitpunkt nicht mehr im entsprechenden Beet. Pro Tag ist es einmal möglich, den Bienchenschwarm loszuschicken. Dieser fliegt von einem Beet A zu einem Beet B, wobei A und B identisch sein dürfen. Für jedes Blümchenpaar a A und b B wird ein neues Blümchen in Beet B erzeugt, sofern der Ordinalwert des Typs von Blümchen a echt kleiner als der Ordinalwert des Typs von Blümchen b ist. Der Typ des neuen Blümchen ist durch (typ(a) + typ(b)) % MAX definiert, wobei typ(a) und typ(b) den Ordinalwert des Typs von Blümchen a bzw. b angeben und MAX die Anzahl verschiedener Blümchentypen ist (die verschiedenen Ordinalwerte der Typen sind also 0,..., MAX 1). Aus den Blümchen a A mit typ(a) = 2 und b B mit typ(b) = 3 entsteht also mit MAX = 4 ein Blümchen vom Typ (2 + 3) % 4 = 5 % 4 = 1. Beachten Sie, dass neue Blümchen erst zum Schluss dieser Prozedur zum Blümchenbeet B hinzugefügt werden! Wenn in einem Beet kein Platz für ein neues Blümchen ist, wird dieses neue Blümchen ignoriert und nicht eingepflanzt (Jedes Beet kann maximal 9 Blümchen enthalten). In den Informationen, die zu einem einzelnen Blümchen angezeigt werden, müssen folgende Angaben enthalten sein: Ordinalwert des Typs, Name, aktueller Wasservorrat, maximaler Wasservorrat, Verbrauch pro Tag. Das Sterben eines Blümchens kann dadurch realisiert werden, dass der entsprechende Speichereintrag auf null gesetzt wird. Jedes neue Blümchen hat am Anfang genug Wasser für exakt drei Tage. Wenn der erlaubte maximale Wasservorrat des Blümchen hierfür nicht groß genug ist, wird der erlaubte Wasservorrat stattdessen komplett gefüllt. Sie brauchen hier nicht alles selber zu programmieren, sondern sollen auf ein bereits erstelltes Programmgerüst zurückgreifen, welches Sie bei den Materialien zu dieser Übung von der Webseite der Vorlesung herunterladen können. Dieses besteht aus den Dateien Zufall.java (für Zufallszahlen), Bluemchen.java (welche ein Blümchen darstellt), Typ.java (welche die unterschiedlichen Typen von Blümchen darstellt), Bienchen.java (welche den Bienchenschwarm darstellt), Bluemchenbeet.java (welche ein Blümchenbeet darstellt) und Garten.java (welche die Benutzerschnittstelle zur Verfügung stellt). In den Dateien Bluemchen.java, Bienchen.java und Bluemchenbeet.java sind einige Stellen mit // TO DO markiert. An diesen Stellen sollen Sie Ihre eigene Implementierung einfügen. Modifizieren Sie keine anderen Stellen im Code und legen Sie auch keine weiteren Klassen bzw. Dateien an. Sie dürfen Hilfsmethoden zu den Klassen hinzufügen. Bedenken Sie bei der Konzeption Ihrer Lösung, welche der Attribute und Methoden in den von Ihnen erstellten Klassen statisch sein sollten. Hier dürfen (noch) alle Methoden und Attribute public sein. Beginnen Sie Ihre Bearbeitung mit den folgenden drei Methoden: Bluemchen.neuesBluemchen Bluemchen.toString Bluemchenbeet.neuesBluemchen Aufgabe 6 (Müll): ( = 14 Punkte) Wir beschäftigen uns in dieser Aufgabe mit einer Müllverwertungsfabrik. In dieser Fabrik wird Müll mit Müllwagen angeliefert und auf Müllbänder verteilt. Auf der Homepage zur Veranstaltung finden Sie die Dateien Muell.java, Fabrik.java, Wagen.java und Band.java. Laden Sie diese bitte herunter und verändern Sie diese wie in den folgenden Aufgabenteilen beschrieben. a) Für den Müll unterscheiden wir die Sorten Rest, Metall und Plastik. Schreiben Sie einen Aufzählungstypen (enum) Sorte, der diese drei Sorten abbildet. b) Ein Stück Müll bilden wir durch ein Objekt der Klasse Muell ab. Für jedes solche Objekt merken wir uns die Sorte und ob der Müll sauber ist. Hierfür existieren in der Klassendatei schon entsprechende Felder. Erweitern Sie die Klasse Muell um eine nicht-statische Methode tostring(), die (je nach Sorte des Mülls und der Sauberkeit) eine lesbare String-Darstellung wie in den folgenden Beispielen zurückgibt. 6

7 Metall Plastik Rest Plastik (sauber) c) In der Klasse Wagen ist die Methode zufallswagen vorgegeben, an der Sie nichts verändern müssen und sollen. Diese Methode erzeugt ein Objekt der Klasse Wagen, der einen Müllwagen mit zufälligem Müll als Inhalt repräsentiert. Hierfür wird die statische Methode fuersorte in der Klasse Muell aufgerufen, die noch nicht existiert und von Ihnen implementiert werden soll. Die Methode fuersorte bekommt einen int-wert von 0 bis einschließlich 2 und gibt abhängig von diesem Wert ein neues Muell-Objekt zurück. Dieses Objekt ist nicht sauber und hat die Sorte, die durch das int-argument definiert ist. Wenn also beispielsweise fuersorte mit dem Argument 1 aufgerufen wird und Plastik die zweite Sorte Müll ist, soll ein neues Muell-Objekt mit der Sorte Plastik zurückgegeben werden. Hinweis: Benutzen Sie die statische Methode values(), die in jedem Aufzählungstypen existiert und ein Array der einzelnen Aufzählungswerte zurückgibt. Das Argument können Sie als Index für dieses Array benutzen. d) Ein Müllband repräsentieren wir durch die Klasse Band. Die Datei enthält bereits die Deklaration eines Attributs vom Typ Muell[], das (analog zu den Wagen) benutzt wird, um den auf dem Band befindlichen Müll zu speichern. Für die nachfolgenden Aufgabenteile möchten wir uns anzeigen lassen, was für Müll in einem Wagen bzw. auf einem Band ist. Da beide Klassen Band und Wagen ein Array vom Typ Muell[] zum Speichern benutzen, bietet es sich an, eine Hilfsmethode zu schreiben. Diese Hilfsmethode soll ein Argument vom Typ Muell[] bekommen und einen String zurückliefern, der wie in folgendem Beispiel aufgebaut ist: Metall, Plastik (sauber), Rest, Rest, Plastik Für den Ergebnis-String werden also die tostring()-ausgaben der einzelnen Muell-Objekte entsprechend miteinander verbunden. Schreiben Sie diese Hilfsmethode mit dem Namen arraytostring in der Klasse Band und deklarieren Sie diese als static, wenn dies Sinn macht. Hinweis: Beachten Sie, dass das Array auch null-einträge enthalten kann und überspringen Sie diese! Erweitern Sie anschließend die Klassen Band und Wagen jeweils um eine Methode tostring(), die einen String entsprechend obiger Beschreibung zurückgibt. Verwenden Sie hierfür jeweils die Hilfsmethode! e) Für den Betrieb der Fabrik muss der Müll aus dem Wagen auf die Bänder verteilt werden. Schreiben Sie hierfür zuerst eine nicht-statische Methode leere() in der Klasse Wagen. Diese Methode soll ein Muell- Objekt aus dem inhalt-array zurückgeben und den Array-Eintrag auf null setzen. Nach entsprechend oft wiederholter Anwendung dieser Methode soll das Array also nur noch null enthalten. Falls das Array kein Muell-Objekt mehr enthält, soll die Methode leere() null zurückgeben. f) Schreiben Sie in der Klasse Band eine Methode drauf ohne Rückgabe. Diese Methode soll ein Muell- Objekt als Argument bekommen und dieses an einer freien Stelle (also mit Inhalt null) im inhalt-array des Bandes speichern. Wenn das Array keinen null-eintrag mehr enthält, soll nichts passieren. g) Verwenden Sie nun an der mit TODO markierten Stelle in der Klasse Fabrik die Methoden leere und drauf, um den Müll aus dem Wagen auf die Bänder bandeins und bandzwei zu verteilen. Wechseln Sie hierbei nach jedem Muell-Objekt das Band, so dass das erste, dritte,... Objekt dem ersten Band und das zweite, vierte,... Objekt dem zweiten Band hinzugefügt wird. Hinweis: Beachten Sie wieder, dass das Array auch null-einträge enthalten kann und überspringen Sie diese! Geben Sie vorher und nach jedem Hinzufügen aus, welchen Inhalt die Bänder und der Wagen haben. Orientieren Sie sich hierfür an der folgenden Beispielausgabe: 7

8 Wagen: Rest, Plastik, Plastik, Metall, Plastik, Plastik, Rest, Metall, Plastik, Rest Band 1: Band 2: Wagen: Plastik, Plastik, Metall, Plastik, Plastik, Rest, Metall, Plastik, Rest Band 1: Rest Band 2: Wagen: Plastik, Metall, Plastik, Plastik, Rest, Metall, Plastik, Rest Band 1: Rest Band 2: Plastik Wagen: Metall, Plastik, Plastik, Rest, Metall, Plastik, Rest Band 1: Rest, Plastik Band 2: Plastik Wagen: Plastik, Plastik, Rest, Metall, Plastik, Rest Band 1: Rest, Plastik Band 2: Plastik, Metall Wagen: Plastik, Rest, Metall, Plastik, Rest Band 1: Rest, Plastik, Plastik Band 2: Plastik, Metall Wagen: Rest, Metall, Plastik, Rest Band 1: Rest, Plastik, Plastik Band 2: Plastik, Metall, Plastik Wagen: Metall, Plastik, Rest Band 1: Rest, Plastik, Plastik, Rest Band 2: Plastik, Metall, Plastik Wagen: Plastik, Rest Band 1: Rest, Plastik, Plastik, Rest Band 2: Plastik, Metall, Plastik, Metall Wagen: Rest Band 1: Rest, Plastik, Plastik, Rest, Plastik Band 2: Plastik, Metall, Plastik, Metall Wagen: Band 1: Rest, Plastik, Plastik, Rest, Plastik Band 2: Plastik, Metall, Plastik, Metall, Rest h) Nachdem der Müll nun auf die Bänder verteilt ist, soll die Fabrik damit etwas machen. Schreiben Sie die Methode bearbeite ohne Rückgabe in der Klasse Fabrik. Diese Methode soll ein Array vom Typ Muell[] übergeben bekommen und darin alle Muell-Objekte der Sorte Metall entfernen (im Array durch null ersetzen) alle Muell-Objekte der Sorte Plastik reinigen (siehe unten) alle Muell-Objekte der Sorte Rest ignorieren alle null-einträge ignorieren Zum Reinigen der Plastik-Objekte schreiben Sie in der Klasse Muell die Methode reinige() und verwenden diese. Die Methode hat kein Argument und keine Rückgabe und setzt das Attribut sauber des jeweiligen Muell-Objekts auf true. Rufen Sie die Methode bearbeite nach Ihrem bisherigen Code in der main-methode der Klasse Fabrik auf und übergeben Sie das Muell-Array des zweiten Bandes. Geben Sie anschließend den Inhalt dieses Bandes aus. Daraus ergibt sich (als Fortsetzung des vorherigen Beispiels) diese Ausgabe: Band 2: Plastik (sauber), Plastik (sauber), Rest 8

Tutoraufgabe 1 (Seiteneffekte):

Tutoraufgabe 1 (Seiteneffekte): Prof. aa Dr. J. Giesl Programmierung WS12/13 M. Brockschmidt, F. Emmes, C. Otto, T. Ströder Tutoraufgabe 1 (Seiteneffekte): Betrachten Sie das folgende Programm: public class TSeiteneffekte { public static

Mehr

Tutoraufgabe 1 (Seiteneekte):

Tutoraufgabe 1 (Seiteneekte): Prof. aa Dr. M. Müller C. Aschermann, J. Hensel, J. Protze, P. Reble Allgemeine Hinweise: Die Hausaufgaben sollen in Gruppen von je 3 Studierenden aus der gleichen Kleingruppenübung (Tutorium) bearbeitet

Mehr

Tutoraufgabe 1 (Code-Analyse):

Tutoraufgabe 1 (Code-Analyse): Prof. aa Dr. J. Giesl M. Brockschmidt, F. Emmes, C. Fuhs, C. Otto, T. Ströder Allgemeine Die Hausaufgaben sollen in Gruppen von je 2 Studierenden aus der gleichen Kleingruppenübung bearbeitet werden. Namen

Mehr

Tutoraufgabe 1 (Seiteneekte):

Tutoraufgabe 1 (Seiteneekte): Prof. aa Dr. J. Giesl Programmierung WS14/15 C. Aschermann, F. Frohn, J. Hensel, T. Ströder Allgemeine Hinweise: Die Hausaufgaben sollen in Gruppen von je 2 Studierenden aus der gleichen Kleingruppenübung

Mehr

Tutoraufgabe 1 (Programmanalyse):

Tutoraufgabe 1 (Programmanalyse): Prof. aa Dr. M. Müller Programmierung WS15/16 C. Aschermann, J. Hensel, J. Protze, P. Reble Allgemeine Hinweise: Die Hausaufgaben sollen in Gruppen von je 3 Studierenden aus der gleichen Kleingruppenübung

Mehr

Tutoraufgabe 1 (Verifikation):

Tutoraufgabe 1 (Verifikation): Prof. aa Dr. M. Müller C. Aschermann, J. Hensel, J. Protze, P. Reble Allgemeine Die Hausaufgaben sollen in Gruppen von je 3 Studierenden aus der gleichen Kleingruppenübung (Tutorium) bearbeitet werden.

Mehr

Tutoraufgabe 1 (Hoare-Kalkül):

Tutoraufgabe 1 (Hoare-Kalkül): Prof. aa Dr. J. Giesl Programmierung WS16/17 F. Frohn, J. Hensel, D. Korzeniewski Allgemeine Die Hausaufgaben sollen in Gruppen von je 2 Studierenden aus der gleichen Kleingruppenübung (Tutorium) bearbeitet

Mehr

Tutoraufgabe 1 (Casting): Programmierung WS17/18 Übungsblatt 2 (Abgabe ) Allgemeine Hinweise:

Tutoraufgabe 1 (Casting): Programmierung WS17/18 Übungsblatt 2 (Abgabe ) Allgemeine Hinweise: Prof. aa Dr. J. Giesl Programmierung WS17/18 M. Hark, J. Hensel, D. Korzeniewski Allgemeine Die Hausaufgaben sollen in Gruppen von je 2 Studierenden aus der gleichen Kleingruppenübung (Tutorium) bearbeitet

Mehr

Tutoraufgabe 1 (Überladen von Methoden):

Tutoraufgabe 1 (Überladen von Methoden): Prof. aa Dr. J. Giesl Programmierung WS12/13 M. Brockschmidt, F. Emmes, C. Otto, T. Ströder Allgemeine Hinweise: Die Hausaufgaben sollen in Gruppen von je 2 Studierenden aus der gleichen Kleingruppenübung

Mehr

Tutoraufgabe 1 (Listen):

Tutoraufgabe 1 (Listen): Prof. aa Dr. J. Giesl Programmierung WS16/17 F. Frohn, J. Hensel, D. Korzeniewski Allgemeine Die Hausaufgaben sollen in Gruppen von je 2 Studierenden aus der gleichen Kleingruppenübung (Tutorium) bearbeitet

Mehr

Tutoraufgabe 1 (2 3 4 Bäume):

Tutoraufgabe 1 (2 3 4 Bäume): Prof. aa Dr. E. Ábrahám Datenstrukturen und Algorithmen SS Übungsblatt (Abgabe.0.0) F. Corzilius, S. Schupp, T. Ströder Allgemeine Hinweise: Die Hausaufgaben sollen in Gruppen von je bis Studierenden aus

Mehr

Tutoraufgabe 1 (Auswertungsstrategie):

Tutoraufgabe 1 (Auswertungsstrategie): Prof. aa Dr. M. Müller C. Aschermann, J. Hensel, J. Protze, P. Reble Allgemeine ˆ Die Hausaufgaben sollen in Gruppen von je 3 Studierenden aus der gleichen Kleingruppenübung (Tutorium) bearbeitet werden.

Mehr

Tutoraufgabe 1 (Programmanalyse):

Tutoraufgabe 1 (Programmanalyse): Prof. aa Dr. J. Giesl Programmierung WS14/15 C. Aschermann, F. Frohn, J. Hensel, T. Ströder Allgemeine Hinweise: Die Hausaufgaben sollen in Gruppen von je 2 Studierenden aus der gleichen Kleingruppenübung

Mehr

Tutoraufgabe 1 (Fibonacci-Zahlen):

Tutoraufgabe 1 (Fibonacci-Zahlen): Prof. aa Dr. J. Giesl Programmierung WS11/12 M. Brockschmidt, F. Emmes, C. Fuhs, C. Otto, T. Ströder Allgemeine Die Hausaufgaben sollen in Gruppen von je 2 Studierenden aus der gleichen Kleingruppenübung

Mehr

Tutoraufgabe 1 (Programmanalyse): Programmierung WS17/18 Übungsblatt 5 (Abgabe ) Allgemeine Hinweise:

Tutoraufgabe 1 (Programmanalyse): Programmierung WS17/18 Übungsblatt 5 (Abgabe ) Allgemeine Hinweise: Prof. aa Dr. J. Giesl M. Hark, J. Hensel, D. Korzeniewski Allgemeine Hinweise: Die Hausaufgaben sollen in Gruppen von je 2 Studierenden aus der gleichen Kleingruppenübung (Tutorium) bearbeitet werden.

Mehr

Tutoraufgabe 1 (Programmanalyse):

Tutoraufgabe 1 (Programmanalyse): Prof. aa Dr. J. Giesl F. Frohn, J. Hensel, D. Korzeniewski Allgemeine Hinweise: Die Hausaufgaben sollen in Gruppen von je 2 Studierenden aus der gleichen Kleingruppenübung (Tutorium) bearbeitet werden.

Mehr

Übung Programmierung WS 2007/08 - Blatt 6

Übung Programmierung WS 2007/08 - Blatt 6 RHEINISCH- WESTFÄLISCHE TECHNISCHE HOCHSCHULE AACHEN LEHR- UND FORSCHUNGSGEBIET INFORMATIK 2 RWTH Aachen D-52056 Aachen GERMANY http://programmierung.informatik.rwth-aachen.de LuFG Informatik II Prof.

Mehr

Tutoraufgabe 1 (SCC):

Tutoraufgabe 1 (SCC): Prof. aa Dr. E. Ábrahám Datenstrukturen und Algorithmen SS F. Corzilius, S. Schupp, T. Ströder Allgemeine Hinweise: Die Hausaufgaben sollen in Gruppen von je bis Studierenden aus der gleichen Kleingruppenübung

Mehr

Tutoraufgabe 1 (Vollständige Induktion): Tutoraufgabe 2 (Rotationen): Datenstrukturen und Algorithmen SS15 Übungsblatt 5 (Abgabe 3.6.

Tutoraufgabe 1 (Vollständige Induktion): Tutoraufgabe 2 (Rotationen): Datenstrukturen und Algorithmen SS15 Übungsblatt 5 (Abgabe 3.6. Prof. aa Dr. Ir. Joost-Pieter Katoen Allgemeine Hinweise: Christian Dehnert, Friedrich Gretz, Benjamin Kaminski, Thomas Ströder Die Hausaufgaben sollen in Gruppen von je - Studierenden aus der gleichen

Mehr

Tutoraufgabe 1 (Starke Zusammenhangskomponenten):

Tutoraufgabe 1 (Starke Zusammenhangskomponenten): für Informatik Prof. aa Dr. Ir. Joost-Pieter Katoen Allgemeine Hinweise: Datenstrukturen und Algorithmen SS1 Übungsblatt (Abgabe 4.0.01) Christian Dehnert, Friedrich Gretz, Benjamin Kaminski, Thomas Ströder

Mehr

hue12 January 24, 2017

hue12 January 24, 2017 hue12 January 24, 2017 1 Abgabehinweise Beachten Sie unbedingt diese Hinweise, sonst erhalten Sie keine Punkte aus dieser Abgabe! Für Details siehe z.b. Folien der nullten Zentralübung 1.1 Namen und Matrikelnummern

Mehr

Objektorientierte Programmierung. Kapitel 22: Aufzählungstypen (Enumeration Types)

Objektorientierte Programmierung. Kapitel 22: Aufzählungstypen (Enumeration Types) Stefan Brass: OOP (Java), 22. Aufzählungstypen 1/20 Objektorientierte Programmierung Kapitel 22: Aufzählungstypen (Enumeration Types) Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester

Mehr

Implementieren von Klassen

Implementieren von Klassen Implementieren von Klassen Felder, Methoden, Konstanten Dr. Beatrice Amrhein Überblick Felder/Mitglieder (Field, Member, Member-Variable) o Modifizierer Konstanten Methoden o Modifizierer 2 Felder und

Mehr

Übung Informatik I - Programmierung - Blatt 8

Übung Informatik I - Programmierung - Blatt 8 RHEINISCH- WESTFÄLISCHE TECHNISCHE HOCHSCHULE AACHEN LEHR- UND FORSCHUNGSGEBIET INFORMATIK II RWTH Aachen D-5056 Aachen GERMANY http://programmierung.informatik.rwth-aachen.de LuFG Informatik II Prof.

Mehr

Methoden und Wrapperklassen

Methoden und Wrapperklassen Methoden und Wrapperklassen CoMa-Übung IV TU Berlin 06.11.2012 CoMa-Übung IV (TU Berlin) Methoden und Wrapperklassen 06.11.2012 1 / 24 Themen der Übung 1 Methoden 2 Wrapper-Klassen CoMa-Übung IV (TU Berlin)

Mehr

Aufgabenblatt 2. Kompetenzstufe 2. Allgemeine Informationen zum Aufgabenblatt:

Aufgabenblatt 2. Kompetenzstufe 2. Allgemeine Informationen zum Aufgabenblatt: Aufgabenblatt 2 Kompetenzstufe 2 Allgemeine Informationen zum Aufgabenblatt: Die Abgabe erfolgt in TUWEL. Bitte laden Sie Ihr IntelliJ-Projekt bis spätestens Freitag, 01.12.2017 13:00 Uhr in TUWEL hoch.

Mehr

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

Institut für Programmierung und Reaktive Systeme 5. Dezember Programmieren I. 5. Übungsblatt Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme 5. Dezember 2016 Programmieren I 5. Übungsblatt Hinweis: Auf diesem und den folgenden Übungsblättern

Mehr

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

Programmieren, Wintersemester 13/14 Übungsleiter: Sebastian Ebers Aufgabenblatt 3 Übung zur Vorlesung Programmieren, Wintersemester 13/14 Übungsleiter: Sebastian Ebers Allgemeines Aufgabenblatt 3 Abgabe: 10.12.2013, vor der Vorlesung (14:15 Uhr, AM 1) Max.

Mehr

Tutoraufgabe 1 (Klassenhierarchie):

Tutoraufgabe 1 (Klassenhierarchie): Prof. aa Dr. M. Müller Programmierung WS15/16 C. Aschermann, J. Hensel, J. Protze, P. Reble Allgemeine Die Hausaufgaben sollen in Gruppen von je 3 Studierenden aus der gleichen Kleingruppenübung (Tutorium)

Mehr

Vorbereitende Aufgaben

Vorbereitende Aufgaben Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2018/19 Fakultät für Informatik Lehrstuhl 14 Lars Hildebrand Übungsblatt 4 Besprechung: 19. 23.11.2018 (KW 47) Vorbereitende

Mehr

Anregungen zu Übung 2

Anregungen zu Übung 2 Anregungen zu Übung 2 Allgemeine Informatik II - SS 2007 Was sind Arrays und wie kann man sie verwenden? Ein Array ist ein spezieller Datentyp, der mehrere Werte zu einer Einheit zusammenfasst. Er ist

Mehr

Tutoraufgabe 1 (Klassenhierarchien):

Tutoraufgabe 1 (Klassenhierarchien): Prof. aa Dr. J. Giesl M. Brockschmidt, F. Emmes, C. Otto, T. Ströder Allgemeine Hinweise: Die Hausaufgaben sollen in Gruppen von je 2 Studierenden aus der gleichen Kleingruppenübung (Tutorium) bearbeitet

Mehr

Tutoraufgabe 1 (Pilze):

Tutoraufgabe 1 (Pilze): Prof. aa Dr. J. Giesl Programmierung WS14/15 C. Aschermann, F. Frohn, J. Hensel, T. Ströder Tutoraufgabe 1 (Pilze): In dieser Aufgabe beschäftigen wir uns mit dem berühmten Gaunerpärchen Bonnie und Clyde.

Mehr

Tag 5. Repetitorium Informatik (Java) Dozent: Marius Kamp Lehrstuhl für Informatik 2 (Programmiersysteme)

Tag 5. Repetitorium Informatik (Java) Dozent: Marius Kamp Lehrstuhl für Informatik 2 (Programmiersysteme) Tag 5 Repetitorium Informatik (Java) Dozent: Marius Kamp Lehrstuhl für Informatik 2 (Programmiersysteme) Friedrich-Alexander-Universität Erlangen-Nürnberg Wintersemester 2017/2018 Übersicht Methoden Deklaration

Mehr

Themen der Übung. Methoden und Wrapperklassen. Vorteile von Methoden. Methoden. Grundlagen

Themen der Übung. Methoden und Wrapperklassen. Vorteile von Methoden. Methoden. Grundlagen Themen der Übung 1 Organisatorisches Methoden und Wrapperklassen 2 Methoden 3 Wrapper-Klassen CoMa-Übung IV TU Berlin 07.11.2012 Organisatorisches: Im Pool nur auf die Abgabeliste setzen, wenn ihr wirklich

Mehr

Probeklausur Java Einführung in die Informatik. Wintersemester 2014/2015

Probeklausur Java Einführung in die Informatik. Wintersemester 2014/2015 Fakultät IV NI & CV Probeklausur Java Einführung in die Informatik Wintersemester 2014/2015 Hinweis: Diese Probeklausur ist eine kleine Aufgabensammlung, die etwa dem Schwierigkeitsgrad der schriftlichen

Mehr

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

Einführung in die Programmierung für NF MI. Übung 04 Einführung in die Programmierung für NF MI Übung 04 Inhalt Arrays Einführung in Objekte Einführung in die Programmierung für NF Übung 04 2 Arrays Arrays repräsentieren Reihungen von Objekten, z.b. Variablen

Mehr

Klausur zur Lehrveranstaltung. Technische Informatik für Ingenieure WS 2008/09

Klausur zur Lehrveranstaltung. Technische Informatik für Ingenieure WS 2008/09 Klausur zur Lehrveranstaltung Technische Informatik für Ingenieure WS 2008/09 23. Februar 2009 Aufgabe 1 2 3 4 5 5 5 Summe mögliche Punkte 10 15 25 20 20 15 15 120 erreichte Punkte Note: Hinweise: Diese

Mehr

Tag 4 Repetitorium Informatik (Java)

Tag 4 Repetitorium Informatik (Java) Tag 4 Repetitorium Informatik (Java) Dozent: Michael Baer Lehrstuhl für Informatik 2 (Programmiersysteme) Friedrich-Alexander-Universität Erlangen-Nürnberg Wintersemester 2017/2018 Übersicht Arrays (Reihungen)

Mehr

Aufgabenblatt 5. Kompetenzstufe 1. Allgemeine Informationen zum Aufgabenblatt:

Aufgabenblatt 5. Kompetenzstufe 1. Allgemeine Informationen zum Aufgabenblatt: Aufgabenblatt 5 Kompetenzstufe 1 Allgemeine Informationen zum Aufgabenblatt: Die Abgabe erfolgt in TUWEL. Bitte laden Sie Ihr IntelliJ-Projekt bis spätestens Freitag, 05.01.2018 13:00 Uhr in TUWEL hoch.

Mehr

Tutoraufgabe 1 (Implementierung eines ADTs):

Tutoraufgabe 1 (Implementierung eines ADTs): Prof. aa Dr. E. Ábrahám Datenstrukturen und Algorithmen SS Übungsblatt (Abgabe.05.0) F. Corzilius, S. Schupp, T. Ströder Allgemeine Hinweise: Die Hausaufgaben sollen in Gruppen von je bis Studierenden

Mehr

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

Programmierstarthilfe SS 2010 Fakultät für Ingenieurwissenschaften und Informatik 6. Blatt Für die Woche vom bis zum 4.6. Programmierstarthilfe SS 2010 Fakultät für Ingenieurwissenschaften und Informatik 6. Blatt Für die Woche vom 31.5. bis zum 4.6.2010 (KW 22) Organisatorisches Diese Woche führen wir Methoden ein und behandeln

Mehr

Methoden. Gerd Bohlender. Einstieg in die Informatik mit Java, Vorlesung vom

Methoden. Gerd Bohlender. Einstieg in die Informatik mit Java, Vorlesung vom Einstieg in die Informatik mit Java, Vorlesung vom 2.5.07 Übersicht 1 2 definition 3 Parameterübergabe, aufruf 4 Referenztypen bei 5 Überladen von 6 Hauptprogrammparameter 7 Rekursion bilden das Analogon

Mehr

Einführung in die Programmierung I. 2.4 Felder. Thomas R. Gross. Department Informatik ETH Zürich

Einführung in die Programmierung I. 2.4 Felder. Thomas R. Gross. Department Informatik ETH Zürich 252-0027 Einführung in die Programmierung I 2.4 Felder Thomas R. Gross Department Informatik ETH Zürich Uebersicht 2.4 Felder (Vektoren, "array"s) 2.5 Verschachtelte Schleifen 2.6 "if" Anweisungen 2.7

Mehr

Institut für Informatik

Institut für Informatik Technische Universität München Institut für Informatik Lehrstuhl für Computer Graphik & Visualisierung WS 2010 Praktikum: Grundlagen der Programmierung Aufgabenblatt 4 Prof. R. Westermann, A. Lehmann,

Mehr

Übung Informatik I - Programmierung - Blatt 6

Übung Informatik I - Programmierung - Blatt 6 RHEINISCH- WESTFÄLISCHE TECHNISCHE HOCHSCHULE AACHEN LEHR- UND FORSCHUNGSGEBIET INFORMATIK II RWTH Aachen D-52056 Aachen GERMANY http://programmierung.informatik.rwth-aachen.de LuFG Informatik II Prof.

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 34 Einstieg in die Informatik mit Java Klassen mit Instanzmethoden Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 34 1 Definition von Klassen 2 Methoden 3 Methoden

Mehr

int i=1; //Integerzahl i anlegen und mit 1 initialisieren float wert; //Floatzahl deklarieren scanf( %f,&wert); //Wert über Tastatur eingeben

int i=1; //Integerzahl i anlegen und mit 1 initialisieren float wert; //Floatzahl deklarieren scanf( %f,&wert); //Wert über Tastatur eingeben Datenfelder (Array) Seite 1 von 7 Bei den bisherigen Programmen wurde für jede verwendete Variable (oder für jedes Objekt) ein eigener Typ und Name vergeben. Die Initialisierung, d.h. die Belegung mit

Mehr

Java Methoden. Informatik 1 für Nebenfachstudierende Grundmodul. Kai-Steffen Hielscher Folienversion: 1. Februar 2017

Java Methoden. Informatik 1 für Nebenfachstudierende Grundmodul. Kai-Steffen Hielscher Folienversion: 1. Februar 2017 Informatik 1 für Nebenfachstudierende Grundmodul Java Methoden Kai-Steffen Hielscher Folienversion: 1. Februar 2017 Informatik 7 Rechnernetze und Kommunikationssysteme Inhaltsübersicht Kapitel 3 - Java

Mehr

1 Klassen und Objekte

1 Klassen und Objekte 1 Klassen und Objekte Datentyp - Spezifikation des Typs von Datenobjekten Datenstruktur - logische Ordnung von Elementen eines Datentyps - zur (effizienten) Speicherung, Verwaltung, Zugriff - auf die Elemente

Mehr

Objektorientiertes Programmieren (Java)

Objektorientiertes Programmieren (Java) Grundlagen Objektorientiertes Programmieren (Java) Java folgt gewissen Rechtschreibregeln die Syntax. Diese besagt, dass hinter jeden Befehl ein Semikolon( ; ) stehen muss, damit der Computer weiß, dass

Mehr

Ausgabe:

Ausgabe: Aufgabe 2.10: Schreiben Sie ein Programm, das zunächst die Quadratzahlen zu den Zahlen 1-10 mit Hilfe einer While- Schleife und danach die Quadratzahlen zu den Zahlen 3, 6, 9,.., 30 mit Hilfe einer For-Schleife

Mehr

Tutoraufgabe 1 (Werkzeugkasten): Programmierung WS18/19 Übungsblatt 4 (Abgabe Freitag, den um 12:00) Allgemeine Hinweise:

Tutoraufgabe 1 (Werkzeugkasten): Programmierung WS18/19 Übungsblatt 4 (Abgabe Freitag, den um 12:00) Allgemeine Hinweise: Prof. aa Dr. J. Giesl S. Dollase, M. Hark, D. Korzeniewski Allgemeine Die Hausaufgaben sollen in Gruppen von je 2 Studierenden aus der gleichen Kleingruppenübung (Tutorium) bearbeitet werden. Namen und

Mehr

EidP. Blocktutorium SS 2014

EidP. Blocktutorium SS 2014 EidP. Blocktutorium SS 2014 Praktischer Teil //Programmieren = Theoriewissen + Handwerk; Bücher, Folien, Videos, Vorträge,... Können Theorie vermitteln. Der Rest ist ÜBUNG! Beste Vorbereitung: Programmieren

Mehr

Institut für Informatik und Angewandte Kognitionswissenschaften

Institut für Informatik und Angewandte Kognitionswissenschaften Grundlegende Programmiertechniken (»Programmierung«), WS 2007/2008 Übungsblatt 5 Präsenzaufgaben: 11, 12, 13 Hausaufgabe: 14 Aufgabe 11 STRING- UND OBJEKT-VERGLEICH String s1 = new String("Test String");

Mehr

Java: Eine kurze Einführung an Beispielen

Java: Eine kurze Einführung an Beispielen Java: Eine kurze Einführung an Beispielen Quellcode, javac und die JVM Der Quellcode eines einfachen Java-Programms besteht aus einer Datei mit dem Suffix.java. In einer solchen Datei wird eine Klasse

Mehr

Übungsblatt 2. Java Vorkurs (WS 2017)

Übungsblatt 2. Java Vorkurs (WS 2017) Übungsblatt 2 Java Vorkurs (WS 2017) Aufgabe 1 Logische Operatoren Manchmal ist es wichtig zwei Werte miteinander zu vergleichen. Dazu gibt es in Java folgende Vergleichsoperatoren: Text Math. Zeichen

Mehr

hue13 January 30, 2017

hue13 January 30, 2017 hue13 January 30, 2017 1 Abgabehinweise Beachten Sie unbedingt diese Hinweise, sonst erhalten Sie keine Punkte aus dieser Abgabe! Für Details siehe z.b. Folien der nullten Zentralübung 1.1 Namen und Matrikelnummern

Mehr

Tag 8 Repetitorium Informatik (Java)

Tag 8 Repetitorium Informatik (Java) Tag 8 Repetitorium Informatik (Java) Dozent: Michael Baer Lehrstuhl für Informatik 2 (Programmiersysteme) Friedrich-Alexander-Universität Erlangen-Nürnberg Wintersemester 2017/2018 Informatik-Repetitorium

Mehr

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 08: Mehr zu Klassen Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme 1. Teil: Wiederholung Heutige Agenda Verwendung der ArrayList 2. Teil: Weitere Aspekte der OO

Mehr

Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme

Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme Programmieren I Dr. Werner Struckmann 6. März 2013 Name: Vorname: Matrikelnummer: Kennnummer: Anrede: Frau Herr Studiengang:

Mehr

GI Vektoren

GI Vektoren Vektoren Problem: Beispiel: viele Variablen vom gleichen Typ abspeichern Text ( = viele char-variablen), Ergebnisse einer Meßreihe ( = viele int-variablen) hierfür: Vektoren ( = Arrays = Feld ) = Ansammlung

Mehr

PROCESSING EINE ZUSAMMENFASSUNG. Created by Michael Kirsch & Beat Rossmy

PROCESSING EINE ZUSAMMENFASSUNG. Created by Michael Kirsch & Beat Rossmy PROCESSING EINE ZUSAMMENFASSUNG Created by Michael Kirsch & Beat Rossmy INHALT 1. Typen und Operatoren 1. Datentypen 3. Klassen und Objekte 1. Klassen und Objekte 2. Operatoren 2. Konstruktor 3. Typkonversion

Mehr

Klausur zur Lehrveranstaltung. Technische Informatik für Ingenieure WS 2009/10

Klausur zur Lehrveranstaltung. Technische Informatik für Ingenieure WS 2009/10 Klausur zur Lehrveranstaltung Technische Informatik für Ingenieure WS 2009/10 22. Februar 2010 Aufgabe 1 2 3 4 5 6 7 Summe mögliche Punkte 15 15 20 15 20 20 15 120 erreichte Punkte Note: Hinweise: Diese

Mehr

Erste Java-Programme (Scopes und Rekursion)

Erste Java-Programme (Scopes und Rekursion) Lehrstuhl Bioinformatik Konstantin Pelz Erste Java-Programme (Scopes und Rekursion) Tutorium Bioinformatik (WS 18/19) Konstantin: Konstantin.pelz@campus.lmu.de Homepage: https://bioinformatik-muenchen.com/studium/propaedeutikumprogrammierung-in-der-bioinformatik/

Mehr

pue13 January 28, 2017

pue13 January 28, 2017 pue13 January 28, 2017 1 Aufgabe 1 (Klammern und Anweisungsblöcke) Wie Sie in der Vorlesung gelernt haben, werden Anweisungsblöcke in Java nicht durch Einrückung, sondern mithilfe von geschweiften Klammern

Mehr

Tag 4 Repetitorium Informatik (Java)

Tag 4 Repetitorium Informatik (Java) Tag 4 Repetitorium Informatik (Java) Dozent: Patrick Kreutzer Lehrstuhl für Informatik 2 (Programmiersysteme) Friedrich-Alexander-Universität Erlangen-Nürnberg Wintersemester 2016/2017 Willkommen zum Informatik-Repetitorium!

Mehr

Vorbereitende Aufgaben

Vorbereitende Aufgaben Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2017/18 Fakultät für Informatik Lehrstuhl 14 Lars Hildebrand Übungsblatt 4 Besprechung: 13. 17.11.2017 (KW 46) Vorbereitende

Mehr

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Martin Unold INFORMATIK. Geoinformatik und Vermessung Wiederholung So sieht ein leeres Java-Programm aus public class Programmname { public static void main (String[] args) { // Hier stehen die Anweisungen Welche Arten von Anweisungen gibt es? Anweisungen

Mehr

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

Institut für Programmierung und Reaktive Systeme 7. Mai Programmieren II. 11. Übungsblatt Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme 7. Mai 2018 Programmieren II 11. Übungsblatt Hinweis: Auf diesem und den folgenden Übungsblättern

Mehr

Programmieren in Java -Eingangstest-

Programmieren in Java -Eingangstest- Programmieren in Java -Eingangstest- Nummer: 1. Studiengang: Informatik B.Sc. Informatik M.Sc. ESE B.Sc. ESE M.Sc. Sonstiges: Fachsemester: Bitte Fragen, die Sie nicht beantworten können unbedingt mit

Mehr

Programmiertechnik Klassenvariablen & Instantiierung

Programmiertechnik Klassenvariablen & Instantiierung Programmiertechnik Klassenvariablen & Instantiierung Prof. Dr. Oliver Haase Oliver Haase Hochschule Konstanz 1 Klassenvariablen Zur Erinnerung: Klassen bestehen aus Variablen und Methoden; beide zusammen

Mehr

Vorsichtige Programmierer verwenden Inkrement- Operatoren nicht in komplizierteren Ausdrücken

Vorsichtige Programmierer verwenden Inkrement- Operatoren nicht in komplizierteren Ausdrücken Vorsichtige Programmierer verwenden Inkrement- Operatoren nicht in komplizierteren Ausdrücken Aufgabe 1.60 a) Welchen Wert erhält die boolesche Variable z in folgendem Beispiel? int i = 2, j = 5; boolean

Mehr

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Martin Unold INFORMATIK. Geoinformatik und Vermessung Wiederholung So sieht ein leeres Java-Programm aus public class Programmname { public static void main (String[] args) { // Hier stehen die Anweisungen Anweisungen mit Variablen Wiederholung Deklaration

Mehr

Einfache Arrays. Dr. Philipp Wendler. Zentralübung zur Vorlesung Einführung in die Informatik: Programmierung und Softwareentwicklung

Einfache Arrays. Dr. Philipp Wendler. Zentralübung zur Vorlesung Einführung in die Informatik: Programmierung und Softwareentwicklung Dr. Philipp Wendler Zentralübung zur Vorlesung Einführung in die Informatik: Programmierung und Softwareentwicklung WS18/19 https://www.sosy-lab.org/teaching/2018-ws-infoeinf/ Arrays: Wiederholung Ein

Mehr

Verkettete Datenstrukturen: Listen

Verkettete Datenstrukturen: Listen Verkettete Datenstrukturen: Listen 2 Listen Formal: Liste = endliche Folge von Elementen [a 1, a 2,..., a n ]. Spezialfall: leere Liste [ ]. Länge einer Liste = Anzahl der Elemente (bei leerer Liste: 0).

Mehr

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 06: Einführung in Kontrollstrukturen Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil: Einführung in Kontrollstrukturen 3 Grundstrukturen von

Mehr

Probeklausur zur Vorlesung

Probeklausur zur Vorlesung Dr. Jochen Hoenicke Alexander Nutz Probeklausur zur Vorlesung Einführung in die Informatik Sommersemester 2014 Die Klausur besteht aus diesem Deckblatt und elf Blättern mit den Aufgaben, sowie einem Blatt

Mehr

Übungen zu Computeranwendung und Programmierung WS 18/19. Quer durch den Krautgarten dieses Semesters...

Übungen zu Computeranwendung und Programmierung WS 18/19. Quer durch den Krautgarten dieses Semesters... 17 01 01 Übungen zu Computeranwendung und Programmierung WS 18/19 Übungseinheit 14. - 18. Jänner 2019 Themen: Quer durch den Krautgarten dieses Semesters... Aufgabe 1 Schreiben Sie die Klasse KumulativeMaxima

Mehr

Tag 7 Repetitorium Informatik (Java)

Tag 7 Repetitorium Informatik (Java) Tag 7 Repetitorium Informatik (Java) Dozent: Patrick Kreutzer Lehrstuhl für Informatik 2 (Programmiersysteme) Friedrich-Alexander-Universität Erlangen-Nürnberg Wintersemester 2017/2018 Informatik-Repetitorium

Mehr

Grundlagen der Programmierung

Grundlagen der Programmierung Grundlagen der Programmierung Einführung in die strukturierte Programmierung Teil 5 Die Inhalte der Vorlesung wurden primär auf Basis der angegebenen Literatur erstellt. Darüber hinaus sind viele Teile

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java Vorlesung vom 6.11.07, Weitere Anweisungen Übersicht 1 Verbundanweisung 2 Bedingte Anweisung 3 Auswahlanweisung 4 for Schleife 5 while Schleife 6 do Schleife 7 break Anweisung 8 continue Anweisung 9 Leere

Mehr

Programmierung WS12/13 Lösung - Übung 1 M. Brockschmidt, F. Emmes, C. Otto, T. Ströder

Programmierung WS12/13 Lösung - Übung 1 M. Brockschmidt, F. Emmes, C. Otto, T. Ströder Prof. aa Dr. J. Giesl Programmierung WS12/13 M. Brockschmidt, F. Emmes, C. Otto, T. Ströder Tutoraufgabe 1 (Syntax und Semantik): 1. Was ist Syntax? Was ist Semantik? Erläutern Sie den Unterschied. 2.

Mehr

Java Referenzdatentypen genauer betrachtet

Java Referenzdatentypen genauer betrachtet Informatik 1 für Nebenfachstudierende Grundmodul Java Referenzdatentypen genauer betrachtet Kai-Steffen Hielscher Folienversion: 23. Januar 2018 Informatik 7 Rechnernetze und Kommunikationssysteme Referenzdatentypen

Mehr

Die for -Schleife HEUTE. Schleifen. Arrays. Schleifen in JAVA. while, do reichen aus, um alle iterativen Algorithmen zu beschreiben

Die for -Schleife HEUTE. Schleifen. Arrays. Schleifen in JAVA. while, do reichen aus, um alle iterativen Algorithmen zu beschreiben 18.11.5 1 HEUTE 18.11.5 3 Schleifen Arrays while, do reichen aus, um alle iterativen Algorithmen zu beschreiben Nachteil: Steuermechanismus ist verteilt Übersicht nicht immer leicht dazu gibt es for (

Mehr

Probeklausur Java Einführung in die Informatik. Wintersemester 2016/2017

Probeklausur Java Einführung in die Informatik. Wintersemester 2016/2017 Fakultät IV NI & CV Java Einführung in die Informatik Wintersemester 2016/2017 Hinweis: Diese ist eine kleine Aufgabensammlung, die etwa dem Schwierigkeitsgrad der schriftlichen Prüfung des Moduls Einführung

Mehr

Variablen. int Flugzeug. float. I write code Hund. String. long. Borchers: Programmierung für Alle (Java), WS 06/07 Kapitel

Variablen. int Flugzeug. float. I write code Hund. String. long. Borchers: Programmierung für Alle (Java), WS 06/07 Kapitel 4213 Variablen 17.834 float Flugzeug 36812736294 I write code Hund long String Borchers: Programmierung für Alle (Java), WS 06/07 Kapitel 3 + 4 1 Variablen sind wie Becher. Sie speichern etwas. // Variablen

Mehr

Programmierung WS12/13 Lösung - Präsenzübung M. Brockschmidt, F. Emmes, C. Otto, T. Ströder

Programmierung WS12/13 Lösung - Präsenzübung M. Brockschmidt, F. Emmes, C. Otto, T. Ströder Prof. aa Dr. J. Giesl M. Brockschmidt, F. Emmes, C. Otto, T. Ströder Aufgabe 1 (Programmanalyse): (9 + 1 = 10 Punkte) a) Geben Sie die Ausgabe des Programms für den Aufruf java M an. Tragen Sie hierzu

Mehr

Probeklausur Java Einführung in die Informatik. Wintersemester 2017/2018

Probeklausur Java Einführung in die Informatik. Wintersemester 2017/2018 Fakultät IV NI & CV Java Einführung in die Informatik Wintersemester 2017/2018 Hinweis: Diese ist eine kleine Aufgabensammlung, die etwa dem Schwierigkeitsgrad der schriftlichen Prüfung des Moduls Einführung

Mehr

Arbeitsblatt zu Methoden

Arbeitsblatt zu Methoden Arbeitsblatt zu Methoden In den vorhergehenden Programmen haben wir bereits jede Menge Methoden benutzt: 1. kara.move(), kara.turnright(), kara.putleaf() Dies sind alles Methoden, die etwas ausführen,

Mehr

Aufgabenblatt 3. Kompetenzstufe 1. Allgemeine Informationen zum Aufgabenblatt:

Aufgabenblatt 3. Kompetenzstufe 1. Allgemeine Informationen zum Aufgabenblatt: Aufgabenblatt 3 Kompetenzstufe 1 Allgemeine Informationen zum Aufgabenblatt: Die Abgabe erfolgt in TUWEL. Bitte laden Sie Ihr IntelliJ-Projekt bis spätestens Freitag, 24.11.2017 13:00 Uhr in TUWEL hoch.

Mehr

Basispruefung Herbst 2016/ Einführung in die Programmierung

Basispruefung Herbst 2016/ Einführung in die Programmierung Basispruefung Herbst 2016/17 0027 Einführung in die Programmierung Departement Informatik ETH Zürich Nachname: Vorname: Stud.number: Mit Ihrer Unterschrift bestätigen Sie, dass Sie folgenden Hinweise zur

Mehr

Tutoraufgabe 1 (Fibonacci-Zahlen):

Tutoraufgabe 1 (Fibonacci-Zahlen): Prof. aa Dr. J. Giesl Programmierung WS12/13 M. Brockschmidt, F. Emmes, C. Otto, T. Ströder Tutoraufgabe 1 (Fibonacci-Zahlen): Die Folge der Fibonacci-Zahlen ist folgendermaßen definiert: F 0 = 0 F 1 =

Mehr

Repetitorium Informatik (Java)

Repetitorium Informatik (Java) Repetitorium Informatik (Java) Tag 6 Lehrstuhl für Informatik 2 (Programmiersysteme) Übersicht 1 Klassen und Objekte Objektorientierung Begrifflichkeiten Deklaration von Klassen Instanzmethoden/-variablen

Mehr

C# - Einführung in die Programmiersprache Methoden. Leibniz Universität IT Services

C# - Einführung in die Programmiersprache Methoden. Leibniz Universität IT Services C# - Einführung in die Programmiersprache Methoden Leibniz Universität IT Services 02.07.12 Methoden... sind Subroutinen in einer Klasse. können einen Wert an den Aufrufer zurückgeben. verändern die Eigenschaften

Mehr

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Martin Unold INFORMATIK. Geoinformatik und Vermessung Zusammenfassung Was ist eine Programmiersprache? Eine Sprache, die Formal eindeutig in Maschinenbefehle übersetzbar ist Für Menschen einfacher verständlich ist als Bytecode Zur Formulierung von Datenstrukturen

Mehr

Teil 2: Weitere Aspekte der Objektorientierung

Teil 2: Weitere Aspekte der Objektorientierung Teil 2: Weitere Aspekte der Objektorientierung Klassenvariablen So wie es Instanzvariablen gibt, die zu einer gewissen Instanz (Objekt) gehören und deren Attribute speichern, so gibt es aus Klassenvariablen:

Mehr

Fachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 10

Fachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 10 Gudrun Fischer Sascha Kriewel programmierung@is.informatik.uni-duisburg.de Übungsblatt Nr. 10 Aufgabe 20: Code Verständnis Löse diese Aufgabe selbständig als Vorbereitung zur Übung auf dem Papier. a) Gib

Mehr

Matrikelnummer: 1 Aufgabe 1: Quickies (30 Punkte) a) Wird das folgende Programm von einem Java-Übersetzer ohne Beanstandungen übersetzt? Falls nicht,

Matrikelnummer: 1 Aufgabe 1: Quickies (30 Punkte) a) Wird das folgende Programm von einem Java-Übersetzer ohne Beanstandungen übersetzt? Falls nicht, Wir begrüßen Sie zur Klausur zum Kurs 1618 " Einführung in die objektorientierte Programmierung. Beachten Sie: Dies ist NICHT die Klausur zum Kurs 1814. Bitte lesen Sie die folgenden Hinweise sorgfältig

Mehr

Klausur Grundlagen der Programmierung

Klausur Grundlagen der Programmierung Klausur Grundlagen der Programmierung Aufgabenstellung: Martin Schultheiß Erreichte Punktzahl: von 60 Note: Allgemeine Hinweise: Schreiben Sie bitte Ihren Namen auf jedes der Blätter Zugelassene Hilfsmittel

Mehr