JAVA für Nichtinformatiker - Probeklausur -

Ähnliche Dokumente
Beispiele für Ausdrücke. Der imperative Kern. Der imperative Kern. Imperativer Kern - Kontrollstrukturen. Deklarationen mit Initialisierung

Humboldt-Universität zu Berlin Wintersemester 2010/11 Institut für Informatik Grundlagen der Programmierung. 6. Übungsblatt

Informatik B von Adrian Neumann

Programmierkurs Java

Sommersemester Jewgeni Rose. Technische Universität Braunschweig

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

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch)

Zentralübung Grundlagen der Programmierung

Programmieren in Java -Eingangstest-

Objektorientierung (OO)

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

Musterlösung Stand: 5. Februar 2009

1.2 Attribute und Methoden Aufbau einer Java-Klasse:

Kapitel 13. Abstrakte Methoden und Interfaces. Fachgebiet Knowledge Engineering Prof. Dr. Johannes Fürnkranz

JAVA - Methoden

Einstieg in die Informatik mit Java

Algorithmen und Datenstrukturen

Test-Klausuraufgaben Softwaretechnik Fachbereich BW, für WINFO

Tag 4 Repetitorium Informatik (Java)

Probeklausur Informatik 2 Sommersemester 2013

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

Ausgabe:

Klassenvariablen, Klassenmethoden

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

Einstieg in die Informatik mit Java

Universität zu Lübeck Institut für Telematik. Prof. Dr. Stefan Fischer

Wiederholung der Endklausur am 24. September 2013

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

Methoden und Klassen. Silke Trißl Wissensmanagement in der Bioinformatik

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

Probeklausur: Programmierung WS04/05

Klausur Informatik I WS 2006/2007

Wiederholung Wozu Methoden? Methoden Schreiben Methoden Benutzen Rekursion?! Methoden. Javakurs 2012, 3. Vorlesung

Arbeitsblatt zu Methoden

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

Silke Trißl, Prof. Ulf Leser Wissensmanagement in der Bioinformatik. Jede Applikation braucht eine Klasse mit einer main-methode

Klausur Software-Entwicklung März 01

Silke Trißl Wissensmanagement in der Bioinformatik. Objektorientierte Programmierung (OOP) Vorstellung wie in der realen Welt: Farbe Hubraum Tank...

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

Thomas Gewering Benjamin Koch Dominik Lüke. (geschachtelte Schleifen)

Einstieg in die Informatik mit Java

Folienpaket 7 Themenschwerpunkte: Methoden in OOP /2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4

1 Klassen anlegen und Objekte erzeugen

1 Klassen anlegen und Objekte erzeugen

Sie müssen den Test bis 20:00 Uhr am Abgabetag dieses Übungszettels absolviert haben.

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch)

Objektorientierte Programmierung Studiengang Medieninformatik

II.3.1 Rekursive Algorithmen - 1 -

Aufgabenblatt: OOP - Seite 1. (2.) Geometrie: Erstellen Sie eine Klasse CPyramid, die sich von der Klasse Square ableitet:

Arbeitsblätter für die Lehrveranstaltung OOP JAVA 1

Einführung Datentypen Verzweigung Schleifen. Java Crashkurs. Kim-Manuel Klein May 4, 2015

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java

Primitive Datentypen

Objektorientierte Programmierung Studiengang Medieninformatik

Übungsblatt 2. Java Vorkurs (WS 2017)

Übungsblatt 2. Java Vorkurs (WS 2015)

Aufgabe 1 (12 Punkte)

