You are on page 1of 40

© J.-K.

Müller
Kapitel IF-Anweisung

Kapitel
If-Anweisungen

Folie 1
Bedingte Anweisung: If

• Eine der häufigsten Problemstellungen in einem


Kapitel IF-Anweisung

Programm ist, den Programmfluss in


Abhängigkeit von einer oder mehreren
Bedingungen zu steuern. Die if-Anweisung
wird bei bedingten Kontrollflussverzweigungen
verwendet.
Beispiel:
• Wenn ein Kunde einen Auftrag über 1.000,00
EUR erteilt, bekommt er 4% Rabatt. Bei
Aufträgen bis 1.000,00 EUR wird kein Rabatt
gewährt, d.h. die folgende Anweisung
(berechne Rabatt von 4%) wird nicht
ausgeführt.
© J.-K. Müller

Folie 2
Bedingte Anweisung: If

• Syntax
Wie der Name schon aussagt, soll in
Kapitel IF-Anweisung

einer bedingten Anweisung eine


bestimmte Anweisungs(sequenz) nur
unter einer bestimmten Bedingung
ausgeführt werden. Die bedingte
Anweisung, die auch if-Anweisung
genannt wird, ist eine
zusammengesetzte Anweisung. Die
Syntax sehen Sie unten, das
zugehörige Struktogramm-Symbol
nebenstehend.
© J.-K. Müller

Folie 3
Bedingte Anweisung: If

Semantik
Kapitel IF-Anweisung

• Es wird zunächst der boolsche Ausdruck


innerhalb der runden Klammern ausgewertet.
Falls dieser Ausdruck den Wert true liefert, d.h.
die Bedingung erfüllt ist, wird die
(true-)Anweisung ausgeführt. Liefert der
boolsche Ausdruck nicht den Wert true, dann
wird die (true-)Anweisung nicht ausgeführt.
• Hinweis: Auch wenn es sich bei der
(true-)Anweisung nur um eine einzelne
Anweisung handelt, sollten Sie sich
angewöhnen, die Blockanweisung mit
geschweiften Klammern (s.u.) zu nutzen, um
Fehlern vorzubeugen.
© J.-K. Müller

Folie 4
Alternativanweiseung: If-Else

Syntax
Kapitel IF-Anweisung

Bei der Alternativanweisung können Sie nicht


nur angeben, dass eine bestimmte Anweisung
nur unter einer bestimmten Bedingung
ausgeführt werden soll, sondern Sie können
auch eine alternative Anweisung ausführen
lassen, wenn die Bedingung nicht erfüllt ist. Die
Alternativanweisung ist daher eine bedingte
Anweisung mit einem angehängten
sogenannten else-Teil. Ihre Syntax wird in der
folgenden Abbildung definiert; das zugehörige
Struktogramm-Symbol sehen Sie
nebenstehend!
© J.-K. Müller

Folie 5
Kapitel IF-Anweisung Alternativanweisung: If-Else
© J.-K. Müller

Folie 6
Alternativanweisung: If-Else

• Semantik
Kapitel IF-Anweisung

Wird eine Alternativanweisung


ausgeführt, dann wird zunächst der Wert
der Bedingung (boolscher Ausdruck)
ermittelt. Ist die Bedingung erfüllt, d.h.
liefert der boolsche Ausdruck den Wert
true, dann wird die true-Anweisung,
nicht aber die false-Anweisung
ausgeführt; liefert der boolsche Ausdruck
den Wert false, dann wird die false-
Anweisung nicht aber die true-Anweisung
ausgeführt.
© J.-K. Müller

Folie 7
Kapitel IF-Anweisung Alternativanweisung: If-Else
© J.-K. Müller

Folie 8
Bedingungsoperatoren: Vergleichsoperatoren
Kapitel IF-Anweisung

• Im Ausdruck i>5 (Zeile 8) wird ein


Vergleich durchgeführt. Das
Ergebnis eines solchen Vergleichs
ist entweder wahr oder falsch -
">" ist ein Vergleichsoperator und
legt fest, welche Art von Vergleich
durchgeführt werden soll.
© J.-K. Müller

