java f ur nichtinformatiker - · pdf filejava f ur nichtinformatiker - probeklausur - die...

11
JAVA f¨ ur Nichtinformatiker - Probeklausur - Die folgenden Aufgaben sollten in 150 Minuten bearbeitet werden. Aufgabe 1: Erl¨ autere kurz die Bedeutung der folgenden Java-Schl¨ usselw¨ orter und gib Sie jeweils ein Beispiel f¨ ur ihre Verwendung an. (a) int osung: int ist die Bezeichnung des Datentyps Integer, der ganze Zahlen repr¨ asentiert. 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;

Upload: vuongngoc

Post on 06-Feb-2018

215 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: JAVA f ur Nichtinformatiker - · PDF fileJAVA f ur Nichtinformatiker - Probeklausur - Die folgenden Aufgaben sollten in 150 Minuten bearbeitet werden. Aufgabe 1: Erl autere kurz die

JAVA fur Nichtinformatiker- Probeklausur -

Die folgenden Aufgaben sollten in 150 Minuten bearbeitet werden.

Aufgabe 1:Erlautere kurz die Bedeutung der folgenden Java-Schlusselworter und gib Sie jeweils einBeispiel fur ihre Verwendung an.

(a) int

Losung: int ist die Bezeichnung des Datentyps Integer, der ganze Zahlen reprasentiert.Beispiel: Der Befehlint 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;

Page 2: JAVA f ur Nichtinformatiker - · PDF fileJAVA f ur Nichtinformatiker - Probeklausur - Die folgenden Aufgaben sollten in 150 Minuten bearbeitet werden. Aufgabe 1: Erl autere kurz die

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 enthalt der Array vec am Ende der Ausfuhrung?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 an-schließend die Quadratzahlen 12, . . . , n2 auf dem Bildschirm ausgeben. Die Ausgabe soll wiefolgt 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

Page 3: JAVA f ur Nichtinformatiker - · PDF fileJAVA f ur Nichtinformatiker - Probeklausur - Die folgenden Aufgaben sollten in 150 Minuten bearbeitet werden. Aufgabe 1: Erl autere kurz die

_

Aufgabe 5:Die folgende Methode erhalt eine positive ganze Zahl n als Parameter und gibt die Zahlenvon 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 aquivalente 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 aquivalente 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 f0, f1, f2, f3, . . . sind durch die Rekursionsvorschrift

f0 = 0

f1 = 1

fn = fn−1 + fn−2 fur n ≥ 2

gegeben.

(a) Berechne f6.

Losung:

(b) Schreibe Sie eine Java-Methode public int fib rek(int n), die zu einer gegebenenZahl n ≥ 0 die Fibonacci-Zahl fn rekursiv berechnet und zuruckgibt.

Page 3

Page 4: JAVA f ur Nichtinformatiker - · PDF fileJAVA f ur Nichtinformatiker - Probeklausur - Die folgenden Aufgaben sollten in 150 Minuten bearbeitet werden. Aufgabe 1: Erl autere kurz die

public int fib_rek(int n)

{

}

(c) Schreibe eine Java-Methode public int fib it(int n), die zu einer gegebenen Zahln ≥ 0 die Fibonacci-Zahl fn iterativ (d.h. ohne Rekursion) berechnet und zuruckgibt.

public int fib_it(int n)

{

}

Aufgabe 7:Die Quersumme einer naturlichen Zahl ist die Summe ihrer Ziffern. (Beispiel: Die Quersum-me 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 zuruckgibt.

public int quersumme(int n)

{

}

Page 4

Page 5: JAVA f ur Nichtinformatiker - · PDF fileJAVA f ur Nichtinformatiker - Probeklausur - Die folgenden Aufgaben sollten in 150 Minuten bearbeitet werden. Aufgabe 1: Erl autere kurz die

Aufgabe 8:Betrachte die folgenden vier Java-Klassen:

import eip .*;

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);

}

}

import eip .*;

public class B extends A

{

public B(int x)

{

super(x);

Std.out.println("Erzeuge B-Objekt");

}

public void increment(int y)

{

y++;

}

}

import eip .*;

public class C extends B

