3 Befehle in Java. Variablen, Ausrücke, Anweisungen und zusammengesetzte Anweisungen. Variablen sind über einen Namen angesprochene Speicherplätze.

Ähnliche Dokumente
Programmieren I. Kapitel 5. Kontrollfluss

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

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

Unterlagen. CPP-Uebungen-08/

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

3. Anweisungen und Kontrollstrukturen

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

FACHHOCHSCHULE AUGSBURG Hochschule für Technik, Wirtschaft und Gestaltung

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

Primitive Datentypen, Eingaben, Kontrollstrukturen und Methodendeklaration

Kapitel 3: Variablen

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 1 - Variablen und Kontrollstrukturen

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

Programmiertechnik Kontrollstrukturen

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

Modellierung und Programmierung 1

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

Operatoren (1) Operatoren (2)

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

Grundlagen der Programmierung Teil1 Einheit III Okt. 2010

Java: Eine kurze Einführung an Beispielen

JAVA-Datentypen und deren Wertebereich

3.2 Datentypen und Methoden

Übungen zur Vorlesung Wissenschaftliches Rechnen I. Grundelemente von Java. Eine Anweisung. wird mit dem Wertzuweisungsoperator = geschrieben.

ModProg 15-16, Vorl. 5

Grundlagen der Programmierung Teil1 Einheit III Okt. 2009

Einstieg in die Informatik mit Java

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

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

Grundlagen der Informatik Ergänzungen WS 2007/2008 Prof. Dr. Rainer Lütticke

RO-Tutorien 3 / 6 / 12

Sprachkonstrukte. Einführung in Java. Folie 1 von Mai Ivo Kronenberg

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

Wo sind wir? Kontrollstrukturen

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

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

Arbeitsblätter für die Lehrveranstaltung OOP JAVA 1

Projekt 3 Variablen und Operatoren

Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik Operatoren, Kommentare, Ein-/Ausgabe

Java I Vorlesung Imperatives Programmieren

Grundlagen der Informatik 2. Operatoren

Variablen. CoMa-Übung VIII TU Berlin. CoMa-Übung VIII (TU Berlin) Variablen / 15

Einführung in die Programmierung II. 3. Kontrollstrukturen

Einstieg in die Informatik mit Java

Objektorientierte Programmierung

Einführung in die Programmierung Wintersemester 2011/12

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

3. Grundanweisungen in Java

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

Einstieg in die Informatik mit Java

Anweisungen zur Ablaufsteuerung

Objektorientierte Programmierung OOP Programmieren mit Java

Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme

1. Referenzdatentypen: Felder und Strings. Referenz- vs. einfache Datentypen. Rückblick: Einfache Datentypen (1) 4711 r

1. Referenzdatentypen: Felder und Strings

Modul Entscheidungsunterstützung in der Logistik. Einführung in die Programmierung mit C++ Übung 2

Primitive Datentypen und Felder (Arrays)

Javakurs für Anfänger

Javaprogrammierung mit NetBeans. Variablen, Datentypen, Methoden

Welche Informatik-Kenntnisse bringen Sie mit?

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

PROGRAMMIERUNG IN JAVA

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java

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

RO-Tutorien 15 und 16

Methoden und Wrapperklassen

Java Einführung Operatoren Kapitel 2 und 3

Die Sprache C# Datentypen, Speicherverwaltung Grundelemente der Sprache. Dr. Beatrice Amrhein

12 == 12 true 12 == 21 false 4 === 7 true 4 === "vier" false 4 === 4.0 false 12!= 13 true 12!== 12 false 12!== 12.0 true. 1 < 3 true 3 < 1 false

Algorithmen zur Datenanalyse in C++

Imperative Programmierung in Java. Algorithmen und Datenstrukturen II 1

Einführung in die Programmierung II. 5. Zeiger

Programmieren in C/C++ und MATLAB

Primitive Datentypen

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

4 Formelsammlung C/C++

Einstieg in die Informatik mit Java

(Aufgaben zu Wertzuweisungen siehe Vorlesungsbeilage S. 49)

