Java: Syntax-Grundlagen III

Ähnliche Dokumente
Vorsichtige Programmierer verwenden Inkrement- Operatoren nicht in komplizierteren Ausdrücken

Programmieren I. Kontrollstrukturen Heusch 8 Ratz Institut für Angewandte Informatik

Javakurs für Anfänger

Programmieren I. Kontrollstrukturen Heusch 8 Ratz Institut für Angewandte Informatik

Programmiertechnik Kontrollstrukturen

4.4 Imperative Algorithmen Prozeduren

(Aufgaben zu Wertzuweisungen siehe Vorlesungsbeilage S. 49)

FACHHOCHSCHULE AUGSBURG Hochschule für Technik, Wirtschaft und Gestaltung

Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik Kontrollstrukturen

JavaScript. Dies ist normales HTML. Hallo Welt! Dies ist JavaScript. Wieder normales HTML.

EINI LW/WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 14/15

Einstieg in die Informatik mit Java

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Blöcke. Beispiel: Variablen in Blöcken

Abschnitt 5. Grundlagen der funktionalen & imperativen Programmierung

Java Übung. Übung 2. Werner Gaulke. 19. April Universität Duisburg-Essen Kommedia, Übung EinPro SS06, Einführung in Java - Übung.

Einstieg in die Informatik mit Java

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Einstieg in die Informatik mit Java

Operatoren für elementare Datentypen Bedingte Anweisungen Schleifen. Operatoren für elementare Datentypen Bedingte Anweisungen Schleifen

3. Anweisungen und Kontrollstrukturen

Institut für Programmierung und Reaktive Systeme. Java 2. Markus Reschke

Das diesem Dokument zugrundeliegende Vorhaben wurde mit Mitteln des Bundesministeriums für Bildung und Forschung unter dem Förderkennzeichen

Programmieren I. Kontrollstrukturen. Heusch 8 Ratz Institut für Angewandte Informatik

Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny

S. d. I.: Programieren in C Folie 4-1. im Gegensatz zu Pascal gibt es in C kein Schlüsselwort "then"

Informatik für Ingenieure (InfIng)

Intensivübung zu Algorithmen und Datenstrukturen

Arbeitsblätter für Algorithmierung und Strukturierung

INP (05) Prof. Dr.-Ing. S. Gössner. University of Applied Sciences Lippe & Höxter

Welche Informatik-Kenntnisse bringen Sie mit?

2 Teil 2: Nassi-Schneiderman

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 29

Einführung in die Programmierung Wintersemester 2011/12

3.2 Datentypen und Methoden

Objektorientierte Programmierung OOP Programmieren mit Java

Java 8. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Oktober 2014 JAV8

Arbeitsblätter für Algorithmierung und Strukturierung C #

Schleifen in C/C++/Java

Einführung in die Programmierung II. 3. Kontrollstrukturen

Algorithmen & Programmierung. Steuerstrukturen im Detail Selektion und Iteration

Tag 2 Repetitorium Informatik (Java)

3. Grundanweisungen in Java

Schachtelung der 2. Variante (Bedingungs-Kaskade): if (B1) A1 else if (B2) A2 else if (B3) A3 else if (B4) A4 else A

Java - Schleifen. Bedingung. wiederhole. Anweisung Anweisung Anweisung. Leibniz Universität IT Services Anja Aue

ModProg 15-16, Vorl. 5

Vorlesung Programmieren

Java für Anfänger Teil 2: Java-Syntax. Programmierkurs Manfred Jackel

Grundlagen der Programmiersprache C für Studierende der Naturwissenschaften

2.5 Programmstrukturen Entscheidung / Alternative

Kapitel 4. Kontrollstrukturen

Vorlesung Programmieren

EINI LW/WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 16/17

Verzweigungen und Wiederholungen

Java 7. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Dezember 2011 JAV7

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden.

Java I Vorlesung Imperatives Programmieren

Grundlagen der Programmierung Teil1 Einheit III Okt. 2009

Schleifen in C/C++/Java

Java für Anfänger Teil 2: Java-Syntax. Programmierkurs Manfred Jackel

Operatoren für elementare Datentypen Bedingte Anweisungen Schleifen. Programmieren I. Martin Schultheiß. Hochschule Darmstadt Wintersemester 2010/2011

Datentypen: integer, char, string, boolean

9 Anweisungen und Kontrollstrukturen

Kapitel 4. Programmierkurs. Datentypen. Arten von Datentypen. Wiederholung Kapitel 4. Birgit Engels, Anna Schulze WS 07/08

Aufgabe 1.90: Ein Geschäft gibt ihren Kunden unterschiedliche Rabatte. Schreiben ein Programm, das folgende Rabattklassen vorsieht:

Eine kleine Befehlssammlung für Java Teil1

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch)

