q1:java-methoden2

Methoden in Java

Wir verlassen jetzt zunächst die Grafikprogrammierung und betrachten einige andere Beispiele zu Funktionen. Zu Beginn soll eine JAVA-Funktion realisiert werden, die die Fakultät einer Zahl berechnet. Die Fakultät ist dabei wie folgt definiert:

Fakultät von 6, kurz 6! = 6·5·4·3·2·1.

Die Fakultätsfunktion benötigt eine Ganzzahl (Datentyp int) und gibt ein long-Ergebnis zurück. Long wurde gewählt, da Fakultäten sehr schnell groß werden. Zunächst die grafische Oberfläche: Und nun der Quelltext:

long fak(int n)  //long bedeutet, dass die Funktion einen long-Wert zurückgibt
                   //fak ist der selbst gewählte Name der Funktion
                   //n ist der benötigte Übergabeparameter vom Typ int
  {
    long produkt=1;
    for (int i=1;i<=n;i++)
    {
       produkt = produkt*i;
    }
    return produkt; // return bedeutet, dass der dahinterstehende Wert
                    // der Variablen der Rückgabewert der Funktion ist
  }
 
  // Anfang Ereignisprozeduren
  public void jButton1_ActionPerformed(ActionEvent evt)
  {
    //Einlesen der Zahl:
    int zahl = Integer.parseInt(jTextField1.getText());
    long fakultaet;
 
    //Rufe Funktion auf:
    fakultaet = fak(zahl);
 
    //Ausgabe:
    jTextField2.setText(Long.toString(fakultaet));
  }
  // Ende Ereignisprozeduren

Aufgaben

Gib für jede der folgenden Methode einen passenden Methodenkopf an. Die Programmierung der Methode ist nicht verlangt!

  1. Die Summe von zwei int-Zahlen wird berechnet und zurückgegeben.
  2. Der Flächeninhalt eines Quadrats der Seitenlänge a wird berechnet und auf dem Bildschirm ausgegeben.
  3. Eine Zufallszahl zwischen 17 und 45 wird ermittelt und zurückgegeben.
  4. Es wird getestet, ob die erste übergebene double-Zahl größer als die zweite ist. Das Ergebnis der Überprüfung soll ans Hauptprogramm zurückgeliefert werden.
  5. Das Produkt von drei Zahlen wird berechnet. Ist es positiv, so wird „Hallo“ in einem Textfeld ausgegeben, sonst passiert nicht.

Gesucht ist ein Programm, bei dem der Benutzer drei integer-Zahlen eingeben kann, von dem dann die Summe, das Produkt und das Maximum bestimmt werden. Für jede dieser drei Aufgaben ist eine passende Java-Funktion zu schreiben, sodass das Hauptprogramm wie folgt aussieht:

  // Anfang Ereignisprozeduren
  public void jButton1_ActionPerformed(ActionEvent evt)
  {
     int a = Integer.parseInt(jTextField1.getText());
     int b = Integer.parseInt(jTextField2.getText());
     int c = Integer.parseInt(jTextField3.getText());
 
     jTextField4.setText(Integer.toString(Summe(a,b,c)));
     jTextField5.setText(Integer.toString(Produkt(a,b,c)));
     jTextField6.setText(Integer.toString(Maximum(a,b,c)));
  }
  // Ende Ereignisprozeduren

Erstelle ein Programm, das die Potenz ab mit einer Java-Funktion berechnet. Das Hauptprogramm soll die Eingabe der Basis und der Hochzahl gestatten, die Funktion erhält diese beiden Werte und gibt das Ergebnis zurück.

Was leistet das folgende Programm bzw. die darin enthaltene Java-Funktion? Wie müsste eine passende grafische Oberfläche aussehen? Wie könnten sinnvolle Kommentare für die Stellen (1) bis (5) lauten?

Erstelle ein Programm, das Nullstellen nach dem Intervallhalbierungsverfahren berechnet. Informiere dich zunächst über das Intervallhalbierungsverfahren.

  • Erstelle ein Struktogramm.
  • Erstelle eine grafische Oberfläche.
  • Erstelle eine eigene Methode f, der eine double-Zahl als x-Wert übergeben wird und die den Funktionswert f(x) als double-Zahl für die in der Methode festgelegte Funktion zurückgibt.

Erstelle die Ereignismethode, die bei Knopfdruck die Nullstelle berechnet und ausgibt.

Sinnvoll wäre ein Programmteil, der der der Funktionsterm als String übergeben wird und die daraus eine Methode bildet, die in der Lage ist, Funktionswerte zu berechnen. Ein solcher Funktionenparser liegt im Moment außerhalb unserer Möglichkeiten. In zukünftigen Beispielen werden wir deshalb auf ein package zurückgreifen, das dieses „Parsen“ beherrscht.

  • /var/www/infowiki/data/pages/q1/java-methoden2.txt
  • Zuletzt geändert: 2017/07/11 09:10
  • von admin03