Folie 9
Bedingungsoperatoren: Vergleichsoperatoren
Kapitel IF-Anweisung
© J.-K. Müller

Folie 10
Bedingungsoperatoren: Logische Operatoren

• Wenn Sie Ausdrücke zusammenstellen, müssen


Kapitel IF-Anweisung

oft mehrere Vergleiche zusammengefasst


werden.
• So untersucht der Ausdruck (x==2 && y<3), ob
x gleich 2 ist und ob y kleiner als 3 ist. Erst
wenn beide Bedingungen erfüllt sind, wird die
Anweisung hinter dem if ausgeführt, ansonsten
die Anweisung hinter dem else.
© J.-K. Müller

Folie 11
Bedingungsoperatoren: Logische Operatoren
Kapitel IF-Anweisung
© J.-K. Müller

Folie 12
© J.-K. Müller
Kapitel IF-Anweisung Übungsaufgabe: Kinokasse

Folie 13
Übungsaufgabe: Kreditbank Mannheim
Kapitel ÜA Kreditbank

E:\6-Informatik\9_JAVA\100_Workbench\1_Projekte zum Einstieg inkl Scanner-Klasse\7-Projekt Kreditbank Mannheim


© J.-K. Müller

Folie 14
• Projekt Vertriebsgesellschaft mit
verschachtelter If-Else-Anweisung (mit
Struktogramm)
© J.-K. Müller

Folie 15
Übungsaufgabe: Mehrzinssparen II

Die Aufgabe Mehrzinssparen I wird nun dahingegen modifiziert,


dass der Kunde ab einem Anlagebetrag von
Kapitel IF-Anweisung

- 5.000,00 EUR 3%, und


- ab 10.000.00 EUR 5%
erhält.

Erstellen Sie hierzu ein Struktogramm ( mit dem HUS-


Struktogrammer) und setzen Sie dieses in Java um.
Nennen Sie das Programm Mehrzinssparen2.java.

Testen Sie auch hier Ihr Programm mit verschiedenen


Anlagebeträgen (z.B. 4.000,00 EUR bzw. 8.000,00 EUR).
© J.-K. Müller

Folie 16
Übungsaufgabe: Weihnachtsgeld

Die Kreditbank Mannheim hat von der Firma IT@U ein


Programm zur Ermittlung des Weihnachtsgeldzuschlages
Kapitel IF-Anweisung

programmieren lassen.
Der Zuschlag wird dabei prozentual vom Bruttogehalt berechnet
und ist abhängig von
-der Betriebszugehörigkeit und/ oder
-vom Bruttogehalt.
In den Anlagen 1 und 2 sehen Sie die Lösung der Firma in Java.
Der Vorstand der Kreditbank kann mit dem Java-Code leider
nichts anfangen und bittet Sie
– um die Darstellung einer Bildschirmausgabe
– um ein Struktogramm der Klasse RechnenBetrieb
© J.-K. Müller

Folie 17
Übungsaufgabe: Weihnachtsgeld

Anlage
1
Kapitel IF-Anweisung

Anlage 2
© J.-K. Müller

Folie 18
Übungsaufgabe: Bekleidungsgeschäft engelhorn

Das Bekleidungsgeschäft engelhorn, Mannheim benötigt ein


Programm, dass den Steuersatz für einen Artikel berechnet. Für
Kleider, die 100,00 EUR oder mehr kosten, beträgt die Steuer, die
Kapitel IF-Anweisung

zum ursprünglichen Nettopreis addiert wird (Art


Luxusklamottensteuer) 10%. Kleider, die weniger als 100,00 EUR
kosten, müssen 5% Steuer tragen. Die Steuersätze werden statisch
vorgegeben.
Hierzu wurde folgende UML entwickelt:
© J.-K. Müller

Folie 19
Übungsaufgabe: Bekleidungsgeschäft engelhorn

Digital liegt wird Ihnen eine Auszug aus der Klasse Artikel
und der Startklasse zur Verfügung gestellt.
Kapitel IF-Anweisung

Erzeugen Sie folgende Bildschirmausgabe, indem Sie die Klassen


jeweils ergänzen!
© J.-K. Müller

