ABZaz Buchstabe Ziffer 0189 Java Syntaxdiagramme.

Post on 06-Apr-2015

121 views 2 download

Transcript of ABZaz Buchstabe Ziffer 0189 Java Syntaxdiagramme.

A B Z a z

Buchstabe

Ziffer

0 1 8 9

Java Syntaxdiagramme

Java Syntaxdiagramme

Buchstabe

Buchstabe

Ziffer

_

$Name

Java Syntaxdiagramme

+

-

Nichtnullziffer

Ziffer

0

0x

0X

Oktalziffer

Hexziffer

l

L

0

Ganze Zahl

Java Syntaxdiagramme

Hexadezimalziffer

a b f A F

Ziffer

Nichtnullziffer

1 2 8 9

Oktalziffer

0 1 6 7

/

Name

Zahl

Ausdruck Ausdruck( )+

-

*

Ausdruck

Java Syntaxdiagramme

Alternative Darstellungsformen:

1. Kontext-freie Grammatik. Ersetzungsregeln <Name> = <Buchstabe> <Zeichenliste> <Zeichenliste> = (leeres Wort) <Zeichenliste> = <Buchstabe> <Zeichenliste> <Zeichenliste> = <Ziffer> <Zeichenliste> <Zeichenliste> = '_' <Zeichenliste> <Zeichenliste> = '$' <Zeichenliste>

2. Backus-Naur-Form. <Name> = <Buchstabe>(<Buchstabe>|<Ziffer>|'_'|'$')*

höhere ProgrammiersprachenJava - Beispiel

c = a + b;

höhere ProgrammiersprachenJava - Beispiel

int a, b, c;

c = a + b;

Variablendeklaration

höhere ProgrammiersprachenJava - Beispiel

public static void main (String argv[])

{

int a, b, c;

c = a + b;

}

Variablendeklaration

Hauptprogramm

höhere ProgrammiersprachenJava - Beispiel

public class Beispiel

{

public static void main (String argv[])

{

int a, b, c;

c = a + b;

}

}

Dateiname: Beispiel.java

Variablendeklaration

Hauptprogramm

höhere ProgrammiersprachenJava - Beispiel

public class Beispiel

{

public static void main (String argv[])

{

int a, b, c;

c = a + b;

}

}

Dateiname: Beispiel.java

Variablendeklaration

Hauptprogramm

Datentyp:int

höhere ProgrammiersprachenJava - Beispiel

public class Beispiel

{

public static void main (String argv[])

{

int a, b, c;

c = a + b;

}

}

Dateiname: Beispiel.java

Variablendeklaration

Hauptprogramm

Datentyp:int

Zuweisung

höhere ProgrammiersprachenJava - Beispiel

public class Beispiel

{

public static void main (String argv[])

{

int a, b, c;

c = a + b;

}

}

Dateiname: Beispiel.java

Variablendeklaration

Hauptprogramm

Datentyp:int

Zuweisung Addition

höhere ProgrammiersprachenJava - Beispiel

public class Beispiel

{

public static void main (String argv[])

{

int a, b, c;

c = a + b;

}

}

Dateiname: Beispiel.java

Variablendeklaration

Hauptprogramm

Datentyp:int

Zuweisung Addition

Anweisungen werden mit einem Strichpunkt abgeschlossen

höhere ProgrammiersprachenJava - Beispiel

public class Beispiel

{

public static void main (String argv[])

{

int a, b, c;

c = a + b;

}

}

Dateiname: Beispiel.java

Variablendeklaration

Hauptprogramm

Datentyp:int

Zuweisung Addition

Anweisungen werden mit einem Strichpunkt abgeschlossen

Beginn

Ende

höhere ProgrammiersprachenJava

Datentypen (ganze Zahlen):

• byte -128 ... 127

• short -32768 ... 32767

• int -2147483648 ... 2147483647

• long -9223372036854775808 ...

9223372036854775807

Datentypen (Kommazahlen):

• float ±1.4023E-45 ...

±3.4028E+38 (10 Stellen)

• double ±4.9406E-324 ...

±1.7976E+308 (20 Stellen)

Datentypen:

• char einzelnes Zeichen, z.B. ‘a‘

• String Zeichenkette, z.B. “Java“