Java für Anfänger Teil 3: Integer-Typen. Programmierkurs Manfred Jackel

Tag 5. Repetitorium Informatik (Java) Dozent: Marius Kamp Lehrstuhl für Informatik 2 (Programmiersysteme)

C++ - Objektorientierte Programmierung Konstruktoren und Destruktoren

Arithmetik in der tcsh

Die einfachsten Anweisungen

Vorlesung Programmieren

Webbasierte Programmierung

Intensivübung zu Algorithmen und Datenstrukturen

Programmierung mit C Zeiger

Arbeitsblätter für Algorithmierung und Strukturierung C #

Tag 3 Repetitorium Informatik (Java)

Algorithmen implementieren. Implementieren von Algorithmen

Kapitel 3. Grunddatentypen, Ausdrücke und Variable

Vorlesung Programmieren

Algorithmen & Programmierung. Steuerstrukturen im Detail Selektion und Iteration

1 Aufgaben 1.1 Objektorientiert: ("extended-hamster") Sammel-Hamster

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 12/13. Kapitel 3. Grunddatentypen, Ausdrücke und Variable

Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme

Einführung Datentypen Verzweigung Schleifen. Java Crashkurs. Kim-Manuel Klein May 4, 2015

String-Konkatenation

Transkript:

3 Befehle in Java Variablen, Ausrücke, Anweisungen und zusammengesetzte Anweisungen Variablen sind über einen Namen angesprochene Speicherplätze. Variablen Die Art und Größe des erforderlichen Speicherplatzes richtet sich nach dem Typ der Variablen, ist aber vom Nutzer (Programmierer) nicht unmittelbar beeinflußbar. Die elementaren Datentypen (Zahlen, Char., Bool.) sprechen unmittelbar ihre Werte an. xyz Wert Alle übrigen Datentypen (Klassen) referenzieren jeweils ihren Datenbereich Abc Referenz Werte

Rolle von Variablen Grundsätzlich dienen Variablen dazu, Daten in einem dafür vorgesehenen Speicherbereich zu verwalten. 1.lokale Variablen eines Blocks (z.b. for-anweisung). Sie werden im Block angelegt und beim Verlassen des Blocks wieder aufgegeben. 2.Feldkomponenten, die bei der Erzeugung eines Feldes angelegt werden. 4.Methodenparameter,sie werden beim Aufruf der Methode angelegt und nach Abarbeitung des Methodenrumpfes aufgegeben. 5. Methoden-Rückgabe, sie ist unbenannt uns steht nur noch unmittelbar nach Abarbeitung des Methodenrumpfes für eine Zuweisung zur Verfügung, danach wird sie aufgegeben. Garbage Collection Wird eine Variable am Ende eines Blocks (einer Methode) aufgegeben, dann steht deren Namen und damit der Verweis auf die entsprechende Speicherstelle nicht mehr zur Verfügung. Wurde diese Referenz nicht vorher an andere Stelle kopiert (Zuweisung), kann auf den Speicherbereich aus dem Programm nicht mehr zugegriffen werden. Die Garbage Collection ist ein Mechanismus, der in unregelmäßigen Abständen das ablaufende Programm durchforstet, welche Speicherbereiche noch referenziert werden. Alle nicht mehr referenzierten Bereiche werden dann wieder zur neuen Verwendung freigegeben.