Folie 20
Übungsaufgabe: Bekleidungsgeschäft engelhorn

Leitfragen als Hilfestellung:


Kapitel IF-Anweisung

1. Wo muss die offensichtliche If-Abfrage


durchgeführt werden (in der Fachklasse Artikel
oder in der Startklasse?)

2. Wo und wie werden die Steuersätze eingegeben?

3. An welcher Stelle innerhalb der Startklasse muss


der Befehl zur Berechnung des neuen
Nettopreises eingefügt werden, damit der alte
Nettopreis immer noch erscheint?
© J.-K. Müller

Folie 21
Kapitel
Wiederholungsanweisungen While
Kapitel Do While
© J.-K. Müller

Folie 22
Wiederholungsanweisung While

Syntax
Die while-Anweisung ist eine
zusammengesetzte Anweisung. Nach dem
Schlüsselwort while steht in runden Klammern
ein boolscher Ausdruck, die sogenannte
Schleifenbedingung. Anschließend folgt die
Anweisung, die eventuell wiederholt ausgeführt
werden soll. Sie wird auch
Iterationsanweisung genannt. Hierbei
handelt es sich im Allgemeinen um eine
Blockanweisung. Das Syntaxdiagramm zeigt die
folgende Abbildung:
Kapitel While
© J.-K. Müller

Folie 23
WiederholungsanweisungWhile

Semantik
Bei der Ausführung einer while-Anweisung wird zunächst
überprüft, ob die Schleifenbedingung erfüllt ist, d.h. ob der
boolsche Ausdruck den Wert true liefert. Falls dies nicht
der Fall ist, ist die while-Anweisung unmittelbar beendet.
Falls die Bedingung erfüllt ist, wird die Iterationsanweisung
einmal ausgeführt. Anschließend wird die
Schleifenbedingung erneut ausgewertet. Falls sie immer
noch erfüllt ist, wird die Iterationsanweisung ein weiteres
Mal ausgeführt.
Dieser Prozess (Überprüfung der Schleifenbedingung und
falls diese erfüllt ist, Ausführung der Iterationsanweisung)
wiederholt sich solange, bis (hoffentlich) irgendwann
einmal die Bedingung nicht mehr erfüllt ist.
Kapitel While
© J.-K. Müller

Folie 24
Kapitel
Wiederholungsanweisungen Do-While
Kapitel Do While
© J.-K. Müller

Folie 25
Wiederholungsanweisung Do-While

• Syntax
Dem Schlüsselwort do folgt die Iterationsanweisung. Hinter der
Iterationsanweisung muss das Schlüsselwort while stehen. Anschließend
folgt in runden Klammern ein boolscher Ausdruck - die
Schleifenbedingung. Abgeschlossen wird die do-Anweisung durch ein
Semikolon! Die folgende Abbildung zeigt das Syntaxdiagramm:
• Semantik
Bei der Ausführung einer do-Anweisung wird zunächst einmal die
Iterationsanweisung ausgeführt. Anschließend wird die
Schleifenbedingung überprüft. Ist sie nicht erfüllt, d.h. liefert der
boolsche Ausdruck den Wert false, dann endet die do-Anweisung.
Ist die Bedingung erfüllt, wird die Iterationsanweisung ein zweites Mal
ausgeführt und danach erneut die Schleifenbedingung ausgewertet.
Dieser Prozess wiederholt sich solange, bis irgendwann einmal die
Schleifenbedingung nicht mehr erfüllt ist.
Kapitel Do While
© J.-K. Müller

Folie 26
While vs. Do-While

• Der einzige Unterschied zwischen der do- und


der while-Anweisung besteht darin, dass bei der
do-Anweisung die Iterationsanweisung
mindestens einmal ausgeführt wird, was in der
while-Anweisung nicht unbedingt der Fall sein
muss. In der Tat lässt sich jede do-Anweisung
durch eine while-Anweisung ersetzen:
Kapitel Do While
© J.-K. Müller

Folie 27
Übungsaufgabe: Würfel

• Schreiben Sie ein Java-Programm, das