• boolean Wahrheitswert (true oder false)

höhere ProgrammiersprachenJava - Beispiel

int a;

a = -23;

double d = 2.3456;

float f;

f = -5.4321;

boolean b = true;

char ch = ‘E‘;

String st = “test“;

Variablennamen: bestehen aus

Zeichen, Ziffern, und _ , darf

nicht mit einer Ziffer beginnen.

höhere ProgrammiersprachenJava

Arithmetische Operationen:

+ - * / für ganze Zahlen und Kommazahlen

+ auch für Strings (concatenate)

% nur für ganze Zahlen (modulo)

= Zuweisung, kein Vergleich

Vergleiche (ergibt immer einen boolean):

== alle Datentypen, außer String (Gleichheit)

!= alle Datentypen, außer String (Ungleichheit)

< > <= >= alle Datentypen, außer String und boolean

höhere ProgrammiersprachenJava

Verzweigung:

if (Bedingung)

{

Anweisungen1;

}

else

{

Anweisungen2;

}

Bedingung ist ein Ausdruck vom Typ boolean (z.B. ein Vergleich)

Anweisungen1 sind eine Folge vonAnweisungen, die ausgeführt werdenwenn die Bedingung erfüllt ist(bei einer Anweisung können die Klammern entfallen)

Anweisungen2 sind eine Folge vonAnweisungen, die ausgeführt werdenwenn die Bedingung nicht erfüllt ist(der else - Teil kann entfallen)

höhere ProgrammiersprachenJava - Beispiel

public class Beispiel2

{

public static void main (String argv[])

{

int a, b, c;

c = 12;

if (c < 0)

{

a = 3;

b = 7;

c = 2 * a + b;

}

else

c = 2 * c;

}

}

höhere ProgrammiersprachenJava

Eingabe:

• über Parameter (später)

• von der Tastatur (schwierig)

höhere ProgrammiersprachenJava

Eingabe:

• über Parameter (später)

• von der Tastatur (schwierig)Entsprechende Funktionen werden vorgegeben.

höhere ProgrammiersprachenJava

Eingabe:

• über Parameter (später)

• von der Tastatur (schwierig)

Ausgabe:

• System.out.print(String);

• System.out.println(String);

Entsprechende Funktionen werden vorgegeben.

höhere ProgrammiersprachenJava

Eingabe:

• über Parameter (später)

• von der Tastatur (schwierig)

Ausgabe:

• System.out.print(String);

• System.out.println(String);

Variablen, die nicht vom Typ String sindkönnen ausgegeben werden, indem sie mit einem String konkateniert werden.

Entsprechende Funktionen werden vorgegeben.

höhere ProgrammiersprachenJava - Beispiel

public class Beispiel3

{

public static void main (String argv[])

{

int a = 23;

double d = 17.98;

System.out.println(“Hello World“);

System.out.print(““+d);

System.out.println(“a = “+a);

}

}

höhere ProgrammiersprachenJava - Beispiel

public class Beispiel3

{

public static void main (String argv[])

{

int a = 23;

double d = 17.98;

System.out.println(“Hello World“);

System.out.print(““+d);

System.out.println(“a = “+a);

}

}

““ ist der leere String

höhere ProgrammiersprachenJava - Beispiel

public class Beispiel4

{

Input in = new Input();

public static void main (String argv[])

{

int a, b, c;

a = in.readInt();

b = in.readInt();

c = a + b;

System.out.println(“a + b =“+c);

}

}

class Input

{

...

}

höhere ProgrammiersprachenJava - Beispiel

public class Beispiel4

{

Input in = new Input();

public static void main (String argv[])

{

int a, b, c;

a = in.readInt();

b = in.readInt();

c = a + b;

System.out.println(“a + b =“+c);

}

}

class Input

{

...

}

Die Klasse Input stellt uns die FunktionenreadInt(), readDouble(), readString() zurVerfügung.

höhere ProgrammiersprachenJava - Beispiel

public class Beispiel4

{

Input in = new Input();

public static void main (String argv[])

{

int a, b, c;

a = in.readInt();

b = in.readInt();

c = a + b;

System.out.println(“a + b =“+c);

}

}

class Input

{

...

}

