Programmieren mit Java Kontrollstrukturen: Bedingte Anweisungen / Verzweigungen Kontrollstrukturen steuern den Programmablauf. Über die Auswertung logischer Ausdrücke werden im Programm die Weichen gestellt. Die bedingte Anweisung ist die einfachste Form der Programmsteuerung. Dabei werden einzelne oder mehrere Anweisungen oder Methodenaufrufe nur unter ganz bestimmten Bedingungen ausgeführt. Der Aufbau einer bedingten Anweisung sieht folgendermaßen aus: if (ausdruck) { anweisungen ... } else { anweisungen ... } Der ausdruck wird bewertet. Ergibt er wahr (true), werden die Anweisungen direkt hinter dem if ausgeführt. Ergibt der ausdruck falsch (false), werden die Anweisungen hinter dem else ausgeführt. Man spricht von einer zweiseitigen Auswahl. Die if-Anweisung braucht nicht zwingend einen elseZweig. Man spricht dann von einer einseitigen Auswahl. In einem Struktogramm sieht die bedingte Anweisung folgendermaßen aus: zweiseitige Auswahl einseitige Auswahl Auswahl/Entscheidung Auswahl/Entscheidung Ausdruck J Anweisung Ausdruck J N Anweisung Anweisung N Für die Darstellung des logischen Ausdrucks werden Vergleichs- und Gleichheitsoperatoren gebraucht. Java kennt die folgenden: Vergleichsoperationen Operator == != < > <= >= meint gleich ungleich kleiner als größer als kleiner gleich größer gleich Beispiel x==3 x!=3 x<3 x>3 x<=3 x>=3 Beispiel: if (x + x > y) Für die Zusammenstellung logischer Ausdrücke müssen oft mehrere Vergleiche zusammengefasst werden. Dafür gibt es logische Operatoren, von denen Java die folgenden kennt: Logische Operationen Operator & && | || ^ ! Beispiel: (x = = 2 | | y != 2 && z >= 16) Bedeutung und logisches und oder logisches oder Exklusives Oder Nicht (AND) (OR) (XOR) (NOT) Aufgaben Entwirf für die Programme Struktogramme. 1. Schreib ein Programm If01, das eine Variable vom Typ Ganzzahl deklariert und mit einem beliebigen Wert belegt. Aus dieser Zahl ist die (Quadrat-)Wurzel zu berechnen. Die Wurzelberechnung darf aber nur durchgeführt werden, wenn der Inhalt der Variablen größer als Null ist. 2. Nach der deutschen Zinsrechnung besteht der Zinsmonat aus 30 Tagen. Wenn man beispielsweise am 31.01. einen Betrag auf sein Sparkonto einzahlt, werden die Zinsen ab dem 30.01. berechnet für den Zeitraum bis zum Ende des Jahres. Schreib ein Programm If02, das die Zinsen für einen Betrag, der auf dem Sparkonto eingezahlt wird, vom Tag der Einzahlung bis zum Jahresende berechnet. Der Zinssatz sei mit 3% konstant. (Hilfestellung: Das Einzahlungsdatum ist in zwei Zahlenwerte Tag und Monat aufzulösen. Die Zinsen berechnen sich aus Betrag * ZinsTage * Zinssatz / 360 * 100.) 3. Schreib ein Programm If03, das drei Variablen vom Typ Ganzzahl deklariert und der ersten den Wert 2, der zweiten den Wert 3 und der dritten den Wert 4 zuweist. Das Programm soll eine zweiseitige Auswahl beinhalten, bei der auf dem Bildschirm das Wort "blau" ausgegeben werden soll, wenn das Quadrat der ersten Variablen größer oder gleich ist dem Wert der dritten Variablen. Andernfalls soll auf dem Bildschirm "rot" ausgegeben werden. 4. Der Staat erhebt Umsatzsteuer, auch Mehrwertsteuer (MWSt) genannt. Sie beträgt in der Regel 19% des Warenwerts. Für einige Warengruppen, wie zum Beispiel Lebensmittel, werden nur 7% erhoben. Bei einer Rechnungsschreibung wird außer dem Nettopreis ein Buchstabe als Mehrwertsteuer-Kennzeichen verwendet. Ist dieser Buchstabe gleich "1", sind 7% Mehrwertsteuer zu berechnen, andernfalls 19%. Schreib das entsprechende Programm If04. 5. In einem Unternehmen beträgt laut Betriebsvereinbarung die durchschnittliche monatliche Arbeitszeit 175 Stunden. Leistet ein Mitarbeiter mehr als 175 Stunden, werden die Überstunden mit einem Aufschlag von 10% vergütet. Der Stundenlohn beträgt 12 Euro. Schreib ein Programm If05, das die Arbeitsstunden, den Stundenlohn, den Gesamtstundenlohn, den Überstundenzuschlag und den Bruttolohn auf dem Bildschirm ausgibt. 6. Welche Ergebnisse liefert das folgende Programm, wenn man an der markierten Stelle für die Pünktchen jeweils die Programmzeilen a-e einsetzt? class If06 { public static void main(String[ ] args) { int x=2, y=3, z=4; . . . { System.out.println("wahr!"); } else { System.out.println("falsch!"); } } } a) if (x = = 2 && y <= 3) b) if (x = = 2 | | y != 2 && z * z >= 16) c) if (y = = 3 && !(z = = 1)) d) if (x != 2 && y > 3) e) if (x < y | | x > z)