einen Würfel generiert. Dabei sollen die
gewürfelten Augen solange addiert
werden, bis eine 6 gewürfelt wurde. Die
Augen werden per Zufallszahl erzeugt.
Der zugehörige Befehl lautet:
(int)(Math.random()*6+1)
Kapitel Do While
© J.-K. Müller

Folie 28
Übungsaufgabe: Abschreibungen

Erstellen Sie ein Java-Programm, das die lineare Abschreibung für einen
Anlagegegenstand berechnet.
Hinweise:
• Skizzieren Sie eine UML mit möglichen Attributen (Plenum)
• Setzen Sie diese UML in Eclispe um (lediglich bis zur Ausgabe der Daten)
• ? In welcher Klasse muss die Methode zur Berechnung der Abschreibung
geschrieben werden?
• Erstellen Sie ein Struktogramm
• Verwenden Sie für die Ausgabe eine do bzw. die do-while-Schleife.
• Fragen Sie den Sachbearbeiter nach der Gegenstandsbezeichnung, den
Anschaffungswert und die Nutzungsdauer und lassen Sie diese ausgeben.
• Die lineare Abschreibung ergibt sich aus Anschaffungswert/Nutzungsdauer
Kapitel Do While
© J.-K. Müller

Folie 29
Kapitel
Zählschleife FOR-Schleife
Kapitel For-Schleife
© J.-K. Müller

Folie 30
Zählschleife FOR-Schleife

Syntax
• Wie die beiden anderen Schleifen (do-Schleife bzw. do-while-
Schleife) wiederholt die for-Schleife eine Anweisung oder einen
Anweisungsblock mehrmals, bis eine Bedingung zutrifft. Sie
kommt besonders häufig zum Einsatz beim Durchzählen eines
Wertebereiches mit Hilfe einer Zählvariablen.
• Eine Eigenschaft der for-Schleife ist, dass man bereits zu Beginn
der Schleife wissen muss, wie oft sie durchlaufen werden soll.

Die untenstehende Abbildung zeigt die Syntax der for-Schleife.


Kapitel For-Schleife
© J.-K. Müller

Folie 31
Zählschleife FOR-Schleife

Semantik
1. Beim Eintritt wird einmal die Initialisierung der Zählvariablen
vorgenommen.
2. Die Bedingung wird ausgewertet.
3. Solange die Bedingung true ist, werden folgende Schritte
wiederholt:
4. Die Anweisung wird ausgeführt, die Aktualisierung der
Zählvariablen wird vorgenommen und nach 2. zurückgesprungen.
5. Falls die Bedingung false ist, ist die Schleife beendet.
Kapitel For-Schleife
© J.-K. Müller

Folie 32
Zählschleife FOR-Schleife

Bemerkungen:
Bemerkungen
a) Initialisierung ist ein Ausdruck, der den Beginn der Schleife einleitet. Wenn Sie
einen Schleifenindex verwenden, kann er durch diesen Ausdruck zugleich deklariert
und initialisiert werden, z.B. int i = 0. Die Variable i ist dann lokal in Bezug auf die
Schleife, das bedeutet, dass sie zur Schleife gehört und nach der vollständigen
Ausführung der Schleife nicht mehr existiert! (Sie können in diesem Bereich auch
mehr als eine Variable initialisieren.)
b) Bedingung ist der Ausdruck, der vor jeder Iteration der Schleife ausgeführt wird. Es
muss sich um einen boolschen Ausdruck oder eine Funktion handeln, die einen
boolschen Wert zurückgibt, z.B. i<100. Ergibt die Auswertung true, wird die Schleife
ausgeführt. Sobald sie false ergibt, wird die Schleifenausführung gestoppt.
c) Aktualisierung ist ein beliebiger Ausdruck oder Funktionsaufruf. Üblicherweise wird
die Aktualisierung verwendet, um den Wert des Schleifenindex zu ändern, um ihn
näher an den Endwert heranzubringen und damit zur Beendigung der Schleife zu
sorgen, z.B. i = i + 1 bzw. i++. (Wie im Initialisierungsbereich könnten Sie mehr als
Kapitel For-Schleife

einen Ausdruck unterbringen und aktualisieren.)


© J.-K. Müller

Folie 33
Zählschleife FOR-Schleife

