Wiederholung der Endklausur am 24. September 2013

Ähnliche Dokumente
Übersicht. Informatik 2 Teil 3 Anwendungsbeispiel für objektorientierte Programmierung

Programmierkurs Java

PIWIN 1 Übung Blatt 5

Studentische Lösung zum Übungsblatt Nr. 7

Teilprüfung Software- und Internettechnologie Programmierkurs 1 Wintersemester 2005/2006

Objektorientierte Programmierung

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

Universität Augsburg, Institut für Informatik Sommersemester 2005 Prof. Dr. Werner Kießling 15. Oktober 2005 Dr. Alfons Huhn, Timotheus Preisinger

Probeklausur: Programmierung WS04/05

Distributed Computing Group

Java: Vererbung. Teil 3: super()

Software Engineering Klassendiagramme Einführung

Primitive Datentypen

5.4 Klassen und Objekte

Klausur zur Einführung in die objektorientierte Programmierung mit Java

Java-Schulung Grundlagen

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI

Algorithmen und Datenstrukturen

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden.

Testklausur 1 zur Vorlesung. Modellierung und Programmierung I. Dr. Monika Meiler Zeit: 60 Minuten

Java Einführung Collections

Bearbeitungszeit: 120 Minuten. Kommentare kosten Zeit; kommentieren Sie ihr Programm nur da, wo der Code alleine nicht verständlich wäre.

5. Tutorium zu Programmieren

Computeranwendung und Programmierung (CuP)

Java Einführung Methoden in Klassen

Java Programmierung auf der Konsole / unter Eclipse

Programmieren in Java

Übungen zur Vorlesung Einführung in die Informatik Wintersemester 2010/11

Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005

Einführung in Java. PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005

Tutorium Java Ein Überblick. Helge Janicke

Java Database Connectivity (JDBC) Walther Rathenau Gewerbeschule 1

Programmiervorkurs WS 2012/2013. Schleifen und Methoden

1. Grundzüge der Objektorientierung 2. Methoden, Unterprogramme und Parameter 3. Datenabstraktion 4. Konstruktoren 5. Vordefinierte Klassen

Kapitel 6. Vererbung

Datenbankanwendungsprogrammierung Crashkurs Java

Java Einführung Programmcode

PIWIN I. Praktische Informatik für Wirtschaftsmathematiker, Ingenieure und Naturwissenschaftler I. Vorlesung 3 SWS WS 2007/2008

Klausurteilnehmer. Wichtige Hinweise. Note: Klausur Informatik Programmierung, Seite 1 von 8 HS OWL, FB 7, Malte Wattenberg.

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

Java 7. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Dezember 2011 JAV7

Einführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein

Vorkurs C++ Programmierung

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = Euro ergeben.

Propädeutikum zur Programmierung

II.1.1. Erste Schritte - 1 -

Javakurs für Anfänger

1 Polymorphie (Vielgestaltigkeit)

Kapitel 6. Vererbung

Versuchsziele Kenntnisse in der Anwendung von: Sortieren mit Klassen Benutzung von generischen Klassen o Definition o Sortierung.

Kapitel 6. Vererbung

Liebe Leserin, lieber Leser, in der ersten Auflage von Programmieren lernen mit Java von Hans- Peter Habelitz sind einige Fehler zu korrigieren.

Vorkurs Informatik WiSe 15/16

Einführung in die Programmierung für Wirtschaftsinformatik

Inhalt: Version 1.7.5

Einführung in Javadoc

Ein erstes Java-Programm

Universität Augsburg, Institut für Informatik Sommersemester 2005 Prof. Dr. Werner Kießling 16. Juli 2005 Dr. Alfons Huhn, Timotheus Preisinger

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden.

Problemstellung. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 24: Reflection 1. IDE und automatische Tests.

EINI WiMa/LW. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 11/12

Klausur zur Einführung in die objektorientierte Programmierung mit Java

Grundlagen Programmierung

