MezData-Logo

Benzinrechner und Verzweigung

EVA-Prinzip

Problem: Ein Programm soll nach Eingabe der gefahrenen Km und der verbrauchten Liter den Spritverbrauch auf 100Km berechnen. 

[Präsentation des Ablaufs]

Implementieren und testen Sie das Programm.

public class Benzin{
  static double rechneVerbrauch(double liter, double km){
    double verbrauch;
    verbrauch = liter / km * 100;
    return verbrauch;
  }
}

Einfügen einer Verbrauchswarnung

Struktogramm

Ab einem Verbrauch von 10.0 Litern soll eine Warnung ausgegeben werden

public class Benzin{
  static double rechneVerbrauch(double liter, double km){
    double verbrauch;
    verbrauch = liter / km * 100;
    if (verbrauch > 10.0)
      System.out.println("Verbrauch zu hoch: "+verbrauch);
    return verbrauch;
  }
}

Ausgeben bedeutet System.out.print()
Rückgeben bedeutet return...

Zweiseitige Verzweigung

Der Benzinrechner soll nun zusätzlich "Noch OK" ausgeben wenn der Verbrauch kleiner gleich 10.0 Litern ist.

public class Benzin{
  static double rechneVerbrauch(double liter, double km){
    double verbrauch;
    verbrauch = liter / km * 100;
    if (verbrauch > 10.0)
      System.out.println("Verbrauch zu hoch: "+verbrauch);
    else
      System.out.println("Noch OK");
    return verbrauch;
  }
}

Allgemeine if-Anweisung

    if (Bedingung)
      Verarbeitung bei true
    else
      Verarbeitung bei false

Bedingung

Die Bedingung ist ein sogenannter Boolscher-Ausdruck er hat nach seiner Auswertung den Wert true oder false Beispiel:

x != 3 wird für x-Werte ungleich 3 true sonst false

Hinweis zu C: In C werden Werte ungleich 0 auch als true gewertet, somit hätte der Ausdruck x - 3 die selbe Wirkung als Bedingung wie x !=3.

In Java müssen Bedingungen vom Typ boolean sein!

Es gibt drei Möglichkeiten für Verarbeitung

Beispiel leere Anweisung eine Anweisung Anweisungsblock
if (Bedingung)
  Verarbeitung
if (Bedingung);
if (Bedingung)
  Anweisung;
if (Bedingung){
  Anweisung 1;
  Anweisung 2;
  ...
  Anweisung n;
}
else
  Verarbeitung
else ;

Hinweis: Hier kann der else-Zweig
weggelassen werden

else
  Anweisung;
else{
  Anweisung 1;
  Anweisung 2;
  ...
  Anweisung n;
}

Verschachtelung von Verzweigungen

Der Benzinrechner soll nun in Abhänigkteit des Verbrauchs ausgeben:

Verbrauch in Litern Ausgabe
< 6.0 Sparsam gefahren!
6.0 .. 8.0 Normal
> 8.0 Zu viel Verbrauch!

Erweitern Sie Ihre Lösung entsprechend.

Tabelle umsetzen

Eine Methode Tabelle.bewerte(p:GZ) soll die Wertung einer Aufgabe übernehmen, nach der Eingabe der Punktzahl wird eine Bewertung ausgegeben:

Eingabe p Ausgabe
p<0 "Fehler"
0..24 "schlecht"
25..49 "gut"
50..* "super"

Analysieren Sie das Problem und erstellen Sie eine Lösung.

Wie Testen: Mit welchen Eingaben können Sie beweisen, daß Ihre Lösung korrekt ist?

Implementieren und testen Sie Ihre Lösung.

Erstellen Sie ein Struktogramm für Ihre Lösung.

Betrachten Sie nun diese Programm-Ablauf-Pläne (Klicken zum Aufklappen).
else-if
Lösung a (else if)
bin. Suche
Lösung c (binäre Suche)
Einzelbedingungen
Lösung b (genaue Bedingung)

Welcher PAP kommt ihrem Programm am nächsten?

Welche Lösung ist die Beste? Begründen Sie!