studyklar
GdI 1 · Übungsblatt 5 · Aufgabe 3

Quadratische Gleichung als Java-Programm

In Übungsblatt 3 wurde ein Algorithmus entworfen, der bei einer quadratischen Gleichung entscheidet: keine, eine oder zwei reelle Lösungen. Jetzt wird er zu einem Java-Programm. Den Ausschlag gibt der Wert unter der Wurzel; drei Fälle werden zu if, else if und else. Rechts steht das Programm, die Zeilen zum aktuellen Schritt sind hervorgehoben.

Die Aufgabe

Aufgabe 5.3

Realisieren Sie den von Ihnen in Aufgabe 3.4 entwickelten Algorithmus als Java-Programm A5_3!

Das Programm liest die Zahlen bb und cc der Gleichung x2+bx+c=0x^2 + bx + c = 0 ein. Dann sagt es, wie viele reelle Lösungen sie hat. Zusätzlich gibt es die Lösungen selbst aus; das verlangt Aufgabe 3.4 nicht, kostet aber nur zwei Zeilen.

Aus Blatt 3, Aufgabe 4 („Quadratische Gleichung: Zahl der Lösungen“): Gesucht war ein Algorithmus, der b und c einliest und ermittelt, ob x2+bx+c=0x^2 + bx + c = 0 keine, genau eine oder zwei reelle Lösungen hat, dargestellt als Flussdiagramm. Grundlage ist die Formel x1,2=−b2±b24−cx_{1,2} = -\frac{b}{2} \pm \sqrt{\frac{b^2}{4} - c}.
  1. Den Algorithmus wiederholen: Der Wert unter der Wurzel entscheidet.
  2. Gerüst schreiben, b und c einlesen, den Wert unter der Wurzel berechnen.
  3. Die drei Fälle als if, else if und else.
  4. Je Fall ein Testlauf.

Der Algorithmus: der Wert unter der Wurzel entscheidet

Lösungsformel und der Wert unter der Wurzel
x1,2=−b2±rr=b24−cx_{1,2} = -\frac{b}{2} \pm \sqrt{r} \qquad r = \frac{b^2}{4} - c

In der Formel steht eine Wurzel. Den Wert darunter nennen wir rr (für Radikand, so heißt die Zahl unter einer Wurzel). Er entscheidet über die Zahl der Lösungen:

  • r<0r < 0: Aus einer negativen Zahl gibt es keine reelle Wurzel. Keine Lösung.
  • r=0r = 0: 0=0\sqrt{0} = 0, also ergeben „+“ und „−“ dieselbe Zahl −b2-\frac{b}{2}. Genau eine Lösung.
  • r>0r > 0: Die Wurzel ist positiv, „+“ und „−“ ergeben zwei verschiedene Zahlen. Zwei Lösungen.

Rechts steht der Algorithmus als Ablaufdiagramm: Rauten sind Abfragen mit einem Ja- und einem Nein-Ausgang, Rechtecke sind Anweisungen, auch Ein- und Ausgabe; Start und Stop sind abgerundet. Es ist dasselbe Diagramm wie in Aufgabe 3.4. Seine Kästen melden nur, wie viele Lösungen es gibt; das Java-Programm gibt zusätzlich die Lösungen selbst aus. In den nächsten Schritten wird Kasten für Kasten zu Java.

Gerüst und Einlesen von b und c

public class A5_3 {     public static void main(String[] args) {        Out.print("b = ");        double b = In.readDouble();        Out.print("c = ");        double c = In.readDouble();
    }}

Aus Start und Stop wird das Gerüst: Die Klasse heißt A5_3, die Anweisungen stehen in main. Aus „b, c eingeben“ werden zwei Eingaben. bb und cc dürfen Kommazahlen sein (in Java: Gleitkommazahlen, Typ double), also sind sie vom Typ double und werden mit In.readDouble() gelesen. Getippt wird mit Punkt statt Komma: 2,5 als 2.5.

Aus Skript 4, Folien 4-30 und 4-33 („Ein-/Ausgabe“): In.readDouble() liest eine Kommazahl von der Tastatur. Out.print(x) gibt x aus und bleibt in der Zeile, Out.println(x) beginnt danach eine neue Zeile. In und Out sind Hilfsklassen der Vorlesung, keine Java-Standardklassen; wie man sie einbindet, steht in Aufgabe 5.1 („Abstand zweier Punkte mit Math.sqrt“).
Noch 6 Schritte bis zum Ergebnis
Den ganzen Lösungsweg sehen Studierende und Lehrende der HS KL. Registriere dich mit deiner Adresse @stud.hs-kl.de oder @hs-kl.de, dann geht es hier direkt weiter.

Abbildung 1Der Algorithmus in Java

Kasten für Kasten

JaNeinJaNeinStartb, c eingebenr ← b²/4 − cr < 0?r = 0?„keine reelleLösung“ ausgeben„genau eine reelleLösung“ ausgeben„zwei reelleLösungen“ ausgebenStop
LegendeDas Ablaufdiagramm des Algorithmus.