Die Klasse Input stellt uns die FunktionenreadInt(), readDouble(), readString() zurVerfügung.

in ist eine Variable vom Typ Input

höhere ProgrammiersprachenJava - Beispiel

public class Beispiel4

{

Input in = new Input();

public static void main (String argv[])

{

int a, b, c;

a = in.readInt();

b = in.readInt();

c = a + b;

System.out.println(“a + b =“+c);

}

}

class Input

{

...

}

Die Klasse Input stellt uns die FunktionenreadInt(), readDouble(), readString() zurVerfügung.

in ist eine Variable vom Typ Input

Mit in.readInt() wird die FunktionreadInt() der Klasse Input aufgerufen.Diese liest ein ganze Zahl ein.

höhere ProgrammiersprachenJava

Klassen:

• hat Methoden (Funktionen) und Daten (Variablen)• es kann mehrere Klassen geben• nur eine Klasse darf public sein

Informatik I : Software

höhere ProgrammiersprachenJava

Klassen:

• hat Methoden (Funktionen) und Daten (Variablen)• es kann mehrere Klassen geben• nur eine Klasse darf public sein• Variablen müssen mit new angelegt werden. Input in = new Input();• Funktionen werden Variablenname.Funktionsname aufgerufen in.readInt() oder in.readDouble()

Informatik I : Software

höhere ProgrammiersprachenJava

Klassen:

• hat Methoden (Funktionen) und Daten (Variablen)• es kann mehrere Klassen geben• nur eine Klasse darf public sein• Variablen müssen mit new angelegt werden. Input in = new Input();• Funktionen werden Variablenname.Funktionsname aufgerufen in.readInt() oder in.readDouble()• alle Datentypen außer boolean, byte, char, short, int, long, float, double sind Klassen• die Klasse String ist eine Ausnahme (kein new erforderlich)

Informatik I : Software

Java – Programmiersprache

Verknüpfung von Bedingungen:

• && and (und)

• | | or (oder)

• ! not (nicht)

Informatik I : Software

Java – Programmiersprache

Verknüpfung von Bedingungen:

• && and (und)

• | | or (oder)

• ! not (nicht)

if ((Bed1) && (Bed2))

{ ... }

if ((Bed1) || (Bed2))

{ ... }

if (!(Bedingung))

{ ... }

Informatik I : Software

Java – Programmiersprache

Beispiele:

if ((a <= 0) && (a >= -20))

{ ... }

if ((a < 0) || (a > 0))

{ ... }

if (((a % 250) == 0) ||

(((a % 5) == 0) && (!((a % 50) == 0)))))

{ ... }

Informatik I : Software

Java – Programmiersprache

Beispiele:

...

System.out.println(“1*1 = “+(1*1));

System.out.println(“2*2 = “+(2*2));

System.out.println(“3*3 = “+(3*3));

System.out.println(“4*4 = “+(4*4));

System.out.println(“5*5 = “+(5*5));

System.out.println(“6*6 = “+(6*6));

System.out.println(“7*7 = “+(7*7));

System.out.println(“8*8 = “+(8*8));

...

Informatik I : Software

Java – Programmiersprache

Was tut dieser Programmausschnitt?

Informatik I : Software

Java – Programmiersprache

Was tut dieser Programmausschnitt?

• Gibt die Quadratzahlen von 1 bis 8 aus

Informatik I : Software

Java – Programmiersprache

Was tut dieser Programmausschnitt?

• Gibt die Quadratzahlen von 1 bis 8 aus

Wie gebe ich die Quadratzahlen von 1 bis 100 aus?

Informatik I : Software

Java – Programmiersprache

Was tut dieser Programmausschnitt?

• Gibt die Quadratzahlen von 1 bis 8 aus

Wie gebe ich die Quadratzahlen von 1 bis 100 aus?

• Copy and Paste (Zeilen kopieren und anpassen)

Informatik I : Software

Java – Programmiersprache

Was tut dieser Programmausschnitt?

• Gibt die Quadratzahlen von 1 bis 8 aus

Wie gebe ich die Quadratzahlen von 1 bis 100 aus?

• Copy and Paste (Zeilen kopieren und anpassen)Ziemlich aufwendig,nicht akzeptabel

