FU Berlin, Institut für Informatik
Java-Programmierkurs
WS 2000/2001
Margarita Esponda
2.
Übungsblatt
1.
Aufgabe
a) Nehmen wir an, folgende Variablen seien deklariert worden:
Deklarationen: Was ist der Typ folgender Ausdrücke?
char c; b && false l = i = s
short s; +7.35 i + s
long
l; l + d f + s
float f;
i == 0 i += s
boolean b; "0" + 7 !b
double d;, i + 1.0 5e-3
int i; c + c i/0
b) Welche Ausdrücke sind nicht erlaubt. Warum?
f = 0.0 d =
4000000000 i = 4.0
1.5f -16b l = ( i = s )
!i i = l += s (long) s
i += f s = s + I l = (long) d
(short) s i / 0 (char) I
c) Was ist der Wert folgender Ausdrücke ?
i = 10
i = i + 10
i += 20
i = 2 + ( i = 7 )
i < 9 ? 0 : 1
i + "10"
d) Welche Werte haben folgende Ausdrücke, wenn x den Anfangswert 0 und y den Anfangswert 2 hat? Welche Werte haben x und y am Ende?
--x y = ++x x++ + y x
= y++ -(x--) - -(--b)
2.
Aufgabe
Starte das Spirograph-Programm (siehe unsere Internet-Seite unter Übungen) und versuche, folgende Aufgaben zu realisieren:
a) Der Punkt soll sich mit einer konstanten Geschwindigkeit in einer
beliebiger Richtung bewegen.
b) Der Punkt soll sich ständig bewegen, aber nur innerhalb eines Rechtecks.
c) Versuche, den Punkt zu beschleunigen.
d) Male einen Kreis oder die Sinusfunktion mit Hilfe der
java.lang.Math Klasse von java.
e) Male ein Quadrat.
f) Wie wäre es mit ein paar parametrischen Funktionen?
x = 31cos t – 7 cos (31/7)t
y = 31sin t – 7 sin (31/7)t
( 0 £ t £ 14 p )
x = 17cos t + 7 cos(17/7)t
y = 17sin t – 7 sin(17/7)t
( 0 £ t £ 14 p )
x = cos t
+ (1/2)cos 7t + (1/3)sin 17t
y = sin t
+ (1/2)sin 7t + (1/3)cos 17t
(-5£ t £ 5)
3.
Aufgabe
a) Programmiere den Inhalt der Methoden der Klasse Time, die noch leer sind.
public class Time {
//
Instanzvariablen
private int seconds;
private int minutes;
private int hours;
// Konstruktor
public
Time() {
seconds = 0;
minutes = 0;
hours = 0;
}
// Methoden
public void nextHour()
{
// hier programmieren!!
}
public void nextMinute()
{
// hier programmieren!!
}
public void nextSecond()
{
// hier programmieren!!
}
public void setTime( int sekunden, int minuten, int stunden )
{
// hier programmieren!!
}
public void printTime()
{ System.out.print(
twoDigits(hours) + ":" );
System.out.print(
twoDigits(minutes) + ":" );
System.out.println( twoDigits(seconds));
}
private static String twoDigits( int number ) {
if ( number<10 )
return
"0" + number ;
else
return
"" + number ;
}
} // end of class Time
a) Übersetze und teste die Methoden der Klasse Time mit folgender Klasse.
public class TestTime {
public
static void main ( String [] args )
{
int lifeTime = 100; // Probiert hier mit anderen Zahlen!
Time time = new Time(); // Ein Objekt der Klasse Time wird erzeugt
time.setTime( 20, 30, 55 );
time.printTime();
for ( int i=0; i<lifeTime; i++ ) {
time.nextSecond();
time.printTime();
}
time.setTime( -3, 100, 30 ); // ???????????
}
} // end of class TestTime