Beispiel
Kapitel For-Schleife
© J.-K. Müller

Folie 34
Übungsaufgabe For-Schleife: Thesaurierende
Anlage
Hintergrundinformationen:
Bei einer thesaurierenden Anlage werden die Zinserträge nicht
ausgezahlt, sondern direkt in die gleiche Anlage wieder mit
angelegt, so dass sich der Anlagebetrag kontinuierlich um
die Zinserträge erhöht.

Beispiel:
Einmalige Anlage:
1.000 EUR
Zinssatz 10 %

Aufgabe:
Kapitel For-Schleife

Schreiben Sie ein Programm, das den Endwert folgender Anlage


berechnet: Anlagedauer 15 Jahre, monatliche Einzahlung 100,00 €,
Zinssatz: 6 % pro Jahr.
Leitideen:
1) Erzeugen Sie eine Fachklasse (Geldanlagekonto) und überlegen Sie,
welche Attribute und Methoden diese Klasse zur Verfügung stellt.
2) Erstellen Sie zunächst ein Struktogramm für die Methode
thesaurierendeAnlage und anschließend den Quellcode.
3) Erzeugen Sie die Startklasse, legen Sie ein Objekt an und testen Sie
Ihr Programm.
© J.-K. Müller

Folie 35
Übungsaufgabe For-Schleife: Thesaurierende
Anlage
Mögliche Konsolenausgabe
Kapitel For-Schleife
© J.-K. Müller

Folie 36
© J.-K. Müller
Kapitel Zahlenformat Exkurs: Zahlenformat

Folie 37
Übungsaufgabe For-Schleife: Wirtschaftsgut

Berechnung der Zeitdauer, bis ein Wirtschaftsgut unter einen


bestimmten Buchwert sinkt.
Kapitel For-Schleife

Ihre Firma benötigt ein Programm, das prognostiziert, nach


wie vielen Jahren ein beliebiges Wirtschaftsgut unter einen
bestimmten Buchwert gesunken ist.
Beispiel:
Nach wie vielen Jahren hat ein PKW mit einem
Anschaffungswert von € 67.900.- und einer
Abschreibungsdauer von 10 Jahren einen Restbuchwert
von weniger als € 40000?
Aufgabe:
Erstellen Sie ein Struktogramm für diese Aufgabe und
entwickeln Sie das Programm, wobei die Werte nicht
interaktiv eingegeben werden müssen, sondern fest im
Quellcode des Programms stehen können.
© J.-K. Müller

Folie 38
Kapitel For-Schleife Übungsaufgabe For-Schleife: Teiler
© J.-K. Müller

Folie 39
Übungsaufgabe For-Schleife: FitzQuack

FitzQuack - ein kleines Spiel

FitzQuack ist ein kleines Zahlenspiel mit mehreren Spielern: es wird


reihum gezählt. Wer an der Reihe ist, sagt die nächste Zahl. Ist
diese Zahl aber ein Vielfaches von drei, so müssen Sie
stattdessen das Wort "Fitz" sagen. Wenn die Zahl ein Vielfaches
von vier ist, sagen Sie "Quack" statt der Zahl. Ist die Zahl ein
Vielfaches sowohl von drei als auch von vier, so sagen Sie
"FitzQuack". Wer sich vertut, scheidet aus, das Spiel geht dann
ohne denjenigen/diejenige weiter - bis nur noch eine Person übrig
bleibt.
Dieses Spiel soll nun am Rechner nachgebildet werden. Dabei
werden die Spieler durch eine Zählschleife simuliert, die bei 1
Kapitel For-Schleife

beginnt und bis 100 (incl.) zählt. In jedem Durchgang soll (mittels
if- und else-Anweisungen) geprüft werden, ob die aktuelle Zahl
durch drei, durch vier oder durch beides teilbar ist oder nicht und
entsprechend "Fitz" oder "Quack" oder "FitzQuack" oder eben die
Zahl selbst ausgegeben werden.
Kleiner Tip: das Zählen sollte mit einer for-Schleife realisiert werden,
die Vergleiche werden innerhalb der Schleife mittels if-else-
Anweisungen realisiert.
© J.-K. Müller

Folie 40