Informatik I : Software

Java – Programmiersprache

Was tut dieser Programmausschnitt?

• Gibt die Quadratzahlen von 1 bis 8 aus

Wie gebe ich die Quadratzahlen von 1 bis 100 aus?

• Copy and Paste (Zeilen kopieren und anpassen)

• Schleifen

Ziemlich aufwendig,nicht akzeptabel

Informatik I : Software

Java – Programmiersprache

for – Schleife:

for (startaktion; bedingung; iteraktion)

{

Anweisungen;

}

Informatik I : Software

Java – Programmiersprache

for – Schleife:

for (startaktion; bedingung; iteraktion)

{

Anweisungen;

}

startaktion wird einmalam Anfang durchgeführt(Initialisierung der Schleife)

Informatik I : Software

Java – Programmiersprache

for – Schleife:

for (startaktion; bedingung; iteraktion)

{

Anweisungen;

}

startaktion wird einmalam Anfang durchgeführt(Initialisierung der Schleife)

bedingung wird jedesmal vor der Ausführung von Anweisungen; geprüft.(Also auch nach startaktion)

Informatik I : Software

Java – Programmiersprache

for – Schleife:

for (startaktion; bedingung; iteraktion)

{

Anweisungen;

}

startaktion wird einmalam Anfang durchgeführt(Initialisierung der Schleife)

bedingung wird jedesmal vor der Ausführung von Anweisungen; geprüft.(Also auch nach startaktion)

Anweisungen; werden solange ausgeführtbis bedingung nicht mehr erfüllt

Informatik I : Software

Java – Programmiersprache

for – Schleife:

for (startaktion; bedingung; iteraktion)

{

Anweisungen;

}

startaktion wird einmalam Anfang durchgeführt(Initialisierung der Schleife)

bedingung wird jedesmal vor der Ausführung von Anweisungen; geprüft.(Also auch nach startaktion)

Anweisungen; werden solange ausgeführtbis bedingung nicht mehr erfüllt

iteraktion wird jedesmal nachAnweisungen;ausgeführt

Informatik I : Software

Java – Programmiersprache

Beispiel:

...

int i;

for (i = 1;i <= 8;i = i + 1)

System.out.println(i+“*“+i+“ = “+(i*i));

...

Informatik I : Software

Java – Programmiersprache

Beispiel:

...

int i;

for (i = 1;i <= 8;i = i + 1)

System.out.println(i+“*“+i+“ = “+(i*i));

...

Quadratzahlen von 1 bis 8

Informatik I : Software

Java – Programmiersprache

Beispiel:

...

int i;

for (i = 1;i <= 100;i = i + 1)

System.out.println(i+“*“+i+“ = “+(i*i));

...

Quadratzahlen von 1 bis 100

Informatik I : Software

Java – Programmiersprache

Beispiele:

int i;

double d;

for (i = 0; i < 10; i = i + 1)

{ ... }

for (d = 13.5; d > 1.5; d = d / 2)

{ ... }

for (i = 0; i < 10; i = i – 2)

{ ... }

Informatik I : Software

Java – Programmiersprache

Beispiele:

int i;

double d;

for (i = 0; i < 10; i = i + 1)

{ ... }

for (d = 13.5; d > 1.5; d = d / 2)

{ ... }

for (i = 0; i < 10; i = i – 2)

{ ... }

auch Kommazahlenmöglich

Informatik I : Software

Java – Programmiersprache

Beispiele:

int i;

double d;

for (i = 0; i < 10; i = i + 1)

{ ... }

for (d = 13.5; d > 1.5; d = d / 2)

{ ... }

for (i = 0; i < 10; i = i – 2)

{ ... }

auch Kommazahlenmöglich

Vorsicht: Endlosschleife

Informatik I : Software

Java – Programmiersprache

abkürzende Schreibweisen:

i = i + 1;

i = i – 1;

d = d – 2;

d = d / 3.2;

d = d * 1.09;

i = i + 5;

Informatik I : Software

Java – Programmiersprache

abkürzende Schreibweisen:

i = i + 1; i++; oder ++i;

i = i – 1;

d = d – 2;

d = d / 3.2;

d = d * 1.09;

i = i + 5;

Informatik I : Software

Java – Programmiersprache

