zur vorherigen Seite   zum Inhaltsverzeichnis   zur nächsten Seite

Antwort:

Das fertige Programm steht unten.

Vollständiges Programm

Das vollständige Programm kann kopiert, in einen Editor eingefügt und auf die übliche Weise ausgeführt werden.

import java.util.Scanner;

// Anwender wählt den Endwert für die Zeit, t
// Das Programm berechnet und gibt die Entfernung aus,
// die der Ziegelstein in der Zeit t zurückgelegt hat
//
class FallenderZiegelstein
{
  public static void main (String[] args )
  {
    final double G = 9.80665;  // Konstante für Gravitationsbeschleunigung
    int    t, zeit;            // Zeit in Sekunden und Endwert der Zeit
    double entfernung;         // die Entfernung, die der Ziegelstein
                               // zurückgelegt hat
    Scanner scan = new Scanner( System.in );

    System.out.println( "Zeit in Sekunden:" );
    zeit = scan.nextInt();

    // Übschrift ausgeben
    System.out.println( "Sekunden\tEntfernung"  );
    System.out.println( "-------\t--------"  );

    t         = 0 ;
    while (  t <= zeit )
    {
      entfernung = (G * t * t)/2 ;
      System.out.println( t + "\t" + entfernung );

      t = t + 1 ;
    }
  }
}

Wir könnten ebenfalls schreiben entfernung = 0.5 * G * t * t ; bzw.
entfernung = (1.0 / 2.0) * G * t * t ;.

Was waren die zwei Fallen beim Übersetzen der Formel?

Wenn wir sie mit (1/2) * G * t * t übersetzt hätten, wären wir in die erste Falle gegangen. (1/2) fordert eine Ganzzahl-Division von 1 durch 2, Ergebnis 0.

Wenn wir die Formel mit 1/2 * G * t * t, übersetzt hätten, wären wir in die zweite Falle gegangen. Für den Compiler, sieht das aus wie die erste falsche Formel (da "/" die gleiche Präzedenz wie "*" hat).

Ein drittes Problem ist die Berechnung des Quadrats. Wir multiplizieren t mit t.

FRAGE 15:

Jetzt einmal angenommen wir wollen eine Tabelle, um die Erhöhung der Zeit in 0.1 Sekundenschritten zu zeigen. Wir modifizieren das Programm, so dass es das mit einem Maximum an Genauigkeit tut. Der Anwender wird immer noch den Endwert in Sekunden eingeben.