Deklarationen Bevor eine Variable verwendet werden kann, muß sie deklariert sein (Speicherreservierung!). Eine Deklaration hat die Form Typname Dekl1,Dekl2,..,Dekln; dabei haben die einzelnen Teile Dekli die Form Variablenname oder mit Initialisierung: Variablenname=konstanterAusdruck Wird die Variable nicht explizit initialisiert, erzeugt Java automatisch eine Initialisierung (mit einem 0-Wert). Eine Variable wird nach Beendigung des {}-Blocks, in dem sie deklariert wurde aufgegeben und der Speicherplatz von der garbage collection freigegeben, falls er nicht inzwischen von einer anderen Variable referenziert wird. Variablennamen können in einem Block oder untergeordneten Block nicht umdeklariert werden. Beispiel { int i=7, j=i+1, k;... { foat i=(3/2)*math.pi //Fehler!... }... } { int i=-5 //zulässig, da neuer Block... }

Ausdrücke Ausdrücke werden nach folgenden Regeln aus Variablen Konstanten und Operationen aufgebaut: Variablen und Konstanten sind Ausdrücke Ist A ein Ausdruck, so auch -A, ++A, --A, ~A,!A, A++, A-- und jeder Methodenaufruf Name(A) Sind A, B Ausdrücke, so auch A+B, A-B, A*B, A/B, A%B, A<<B, A>>B, A>>>B, A<B, A<=B, A==B, A>=B, A>B, A!=B, A&B, A B, A^B, A&&B, A B Sind A, B, C Ausdrücke und B boolesch, dann auch B?A:C Die Ausdrücke, die in eine mehrstellige Operation eingesetzt werden unterliegen der Einschränkung, daß die Typen übereinstimmen müssen, andernfalls ergibt sich ein Übersetzungsfehler oder bei Zahlentypen eine automatische Typanpassung. Ausdrücke, in denen keine Variablen vorkommen heißen konstante Ausdrücke. einstellige Operatoren arithmetisch: (d.h. Eingabe numerischer Typ) + keine Auswirkung - negative Zahl ~ bitweises Komplement // ~01101001 == 10010110 Operatoren mit Seiteneffekt ++ Inkrement (prä- oder post-) // x+1 -- Dekrement (prä- oder post-) // x-1 boolesch: (d.h. Eingabe boolean)! Komplement //! true ==false! false == true

Wert-/Referenz-Übergabe Alle erwähnten Operatoren nehmen Werte entgegen und liefern Werte desselben Typs ab, nicht aber die Inkrement / Dekrement-Operation ++, --. ++, -- nehmen außer der Wertrückgabe noch eine Veränderung der Eingabe vor und benötigen deshalb einen Platz, wo sie diese Veränderung notieren können. Deshalb darf die Eingabe dort nur eine Variable (Referenz) und keine Konstante oder komplexer Ausdruck sein. Werte sind im gegensatz zu Variablen nur tempörär verfügbare Speicherplätze, in denen Zwischenergebnisse einer Ausdruck-Berechnung abgelegt werden, um sie unmittelbar in einer Operation oder einer Zuweisung weiterzuverwenden. Arithmetische Operatoren Die (2-stelligen) arithmetischen Operationen erfordern als Eingaben vom gleichen numerischen Typ, der auch der Typ des Ausgabewerts ist. Sind die Eingabetypen nicht gleich, so wird eine automatische Typ-Anpassung vorgenommen. + Addition - Subtraktion * Multiplikation / Division % Rest bei Division (mod) Klammersparregeln: *,/,% haben höhere Priorität als +,- (Punktrechnung vor Strichrechnung) Ohne Klammern wird Linksklammerung angenommen (z.b. ((a+b)+c)+d) )

Bit-Operatoren Diese Operatoren (wie auch ~) werden auf ganzzahlige Typen angewandt und verändern einzelne Bits. shift-operatoren (Multiplikation mit 2 n ) << shift nach links // a<<b == a*2 b >> shift nach rechts mit Vorzeichen // a>>b == a*2 -b >>> shift nach rechts mit Null //a>>b == a*2 -b als vorzeichenlose Zahl a boolesche Operatoren (auch für boolean) & bitweises AND // xandy ==1 <=> x==y==1 bitweises OR // xory == 0 <=> x==y==0 ^ bitweises XOR // xxory == 0 <=> x==y rein boolesche Operatoren (nur für boolean) && AND mit lazy evaluation // a!=0 && b/a>=c kein Laufzeitfehler bei a==0 OR mit lazy evaluation // a==0 b/a>=c kein Laufzeitfehler bei a==0 Vergleichs-Operatoren Vergleiche erwarten Eingaben desselben (numerischen) Typs und liefern einen booleschen Wert ab. < kleiner <= kleinergleich == gleich > größer >= größergleich!= ungleich Das Konditional?: erwartet eine boolesche Eingabe und zwei Eingaben desselben (beliebigen) Typs: b?x:y liefert x, falls b=true, und sonst y

Die Anweisungen von Java sind: Deklarationen mit und ohne Initialisierung Ausdrucksanweisungen Anweisungen Zuweisung, In-/Decrement, Methodenaufruf, Erzeugung (new) Auswahl if, switch Schleifen while, do..while, for sonstige label, break, continue, return, throw, try, synchronized Deklarationen Bevor ein Objekt (Variable, Methode, Klasse) verwendet werden kann, muß es deklariert sein (Speicherreservierung!). Eine Deklaration hat die Form Typname Dekl1,Dekl2,..,Dekln; dabei haben die einzelnen Teile Dekli die Form Objektname oder mit Initialisierung: Objektname=konstanterAusdruck Objektname{Definition} Wird das Objekt nicht explizit initialisiert, erzeugt Java automatisch eine Initialisierung (mit einem null-wert). Ein Objekt wird nach Beendigung des {}-Blocks, in dem sie deklariert wurde aufgegeben und der Speicherplatz von der garbage collection freigegeben. Objektnamen können in einem Block oder untergeordneten Block nicht umdeklariert werden.

Blöcke An Stellen, wo die Grammatik von Java eine Anweisung erwartet, kann es sein, daß der Programmierer keine oder mehrere Anweisungen einfügen möchte. Hier helfen: Leere Anweisung : ; die keinerlei Auswirkung hat. Anweisungsblock: { A1 ; A2 ;... ; An} In { } eingeschlossene und durch Semikola getrennte Anweisungen werden nacheinander ausgeführt und ersetzen eine einzige Anweisung. Zuweisungen Bei einer Zuweisung ( = ) wird die rechte Seite des Ausdrucks ausgewertet und dann der Variablen auf der linken Seite zugewiesen. Die linke Seite einer Zuweisung muß also stets eine Variable sein. Für jede zweistellige Operation o gibt es den zugehörigen Zuweisungsoperator =o, der als Kurzform auftritt: x =o y steht für x = xoy Die Java-Zuweisungsoperatoren sind demnach: = *= /= %= += -= <<= >>= >>>= &= ^= =

Methodenaufrufe Methoden sind (aus Klassen, Paketen) eingebundene oder selbst definierte Codestücke, die ggf. Parameter entgegennehmen und einen Wert zurückliefern. Sie werden mit ihrem Namen und den Parametern (in Klammern) aufgerufen. PrintWriter out = new PrintWriter(System.out,true) // erzeugt ein (Ausgabe-) Objekt // namens out out.println(i + ist positiv ) Math.sin(3.1) (byte) n*m // druckt die Zahl i und // ist positiv in eine Zeile // gibt den sin(3.1) zurück // wandelt den Typ von n*m in byte um Fallunterscheidungen Um situationsabhängig eine oder eine andere Anweisung auszuführen benötigt man Fallunterscheidungen (z.b. zeichne eine Kreis nur, wenn er in das Anzeigefenster hineinpasst), die in Java durch die if-anweisung (zwei Fälle) oder die switch-anweisung (viele Fälle) realisiert wird.

Die if Fallunterscheidung FürJa-Nein-Fallunterscheidungen gibt es die if-anweisung in folgenden zwei Varianten: if ( Bedingung ) Anweisung1 if ( Bedingung ) Anweisung1 else Anweisung2 Dabei ist Bedingung ein Ausdruck, der einen booleschen Wert zurückgibt Es wird zunächst die Bedingung ausgewertet. Ist der Wert true, dann wird Anweisung1 ausgeführt, ist der Wert false, dann wird die Anweisung1 übergangen (und ggf. Anweisung2 ausgeführt) Die switch-fallunterscheidung Für eine Fallunterscheidung mit mehr als 2 Fällen (Ja-Nein) gibt es die switch- Anweisung: switch (Ausdruck) { case konstanterausdruck1 : Anweisung1; case konstanterausdruck2 : Anweisung2;... case konstanterausdruckn : AnweisungN; default : Anweisung0 } Alle Ausdrücke müssen jeweils Werte von demselben Typ aus byte, char, short, int zurückgeben. Statt einem konstanten Ausdruck dürfen auch mehrere durch Kommata getrennt nach jedem case folgen. Nach jeder case-zeile darf nach der Anweisung noch die Anweisung break; folgen, die zur Folge hat, daß die nachfolgenden Zeilen (insbesondere default) nicht mehr bearbeitet werden, d.h. die Fallunterscheidung wird sofort unterbrochen, wenn dieser Fall eingetreten ist. Ist der Wert des Ausdrucks gleich dem Wert eines konstanten Ausdrucks in einer case-zeile, so wird die dahinterstehende Anweisung ausgeführt. Wurde keine case-zeile mit break aktiviert, so wird am Schluß noch die default- Anweisung ausgeführt.

Schleifen Um Wiederholungen derselben Handlung (z.b. zeichne immer wieder Kreise mit variierenden Radien) zu realisieren kennt Java drei Schleifen-Varianten : while (abweisende Schleife), do...while (nicht abweisende Schleife) und for (Zähl-Schleife). while ( Bedingung ) Anweisung Abweisende Schleife Dabei ist Bedingung ein Ausdruck, der einen booleschen Wert zurückgibt. Es wird die Bedingung ausgewertet, falls sie zu true auswertet, wird die Anweisung augeführt und wieder zu der Bedingung zurückgekehrt. Sobald sie zu false auswertet, ist die Schleife beendet. Wenn die Bedingung schon zu Anfang zu false auswertet, wird die Anweisung nie ausgeführt (abweisend).

do Anweisung while ( Bedingung) ; nicht abweisende Schleife Dabei ist Bedingung ein Ausdruck, der einen booleschen Wert zurückgibt Es wird zunächst die Anweisung ausgeführt und danach die Bedingung ausgewertet. Wertet sie zu true aus, so wird zur Anweisung zurückgekehrt. Sobald die Bedingung zu false auswertet, ist die Schleife beendet. Die Anweisung wird wenigstens einmal ausgeführt (nicht abweisende Schleife). Zählschleife for (Initialisierung ; Bedingung ; Update ) Anweisung Initialisierung weist der Laufvariable ihren Anfangswert zu, dabei kann sie auch deklariert werden. Bedingung ist wieder ein boolescher Ausdruck, der bei Wert false die Schleife abbricht. Update enthält Anweisungen (durch Kommata getrennt), die die Veränderung der Laufvariablen in jeder Runde realisieren. Anweisung ist der eigentliche Schleifenkern, der wiederholt werden soll.

Zählschleife 2 Jeder der vier Einträge ist optional, insbesondere die Anweisung kann mit in das Update aufgenommen werden, wenn sie nicht ein sehr komplexes Gebilde ist. Beim Eintritt in die for-schleife wird zunächst die Initialisierung durchgeführt, danach wird die Bedingung ausgewertet und, falls true, zuerst die Anweisung und dann das Update ausgeführt und zur Bedingung zurückgegangen. Sobald die Bedingung zu false auswertet, ist die Schleife zu ende. Auch wenn die Laufvariable erst in der Initialisierung von for deklariert wird, ist sie auch nach dem Abbruch noch in dem gesamten Block zugreifbar, in dem die for-schleife steht. Die break-anweisung break und continue Ähnlich wie bei der Fallunterscheidung kann auch in einer Schleife eine break-anweisung (in einer entsprechenden if- Abfrage) stehen, die dann zum sofortigen Abbruch der Schleife führt. Diese Technik verwendet man bei sehr komplizierten Abbruchbedingungen, dann kann meist auf eine weitere Bedingung in der for-schleife verzichtet werden. Die continue-anweisung Auch die Bearbeitung der Anweisung kann frühzeitig unterbrochen und mit einem continue auf den nächsten Fall der Schleife weitergesprungen werden.