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