PROGRAMMIERUNG IN JAVA

Arbeitsblätter für die Lehrveranstaltung OOP JAVA 1

Algorithmen implementieren. Implementieren von Algorithmen

C-Grundlagen. zur Programmierung des MicroControllersystems MiCoWi

4.2 Gleitkommazahlen. Der Speicherbedarf (in Bits) ist üblicherweise. In vielen Anwendungen benötigt man gebrochene Werte. Physikalische Größen

Funktionen nur wenn dann

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch)

BKTM - Programmieren leicht gemacht.

Kapitel 5. Programmierkurs. Kontrollstrukturen. Arten von Kontrollstrukturen. Kontrollstrukturen Die if-anweisung Die switch-anweisung

C# - Einführung in die Programmiersprache Bedingte Anweisungen und Schleifen

float: Fließkommazahl nach IEEE 754 Standard mit 32 bit

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch)

Einstieg in die Informatik mit Java

Einführung in die Informatik

Objektorientierte Programmierung

Motivation. Bisher bestanden die Rümpfe unserer Methoden aus einzelnen Statements, z.b. Wertzuweisungen oder Methodenaufrufen.

Einführung in C. EDV1-04C-Einführung 1

Einstieg in die Informatik mit Java

C++ - Einführung in die Programmiersprache Schleifen

Grundlagen der Programmierung Teil1 Einheit III Okt. 2010

Kontrollstrukturen. Wo sind wir? Anweisung mit Label. Block. Beispiel. Deklarationsanweisung

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Fallunterscheidung: if-statement

JAVA-Datentypen und deren Wertebereich

Softwareentwicklung Sequenz, Verzweigungen, Schleifen

Programmieren I + II Regeln der Code-Formatierung

3. Algorithmenentwurf und JAVA. Informatik II für Verkehrsingenieure

C++ Teil 2. Sven Groß. 16. Apr IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Apr / 22

Abschnitt 2: Daten und Algorithmen

Modellierung und Programmierung 1

Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 1. Teil

2.7 Anweisungen. x+2; // Java-Fehler, korrekt in C oder C++

Transkript:

Java: Syntax-Grundlagen III Verzweigungen, bedingte Anweisungen Eines der wesentlichen Merkmale einer Programmiersprache ist ihre Fähigkeit, Operationen situationsbedingt ausführen zu können, d.h. eine Anweisungsfolge nur dann zu durchlaufen, wenn vorgegebene Bedingungen erfüllt sind, und anderfalls entweder gar nichts zu tun oder aber andere Anweisungen auszuführen. Zum Beispiel sollte die Berechnung der Quadratwurzel einer Variablen nur dann ausgeführt werden, wenn der aktuelle Wert der Variablen größer oder gleich Null ist, anderfalls könnte eine entsprechende Meldung an den Anwender des Programms auf den Bildschirm gegeben werden. Java bietet für diese Zwecke die if-anweisung als sog. Einwegverzweigung und die switch-anweisung als Mehrwegverzweigung an. if- und if--anweisungen Die Einwegverzweigungen "if" und "if-" prüfen, ob eine Bedingung wahr oder falsch ist und führen in Abhängigkeit davon entweder den sog. "then-zweig" oder den "-Zweig" aus. Die Syntax der einfachen if-anweisung ohne den -Zweig lautet wenn nur eine Anweisung auszuführen ist: if (Bedingung) Anweisung; wenn ein Anweisungsblock auszuführen ist: if (Bedingung) { Anweisung1; Anweisung2; Anweisung3; Die Verzweigung beginnt mit dem Schlüsselwort "if" gefolgt von einem in runde Klammern gesetzten Ausdruck des Typs boolean, dahinter folgt der then-zweig als einmalige Anweisung oder als Anweisungsfolge innerhalb geschweifter Klammern. Einen -Zweig gibt es hier nicht, d.h. wenn der Ausdruck "Bedingung" den Wert false aufweist, wird der then-zweig lediglich übersprungen. Beispiel: double x; if (x >= 0.0) { x = Math.sqrt(x); System.out.println("Quadratwurzel von x = "+x); Prof. Dr.-Ing. Gudrun Breitzke Grundlagen Java-Syntax III - 1

Die Syntax der if--anweisung lautet if (Bedingung) AnweisungA; AnweisungB; Hier gibt es zusätzlich den -Zweig mit Anweisungen, die nur dann ausgeführt werden, wenn der Ausdruck "Bedingung" den Wert false aufweist. Auch hier kann eine einzelne Anweisung des then-zweigs oder des -Zweigs alleine hinter die Bedingung bzw. das Schlüsselwort "" geschrieben werden, sollen jedoch jeweils mehrere Anweisungen durchlaufen werden, ist der jeweilige Anweisungsblock in geschweifte Klammern zu setzen: if (Bedingung){ AnweisungA1; AnweisungA2; AnweisungA3; { AnweisungB1; AnweisungB2; AnweisungB3; Beispiel: double x; if (x >= 0.0) { x = Math.sqrt(x); System.out.println("Quadratwurzel von x ="+x); System.out.println("x < 0, Quadratwurzel nicht moeglich"); In der o.a. Syntax und den Beispielen werden die Anweisungen nach rechts eingerückt, damit im Quelltext auf den ersten Blick sichtbar wird, welche Anweisungen zum then- und welche zum -Zweig gehören. Prof. Dr.-Ing. Gudrun Breitzke Grundlagen Java-Syntax III - 2

Dangling if- und if--anweisungen können geschachtelt werden, d.h. in den Anweisungsblöcken des then- oder des -Zweigs können wiederum if- bzw. if-- Anweisungen enthalten sein. Hier ist es sehr wichtig, auch einzelne Anweisungen durch geschweifte Klammern eindeutig der gewünschten if-anweisung zuzuordnen, da sich ansonsten das sog. "dangling--problem" ergeben kann. Die Übersetzung lautet in etwa "das in der Luft hängende ". Die Problematik soll an folgendem Beispiel erläutert werden: if (a >= b) max = b; Durch die Einrückung im o.a. Beispiel wird der Eindruck erweckt, dass die Anweisung "max=b;" im -Zweig der ersten Bedingung und somit nur dann ausgeführt wird, wenn "a < b" das ist jedoch nicht der Fall! In Java gilt die Regel, dass ein -Zweig immer der nächstgelegenen inneren if-anweisung zugeordnet wird. Im o.a. Beispiel würde daher "max=b;" im then-zweig der zweiten Bedingung ausgeführt, und daher nur, wenn "a 0". Folgende Schreibweise betont den wirklichen Zusammenhang: if (a >= b) max = b; Wenn die die Anweisung "max=b;" zur äußeren if-anweisung gehören soll, muss daher an dieser Stelle Eindeutigkeit durch die Verwendung von Klammern hergestellt werden: if (a >= b) { max = b; Prof. Dr.-Ing. Gudrun Breitzke Grundlagen Java-Syntax III - 3

switch-anweisung Die switch-anweisung ist eine Mehrwegverzweigung, durch die eine Sequenz von if--anweisungen ersetzt werden kann. Sie prüft den Wert eines Ausdrucks vom Datentyp int, short, byte oder char und reagiert in Abhängigkeit vom aktuellen Wert des Ausdrucks. Ihre Syntax lautet wie folgt: switch (Ausdruck) { case konst1: Anweisung11; Anweisung12; ; case konst2: Anweisung21; Anweisung22; ; default: Anweisung; Das Schlüsselwort "case" ist ein sog. Einsprungziel, d.h. es werden alle Anweisungen hinter demjenigen case ausgeführt, dessen Wert "konst" mit dem Wert des Ausdrucks übereinstimmt. Falls der Ausdruck mit keiner der Konstanten der case-ziele übereinstimmt, wird optional die hinter "default:" stehende Anweisung ausgeführt. Durch die break-anweisung am Ende einer Anweisungsfolge wird erreicht, dass die nachfolgenden case-anweisungen übersprungen werden. Folgendes beispielhafte Programmstück wertet eine Monatszahl zwischen 1 und 12 aus und gibt die zugehörige Zahl der Monatstage aus: int monat, tag=0; switch (monat){ case 1: case 3: case 5: case 7: case 8: case 10: case 12: tag = 31; case 2: tag = 28; case 4: case 6: case 9: case 11: tag = 30; default: System.out.println("Fehler: Keine Zahl zwischen 1 und 12"); System.out.println("Der "+monat+". Monat hat "+tag+" Tage!"); Prof. Dr.-Ing. Gudrun Breitzke Grundlagen Java-Syntax III - 4

Die Switch-Anweisung des o.a. Beispiels könnte natürlich auch über eine if- Anweisung codiert werden, z.b. wie folgt: int monat, tag=0; if (monat==1 monat==3 monat ==5 monat==7 monat==8 monat ==10 monat == 12) tag = 31; if (monat==2) tag = 28; if (monat==4 monat==6 monat ==9 monat==11) tag = 30; System.out.println("Fehler: Keine Zahl zwischen 1 und 12"); System.out.println("Der "+monat+". Monat hat "+tag+" Tage!"); Welche Anweisungsform gewählt wird, ist letztendlich vom "Geschmack" des Programmierers abhängig, jedoch ist die switch-anweisung i.d.r. schneller, benötigt aber mehr Speicherplatz als die if-anweisung! Prof. Dr.-Ing. Gudrun Breitzke Grundlagen Java-Syntax III - 5