{

public C(int x)

{

super(x);

Std.out.println("Erzeuge C-Objekt");

}

Page 5

Page 6: JAVA f ur Nichtinformatiker - · PDF fileJAVA f ur Nichtinformatiker - Probeklausur - Die folgenden Aufgaben sollten in 150 Minuten bearbeitet werden. Aufgabe 1: Erl autere kurz die

public void foo(int n)

{

while ((n > 0) && (x-- >= 0))

;

Std.out.println(x);

}

}

import eip .*;

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 Ausfuhrung der Klasse TestABC?

_

(b) Welche der in den Klassen A, B und C vorkommenden Methoden kann man mit demSchlusselwort static versehen, ohne einen Compilerfehler zu erzeugen? (Antwort be-grunden!)

_

Page 6

Page 7: JAVA f ur Nichtinformatiker - · PDF fileJAVA f ur Nichtinformatiker - Probeklausur - Die folgenden Aufgaben sollten in 150 Minuten bearbeitet werden. Aufgabe 1: Erl autere kurz die

Aufgabe 9:Die folgende Java-Klasse Circle soll einen Kreis reprasentieren. Implementiere die Metho-den perimeter(), diameter(), overlap(), distance() und draw().

import eip .*;

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 Flacheninhalt

{

return Math.PI * r * r;

}

public double perimeter () // berechnet den Umfang

{

}

public double diameter () // berechnet den Durchmesser

{

}

/* gibt genau dann true zuruck , wenn sich die Kreise

this und that uberlappen */

public boolean overlap(Circle that)

{

}

Page 7

Page 8: JAVA f ur Nichtinformatiker - · PDF fileJAVA f ur Nichtinformatiker - Probeklausur - Die folgenden Aufgaben sollten in 150 Minuten bearbeitet werden. Aufgabe 1: Erl autere kurz die

// 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 Flacheninhalt von K ist πr2.

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 ′

uberlappen 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 uberlappen, und ande-renfalls

√(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 ColoredCircleerweitert werden, die einen gefarbten Kreis reprasentiert.

import java.awt .*;

import eip .*;

public class ColoredCircle extends Circle

{

private Color c;

Page 8

Page 9: JAVA f ur Nichtinformatiker - · PDF fileJAVA f ur Nichtinformatiker - Probeklausur - Die folgenden Aufgaben sollten in 150 Minuten bearbeitet werden. Aufgabe 1: Erl autere kurz die

// 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 Methodepublic void draw(...). Dabei soll draw(...) auf die gleichnamige Methode der Super-klasse zuruckgreifen.

Aufgabe 11:In dieser Aufgabe soll eine Turtle uber Tastatureingaben durch den Benutzer gesteuertwerden. Die beiden zulassigen Befehle sind:

D: Zeichne ein gleichseitiges Dreieck der Seitenlange 50 und gehe 50 Schritte nachrechts.

Q: Zeichne ein Quadrat der Seitenlange 50 und gehe 50 Schritte nach rechts.

Die einzelnen Befehle werden dabei durch ein ; abgeschlossen - beispielsweise soll die Ein-gabe Q;D;D;Q;D; zu der Ausgabe

fuhren. Fehlerhafte und unzulassige Eingaben soll das Programm uberspringen, bis dasnachste ; gelesen wird. Das gewunschte Verhalten wird durch den folgenden endlichenAutomaten formal beschrieben:

Page 9

Page 10: JAVA f ur Nichtinformatiker - · PDF fileJAVA f ur Nichtinformatiker - Probeklausur - Die folgenden Aufgaben sollten in 150 Minuten bearbeitet werden. Aufgabe 1: Erl autere kurz die

q0start

q1

q2

q3

D

Q

default

; ; [zeichne Dreieck]

default

;

default

; [zeichne Quadrat]

default

Implementiere diesen Automaten durch Vervollstandigung der Methode public static

void verarbeiteZeichen(char inputChar) im folgenden Java-Programm.

import eip .*;

public class Aufgabe11 {

static TurtleScreen ts = new TurtleScreen ();

static Turtle t = new Turtle(ts);

static int q; // Zustand des Automaten

public static void verarbeiteZeichen(char inputChar)

{

Page 10

Page 11: JAVA f ur Nichtinformatiker - · PDF fileJAVA f ur Nichtinformatiker - Probeklausur - Die folgenden Aufgaben sollten in 150 Minuten bearbeitet werden. Aufgabe 1: Erl autere kurz die

}

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