Programmiervorkurs. Organisation: Steffen Gebert, Alexander Wolff. Tutoren: Jürgen Zöller, Jonathan Stoll. Wintersemester 2012/2013

Institut fu r Informatik

Sichtbarkeit & statische Methoden. Einsatz von Sichtbarkeit Einsatz statischer Methoden programmatische Realisierung 2 Beispielaufgaben

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

Praktikum Informatik II Prof. Dr. Martin Trauth, Dr. Michael Männel

Einführung in die Java- Programmierung

Java Kurs für Anfänger Einheit 4 Klassen und Objekte

Programmieren in Java

Musterlösungen zur Klausur Informatik 3

5.5.8 Öffentliche und private Eigenschaften

equals und hashcode SortedSet NavigableSet Assoziative Container Programmieren II Dr. Klaus Höppner Hochschule Darmstadt Sommersemester / 32

Programmiersprachen Einführung in C. Unser erstes C-Programm. Unser erstes C-Programm. Unser erstes C-Programm. Unser erstes C-Programm

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2

Objekt-Orientierte Programmierung

Gliederung. Tutorium zur Vorlesung. Gliederung. Gliederung. 1. Gliederung der Informatik. 1. Gliederung der Informatik. 1. Gliederung der Informatik

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

Dr. Monika Meiler. Inhalt

3 Objektorientierte Konzepte in Java

Arbeiten mit BlueJ. Objektorientiertes Programmieren in Java mit BlueJ

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

Grundlagen von Python

Objektorientierte Programmierung mit C++ Vector und List

Hello World. Javakurs 2014, 1. Vorlesung. Sebastian Schuck. basierend auf der Vorlage von Arne Kappen. wiki.freitagsrunde.org. 3.

Hochschule Niederrhein Grundlagen der Prof. Dr. Nitsche Fachbereich 03 Java Programmierung Bachelor Informatik SS 2015 Übung 1. Grundlagen von Java

KV Software Engineering Übungsaufgaben SS 2005

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 17: 3-Schichten-Architektur 2

Autor: Michael Spahn Version: 1.0 1/10 Vertraulichkeit: öffentlich Status: Final Metaways Infosystems GmbH

Informatik 11 Kapitel 2 - Rekursive Datenstrukturen

Programmieren I. Prinzipieller Ablauf. Eigenschaften von JAVA. Source-Code Javac Bytecode. Java Virtual Machine (Java, Browser, Appletviewer)

Einfache Rechenstrukturen und Kontrollfluss II

Fakultät Angewandte Informatik Programmierung verteilter Systeme Übungen zur Vorlesung Informatik II, Blatt 6

Jetzt sollt ihr von der Vorlage der Grundversion 1.0 ein eigenes Textadventure erstellen.

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

Objektorientierte Programmierung

Anleitung. Ein einfaches RMI-Beispiel. (ab Java 5.0) c Y. Pfeifer. (Juni 2014)

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

5. Abstrakte Klassen

Transkript:

Brandenburgische Technische Universität Cottbus-Senftenberg Institut für Informatik, Informations- und Medientechnik PD Dr.-Ing. habil. T. Hinze, Prof. Dr. phil. habil. G. Wagner Sommersemester 2013 Einführung in die Programmierung Wiederholung der Endklausur am 24. September 2013 Name: Matrikelnr.: Vorname: Studiengang: Hinweise Die Bearbeitungszeit beträgt 120 Minuten. Außer einem dokumentenechten Stift (schwarz oder blau) sind keinerlei Hilfsmittel zugelassen. Ebenso darf kein selbst mitgebrachtes Papier verwendet werden. Notieren Sie bitte auf dem Deckblatt Ihren Namen, Vornamen, Studiengang und Ihre Matrikelnr. Schreiben Sie Ihre Lösungen zu den Aufgaben in die freigelassenen Stellen zwischen den Aufgaben. Falls der Platz nicht ausreicht, werden Ihnen auf Anforderung weitere Blätter zur Verfügung gestellt. Nehmen Sie sich kurz Zeit, um zunächst alle Aufgaben durchzulesen, bevor Sie mit der Bearbeitung beginnen. Aufgabe 1 2 3 4 5 6 7 Σ Max. Punkte 10 10 10 10 10 10 10 70 Erreichte Punkte Viel Erfolg! Aufgabe 1 (Ausgewähltes Grundlagen- und Faktenwissen) 1. Nennen Sie zwei verschiedene Sprachkonstrukte in Java, mit denen sich Fallunterscheidungen ausdrücken lassen. (2 Punkte) 1