abkürzende Schreibweisen:

i = i + 1; i++; oder ++i;

i = i – 1; i--; oder --i;

d = d – 2;

d = d / 3.2;

d = d * 1.09;

i = i + 5;

Informatik I : Software

Java – Programmiersprache

abkürzende Schreibweisen:

i = i + 1; i++; oder ++i;

i = i – 1; i--; oder --i;

d = d – 2; d-=2;

d = d / 3.2;

d = d * 1.09;

i = i + 5;

Informatik I : Software

Java – Programmiersprache

abkürzende Schreibweisen:

i = i + 1; i++; oder ++i;

i = i – 1; i--; oder –-i;

d = d – 2; d-=2;

d = d / 3.2; d/=3.2;

d = d * 1.09; d*=1.09;

i = i + 5; i+=5;

Informatik I : Software

Java – Programmiersprache

Schleifentypen:

• for – Schleife

Informatik I : Software

Java – Programmiersprache

Schleifentypen:

• for – Schleife kennen wir bereits

Informatik I : Software

Java – Programmiersprache

Schleifentypen:

• for – Schleife

• while – Schleife

kennen wir bereits

Informatik I : Software

Java – Programmiersprache

Schleifentypen:

• for – Schleife

• while – Schleife

kennen wir bereits

allgemeinere Form der for - Schleife

Informatik I : Software

Java – Programmiersprache

Schleifentypen:

• for – Schleife

• while – Schleife

• do – while – Schleife

kennen wir bereits

allgemeinere Form der for - Schleife

Informatik I : Software

Java – Programmiersprache

Schleifentypen:

• for – Schleife

• while – Schleife

• do – while – Schleife

kennen wir bereits

allgemeinere Form der for - Schleife

andere SchleifenformBedingung am Ende

Informatik I : Software

Java – Programmiersprache

while – Schleife:

while (bedingung)

{

Anweisungen;

}

Informatik I : Software

Java – Programmiersprache

while – Schleife:

while (bedingung)

{

Anweisungen;

}

Solange bedingung erfüllt ist

Informatik I : Software

Java – Programmiersprache

while – Schleife:

while (bedingung)

{

Anweisungen;

}

Solange bedingung erfüllt istwerden Anweisungen; ausgeführt

Informatik I : Software

Java – Programmiersprache

while – Schleife:

while (bedingung)

{

Anweisungen;

}

Solange bedingung erfüllt istwerden Anweisungen; ausgeführt

Anweisungen; müssen derart sein, daß bedingung irgendwann einmalnicht mehr erfüllt ist.

Informatik I : Software

Java – Programmiersprache

for – Schleife vs. while – Schleife:

for (startaktion; bedingung; iteraktion)

{

Anweisungen;

}

Informatik I : Software

Java – Programmiersprache

for – Schleife vs. while – Schleife:

for (startaktion; bedingung; iteraktion)

{

Anweisungen;

}

while (bedingung)

{

Anweisungen;

}

Informatik I : Software

Java – Programmiersprache

for – Schleife vs. while – Schleife:

for (startaktion; bedingung; iteraktion)

{

Anweisungen;

}

while (bedingung)

{

Anweisungen;

iteraktion;

}

Informatik I : Software

Java – Programmiersprache

for – Schleife vs. while – Schleife:

for (startaktion; bedingung; iteraktion)

{

Anweisungen;

}

startaktion;

while (bedingung)

{

Anweisungen;

iteraktion;

}

Informatik I : Software

Java – Programmiersprache

Beispiele:

int i = 0;

boolean b = false;

while (i < 10)

{ ...; i++; }

while (b == true)

{ ... }

i = 0;

while (i >= 0);

{ ...; i--; }

Informatik I : Software

Java – Programmiersprache

Beispiele:

int i = 0;

boolean b = false;

while (i < 10)

{ ...; i++; }

while (b == true)

{ ... }

i = 0;

while (i >= 0);

{ ...; i--; }

Vorsicht: EndlosschleifeDer Strichpunkt hinterder Bedingung muss weg.Häufiger Fehler!

Informatik I : Software

Java – Programmiersprache

do – while – Schleife:

do {

Anweisungen;

} while (bedingung);

Informatik I : Software

