4.10.3 Ein Beispiele ohne Turtle
 
  In diesem und dem nächsten Unterkapitel zeigen wir Beispiele für Verzweigungen, ohne eine Turtle zu benutzen. Wir legen hier also mehr um den algorithmischen Aspekt.
Math.abs() In der Klasse Math gibt es eine Klassenmethode abs(), mit Hilfe derer man den Betrag einer Zahl bestimmen kann. . Können wir selbst ein Programm schreiben, das den Betrag einer eingegebenen Zahl berechnet?
Struktogramm zu abs Der Algorithmus der den Betrag einer ganzen Zahl berechnet ist so definiert:

Diese Definition lässt sich leicht in ein Struktogramm mit einer einfachen Verzweigung übersetzen:

Schließlich übersetzen wir die dargestellte Struktur in Javacode:

if (x >= 0){
  System.out.println("abs("+x+") = "+x);
}
else {
  System.out.println("abs("+x+") = "+(-x));
}

Die Ausgabe in den beiden Zweigen ist einfach zu lesen. Wir erinnern uns, System.out.println(...) gibt das aus, was in den Klammern steht (später werden wir dazu noch genaueres erfahren). Das hier rot innerhalb der "-Zeichen geschriebene Text wird so ausgegeben, wie er geschrieben ist. Die x bzw. -x sind Variabel mit einem bestimmten Wert. Sie sind nicht in Anführungsstrichen geschrieben, es wird also nicht x bzw. -x  sondern die Werte von x und -x auf den Bildschirm ausgegeben. Die Teilausgaben werden mit dem +-Zeichen zusammengehängt, oder wie wir im Fachjargon gerne sagen, konkateniert. Fehlt noch das Einlesen des Wertes von x. Wir benutzen dazu die Methode Console.in.readInt(). Sie stoppt das Programm, wartet bis der Bediener über  die Tatstur Zeichen eingibt (Abschluss der Eingabe durch Drücken der Enter-Taste), liest diese Zeichen und gibt sie als int-Zahlen an das Programm. Dort kann man sie in eine entsprechende Variable vom Typ int speichern:

int x = Console.in.readIn();

Damit der Bediener weiß, was das Programm von ihm erwartet, stellt man dieser Eingabezeile eine Anweisung voran, die die erwatrtete Eingabe kommentiert.

System.out.print("Geben Sie eine ganze Zahl ein: ");
 

Download:
DemoAbs.java
Das ganze Programm:
import info1.*;
public class DemoAbs {

  public static void main (String[] args) {
    System.out.print("Geben Sie eine ganze Zahl ein: ");
    int x = Console.in.readInt();
    if (x >= 0){
      System.out.println("abs("+x+") = "+x);
    }
    else {
      System.out.println("abs("+x+") = "+(-x));
    }
  }
}
Downlaod:
info1.zip

Installtions-hinweise: (hier)
 

Die Methode Console.in.readInt(); liegt im sog. Paket info1, das man deshalb mit import einbinden muss. Da dieses Paket nicht zu Standard-Java gehört, muss man diese Paket selbst einbinden. Dazu entpackt man die Datei info1.zip in ein Verzeichnis info1, das selbst in dem Verzeichnis EigeneDateien liegt (dort liegt auch das Verzeichnis turtle).
Math.max(a,b) Auch das zweite Beispiel, ist einer Klassenmethode der Klasse Math nachempfunden. Es soll ein Programm geschrieben werden, das das Maximum zweier eingegebener Zahlen bestimmt und in einer Variable max ablegt. Das Struktogramm hilft:

 

Downlaod:
DemoMax.java
import info1.*;
public class DemoMax {

  public static void main (String[] args) {
    System.out.print("Geben a ein: ");
    int a = Console.in.readInt();
    System.out.print("Geben b ein: ");
    int b = Console.in.readInt();
    int max;
    if (a>=b){
      max = a;
    }
    else{
      max = b;
    }
    System.out.println("Max("+a+","+b+") = "+max);
  }
}
  In der Struktur ist diese Programm dem vorausgehenden sehr ähnlich. Es hat eine kleine Variante. In den Verzweigungen wir nichts mehr ausgegeben, sondern der Wert von max bestimmt. Die Ausgabe des Wertes von max erfolgt jetzt nach der Verzweigung, wenn also die beiden alternativen Programmstränge wieder zusammengelaufen sind.

Wir betrachten nun eine kleine Variante. Es soll die sie größte von drei eingegebenen Zahlen bestimmt werden. Das Struktogramm sieht jetzt so aus, wie es rechts dargestellt ist.

Nach der Eingabe von drei Zahlen a, b und c, hier im Struktogramm nicht dargestellt, wird zunächst die größere der ersten beiden bestimmt und in max gespeichert. Danach wird geprüft ob die dritte Zahl vielleicht noch größer ist als max und gegebenenfalls wird max mit dem Wert von c überschritten. Ist c dagegen kleiner als das zuerst berechnete Maximum, muss nichts mehr berechnet werden. Der Zweig bleibt leer.
 

Download:
DemoMax3.java
import info1.*;
public class DemoMax3 {

  public static void main (String[] args) {
     System.out.print("Geben a ein: ");
     int a = Console.in.readInt();
     System.out.print("Geben b ein: ");
     int b = Console.in.readInt();
     System.out.print("Geben c ein: ");
     int c = Console.in.readInt();
     int max;
     if (a>=b){
       max = a;
     }
     else{
       max = b;
     }
     if (c>max){
       max = c;
     }
     System.out.println("Max("+a+","+b+","+c+") = "+max);
  }
}
zu 4.10.4 Übungen
zur Startseite www.pohlig.de  (C) MPohlig 2004