Java- Syntax.

Slides:



Advertisements
Ähnliche Präsentationen
der Universität Oldenburg
Advertisements

3. Operatoren und Ausdrücke
Algebraische Zahlen: Exaktes Rechnen mit Wurzeln
Forschungszentrum caesar
Invariante und Algorithmenentwurf
Variablen und Datentypen
Zusammenfassung der Vorwoche
10. Grundlagen imperativer Programmiersprachen
der Universität Oldenburg
Syntax der Aussagenlogik
Prolog und Prädikatenlogik I
FH-Hof Extensible Markup Language Richard Göbel. FH-Hof Extensible Markup Language XML XML ist universeller Ansatz für die Strukturierung von Zeichenketten.
Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei.
C- Syntax. Bestandteile der Sprache C: Ausdrücke Anweisungen.
SWITCH - Anweisung.
Datentyp- umwandlung. Literale sind: Bezeichner mit einem festen Wert wie z.B:
Java- Syntax.
REKURSION + ITERATION. Bemerkung: Die in den folgenden Folien angegebenen "Herleitungen" sind keine exakten Beweise, sondern Plausibilitätsbetrachtungen.
Strukturen. In einer Struktur kann eine beliebige Anzahl von Komponenten (Daten) mit unterschiedlichen Datentypen (im Gegensatz zu Feldern) zusammengefaßt.
ARRAY oder FELD oder VEKTOR
Schleifen-beobachtung
Objekte und Arbeitsspeicher
Der Präprozessor. Bevor der Compiler das Programm in Maschinencode übersetzt (nur dieser kann von der CPU, dem Herz des Computers, bearbeitet werden)
ARRAY oder FELD oder VEKTOR
Robotik mit LEGO Mindstorms
Imperative Programmierung
Beispiele für Ausdrucksalgebren
Boolesche Ausdrücke Ist der Rückgabewert eines Ausdrucks vom Typ boolean, so wird dieser als Boolescher Ausdruck bezeichnet (nach dem Mathematiker George.
Java-Kurs - 2. Übung Entwicklungsumgebung Struktur von Programmen
PKJ 2005/1 Stefan Dissmann Zusammenfassung Vorwoche Programm besteht aus mehreren Bestandteilen: Schlüsselwörter Sonderzeichen Bezeichner Kommentare Texte.
DVG Klassen und Objekte
Datenformate DVG Datenformate.
boolean Datentyp und Operator
Menschliche Logik AND Boolsche Logik = NOT Logisch
Einführung in die Programmiersprache C 1
Repetition „Variable & Term“
Agenda für heute, 19. Januar 2007 Informationssysteme: ETH-BibliothekInformationssysteme: ETH-Bibliothek Logische Verknüpfungen als Grundlage für die Informationsgewinnung.
Informatik II Grundlagen der Programmierung Programmieren in C Programmstrukturen / Kontrollstrukturen Hochschule Fulda – FB ET Sommersemester 2014.
Algorithmen und Datenstrukturen SS 2005
CuP - Java Sechste Vorlesung Entspricht ungefähr Kapitel 3. 1 – 3
Datentypen: integer, char, string, boolean
Agenda für heute, 7. April, 2005 Bedingte ProgrammausführungBedingte Programmausführung Algorithmische Grundlagen Vergleichsoperatoren, Wahrheitswerte.
Daten verwalten (2) Agenda für heute, 29. April 2009
Daten verwalten (2) Agenda für heute, 30. April 2008
Multiplikation von Summentermen
Programmieren in C Grundlagen C 2
Agenda für heute, 20. November 2009
Agenda für heute, 21. November 2008
PHP: Operatoren und Kontrollstrukturen
Hochschule Fulda – FB ET Sommersemester 2014
Programmieren in C Grundlagen C 2
Rechnen mit negativen Klammern
Übersicht Nachtrag zu Ausdrücken
7. Formale Sprachen und Grammatiken
Anführungszeichen?! echo 'Apfel$atf'; // ergibt: Apfel$aft
Kapitel 4: Aussagen-, Prädikatenlogik
Grundlagen der mathematischen Logik
Einführung in die Programmierung mit Java
Einführung in die Programmierung mit Java
(Wirtschafts-)mathematik I Mathe im Wandel der Zeit Volksschule 1960: Ein Bauer verkauft einen Sack Kartoffeln für 50 DM. Die Erzeugerkosten betragen 40.
Rechnen mit negativen Klammern
Variablen und Datentypen
Verzweigung oder bedingte Anweisung. Aufgabe: Ein Autofahrer tankt sein Auto voll und schreibt den Kilometerstand auf (drei- stelliger Tageszähler).Wenn.
Reihenfolge der Operatoren
TRUE und FALSE in C Der Wert 0 steht für FALSE Jeder von 0 verschiedene Wert steht für TRUE FALSE wird als 0 dargestellt TRUE wird als 1 dargestellt.
Variablen und Operatoren. C++ Teil 2: Grundstrukturen Variablen Operatoren Kontrollstrukturen Funktionen Header-Dateien Pointer und Referenzen.
Datentypen: integer, char, string, boolean
Datentypen: integer, char, string, boolean
Datentyp- umwandlung.
PGdP Tutorstunde 3 Gerald Mahlknecht Technische Universität München Informatik Zentralübung Donnerstags Nachbesprechung Samstags.
 Präsentation transkript:

Java- Syntax

Bestandteile der Sprache Java: Ausdrücke Anweisungen

Ausdruck

Jeder Ausdruck hat einen Wert !! Ein Ausdruck ist eine Folge von Operatoren und Operanden. Ein Ausdruck ist - grob gesagt - ein Term oder eine mathematische Formel. Jeder Ausdruck hat einen Wert !!

Es gibt folgende Ausdrücke: - arithmetische Ausdrücke - relationale und logische Ausdrücke - Zuweisungsausdrücke

Arithmetische Ausdrücke

Beispiele: In allen folgenden Beispielen wird stillschweigend vorausgesetzt, dass die benutzten Variablen alle vorher deklariert wurden!!!

3 3+5-2 3+ xy 2x Literal (Konstante), Wert des Ausdrucks: 3 kein Ausdruck (syntaktisch falsch) 3+ xy Variable, Wert des Ausdrucks: unbekannt, da der Wert von xy in diesem Zusammenhang dem Programmierer nicht bekannt ist. 2x keine Variable: Variablenname darf nicht mit einer Ziffer beginnen ! (syntaktisch falsch)

3+x-2x kein Ausdruck, da * in 2x fehlt (syntaktisch falsch) x+3 Ausdruck, Wert des Ausdrucks: unbekannt / bedeutet Division, zuerst werden Klammern ausgewertet, dann Punkt vor Strich x-y/b+3-(3+y)*4 Wert des Ausdrucks: unbekannt 27%4 ganzzahliger Rest bei der Division: 27 : 4 = 6 Rest 3, also Wert des Ausdrucks: 3

26%4 ganzzahliger Rest bei der Division: 26 : 4 = 6 Rest 2, also Wert des Ausdrucks: 2 25%4 ganzzahliger Rest bei der Division: 25 : 4 = 6 Rest 1, also Wert des Ausdrucks: 1 24%4 ganzzahliger Rest bei der Division: 24 : 4 = 6 Rest 0, also Wert des Ausdrucks: 0 a++ erhöht a um 1, Wert des Ausdrucks: unbekannt b-- verringert b um 1, Wert des Ausdrucks: unbekannt

Relationale und logische Ausdrücke

Relationale und logische Ausdrücke sind wahr (true) oder falsch (false) und haben den Datentyp boolean

Kleiner Ausflug in die formale Logik

Die zusammengesetzte Aussage A UND B ist nur wahr, wenn A und B wahr sind, ansonsten ist sie falsch

Die zusammengesetzte Aussage A ODER B ist nur falsch, wenn A und B falsch sind, ansonsten ist sie wahr.

Die negierte Aussage NICHT A ist falsch, wenn A wahr ist und wahr, wenn A falsch ist.

Diese Zusammenhänge lassen sich auch mit einer sogenannten Wahrheitstafeln darstellen:

A B A und B A oder B W F

A nicht A W F

Java kennt aber kein "wahr" oder "falsch", sondern: Ausdruck Wert falsch false wahr true

Beispiele:

0 < 5 8 > 9 x+3 >= 5 1 == 2 1 != 3 Wert: true Wert: false Wert hängt von x ab: Für x grösser oder gleich 2: true Für x kleiner 2: false 8 > 9 x+3 >= 5 mathematisches = 1 == 2 Wert: false mathematisches  1 != 3 Wert: true

Relationale Operatoren sind zweistellig und dürfen nur mit zwei Operanden arbeiten. Deswegen ist folgende Zeichenkette kein Ausdruck: 4 < x < 7

Logische Ausdrücke

Beispiele:

a && b x || y (x>0) && (x<10) !(x<y) logisches ODER logisches UND x || y (x>0) && (x<10) !(x<y) logisches NICHT

< <= > >= == != Operatoren Arithmetische Operatoren: + - * / % ++ -- Vergleichsoperatoren: < <= > >= == != ! && || Logische Operatoren: ~ & | Bitweise Operatoren:

Zuweisungsausdrücke

Ein Zuweisungsausdruck enthält einen Zuweisungsoperator wie z. B

Ein Zuweisungsausdruck ist ein Ausdruck, keine Anweisung, der eine Wirkung (Nebenwirkung) hat, nämlich die Zuweisung. Diese Zuweisung verändert den Wert der Variablen.

Da ein Zuweisungsausdruck ein Ausdruck ist, hat ein Zuweisungsausdruck also einen Wert !!!

Beispiele:

a = 17 x = 3+2*4 Wert des Ausdrucks : 17 Nebenwirkung: Wert der Variablen a ist 17 a = 17 Wert des Ausdrucks : 11 Nebenwirkung: Wert der Variablen x ist 11 x = 3+2*4 Punkt vor Strich. Dies bedeutet, dass dass z.B. die Multiplikation Priorität (=Vorrang) vor der Addition hat

y = x = 2 Wie wird der Wert diesen Ausdrucks berechnet ?

Warum Abarbeitung von rechts nach links? Weil dies in der Norm so festgelegt ist! Nähers dazu später! (Assoziativität = Auswertung eines Ausdrucks von rechts oder links) Abarbeitung: von rechts nach links Wert des Ausdrucks : 2 Nebenwirkung: Wert der Variablen y ist 2 Wert des Ausdrucks : 2 Nebenwirkung: Wert der Variablen x ist 2 y = x = 2

a=(x=5)*3 Wert des Ausdrucks : 15 Nebenwirkung: Wert der Variablen a ist 15 Wert des Ausdrucks : 5 Nebenwirkung: Wert der Variablen x ist 5 a=(x=5)*3

Erhöht den Wert der Variablen a um eins nach der Verwendung in einem Ausdruck. Verringert den Wert der Variablen a um eins nach der Verwendung in einem Ausdruck. a-- Erhöht den Wert der Variablen a um eins vor der Verwendung in einem Ausdruck. ++a Verringert den Wert der Variablen a um eins vor der Verwendung in einem Ausdruck. --a

Beispiele dazu: Welche Bildschirmausgaben erzeugt folgendes Programm Beispiele dazu: Welche Bildschirmausgaben erzeugt folgendes Programm? (Zwecks Platzersparnis wird hier wieder System.out.println durch println abgekürzt.)

also Bildschirmausgabe: int main(){ int i; i=10; println("Wert nach i++ ist: "+ i++); println("Wert nach i–- ist: "+ i--); println("Wert nach ++i ist: "+ ++i); println("Wert nach --i ist: "+ --i); } Wert von i wird erst nach dieser Anweisung erhöht Wert von i wird erst nach dieser Anweisung verringert Wert von i wird schon vor dieser Anweisung erhöht Wert von i wird schon vor dieser Anweisung verringert 10 11 also Bildschirmausgabe:

println("Wert nach i++ ist: "+ i++); println("Wert nach i++ ist: "+ i); i=i+1; println("Wert nach i-- ist: "+ i--); println("Wert nach i-- ist: "+ i); i=i-1; println("Wert nach ++i ist: "+ ++i); i=i+1; println("Wert nach ++i ist: "+ i); println("Wert nach --i ist: "+ --i); i=i-1; println("Wert nach --i ist: "+ i); Durch welche 2 Anweisungen kann man diese Anweisung also simulieren? Durch welche 2 Anweisungen kann man diese Anweisung also simulieren? Durch welche 2 Anweisungen kann man diese Anweisung also simulieren? Durch welche 2 Anweisungen kann man diese Anweisung also simulieren?

x+=y x=x+y *= -= usw. Dies ist eine abkürzende Schreibweise für ... Das gleiche gilt für: *= -= usw.

Priorität und Assoziativität bei Operatoren.

Ein Operator hat höhere Priorität bedeutet, daß die zugehörige Operation zuerst ausgeführt wird, wie z.B: 3+5*6 (Punkt vor Strich) und nicht: (3 + 5) * 6 = 48 = 3 + (5 * 6) = 33 also hat * eine höhere Priorität als +

Wenn zwei Operatoren die gleiche Priorität haben, bestimmt die Assoziativität, welche Operation zuerst ausgeführt wird.

Beispiel:

* und / haben die gleiche Priorität und die Assoziativität von Links nach Rechts (kurz: L).

3 * 6 / 9 Wie wird der Wert dieses Ausdrucks berechnet ?

3 * 6 / 9 2 18 Deswegen wird zuerst 3*6 (= 18) berechnet und dann 18/9 (=2)

3 * 6 / 9 da 6 und 9 integer sind Welches Ergebnis hat der Ausdruck, wenn * und / rechtsassoziativ wären?

60 / 10 / 2 Wie wird der Wert dieses Ausdrucks berechnet ?

60 / 10 / 2 3 6 Deswegen wird zuerst 60/10 (= 6) berechnet und dann 6/2 (=3)

60 / 10 / 2 12 5 Welches Ergebnis hat der Ausdruck, wenn / rechtsassoziativ wäre?

Bemerkungen: Ein einstelliger (unärer) Operator arbeitet mit einem Operand, wie zum Beispiel: -x Ein zweistelliger (binärer) Operator arbeitet mit 2 Operanden, wie zum Beispiel: x-y, x+y, x*y, x/y, x%y,

Ein dreistelliger (ternärer) Operator arbeitet mit 3 Operanden Ein dreistelliger (ternärer) Operator arbeitet mit 3 Operanden. In Java gibt es nur einen ternären Operator (den wir hier nicht besprechen).

Hier werden folgende Abkürzungen benutzt: A : Assoziativität L : Linksassoziativität R : Rechtsassoziativität S : Stelligkeit U : unär (einstellig) B : binär (zweistellig) T : ternär (dreistellig)

Priorität nimmt von oben nach unten ab Operatoren Bedeutung Assoz. 1 [ ] Array-Index L   ( ) Methodenaufruf . Komponentenzugriff ++ Postinkrement -- Postdekrement 2 Präinkrement R Prädekrement + - Vorzeichen (unär) ~ bitweises Komplement ! logischer Negationsoperator 3 (type) Typ-Umwandlung new Erzeugung 4 * / % Multiplikation, Division, Rest 5 Addition, Subtraktion + Stringverkettung 6 << Linksshift >> Vorzeichenbehafteter Rechtsshift >>> Vorzeichenloser Rechtsshift 7 < <= kleiner, kleiner gleich > >= größer, größer gleich instanceof Typüberprüfung eines Objekts 8 == Gleichheit != Ungleichheit 9 & bitweises UND 10 ^ bitweises Exclusiv-ODER 11 | bitweises ODER 12 && & logisches UND 13 | | | logisches ODER 14 ? : Bedingungsoperator 15 = Wertzuweisung *= /= %= kombinierter Zuweisungsoperator += -= <<= >>= >>>= &= ^= |= Priorität nimmt von oben nach unten ab

Welche Operatoren sind rechtsassoziativ, welche linksassoziativ?

Rechtsassoziativ sind: Zuweisungsoperatoren, der Bedingungsoperator, und unäre Operatoren. Linksassoziativ sind: alle anderen

a==(b && (b!=a)) (a==(b && b))!=a (a==b) && (b!=a) Wie wird der Wert dieses Ausdrucks, der aus boolean-Variablen besteht, berechnet (beachten Sie Priorität und Assoziativität) ? a==b && b!=a Hier ein paar Vorschläge: a==(b && (b!=a)) (a==(b && b))!=a (a==b) && (b!=a)

Welch(e)r Operator(en) hat (haben) die höchste Priorität ? Diese Operatoren haben die gleiche Priorität. Sie ist grösser als die Priorität von && a==b && b!=a dieser Ausdruck && ist linksassoziativ, deswegen wird dieser Ausdruck zuerst ausgewertet und dann... Da aus logischen Gründen einer dieser 2 Ausdrücke falsch ist, hat dieser Ausdruck den Wert false