Java – Programmiersprache

do – while – Schleife:

do {

Anweisungen;

} while (bedingung); Anweisungen; werden ausgeführt,

Informatik I : Software

Java – Programmiersprache

do – while – Schleife:

do {

Anweisungen;

} while (bedingung); Anweisungen; werden ausgeführt,solange bedingung erfüllt.

Informatik I : Software

Java – Programmiersprache

do – while – Schleife:

do {

Anweisungen;

} while (bedingung); Anweisungen; werden ausgeführt,solange bedingung erfüllt.

Anweisungen; werden mindestens einmal ausgeführt

Informatik I : Software

Java – Programmiersprache

Beispiele:

int i = 0;

boolean b = false;

do {

i++;

...;

} while (i <= 10);

do {

...;

} while (b != true);

Informatik I : Software

Java – Programmiersprache

Beispiele:

int wert1, wert2, wert3, wert4, wert5, wert6;

wert1 = in.readInt();

wert2 = in.readInt();

wert3 = in.readInt();

wert4 = in.readInt();

wert5 = in.readInt();

wert6 = in.readInt();

Informatik I : Software

Java – Programmiersprache

Was tut dieser Programmausschnitt?

Informatik I : Software

Java – Programmiersprache

Was tut dieser Programmausschnitt?

• Eine Reihe von Messwerten einlesen?

Informatik I : Software

Java – Programmiersprache

Was tut dieser Programmausschnitt?

• Eine Reihe von Messwerten einlesen?

Was fällt auf?

Informatik I : Software

Java – Programmiersprache

Was tut dieser Programmausschnitt?

• Eine Reihe von Messwerten einlesen?

Was fällt auf?

• Alle Messwerte haben den denselben Datentyp

• Schleifen sind so nicht anwendbar

Informatik I : Software

Java – Programmiersprache

Was tut dieser Programmausschnitt?

• Eine Reihe von Messwerten einlesen?

Was fällt auf?

• Alle Messwerte haben den denselben Datentyp

• Schleifen sind so nicht anwendbar

Eine neue Art vonDatentyp, eine ArtAnsammlung vonVariablen des selbenDatentyps wäre gut.

Informatik I : Software

Java – Programmiersprache

Arrays (Felder):

• Deklaration: datentyp[] variablenname;

Informatik I : Software

Java – Programmiersprache

Arrays (Felder):

• Deklaration: datentyp[] variablenname;

• Speicher reservieren: variablenname = new datentyp[größe];

Informatik I : Software

Java – Programmiersprache

Arrays (Felder):

• Deklaration: datentyp[] variablenname;

• Speicher reservieren: variablenname = new datentyp[größe];

• Arraygröße: variablenname.length

Informatik I : Software

Java – Programmiersprache

Arrays (Felder):

• Deklaration: datentyp[] variablenname;

• Speicher reservieren: variablenname = new datentyp[größe];

• Arraygröße: variablenname.length

• Elementzugriff: variablenname[element]

Informatik I : Software

Java – Programmiersprache

Arrays (Felder):

• Deklaration: datentyp[] variablenname;

• Speicher reservieren: variablenname = new datentyp[größe];

• Arraygröße: variablenname.length

• Elementzugriff: variablenname[element]

• Elemente: variablenname[0] ... variablenname[größe-1]

Informatik I : Software

Java – Programmiersprache

Beispiele:

...

int[] i_ar;

int i = 10;

i_ar = new int[20];

String[] st_ar;

st_ar = new String[i];

for (i = 0; i < st_ar.length; i ++)

st_ar[i] = in.readInt();

...

Informatik I : Software

Java – Programmiersprache

Beispiele:

int[] wert;

int i;

wert = new int[6];

for (i = 0; i < 6; i++)

wert[i] = in.readInt();

Informatik I : Software

Java – Programmiersprache

Beispiele:...

int[] tage_pro_monat = {31, 28, 31, 30, 31, 30,

31, 31, 30, 31, 30, 31};

int monat, tag;

boolean datum = false;

monat = in.readInt();

tag = in.readInt();

if ((monat >= 1) && (monat <= 12))

{

if ((tag >= 1) && (tag <= tage_pro_monat[monat-1]))

datum = true;

}

...