5 Elementare Anweisungen und Bedingungen 5 Elementare Anweisungen und Bedingungen Objektorientierte Programmierung OOP – 5.1 Elementare Anweisungen Programmieren mit Java –5.1.1 Ausdrucksanweisung –5.1.2 Leere Anweisung –5.1.3 Blockanweisung –5.1.4 Variablendeklaration 5 Elementare Anweisungen und Bedingungen – 5.2 Bedingungen –5.2.1 if-Bedingung –5.2.2 if-else-Bedingung –5.2.3 switch-Bedingung © Prof. Dr. Rolf Dornberger OOP: 5 Elementare Anweisungen und Bedingungen 5.1 Elementare Anweisungen 5.1 Elementare Anweisungen 5 Elementare Anweisungen und Bedingungen In Computerprogrammen werden im Allgemeinen schrittweise die Anweisungen im Quelltext abgearbeitet. – 5.1 Elementare Anweisungen –5.1.1 Ausdrucksanweisung –5.1.2 Leere Anweisung –5.1.3 Blockanweisung Sie gewinnen im Lotto und kassieren 10000 Franken Vielleicht lässt sich dies am besten mit einem Brettspiel vergleichen. Allerdings würfelt der Computer nicht, sondern geht Feld für Feld vor. –5.1.4 Variablendeklaration – 5.2 Bedingungen –5.2.1 if-Bedingung –5.2.2 if-else-Bedingung OOP: 5 Elementare Anweisungen und Bedingungen 2 Sie haben sich das Bein verstaucht, einmal aussetzen Sie kaufen ein neues Auto für 20000 Franken. Sie schliessen eine Feuerversicherung für 1000 Franken ab. –5.2.3 switch-Bedingung © Prof. Dr. Rolf Dornberger 22.09.2010 22.09.2010 3 © Prof. Dr. Rolf Dornberger OOP: 5 Elementare Anweisungen und Bedingungen 22.09.2010 4 5.1 Elementare Anweisungen Das Software-Engineering kennt dafür verschiedene Darstellungsmöglichkeiten: z.B. Struktogramm oder Flussdiagramm 5.1.1 Ausdrucksanweisung Sie gewinnen im Lotto und kassieren 10000 Franken Sie haben sich das Bein verstaucht, einmal aussetzen Syntax Sie kaufen ein neues Auto für 20000 Franken. Anweisung; Eine Ausdrucksanweisung wird erzeugt, indem an die eigentliche Anweisung ein Semikolon angehängt wird. Anweisung 1 Anweisung 2 Anweisung 4 © Prof. Dr. Rolf Dornberger Gültige Ausdrucksanweisungen in Java sind (wird später noch genauer erklärt): – Zuweisung – Inkrement und Dekrement – Methodenaufruf – Instanzerzeugung Sie schliessen eine Feuerversicherung für 1000 Franken ab. Anweisung 3 OOP: 5 Elementare Anweisungen und Bedingungen Eine Ausdrucksanweisung dient dazu, eine bestimmte Anweisung innerhalb des Java-Programms auszuführen. 22.09.2010 5 © Prof. Dr. Rolf Dornberger OOP: 5 Elementare Anweisungen und Bedingungen 22.09.2010 5.1.2 Leere Anweisungen 5.1.3 Blockanweisungen Eine besondere Form einer Ausdrucksanweisung in Java ist die leere Anweisung. Ein Block ist eine Zusammenfassung von Anweisungen, die nacheinander ausgeführt werden. Syntax { Syntax Anweisung1; Anweisung2; ... } ; Alle im Block zusammengefassten Anweisungen werden wie eine einzelne Anweisung behandelt. Während das Semikolon als Trennzeichen das Ende einer Anweisung signalisiert, stellt ein einzelnes Semikolon eine leere Anweisung dar. Werden innerhalb eines Blocks Variablen deklariert, bezeichnet man diese als lokale Variablen. D.h. diese sind dann nur innerhalb des Blocks gültig und sichtbar. Variablen, die vor dem Block definiert wurden, sind allerdings auch im Block bekannt. Diese leere Anweisung hat keinerlei Effekt auf das laufende Programm. Ihre Bedeutung liegt eventuell nur in einer Strukturierung des Quelltextes. © Prof. Dr. Rolf Dornberger 6 OOP: 5 Elementare Anweisungen und Bedingungen 22.09.2010 7 © Prof. Dr. Rolf Dornberger OOP: 5 Elementare Anweisungen und Bedingungen 22.09.2010 8 5.1.4 Variablendeklaration 5.2 Bedingungen Die Deklaration einer Variable ist in Java eine ausführbare Anweisung und darf daher überall dort erfolgen, wo auch eine Anweisung verwendet werden darf. 5 Elementare Anweisungen und Bedingungen – 5.1 Elementare Anweisungen Syntax –5.1.1 Ausdrucksanweisung Datentyp VariablenName; oder Datentyp VariablenName = InitialerWert; –5.1.2 Leere Anweisung –5.1.3 Blockanweisung –5.1.4 Variablendeklaration Eine Variable ist von dem Ort ihrer Deklaration bis zum Ende des sie umschließenden Blocks gültig und damit bekannt. – 5.2 Bedingungen –5.2.1 if-Bedingung Es ist nicht erlaubt, eine bereits deklarierte Variable VariablenName in einem tiefer gelegenen Block erneut als VariablenName zu deklarieren; weder mit dem gleichen Typ, noch mit einem anderen Typ. –5.2.2 if-else-Bedingung –5.2.3 switch-Bedingung Dahingegen ist es erlaubt, eine in einem Block deklarierte Variable VariablenName nach Beendigung des Blocks erneut als VariablenName zu deklarieren. © Prof. Dr. Rolf Dornberger OOP: 5 Elementare Anweisungen und Bedingungen 22.09.2010 9 5.2 Bedingungen © Prof. Dr. Rolf Dornberger OOP: 5 Elementare Anweisungen und Bedingungen 22.09.2010 10 5.2 Bedingungen Anweisung 0 In Computerprogrammen werden Verzweigungen bzw. Alternativen mit Bedingungen bzw. Entscheidungen bewirkt. An Verzweigungen können zwei oder mehrere Alternativen weitergehen. Dies lässt sich z.B. auch mit einem z.B. Struktogramm oder Flussdiagramm verdeutlichen. Sie schliessen eine Feuerversicherung für 1000 Franken ab. Sie stehen an einer Weggabelung. Würfeln Sie 1, 3 oder 5, geht es nach links, ansonsten nach rechts weiter. Sie kaufen einen Fernseher für 500 Sfr. Anweisung 0 true false Anweisung 1 Anweisung 3 Anweisung 2 Anweisung 4 Bedingung Entscheidung Sie überweisen 2000 Sfr. von Konto A auf Konto B. wahr falsch Anweisung 1 Anweisung 3 Anweisung 2 Anweisung 4 Sie schliessen eine Feuerversicherung für 1000 Franken ab. Bedingung Entscheidung Anweisung 5 Sie stehen an einer Weggabelung. Würfeln Sie 1, 3 oder 5, geht es nach links, ansonsten nach rechts weiter. Sie überweisen 2000 Sfr. von Konto A auf Konto B. Sie kaufen einen Fernseher für 500 Sfr. Anweisung 5 © Prof. Dr. Rolf Dornberger OOP: 5 Elementare Anweisungen und Bedingungen 22.09.2010 11 © Prof. Dr. Rolf Dornberger OOP: 5 Elementare Anweisungen und Bedingungen 22.09.2010 12 5.2 Bedingungen 5.2.1 if-Bedingung Verzweigungen bzw. Alternativen werden in allen Programmiersprachen durch Bedingungen bzw. Entscheidungen bewirkt. Damit werden bestimmte Programmteile nur beim Eintreten einer oder mehrerer vorgegebener Bedingungen, die im Allgemeinen erst zur Laufzeit bekannt werden, ausgeführt. Syntax if (Ausdruck) Anweisung; Die if-Bedingung wertet zunächst den Booleschen Ausdruck Ausdruck aus. Für Verzweigungen gibt es in Java die if-, if-else- und switch-Anweisung. Bedingungen können neben Verzweigungen aber auch als bedingte Zuweisung fungieren. Damit werden bestimmte Ausdrücke nur beim Eintreten einer oder mehrerer vorgegebener Bedingungen, die erst zur Laufzeit bekannt werden, einer Variablen zugewiesen. OOP: 5 Elementare Anweisungen und Bedingungen 22.09.2010 Ist Ausdruck hingegen false, so wird die Anweisung nicht ausgeführt, sondern mit der ersten Anweisung nach der gesamten if-Bedingung fortgefahren. Anstelle der einzelnen Anweisung Anweisung kann auch eine Folge von Anweisungen als Block angegeben werden. Dieser Block wird als Einheit betrachtet und dann komplett ausgeführt, wenn der Ausdruck true ist. Für diese bedingte Zuweisung gibt es in Java den Fragezeichen-Operator ? : (Vergleiche Kapitel über Operatoren.) © Prof. Dr. Rolf Dornberger Wenn das Ergebnis des Ausdrucks true ist, wird die Anweisung Anweisung ausgeführt. 13 © Prof. Dr. Rolf Dornberger OOP: 5 Elementare Anweisungen und Bedingungen 5.2.2 if-else-Bedingung 5.2.2 if-else-Bedingung Syntax Beispielprogramm BedingungIf: if (Ausdruck) Anweisung1; else Anweisung2; 22.09.2010 14 – Anweisung nach if ist nur eine einzelne Ausdrucksanweisung. – Anweisung nach else ist ein Block. – Nach der if-else-Bedingung geht das Programm normal weiter. public class BedingungIf { public static void main (String[] args) { Die if-else-Bedingung wertet zunächst den Booleschen Ausdruck Ausdruck aus. Wenn das Ergebnis des Ausdrucks true ist, wird die nachfolgende Anweisung Anweisung1 ausgeführt. int a; Ist Ausdruck hingegen false, wird die Anweisung Anweisung2, die nach else steht, ausgeführt. if (a == 0) System.out.println("Bitte mindestens 1 Parameter eingeben!"); else { System.out.println("Anzahl der eingegebenen Parameter: " + a); System.out.println("1. Parameter: " + args[0]); } System.out.println("Ende!"); a = args.length; Eine der beiden Anweisungen wird somit in jedem Fall ausgeführt. Anstelle der einzelnen Anweisungen kann auch jeweils eine Folge von Anweisungen als Block angegeben werden. } } © Prof. Dr. Rolf Dornberger OOP: 5 Elementare Anweisungen und Bedingungen 22.09.2010 15 © Prof. Dr. Rolf Dornberger OOP: 5 Elementare Anweisungen und Bedingungen 22.09.2010 16 5.2.3 switch-Bedingung Syntax 5.2.2 if-else-Bedingung Beispielprogramm BedingungIf: – Wird kein Parameter beim Aufruf von BedingungIf eingegeben, erscheint folgende Ausgabe: switch (Ausdruck) { case Konstante1: Anweisung1; case Konstante2: Anweisung2; ... } Die switch-Bedingung ist eine Mehrfachverzweigung. Zunächst wird der Ausdruck Ausdruck ausgewertet, der vom Typ byte, short, int oder char sein muss. – Wird mindestens ein Parameter beim Aufruf von BedingungIf eingegeben, erscheint folgende Ausgabe: Abhängig vom Ergebnis wird dann zu demjenigen case-Label gesprungen, dessen Konstante KonstanteX: mit dem Ergebnis des Ausdrucks Ausdruck übereinstimmt. Ab diesem case-Label werden alle nachfolgenden Anweisungen AnweisungX, AnweisungY, AnweisungZ... ausgeführt! Jede Konstante eines case-Labels darf nur einmal gesetzt werden. © Prof. Dr. Rolf Dornberger OOP: 5 Elementare Anweisungen und Bedingungen 5.2.3 switch-Bedingung Syntax mit default-Label 22.09.2010 17 switch (Ausdruck) { case Konstante1: Anweisung1; case Konstante2: Anweisung2; ... default: DefaultAnweisung; } © Prof. Dr. Rolf Dornberger OOP: 5 Elementare Anweisungen und Bedingungen 5.2.3 switch-Bedingung Syntax mit break-Anweisung In Ergänzung zu den case-Label kann auch noch ein default-Label eingefügt werden. (maximal einmal!) 22.09.2010 switch (Ausdruck) { ... case KonstanteX: AnweisungX; break; case KonstanteY: AnweisungY; break; ... default: DefaultAnweisung; } Wenn keine passende Konstante KonstanteX: vorhanden ist, zu der gesprungen werden kann, wird die Anweisung DefaultAnweisung nach dem default-Label ausgeführt. Ist Ausdruck identisch mit KonstanteX:, werden ab diesem case-Label alle nachfolgenden Anweisungen AnweisungY usw. ausgeführt, einschließlich der DefaultAnweisung nach dem default-Label! Ist kein default-Label und auch kein passendes case-Label vorhanden, so wird keine der Anweisungen innerhalb der switch-Anweisung ausgeführt. Soll nur die Anweisung AnweisungX, die direkt nach dem case-Label KonstanteX: steht, ausgeführt werden, so ist nach dieser Anweisung die Anweisung break; zu setzen. © Prof. Dr. Rolf Dornberger OOP: 5 Elementare Anweisungen und Bedingungen 22.09.2010 19 © Prof. Dr. Rolf Dornberger 18 OOP: 5 Elementare Anweisungen und Bedingungen 22.09.2010 20 5.2.3 switch-Bedingung 5.2.3 switch-Bedingung Beispiel: – Je nach Anzahl der eingegebenen Parameter wird zu einem anderen case-Label gesprungen. Beispielprogramm BedingungSwitch: – Wird kein Parameter beim Aufruf von BedingungSwitch eingegeben, erscheint folgende Ausgabe: – Damit nur die direkt nachfolgende Anweisung ausgeführt wird, folgt auf jede dieser Anweisungen eine break- Anweisung. public class BedingungSwitch { public static void main (String[] args) { int a; a = args.length; switch (a) { case 3: System.out.println("3 Parameter: "+args[0]+args[1]+args[2]); break; case 2: System.out.println("2 Parameter: "+args[0]+args[1]); break; case 1: System.out.println("1 Parameter: "+args[0]); break; case 0: System.out.println("0 Parameter"); break; default: System.out.println("Mehr als 3 Parameter!"); } – Werden 3 Parameter beim Aufruf von BedingungSwitch eingegeben, erscheint folgende Ausgabe: } } © Prof. Dr. Rolf Dornberger OOP: 5 Elementare Anweisungen und Bedingungen 22.09.2010 21 Lernziele Die elementaren Anweisungen in Java (Ausdrucksanweisung, leere Anweisung, Blockanweisung, Variablendeklaration) kennen und einsetzen können. Erklären können, wie Bedingungen funktionieren und wie sie zu Verzweigungen führen. Die Bedingungen in Java (if, if-else, switch) und ihre Varianten (case, break) kennen und anwenden können. © Prof. Dr. Rolf Dornberger OOP: 5 Elementare Anweisungen und Bedingungen 22.09.2010 23 © Prof. Dr. Rolf Dornberger OOP: 5 Elementare Anweisungen und Bedingungen 22.09.2010 22