public class SternchenRechteckGefuellt {

1. Erste Schritte 2. Einfache Datentypen 3. Anweisungen und Kontrollstrukturen 4. Verifikation 5. Reihungen (Arrays)

TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK

Grundlagen der Objektorientierung

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

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

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

Algorithmen und Datenstrukturen

Kleines Java-Glossar zum Praktikum Einführung in das Programmieren

Java 8. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Oktober 2014 JAV8

System.out.println("TEXT");

import JavaKaraProgram; public class Quadrat extends JavaKaraProgram { // Anfang von Quadrat void turnaround() { kara.turnleft(); kara.

CoMa 04. Java II. Paul Boeck. 7. Mai Humboldt Universität zu Berlin Institut für Mathematik. Paul Boeck CoMa 04 7.

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

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung

14 Abstrakte Klassen, finale Klassen, Interfaces

1.) Zahlensysteme (10 Punkte)

5. Tutorium zu Programmieren

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

Welche Informatik-Kenntnisse bringen Sie mit?

14 Abstrakte Klassen, finale Klassen, Interfaces. Auswertung von Ausdrücken. Beispiel. Abstrakte Methoden und Klassen

Javakurs für Anfänger

Test-Driven Design: Ein einfaches Beispiel

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

Statische und Nichtstatische Methoden Properties/ Eigenschaften

Beuth Hochschule Parameter-Übergabe-Mechanismen WS17/18, S. 1

5 Grundlagen der Java-Syntax

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter

Ausdrucksbäume in verschiedenen Darstellungen

JAVA - Methoden - Rekursion

Transkript:

JAVA für Nichtinformatiker - Probeklausur - Die folgenden Aufgaben sollten in 150 Minuten bearbeitet werden. Aufgabe 1: Erläutere kurz die Bedeutung der folgenden Java-Schlüsselwörter und gib Sie jeweils ein Beispiel für ihre Verwendung an. (a) int Lösung: int ist die Bezeichnung des Datentyps Integer, der ganze Zahlen repräsentiert. Beispiel: Der Befehl int n = 5; deklariert eine Variable n vom Typ int und initialisiert sie auf den Wert 5. (b) return _ (c) void _ (d) extends _ Aufgabe 2: Betrachte den folgenden Ausschnitt eines Java-Programms. int a = 2, b = 5; boolean g = false ; g = g (--a * b == b); if (g) b += a + 3;

a = b; b = a; Std. out. print ("a = " + a + ", b = " + b + ", g = " + g); Wie lautet die Ausgabe? a =, b =, g = Aufgabe 3: Betrachte den folgenden Ausschnitt eines Java-Programms. int [] vec = 1,2,3,4,5; for ( int i = 3; i < 7; i ++) if (i%2 == 0) continue ; vec [i -2] *= vec [i -3]; Welche Werte enthält der Array vec am Ende der Ausführung? v[0] =, v[1] =, v[2] =, v[3] =, v[4] = Aufgabe 4: public int quadrate () Std. out. print (" Bitte eine Zahl n >0 eingeben : n="); int n = Std.in. readint () Std. out. print (" Die ersten " n " Quadratzahlen : "); for (i = 0; i < n; i ++); Std. out. print (i*i + " "); Die obige Java-Methode soll eine positive ganze Zahl n von der Tastatur einlesen und anschließend die Quadratzahlen 1 2,..., n 2 auf dem Bildschirm ausgeben. Die Ausgabe soll wie folgt aussehen: Bitte eine Zahl n>0 eingeben: n=5 Die ersten 5 Quadratzahlen: 1 4 9 16 25 Allerdings haben sich im obigen Quelltext einige Fehler eingeschlichen. (a) Unterstreiche alle Fehler im Quelltext. (b) Gib eine korrigierte Fassung der Methode an. Page 2

_ Aufgabe 5: Die folgende Methode erhält eine positive ganze Zahl n als Parameter und gibt die Zahlen von 1 bis n auf dem Bildschirm aus. public void zahlen_for ( int n) for ( int i = 1; i <= n; i ++) Std. out. println (i); (a) Implementiere eine dazu äquivalente Methode public void zahlen while(int n), die mit einer while-schleife anstelle eine for-schleife operiert. public int zahlen_while ( int n) (b) Implementiere eine weitere dazu äquivalente Methode public void zahlen rek(int n), die rekursiv arbeitet (die Methode soll also keine Schleife enthalten). public int zahlen_rek ( int n) Aufgabe 6: Die Fibonacci-Zahlen f 0, f 1, f 2, f 3,... sind durch die Rekursionsvorschrift gegeben. (a) Berechne f 6. Lösung: f 0 = 0 f 1 = 1 f n = f n 1 + f n 2 für n 2 (b) Schreibe Sie eine Java-Methode public int fib rek(int n), die zu einer gegebenen Zahl n 0 die Fibonacci-Zahl f n rekursiv berechnet und zurückgibt. Page 3

public int fib_ rek ( int n) (c) Schreibe eine Java-Methode public int fib it(int n), die zu einer gegebenen Zahl n 0 die Fibonacci-Zahl f n iterativ (d.h. ohne Rekursion) berechnet und zurückgibt. public int fib_ it ( int n) Aufgabe 7: Die Quersumme einer natürlichen Zahl ist die Summe ihrer Ziffern. (Beispiel: Die Quersumme von 2634 ist 2+6+3+4 = 15). Schreibe eine Java-Methode public int quersumme(int n), die zu einer gegebenen Zahl n 0 die Quersumme berechnet und zurückgibt. public int quersumme ( int n) Page 4

Aufgabe 8: Betrachte die folgenden vier Java-Klassen: public class A public int x; public A( int x) this.x = x; Std. out. println (" Erzeuge A- Objekt "); public void foo ( int n) for ( int i = 0; i < n; i ++) for ( int j = 0; j < n; j ++) x ++; Std. out. println (x); public class B extends A public B( int x) super (x); Std. out. println (" Erzeuge B- Objekt "); public void increment ( int y) y ++; public class C extends B public C( int x) super (x); Std. out. println (" Erzeuge C- Objekt "); Page 5

public void foo ( int n) while ((n > 0) && (x-- >= 0)) ; Std. out. println (x); public class TestABC public static void main ( String [] args ) A a = new A (1); B b = new B (0); C c = new C (5); b. foo (50); c. foo (50); int y = 5; b. increment (y); Std. out. println (y); (a) Welche Bildschirmausgabe produziert die Ausführung der Klasse TestABC? _ (b) Welche der in den Klassen A, B und C vorkommenden Methoden kann man mit dem Schlüsselwort static versehen, ohne einen Compilerfehler zu erzeugen? (Antwort begründen!) _ Page 6

Aufgabe 9: Die folgende Java-Klasse Circle soll einen Kreis repräsentieren. Implementiere die Methoden perimeter(), diameter(), overlap(), distance() und draw(). public class Circle private double x, y; // Koordinaten des Mittelpunktes private double r; // Radius // Konstruktor public Circle ( double x, double y, double r) this.x = x; this.y = y; this.r = r; public double area () // berechnet den Flächeninhalt return Math. PI * r * r; public double perimeter () // berechnet den Umfang public double diameter () // berechnet den Durchmesser /* gibt genau dann true zurück, wenn sich die Kreise this und that überlappen */ public boolean overlap ( Circle that ) Page 7

// berechnet den Abstand zwischen this und that public double distance ( Circle that ) /* zeichnet den Kreis auf dem Bildschirm unter Verwendung der Turtle t */ public void draw ( Turtle t) Hinweise: Sei K ein Kreis mit Mittelpunkt (x, y) und Radius r. Der Flächeninhalt von K ist πr 2. Der Umfang von K ist 2πr. Der Durchmesser von K ist 2r. Sie K ein zweiter Kreis mit Mittelpunkt (x, y ) und Radius r. Die Kreise K und K überlappen sich genau dann, wenn (x x ) 2 + (y y ) 2 r + r ist. Der Abstand von K und K ist 0, falls die beiden Kreise sich überlappen, und anderenfalls (x x ) 2 + (y y ) 2 r r. Zeichne den Kreis in der Methode draw(...) als n-eck mit großer Eckenzahl n (z.b. n=360). Aufgabe 10: Nun soll die Klasse Circle aus Aufgabe 8 mittels Vererbung zu einer Klasse ColoredCircle erweitert werden, die einen gefärbten Kreis repräsentiert. import java. awt.*; public class ColoredCircle extends Circle private Color c; Page 8

// Konstruktor public ColoredCircle ( double x, double y, double r, Color c) /* zeichnet den farbigen Kreis auf dem Bildschirm unter Verwendung der Turtle t */ public void draw ( Turtle t) Implementiere den obigen Konstruktor public ColoredCircle(...) sowie die Methode public void draw(...). Dabei soll draw(...) auf die gleichnamige Methode der Superklasse zurückgreifen. Aufgabe 11: In dieser Aufgabe soll eine Turtle über Tastatureingaben durch den Benutzer gesteuert werden. Die beiden zulässigen Befehle sind: D: Zeichne ein gleichseitiges Dreieck der Seitenlänge 50 und gehe 50 Schritte nach rechts. Q: Zeichne ein Quadrat der Seitenlänge 50 und gehe 50 Schritte nach rechts. Die einzelnen Befehle werden dabei durch ein ; abgeschlossen - beispielsweise soll die Eingabe Q;D;D;Q;D; zu der Ausgabe führen. Fehlerhafte und unzulässige Eingaben soll das Programm überspringen, bis das nächste ; gelesen wird. Das gewünschte Verhalten wird durch den folgenden endlichen Automaten formal beschrieben: Page 9

q 1 D default start ; ; [zeichne Dreieck] q 0 default ; Q default q 3 default ; [zeichne Quadrat] q 2 Implementiere diesen Automaten durch Vervollständigung der Methode public static void verarbeitezeichen(char inputchar) im folgenden Java-Programm. public class Aufgabe11 static TurtleScreen ts = new TurtleScreen (); static Turtle t = new Turtle ( ts ); static int q; // Zustand des Automaten public static void ve rarbei tezeic hen ( char inputchar ) Page 10

public static void main ( String [] args ) q = 0; // Startzustand ist 0 char inputchar ; t.pd (); do inputchar = Std. in. readchar (); verarbeitezeichen ( inputchar ); while ( inputchar!= x ); Std. out. println (" FERTIG "); Page 11