2. Welche der folgenden drei Aussagen (a) bis (c) sind richtig und welche falsch? (3 Punkte) (a) Java ist eine objektorientierte, plattformunabhängige und statisch getypte Programmiersprache........................................................................................ (b) Jede Java-Klasse muss eine main-methode enthalten........................................................................................ (c) Vom Java-Compiler erzeugte.class-dateien können mit der Java Virtual Machine ausgeführt werden........................................................................................ 3. Wo sind Attribute und Methoden sichtbar, die als private gekennzeichnet sind? (1 Punkt) 4. Wieviel Bit Speicher belegt ein Wert vom Typ double in Java? (1 Punkt) 5. Welchen Dezimalwert hat die als Hexadezimalzahl in Java gegebene Konstante 0xA? (1 Punkt) 6. Gegeben seien folgende Variablenvereinbarungen in Java: double x = 2.0e+2; long y; Welche Rechenergebnisse liefern die folgenden zwei Ausdrücke jeweils für y? (2 Punkte) y = (long) x;......................................................................... y = (long) x % (long) x;.......................................................... 2

Aufgabe 2 (Programmtransformation von JavaScript nach Java) Überführen Sie folgendes JavaScript-Programm zur Berechnung aller Primzahlen bis 100 mit dem Sieb des Erathostenes in ein semantisch äquivalentes Java-Programm, in welchem keine for-schleifen verwendet werden. Semantisch äquivalent bedeutet hier, dass in der JavaScript- und in der Java-Version gleiche Ausgaben entstehen. <script type="text/javascript"> var n = 100; var gestrichen = new Array(); for(var i = 2; i < n; i = i+1) { gestrichen[i] = false; for(var i = 2; i < n; i = i+1) { if (!gestrichen[i]) { //i ist prim, gib i aus document.writeln(i); //Streiche seine Vielfachen i*i, i*i+i, i*i+2*i,..., n for(var k = i*i; k < n; k = k + i) { gestrichen[k] = true; </script> Verwenden Sie folgendes Java-Programmgerüst: public class PrimzahlenBis100 { public static void main(string[] args) { int n = 100; boolean gestrichen[] = new boolean[n+1]; //main //class 3

Aufgabe 3 (Verstehen eines gegebenen Java-Programmes) Gegeben sei folgendes Java-Programm: public class MagischeFunktion { public static void main(string[] args) { int n = Integer.parseInt(args[0]); int i = 1; if (n < 0) { System.out.println("Fehlerhafte Eingabe."); else { if (n > 1) { i = n; while (n > 1) { n = n - 1; i = i * n; System.out.println(i); 1. Wieviele Argumente werden bei Aufruf von MagischeFunktion erwartet und in welchen Datentyp werden sie umgewandelt? (2 Punkte) 2. Welche Ausgabe wird durch den Aufruf java MagischeFunktion 1 erzeugt? (1,5 Punkte) 3. Welche Ausgabe wird durch den Aufruf java MagischeFunktion 2 erzeugt? (1,5 Punkte) 4. Welche Ausgabe wird durch den Aufruf java MagischeFunktion 3 erzeugt? (1,5 Punkte) 5. Welche Ausgabe wird durch den Aufruf java MagischeFunktion 4 erzeugt? (1,5 Punkte) 6. Wie heißt die durch das Programm berechnete Funktion auf natürlichen Zahlen in der Mathematik? (2 Punkte) 4

Aufgabe 4 (Fehler in gegebenem Java-Quelltext finden und beseitigen) Das folgende Java-Programm soll den Flächeninhalt und den Inkreisradius eines regelmäßigen Fünfecks bestimmen, dessen Seitenlänge a vom Nutzer eingegeben wird. Damit berechnet sich der Flächeninhalt durch a 2 4 p und der Inkreisradius durch a 10 p, wobei p = 25 + 10 5. Das gegebene Java-Programm enthält zehn Fehler, die eine erfolgreiche Compilierung verhindern. Kennzeichnen Sie die fehlerhaften Stellen im Quelltext, und beseitigen Sie die Fehler. import java.util.*; clas Pentagon { public static void main(string[] a) { double a = 0.0 String erg; System.out.print("Regelmaessiges Fuenfeck - Eingabe der Seitenlaenge: "); Scanner sc = new Scan(System.in); a = Double.parseDouble(sc.next()); if (a < 0) { System.out.printIn("Seitenlaenge ungueltig."); return; if (a = 0) { erg = "Flaecheninhalt: 0, Inkreisradius: 0"; else { erg = "Flaecheninhalt: " + Flaecheninhalt(a) + ", Inkreisradius: " + Inkreisradius(a); System.out.println(erg); public static double Inkreisradius(double s) double p = Math.sprt(25.0 + 10.0 * Math.sqrt(5.0)); return s * p / 10; public double Flaecheninhalt(double s) { double p = Inkreisradius(s) * 10 / s; return s * s * p / 4; 5

Aufgabe 5 (Java-Lückenquelltext zur Verwaltung von 2D-Punktkoordinaten) Gegeben ist das folgende lückenhafte Java-Programm zur Verwaltung von 2D-Punktkoordinaten, das aus den zwei Klassen MeinePunkte2D sowie Punkt2D besteht. Wir nehmen dazu ein zweidimensionales kartesisches Koordinatensystem an, dessen x-achse wie in der Mathematik üblich horizontal von links nach rechts verläuft und dessen y-achse vertikal von unten nach oben gerichtet ist. In der Klasse Punkt2D werden x-wert und y-wert eines Punktes als private Attribute geführt, die über die Methoden GibXWert und GibYWert von außerhalb der Klasse ausgelesen werden können. Vervollständigen Sie die Lücken im gegebenen Programm, indem Sie an den grau hinterlegten Stellen entsprechenden Programmcode ergänzen. Der resultierende Programmcode soll die jeweils als Kommentar beschriebene Funktionalität umsetzen und ohne weitere Ergänzungen compilierbar und fehlerfrei ausführbar sein. An den vorgegebenen Quelltextteilen dürfen keine Veränderungen vorgenommen werden. public class MeinePunkte2D { public static void main(string[] args) { //Punkt (2, 4) anlegen als Objekt a der Klasse Punkt2D //Punkt a ausgeben mittels der Methode Ausgeben //Punkt (7, 12) anlegen als Objekt b der Klasse Punkt2D //Punkt b verschieben um 2 Einheiten nach links //und 4 Einheiten nach unten mittels der Methode Verschiebe //Bestimme den Abstand zwischen den Punkten a und b mittels der //Methode BerechneAbstandZu und gib den berechneten Abstand aus class Punkt2D { private double x; private double y; public Punkt2D(double xwert, double ywert) { this.x = xwert; this.y = ywert; public double GibXWert() {return x; public double GibYWert() {return y; public String Ausgeben() {return "(" + x + ", " + y + ")"; 6

public void Verschiebe(double diffx, double diffy) { //Verschiebt den als Attributwerte gespeicherten Punkt um //den Wert diffx nach links sowie um den Wert diffy nach unten public double BerechneAbstandZu(Punkt2D p) { //Berechnet den Abstand zwischen dem als Attributwerte //gespeicherten Punkt und dem uebergebenen Punkt p. //Der Abstand zwischen zwei Punkten (x 1, y 1 ) und (x 2, y 2 ) //ist durch die Formel (x 1 x 2 ) 2 + (y 1 y 2 ) 2 definiert. 7

Aufgabe 6 (Lineare Liste) Mit der generischen Klasse LinkedList steht in Java ein vorgefertigtes Instrument zur Verwaltung dynamischer linearer Listen zur Verfügung. Als Elemente einer solchen Liste können Objekte einer beliebigen, frei wählbaren Klasse dienen, deren Klassenname (z.b. Druckjob) hinter LinkedList in spitzen Klammern angegeben wird. In der Klasse LinkedList gibt es u.a. die vordefinierten öffentlichen Methoden add zum Hinzufügen eines neuen Elementes am Listenende, get zur Bereitstellung des Elementes an der i-ten Position (Zählung beginnt mit 0) und remove zum Löschen des Elementes an der i-ten Position (Zählung beginnt mit 0). Die Methode size liefert die Anzahl Elemente in der Liste. Implementieren Sie unter Nutzung der generischen Klasse LinkedList eine Warteschlange für Druckjobs. Der dazu benötigte Quellcode besteht aus drei Klassen: Schreiben Sie eine Klasse Druckjob, die als privates Attribut eine Jobnummer (integer-zahl) enthält. Darüber hinaus besitzt die Klasse einen Konstruktor, dem eine Jobnummer übergeben wird. Er legt ein neues Objekt an und übernimmt die Jobnummer als Attributwert. Zusätzlich soll die Klasse eine öffentliche Methode getjobnummer haben, die die als Attribut hinterlegte Jobnummer zurückgibt. class Druckjob { //class Vervollständigen Sie die Klasse Warteschlange, die mittels LinkedList eine lineare Liste von Druckjobs verwaltet. Als privates Attribut führt die Klasse Warteschlange diese lineare Liste als Objekt jobs. Die Methode IstLeer liefert den booleschen Wert true zurück, wenn die Warteschlange mindestens ein Element besitzt, ansonsten false. Die Methode Anhaengen übergibt einen neuen Druckjob an die Warteschlange. Dazu fügt sie den Druckjob am Ende der Warteschlange ein. Die Methode Drucken entfernt den Druckjob am Anfang der Warteschlange aus der Liste, sofern die Warteschlange nicht leer ist. class Warteschlange { private LinkedList<Druckjob> jobs; 8

public Warteschlange() {jobs = new LinkedList<Druckjob>(); //class Schreiben Sie eine Klasse MeineDruckerwarteschlange, die lediglich die main-methode enthält. Darin wird ein Objekt tintenspritz der Klasse Warteschlange angelegt, anschließend werden hintereinander zwei Druckjobs mit den Jobnummern 314 und 815 erzeugt und in die Warteschlange mittels Anhaengen eingestellt, danach erfolgt einmal der Aufruf zum Drucken, im Anschluss wird ein neuer Job mit der Nummer 4712 erzeugt und in die Warteschlange platziert und letztendlich erfolgen abschließend noch zwei Aufrufe zum Drucken. public class MeineDruckerwarteschlange { public static void main(string[] args) { //main //class 9

Aufgabe 7 (Algorithmische Programmierübung) i=0 i=0 Schreiben Sie ein Java-Programm, das den Nutzer zunächst auffordert, 5 Zahlenwerte a 0 bis a 4 vom Typ int einzugeben. Anschließend soll das Programm den kleinsten der eingegebenen Zahlenwerte (Minimum) und den größten der eingegebenen Zahlenwerte (Maximum) bestimmen sowie das arithmetische 4 4 Mittel m = 1 5 a i und die Streuung v = 1 5 (a i m) 2 berechnen. Die erhaltenen Ergebnisse für Minimum, Maximum, m und v sollen vom Programm geeignet ausgegeben werden. Beachten Sie, dass mögliche Nachkommaanteile von m und v berücksichtigt werden. Ihr Java-Programm soll ohne weitere Ergänzungen compilierbar und ausführbar sein. 10