2.2 Syntax, Semantik und Simulation

Größe: px
Ab Seite anzeigen:

Download "2.2 Syntax, Semantik und Simulation"

Transkript

1 2.2 Syntax, Semantik und Simulation Ein Java Programm ist eine Folge von Buchstaben. Nicht jede Folge von Buchstaben ist ein korrektes Java Programm! Wie kann man alle korrekten Java Programme beschreiben? Problem: Es gibt unendlich viele korrekte Java Programme, daher können wir nicht alle Programme einfach auflisten. Also: Wir beschreiben die Regeln, nach denen ein korrektes Java Programm erstellt sein muss. Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 35

2 Syntaxgrammatiken in Backus-Naur-Form (BNF) (John Backus, 1959) Die Backus-Naur-Form (BNF) ist eine kompakte formale Metasprache zur Darstellung der Syntax höherer Programmiersprachen (und anderer Sprachen ). BNF verwendet Ableitungsregeln (Produktionen), in denen Nichtterminalsymbole definiert werden. Die Produktionen erlauben, Nichtterminalsymbole letzendlich zu Terminalsymbolen abzuleiten. Nichtterminalsymbole werden mit spitzen Klammern <...> umschlossen. Beispiel: ::= wird zur Definition verwendet, trennt Alternativen <Ziffer außer Null> ::= <Ziffer> ::= 0 <Ziffer außer Null> <pzahl> ::= <Ziffer> <Ziffer außer Null> <Ziffernliste> <Ziffernliste> ::= <Ziffer> <Ziffer> <Ziffernliste> Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 36

3 Syntaxgrammatiken in Backus-Naur-Form (BNF) (John Backus, 1959) Die Backus-Naur-Form (BNF) ist eine kompakte formale Metasprache zur Darstellung der Syntax höherer Programmiersprachen (und anderer Sprachen ). BNF verwendet Ableitungsregeln (Produktionen), in denen Nichtterminalsymbole definiert werden. Die Produktionen erlauben, Nichtterminalsymbole letzendlich zu Terminalsymbolen abzuleiten. Nichtterminalsymbole werden mit spitzen Klammern <...> umschlossen. Beispiel: ::= wird zur Definition verwendet, trennt Alternativen Ableitung für 19 : <Ziffer außer Null> ::= <Ziffer> ::= 0 <Ziffer außer Null> <pzahl> ::= <Ziffer> <Ziffer außer Null> <Ziffernliste> <Ziffernliste> ::= <Ziffer> <Ziffer> <Ziffernliste> Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 36

4 Syntaxgrammatiken in Backus-Naur-Form (BNF) (John Backus, 1959) Die Backus-Naur-Form (BNF) ist eine kompakte formale Metasprache zur Darstellung der Syntax höherer Programmiersprachen (und anderer Sprachen ). BNF verwendet Ableitungsregeln (Produktionen), in denen Nichtterminalsymbole definiert werden. Die Produktionen erlauben, Nichtterminalsymbole letzendlich zu Terminalsymbolen abzuleiten. Nichtterminalsymbole werden mit spitzen Klammern <...> umschlossen. Beispiel: ::= wird zur Definition verwendet, trennt Alternativen <Ziffer außer Null> ::= <Ziffer> ::= 0 <Ziffer außer Null> <pzahl> ::= <Ziffer> <Ziffer außer Null> <Ziffernliste> <Ziffernliste> ::= <Ziffer> <Ziffer> <Ziffernliste> Ableitung für 19 : <pzahl> Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 36

5 Syntaxgrammatiken in Backus-Naur-Form (BNF) (John Backus, 1959) Die Backus-Naur-Form (BNF) ist eine kompakte formale Metasprache zur Darstellung der Syntax höherer Programmiersprachen (und anderer Sprachen ). BNF verwendet Ableitungsregeln (Produktionen), in denen Nichtterminalsymbole definiert werden. Die Produktionen erlauben, Nichtterminalsymbole letzendlich zu Terminalsymbolen abzuleiten. Nichtterminalsymbole werden mit spitzen Klammern <...> umschlossen. Beispiel: ::= wird zur Definition verwendet, trennt Alternativen <Ziffer außer Null> ::= <Ziffer> ::= 0 <Ziffer außer Null> <pzahl> ::= <Ziffer> <Ziffer außer Null> <Ziffernliste> <Ziffernliste> ::= <Ziffer> <Ziffer> <Ziffernliste> Ableitung für 19 : <pzahl> <Ziffer außer Null> <Ziffernliste> Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 36

6 Syntaxgrammatiken in Backus-Naur-Form (BNF) (John Backus, 1959) Die Backus-Naur-Form (BNF) ist eine kompakte formale Metasprache zur Darstellung der Syntax höherer Programmiersprachen (und anderer Sprachen ). BNF verwendet Ableitungsregeln (Produktionen), in denen Nichtterminalsymbole definiert werden. Die Produktionen erlauben, Nichtterminalsymbole letzendlich zu Terminalsymbolen abzuleiten. Nichtterminalsymbole werden mit spitzen Klammern <...> umschlossen. Beispiel: ::= wird zur Definition verwendet, trennt Alternativen <Ziffer außer Null> ::= <Ziffer> ::= 0 <Ziffer außer Null> <pzahl> ::= <Ziffer> <Ziffer außer Null> <Ziffernliste> <Ziffernliste> ::= <Ziffer> <Ziffer> <Ziffernliste> Ableitung für 19 : <pzahl> <Ziffer außer Null> <Ziffernliste> <Ziffer außer Null> <Ziffer> Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 36

7 Syntaxgrammatiken in Backus-Naur-Form (BNF) (John Backus, 1959) Die Backus-Naur-Form (BNF) ist eine kompakte formale Metasprache zur Darstellung der Syntax höherer Programmiersprachen (und anderer Sprachen ). BNF verwendet Ableitungsregeln (Produktionen), in denen Nichtterminalsymbole definiert werden. Die Produktionen erlauben, Nichtterminalsymbole letzendlich zu Terminalsymbolen abzuleiten. Nichtterminalsymbole werden mit spitzen Klammern <...> umschlossen. Beispiel: ::= wird zur Definition verwendet, trennt Alternativen <Ziffer außer Null> ::= <Ziffer> ::= 0 <Ziffer außer Null> <pzahl> ::= <Ziffer> <Ziffer außer Null> <Ziffernliste> <Ziffernliste> ::= <Ziffer> <Ziffer> <Ziffernliste> Ableitung für 19 : <pzahl> <Ziffer außer Null> <Ziffernliste> <Ziffer außer Null> <Ziffer> 1 <Ziffer> Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 36

8 Syntaxgrammatiken in Backus-Naur-Form (BNF) (John Backus, 1959) Die Backus-Naur-Form (BNF) ist eine kompakte formale Metasprache zur Darstellung der Syntax höherer Programmiersprachen (und anderer Sprachen ). BNF verwendet Ableitungsregeln (Produktionen), in denen Nichtterminalsymbole definiert werden. Die Produktionen erlauben, Nichtterminalsymbole letzendlich zu Terminalsymbolen abzuleiten. Nichtterminalsymbole werden mit spitzen Klammern <...> umschlossen. Beispiel: ::= wird zur Definition verwendet, trennt Alternativen <Ziffer außer Null> ::= <Ziffer> ::= 0 <Ziffer außer Null> <pzahl> ::= <Ziffer> <Ziffer außer Null> <Ziffernliste> <Ziffernliste> ::= <Ziffer> <Ziffer> <Ziffernliste> Ableitung für 19 : <pzahl> <Ziffer außer Null> <Ziffernliste> <Ziffer außer Null> <Ziffer> 1 <Ziffer> 1 <Ziffer außer Null> Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 36

9 Syntaxgrammatiken in Backus-Naur-Form (BNF) (John Backus, 1959) Die Backus-Naur-Form (BNF) ist eine kompakte formale Metasprache zur Darstellung der Syntax höherer Programmiersprachen (und anderer Sprachen ). BNF verwendet Ableitungsregeln (Produktionen), in denen Nichtterminalsymbole definiert werden. Die Produktionen erlauben, Nichtterminalsymbole letzendlich zu Terminalsymbolen abzuleiten. Nichtterminalsymbole werden mit spitzen Klammern <...> umschlossen. Beispiel: ::= wird zur Definition verwendet, trennt Alternativen <Ziffer außer Null> ::= <Ziffer> ::= 0 <Ziffer außer Null> <pzahl> ::= <Ziffer> <Ziffer außer Null> <Ziffernliste> <Ziffernliste> ::= <Ziffer> <Ziffer> <Ziffernliste> Ableitung für 19 : <pzahl> <Ziffer außer Null> <Ziffernliste> <Ziffer außer Null> <Ziffer> 1 <Ziffer> 1 <Ziffer außer Null> 19 Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 36

10 Syntaxgrammatiken in Backus-Naur-Form (BNF) (John Backus, 1959) Die Backus-Naur-Form (BNF) ist eine kompakte formale Metasprache zur Darstellung der Syntax höherer Programmiersprachen (und anderer Sprachen ). BNF verwendet Ableitungsregeln (Produktionen), in denen Nichtterminalsymbole definiert werden. Die Produktionen erlauben, Nichtterminalsymbole letzendlich zu Terminalsymbolen abzuleiten. Nichtterminalsymbole werden mit spitzen Klammern <...> umschlossen. Beispiel: ::= wird zur Definition verwendet, trennt Alternativen <Ziffer außer Null> ::= <Ziffer> ::= 0 <Ziffer außer Null> <pzahl> ::= <Ziffer> <Ziffer außer Null> <Ziffernliste> <Ziffernliste> ::= <Ziffer> <Ziffer> <Ziffernliste> Ableitung für 19 : <pzahl> <Ziffer außer Null> <Ziffernliste> <Ziffer außer Null> <Ziffer> 1 <Ziffer> 1 <Ziffer außer Null> 19 Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 36

11 Beispiel: { bezeichnet beliebig viele (auch gar keine) Wiederholungen <Buchstabe> ::= A... Z a... z <Variable> ::= <Buchstabe> { <Buchstabe> <Ziffer> Bemerkung:... gibt es in BNF nicht. Hier müssen alle Buchstaben ausgeschrieben und mit getrennt werden. Ein Variablenname besteht aus einer Folge von Buchstaben oder Ziffern, die mit einem Buchstaben beginnt, und mindestens ein Zeichen enthält. Ableitung für a 0 : <Variable> <Buchstabe> <Buchstabe> <Ziffer> a <Buchstabe> <Ziffer> a <Ziffer> a 0 Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 37

12 Beispiel: [ ] bezeichnet optionale Strukturen <Zahl> ::= [+ -] <pzahl> Ableitung für -9: <Zahl> - <pzahl> - <Ziffer> - <Ziffer außer Null> -9 Eine Zahl ist eine positive Zahl, die entweder das Vorzeichen +, oder das Vorzeichen, oder gar kein Vorzeichen enthält. Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 38

13 Beispiel: Arithmetische Ausdrücke über den ganzen Zahlen mit Operationen +,,,/ <Ausdruck> ::= <Variable> <Zahl> <unärop> <Ausdruck> <Ausdruck> <binärop> <Ausdruck> ( <Ausdruck> ) <unärop> ::= + - <binärop> ::= + - * / Ein arithmetischer Ausdruck ist entweder eine Variable, oder eine Zahlenkonstante, oder ein mit Vorzeichen + bzw. versehener Ausdruck, oder ein durch + bzw. bzw. bzw. / verknüpftes Paar von Ausdrücken, oder ein durch ( und ) geklammerter Ausdruck. Die Syntaxgrammatik einer Programmiersprache enthält die Menge aller Ableitungsregeln, die die Syntax einer Programmiersprache beschreiben. Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 39

14 Ein Ableitungsbaum für den Ausdruck - a 0 * ( 4 + b ) <Ausdruck> <Ausdruck> <binärop> <Ausdruck> <unärop> <Ausdruck> * ( <Ausdruck> ) <Variable> <Ausdruck> <binärop> <Ausdruck> <Buchstabe> <Buchstabe> <Ziffer> <Zahl> + <Variable> a _ 0 <pzahl> <Buchstabe> <Ziffer> b 4 Nichterminalsymbole sind grau, Terminalsymbole rot dargestellt. Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 40

15 Ein Ableitungsbaum für den Ausdruck - a 0 * ( 4 + b ) <Ausdruck> <Ausdruck> <binärop> <Ausdruck> <unärop> <Ausdruck> * ( <Ausdruck> ) - <Variable> <Ausdruck> <binärop> <Ausdruck> <Buchstabe> <Buchstabe> <Ziffer> <Zahl> + <Variable> a _ 0 <pzahl> <Buchstabe> <Ziffer> b 4 Struktur des Ausdrucks: blau: Konstanten und Variablen, orange: Operatoren, gelb: Vorrang. Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 41

16 Ableitungsbaum und Syntaxbaum - a 0 * ( 4 + b ) * <Ausdruck> <Ausdruck> <binärop> <Ausdruck> + <unärop> <Ausdruck> * ( <Ausdruck> ) - <Variable> <Ausdruck> <binärop> <Ausdruck> <Buchstabe> <Buchstabe> <Ziffer> a _ 0 <Zahl> <pzahl> + <Variable> <Buchstabe> a_0 4 b <Ziffer> b 4 Der Ableitungsbaum erzeugt auch die Klammern, die zur korrekten Interpretation von - a 0 * ( 4 + b ) notwendig sind. Der Syntaxbaum gibt die Auswertungsreihenfolge (tiefer im Baum vor höher im Baum) auch ohne Klammerung vor. Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 42

17 Ableitungsbäume Ein Ableitungsbaum entsteht aus einem Nichtterminalsymbol (der Wurzel) durch schrittweises Ableiten, bis nur noch terminale Symbole übrig sind. Die Kinder eines Nichtterminals bilden die rechte Seite der angewandten Ableitung. Sind alle Nichtterminalsymbole zu Terminalsymbolen abgeleitet worden, so können wir den Baum von links nach rechts lesen und erhalten eine syntaktisch korrekte Zeichenreihe für die Wurzel. Alle Worte, die auf diese Weise erzeugt werden können sind syntaktisch korrekt. Ein Ableitungsbaum definiert nicht nur die korrekte Syntax, sondern auch eine Struktur. Diese ist erstmal nicht immer eindeutig, wird aber durch Zusatzregeln eindeutig gemacht: Z1 Punkt- vor Strichrechnung Z2 Unäre Operatoren vor binären Operatoren Z3 Von links nach rechts Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 43

18 Syntaxbäume: Punkt- vor Strichrechnung / + * 2 * / n + n n 4 2 n 4 n * n + 4 / 2 Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 44

19 Syntaxbäume: Punkt- vor Strichrechnung / + * 2 * / n + n n 4 2 n 4 n * n + 4 / 2 Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 44

20 Syntaxbäume: Unär vor Binär + b + a a b -a + b Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 45

21 Syntaxbäume: Unär vor Binär + b + a a b -a + b Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 45

22 Syntaxbäume: Operatoren von links nach rechts + a + 1 b 1 a b a - b + 1 Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 46

23 Syntaxbäume: Von links nach rechts + a + 1 b 1 a b a - b + 1 Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 46

24 Syntaxbäume Ein Syntaxbaum entsteht aus einem Ausdruck, indem die zuletzt durchgeführte Operation zur Wurzel gemacht wird und dann der rechte Restausdruck zum rechten Teilbaum und der linke Restausdruck (falls vorhanden) zum linken Teilbaum gemacht wird. Ein Syntaxbaum definiert die Struktur eines Ausdrucks. Diese ist eindeutig, Klammern sind nicht notwendig. Beispiel:? 2 + a (b + c) {{ Ausdruck Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 47

25 Syntaxbäume Ein Syntaxbaum entsteht aus einem Ausdruck, indem die zuletzt durchgeführte Operation zur Wurzel gemacht wird und dann der rechte Restausdruck zum rechten Teilbaum und der linke Restausdruck (falls vorhanden) zum linken Teilbaum gemacht wird. Ein Syntaxbaum definiert die Struktur eines Ausdrucks. Diese ist eindeutig, Klammern sind nicht notwendig. Beispiel: +?? 2 {{ links + a (b + c) {{ rechts Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 47

26 Syntaxbäume Ein Syntaxbaum entsteht aus einem Ausdruck, indem die zuletzt durchgeführte Operation zur Wurzel gemacht wird und dann der rechte Restausdruck zum rechten Teilbaum und der linke Restausdruck (falls vorhanden) zum linken Teilbaum gemacht wird. Ein Syntaxbaum definiert die Struktur eines Ausdrucks. Diese ist eindeutig, Klammern sind nicht notwendig. Beispiel: +?? 2+ a (b + c) {{ später Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 47

27 Syntaxbäume Ein Syntaxbaum entsteht aus einem Ausdruck, indem die zuletzt durchgeführte Operation zur Wurzel gemacht wird und dann der rechte Restausdruck zum rechten Teilbaum und der linke Restausdruck (falls vorhanden) zum linken Teilbaum gemacht wird. Ein Syntaxbaum definiert die Struktur eines Ausdrucks. Diese ist eindeutig, Klammern sind nicht notwendig. Beispiel: +?? 2 {{ rechts + a (b + c) {{ später Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 47

28 Syntaxbäume Ein Syntaxbaum entsteht aus einem Ausdruck, indem die zuletzt durchgeführte Operation zur Wurzel gemacht wird und dann der rechte Restausdruck zum rechten Teilbaum und der linke Restausdruck (falls vorhanden) zum linken Teilbaum gemacht wird. Ein Syntaxbaum definiert die Struktur eines Ausdrucks. Diese ist eindeutig, Klammern sind nicht notwendig. Beispiel: +?? 2 {{ rechts + a (b + c) {{ später Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 47

29 Syntaxbäume Ein Syntaxbaum entsteht aus einem Ausdruck, indem die zuletzt durchgeführte Operation zur Wurzel gemacht wird und dann der rechte Restausdruck zum rechten Teilbaum und der linke Restausdruck (falls vorhanden) zum linken Teilbaum gemacht wird. Ein Syntaxbaum definiert die Struktur eines Ausdrucks. Diese ist eindeutig, Klammern sind nicht notwendig. Beispiel: +? 2 2+ a (b + c) {{ später Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 47

30 Syntaxbäume Ein Syntaxbaum entsteht aus einem Ausdruck, indem die zuletzt durchgeführte Operation zur Wurzel gemacht wird und dann der rechte Restausdruck zum rechten Teilbaum und der linke Restausdruck (falls vorhanden) zum linken Teilbaum gemacht wird. Ein Syntaxbaum definiert die Struktur eines Ausdrucks. Diese ist eindeutig, Klammern sind nicht notwendig. Beispiel: +? 2 2+ {{ fertig a (b + c) Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 47

31 Syntaxbäume Ein Syntaxbaum entsteht aus einem Ausdruck, indem die zuletzt durchgeführte Operation zur Wurzel gemacht wird und dann der rechte Restausdruck zum rechten Teilbaum und der linke Restausdruck (falls vorhanden) zum linken Teilbaum gemacht wird. Ein Syntaxbaum definiert die Struktur eines Ausdrucks. Diese ist eindeutig, Klammern sind nicht notwendig. Beispiel: + 2 *?? 2+ {{ fertig a {{ links (b + c) {{ rechts Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 47

32 Syntaxbäume Ein Syntaxbaum entsteht aus einem Ausdruck, indem die zuletzt durchgeführte Operation zur Wurzel gemacht wird und dann der rechte Restausdruck zum rechten Teilbaum und der linke Restausdruck (falls vorhanden) zum linken Teilbaum gemacht wird. Ein Syntaxbaum definiert die Struktur eines Ausdrucks. Diese ist eindeutig, Klammern sind nicht notwendig. Beispiel: + 2 *?? 2+ {{ fertig a {{ links (b + c) {{ später Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 47

33 Syntaxbäume Ein Syntaxbaum entsteht aus einem Ausdruck, indem die zuletzt durchgeführte Operation zur Wurzel gemacht wird und dann der rechte Restausdruck zum rechten Teilbaum und der linke Restausdruck (falls vorhanden) zum linken Teilbaum gemacht wird. Ein Syntaxbaum definiert die Struktur eines Ausdrucks. Diese ist eindeutig, Klammern sind nicht notwendig. Beispiel: + 2 a *? 2+ {{ fertig a (b + c) {{ rechts Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 47

34 Syntaxbäume Ein Syntaxbaum entsteht aus einem Ausdruck, indem die zuletzt durchgeführte Operation zur Wurzel gemacht wird und dann der rechte Restausdruck zum rechten Teilbaum und der linke Restausdruck (falls vorhanden) zum linken Teilbaum gemacht wird. Ein Syntaxbaum definiert die Struktur eines Ausdrucks. Diese ist eindeutig, Klammern sind nicht notwendig. Beispiel: + 2 a *? 2 + a {{ fertig (b + c) {{ rechts Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 47

35 Syntaxbäume Ein Syntaxbaum entsteht aus einem Ausdruck, indem die zuletzt durchgeführte Operation zur Wurzel gemacht wird und dann der rechte Restausdruck zum rechten Teilbaum und der linke Restausdruck (falls vorhanden) zum linken Teilbaum gemacht wird. Ein Syntaxbaum definiert die Struktur eines Ausdrucks. Diese ist eindeutig, Klammern sind nicht notwendig. Beispiel: + 2 a * a {{ fertig (b {{ links + c) {{ rechts?? Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 47

36 Syntaxbäume Ein Syntaxbaum entsteht aus einem Ausdruck, indem die zuletzt durchgeführte Operation zur Wurzel gemacht wird und dann der rechte Restausdruck zum rechten Teilbaum und der linke Restausdruck (falls vorhanden) zum linken Teilbaum gemacht wird. Ein Syntaxbaum definiert die Struktur eines Ausdrucks. Diese ist eindeutig, Beispiel: + 2 a * a {{ fertig (b {{ links + c) {{ später?? Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 47

37 Syntaxbäume Ein Syntaxbaum entsteht aus einem Ausdruck, indem die zuletzt durchgeführte Operation zur Wurzel gemacht wird und dann der rechte Restausdruck zum rechten Teilbaum und der linke Restausdruck (falls vorhanden) zum linken Teilbaum gemacht wird. Ein Syntaxbaum definiert die Struktur eines Ausdrucks. Diese ist eindeutig, Klammern sind nicht notwendig. Beispiel: + 2 a * a {{ fertig (b {{ links + c) {{ später b? Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 47

38 Syntaxbäume Ein Syntaxbaum entsteht aus einem Ausdruck, indem die zuletzt durchgeführte Operation zur Wurzel gemacht wird und dann der rechte Restausdruck zum rechten Teilbaum und der linke Restausdruck (falls vorhanden) zum linken Teilbaum gemacht wird. Ein Syntaxbaum definiert die Struktur eines Ausdrucks. Diese ist eindeutig, Klammern sind nicht notwendig. Beispiel: + 2 a * a (b+ {{ fertig c) {{ rechts b? Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 47

39 Syntaxbäume Ein Syntaxbaum entsteht aus einem Ausdruck, indem die zuletzt durchgeführte Operation zur Wurzel gemacht wird und dann der rechte Restausdruck zum rechten Teilbaum und der linke Restausdruck (falls vorhanden) zum linken Teilbaum gemacht wird. Ein Syntaxbaum definiert die Struktur eines Ausdrucks. Diese ist eindeutig, Klammern sind nicht notwendig. Beispiel: + 2 a * a (b + c) {{ fertig b c Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 47

40 Semantik Frage: Was bewirkt eine Zuweisung der Form <Variable> = <Ausdruck>? Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 48

41 Semantik Frage: Was bewirkt eine Zuweisung der Form <Variable> = <Ausdruck>? x = 1; a = 1; x = x * (a + 1) * (a + 2) * x; Was ist der Wert von x nach den beiden Zuweisungen? Die Semantik einer Programmiersprache legt die Bedeutung der einzelnen Programmkonstrukte fest. Wir geben die Semantik eines Programmkonstruktes immer informal an. Die Semantik einer Zuweisung ist die folgende: Werte den Ausdruck mit den aktuellen Werten der vorkommenden Variablen aus und weise ihn dann der Variablen auf der linken Seite zu. Im obigen Beispiel erhält x also den Wert 6. Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 48

42 Seiteneffekte Anweisungen wie n = n+1; i = i-1; können abgekürzt geschrieben werden als n++; i--; (bzw. ++n; --i;) ++ erhöht den Wert der Variablen um 1, -- erniedrigt ihn um 1. <Variable>++, <Variable>-- verändern den Variablenwert nach Auswertung der Variablen, ++<Variable>, --<Variable> vor Auswertung der Variablen. Achtung Seiteneffekte: Auswertung von Ausdrücken kann jetzt Variablenwerte ändern: if (n-- >= 0) {... Unschön: Mehr als eine Anweisung ++ oder -- in einem Ausdruck: erg = n++ * n-- / 2; Beispiel (vgl. Programm Fakultaet): while (n > 0) { erg = erg * n; n = n - 1; ist äquivalent zu while (n > 0) erg = erg * n--; Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 49

43 Anweisungsblöcke Nacheinander aufgeführte Anweisungen werden auch nacheinander ausgeführt. Anweisungen können mit {... zu einem Anweisungsblock zusammengefasst werden. Beispiele: while (n > 0) { /* Blockstart */ erg = erg * n; n = n - 1; /* Blockende */ if (n % 2 == 0) { erg = erg + n; n = n / 2; else { erg = erg - n; n = n / 2; i = 10; n = 0; while (i > n) { /* ACHTUNG! Endlosschleife! */ Out.println("Der Wert von i ist "+ i-- +"."); Anweisungsblöcke können auch leer sein. Hier führt das zu einer Endlosschleife! Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 50

44 Anweisungsblöcke Nacheinander aufgeführte Anweisungen werden auch nacheinander ausgeführt. Anweisungen können mit {... zu einem Anweisungsblock zusammengefasst werden. Beispiele: while (n > 0) { /* Blockstart */ erg = erg * n; n = n - 1; /* Blockende */ if (n % 2 == 0) { erg = erg + n; n = n / 2; else { erg = erg - n; n = n / 2; i = 10; n = 0; while (i > n); /* ACHTUNG! Endlosschleife! */ Out.println("Der Wert von i ist "+ i-- +"."); Anweisungsblöcke können auch leer sein. Hier führt das zu einer Endlosschleife! Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 50

45 Anweisungsblöcke Anweisungsblöcke können auch Variablendeklarationen enthalten. Die in einem Block definierten Variablen sind auch nur in diesem Block und seinen Unterblöcken gültig. Mehrfache Deklarationen einer Variablen in einem Block oder einem seiner Unterblöcke sind verboten. Variablen sollten so lokal wie möglich definiert werden. Beispiele: if (n >= 0) { int betrag = n;... else { /* n < 0 */ int betrag = -n;... { int i;... { int i;... { int i; { int i; /* FEHLER! */ Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 51

46 Simulation eines Computerprogrammes per Hand Ziel: Bestimmung der durch einen Algorithmus berechneten Funktion {Eingaben {Ausgaben bzw. der Arbeitsweise des Algorithmus. Korrektheit des Algorithmus für einzelne Eingaben prüfen Vorgehensweise: Schreibe für jede Variable ein leeres Feld ( den Behälter ) auf ein Blatt Papier. Simuliere das Programm Schritt für Schritt und trage dabei die Werte der Variablen in die entsprechenden Felder ein. Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 52

47 Simulation eines Computerprogrammes per Hand public class Mystery { public static void main (String[] args) { Out.print("Geben Sie 2 nat. Zahlen ein: "); int x = In.readInt(); int y = In.readInt(); int z = x % y; /* z = Rest von x/y */ while (z!= 0) { x = y; y = z; z = x % y; Out.println("Das Ergebnis ist "+ y +"."); Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 53

48 Simulation eines Computerprogrammes per Hand public class Mystery { public static void main (String[] args) { x y z Out.print("Geben Sie 2 nat. Zahlen ein: "); int x = In.readInt(); int y = In.readInt(); int z = x % y; /* z = Rest von x/y */ while (z!= 0) { x = y; y = z; z = x % y; Out.println("Das Ergebnis ist "+ y +"."); Aufforderung zur Eingabe Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 53

49 Simulation eines Computerprogrammes per Hand public class Mystery { public static void main (String[] args) { x y z 28 Out.print("Geben Sie 2 nat. Zahlen ein: "); int x = In.readInt(); int y = In.readInt(); int z = x % y; /* z = Rest von x/y */ while (z!= 0) { x = y; y = z; z = x % y; Out.println("Das Ergebnis ist "+ y +"."); Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 53

50 Simulation eines Computerprogrammes per Hand public class Mystery { public static void main (String[] args) { x y z Out.print("Geben Sie 2 nat. Zahlen ein: "); int x = In.readInt(); int y = In.readInt(); int z = x % y; /* z = Rest von x/y */ while (z!= 0) { x = y; y = z; z = x % y; Out.println("Das Ergebnis ist "+ y +"."); Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 53

51 Simulation eines Computerprogrammes per Hand public class Mystery { public static void main (String[] args) { x y z Out.print("Geben Sie 2 nat. Zahlen ein: "); int x = In.readInt(); int y = In.readInt(); int z = x % y; /* z = Rest von x/y */ while (z!= 0) { x = y; y = z; z = x % y; Out.println("Das Ergebnis ist "+ y +"."); Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 53

52 Simulation eines Computerprogrammes per Hand public class Mystery { public static void main (String[] args) { x y z Out.print("Geben Sie 2 nat. Zahlen ein: "); int x = In.readInt(); int y = In.readInt(); int z = x % y; /* z = Rest von x/y */ while (z!= 0) { x = y; y = z; z = x % y; Out.println("Das Ergebnis ist "+ y +"."); Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 53

53 Simulation eines Computerprogrammes per Hand public class Mystery { public static void main (String[] args) { Out.print("Geben Sie 2 nat. Zahlen ein: "); int x = In.readInt(); int y = In.readInt(); int z = x % y; /* z = Rest von x/y */ while (z!= 0) { x = y; y = z; z = x % y; Out.println("Das Ergebnis ist "+ y +"."); x y z Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 53

54 Simulation eines Computerprogrammes per Hand public class Mystery { public static void main (String[] args) { Out.print("Geben Sie 2 nat. Zahlen ein: "); int x = In.readInt(); int y = In.readInt(); int z = x % y; /* z = Rest von x/y */ while (z!= 0) { x = y; y = z; z = x % y; Out.println("Das Ergebnis ist "+ y +"."); x y z Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 53

55 Simulation eines Computerprogrammes per Hand public class Mystery { public static void main (String[] args) { Out.print("Geben Sie 2 nat. Zahlen ein: "); int x = In.readInt(); int y = In.readInt(); int z = x % y; /* z = Rest von x/y */ while (z!= 0) { x = y; y = z; z = x % y; Out.println("Das Ergebnis ist "+ y +"."); x y z Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 53

56 Simulation eines Computerprogrammes per Hand public class Mystery { public static void main (String[] args) { Out.print("Geben Sie 2 nat. Zahlen ein: "); int x = In.readInt(); int y = In.readInt(); int z = x % y; /* z = Rest von x/y */ while (z!= 0) { x = y; y = z; z = x % y; Out.println("Das Ergebnis ist "+ y +"."); x y z Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 53

57 Simulation eines Computerprogrammes per Hand public class Mystery { public static void main (String[] args) { Out.print("Geben Sie 2 nat. Zahlen ein: "); int x = In.readInt(); int y = In.readInt(); int z = x % y; /* z = Rest von x/y */ while (z!= 0) { x = y; y = z; z = x % y; Out.println("Das Ergebnis ist "+ y +"."); x y z Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 53

58 Simulation eines Computerprogrammes per Hand public class Mystery { public static void main (String[] args) { Out.print("Geben Sie 2 nat. Zahlen ein: "); int x = In.readInt(); int y = In.readInt(); int z = x % y; /* z = Rest von x/y */ while (z!= 0) { x = y; y = z; z = x % y; Out.println("Das Ergebnis ist "+ y +"."); x y z Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 53

59 Simulation eines Computerprogrammes per Hand public class Mystery { public static void main (String[] args) { Out.print("Geben Sie 2 nat. Zahlen ein: "); int x = In.readInt(); int y = In.readInt(); int z = x % y; /* z = Rest von x/y */ while (z!= 0) { x = y; y = z; z = x % y; Out.println("Das Ergebnis ist "+ y +"."); x y z Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 53

60 Simulation eines Computerprogrammes per Hand public class Mystery { public static void main (String[] args) { Out.print("Geben Sie 2 nat. Zahlen ein: "); int x = In.readInt(); int y = In.readInt(); int z = x % y; /* z = Rest von x/y */ while (z!= 0) { x = y; y = z; z = x % y; Out.println("Das Ergebnis ist "+ y +"."); x y z Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 53

61 Simulation eines Computerprogrammes per Hand public class Mystery { public static void main (String[] args) { Out.print("Geben Sie 2 nat. Zahlen ein: "); int x = In.readInt(); int y = In.readInt(); int z = x % y; /* z = Rest von x/y */ while (z!= 0) { x = y; y = z; z = x % y; Out.println("Das Ergebnis ist "+ y +"."); x y z Ausgabe: Das Ergebnis ist 4. Was berechnet das Programm Mystery? Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 53

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen - 1 -

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen - 1 - 1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen I.2. I.2. Grundlagen von von Programmiersprachen. - 1 - 1. Der Begriff Informatik "Informatik" = Kunstwort aus Information und Mathematik

Mehr

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen - 1 -

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen - 1 - 1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen I.2. I.2. Grundlagen von von Programmiersprachen. - 1 - 1. Der Begriff Informatik "Informatik" = Kunstwort aus Information und Mathematik

Mehr

Thomas Gewering Benjamin Koch Dominik Lüke

Thomas Gewering Benjamin Koch Dominik Lüke Technische Informatik für Ingenieure WS 2010/2011 Üungslatt Nr. 2 - Musterlösung 18. Oktoer 2010 Üungsgruppenleiter: Matthias Fischer Mouns Almarrani Rafał Dorociak Michael Feldmann Thomas Gewering Benjamin

Mehr

Syntax von Programmiersprachen

Syntax von Programmiersprachen "Grammatik, die sogar Könige zu kontrollieren weiß... aus Molière, Les Femmes Savantes (1672), 2. Akt Syntax von Programmiersprachen Prof. Dr. Christian Böhm in Zusammenarbeit mit Gefei Zhang WS 07/08

Mehr

Beispiel: Schriftliche Addition

Beispiel: Schriftliche Addition Beispiel: Schriftliche Addition 1 1 5 8 9 2 6 1 4 5 1 1 0 2 0 3 7 Eingabe Ausgabe Zwischen werte Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 18 2. Grundlagen der Programmierung

Mehr

Kapitel 2. Methoden zur Beschreibung von Syntax

Kapitel 2. Methoden zur Beschreibung von Syntax 1 Kapitel 2 Methoden zur Beschreibung von Syntax Grammatik, die sogar Könige zu kontrollieren weiß... aus Molière, Les Femmes Savantes (1672), 2. Akt 2 Ziele Zwei Standards zur Definition der Syntax von

Mehr

Syntax von Programmiersprachen

Syntax von Programmiersprachen "Grammatik, die sogar Könige zu kontrollieren weiß... aus Molière, Les Femmes Savantes (1672), 2. Akt Syntax von Programmiersprachen Prof. Dr. Martin Wirsing in Zusammenarbeit mit Michael Barth, Philipp

Mehr

2.4 Schleifen. Schleifen unterscheiden sich hinsichtlich des Zeitpunktes der Prüfung der Abbruchbedingung:

2.4 Schleifen. Schleifen unterscheiden sich hinsichtlich des Zeitpunktes der Prüfung der Abbruchbedingung: 2.4 Schleifen Schleifen beschreiben die Wiederholung einer Anweisung bzw. eines Blocks von Anweisungen (dem Schleifenrumpf) bis eine bestimmte Bedingung (die Abbruchbedingung) eintritt. Schleifen unterscheiden

Mehr

Einführung in die Programmierung für NF. Übung

Einführung in die Programmierung für NF. Übung Einführung in die Programmierung für NF Übung 03 06.11.2013 Inhalt Methoden in Java Gültigkeitsbereiche EBNF Einführung in die Programmierung für NF Übung 03 2 Methoden in Java In Methoden werden Ausdrücke

Mehr

Syntax von Programmiersprachen

Syntax von Programmiersprachen "Grammatik, die sogar Könige zu kontrollieren weiß aus Molière, Les Femmes Savantes (1672), 2. kt Syntax von Programmiersprachen Prof. Dr. Martin Wirsing Ziele Zwei Standards zur Definition der Syntax

Mehr

Sprachen sind durch folgenden Aufbau gekennzeichnet:

Sprachen sind durch folgenden Aufbau gekennzeichnet: BNF UND SYNTAXDIAGRAMME 1. Allgemeines 1.1 Aufbau von Sprachen BNF und Syntaxdiagramme werden verwendet, um die Syntax einer Sprache darzustellen und graphisch zu veranschaulichen. Mit ihnen können entweder

Mehr

Ein Fragment von Pascal

Ein Fragment von Pascal Ein Fragment von Pascal Wir beschreiben einen (allerdings sehr kleinen) Ausschnitt von Pascal durch eine kontextfreie Grammatik. Wir benutzen das Alphabet Σ = {a,..., z, ;, :=, begin, end, while, do} und

Mehr

Alphabet, formale Sprache

Alphabet, formale Sprache n Alphabet Alphabet, formale Sprache l nichtleere endliche Menge von Zeichen ( Buchstaben, Symbole) n Wort über einem Alphabet l endliche Folge von Buchstaben, die auch leer sein kann ( ε leere Wort) l

Mehr

Syntax von Programmiersprachen

Syntax von Programmiersprachen Information: ist Rohstoff der Informatik, hat eigenständige Dimension (vgl. Länge, Zeit, elektrische Ladung ist jedoch nicht im SI-System enthalten) läßt sich nicht messen, sie wird berechnet wird durch

Mehr

Formale Sprachen. Inhaltsverzeichnis. M. Jakob. 10. Dezember Allgemeine Einführung. Aufbau formaler Sprachen

Formale Sprachen. Inhaltsverzeichnis. M. Jakob. 10. Dezember Allgemeine Einführung. Aufbau formaler Sprachen M. Jakob Gymnasium Pegnitz 10. Dezember 2014 Inhaltsverzeichnis Allgemeine Einführung Aufbau formaler Sprachen Notationsformen formaler Sprachen Backus-Naur-Formen Erkennen formaler Sprachen Implementierung

Mehr

Einführung in die Programmierung für NF. Rückgabewerte, EBNF, Fallunterscheidung, Schleifen

Einführung in die Programmierung für NF. Rückgabewerte, EBNF, Fallunterscheidung, Schleifen Einführung in die Programmierung für NF Rückgabewerte, EBNF, Fallunterscheidung, Schleifen FUNKTIONEN UND PROZEDUREN 3 Rückgabewerte, EBNF, Fallunterscheidung, Schleifen 2 Funk@on und Prozedur Methoden

Mehr

3 Syntax von Programmiersprachen

3 Syntax von Programmiersprachen 3 Syntax von Programmiersprachen Syntax ( Lehre vom Satzbau ) formale Beschreibung des Aufbaus der Worte und Sätze, die zu einer Sprache gehören; im Falle einer Programmiersprache Festlegung, wie Programme

Mehr

Technische Informatik für Ingenieure WS 2010/2011 Musterlösung Übungsblatt Nr. 4

Technische Informatik für Ingenieure WS 2010/2011 Musterlösung Übungsblatt Nr. 4 Technische Informatik für Ingenieure WS 2010/2011 Musterlösung Übungsblatt Nr. 4 1. November 2010 Übungsgruppenleiter: Matthias Fischer Mouns Almarrani Rafał Dorociak Michael Feldmann Thomas Gewering Benjamin

Mehr

Grammatiken. Grammatiken sind regelbasierte Kalküle zur Konstruktion von Systemen und Sprachen Überprüfung von Systemen und Sprachen

Grammatiken. Grammatiken sind regelbasierte Kalküle zur Konstruktion von Systemen und Sprachen Überprüfung von Systemen und Sprachen Grammatiken Grammatiken sind regelbasierte Kalküle zur Konstruktion von Systemen und Sprachen Überprüfung von Systemen und Sprachen Grammatiken eignen sich besonders zur Modellierung beliebig tief geschachtelter,

Mehr

3 Syntax von Programmiersprachen

3 Syntax von Programmiersprachen 3 Syntax von Programmiersprachen Syntax ( Lehre vom Satzbau ) formale Beschreibung des Aufbaus der Worte und Sätze, die zu einer Sprache gehören; im Falle einer Programmiersprache Festlegung, wie Programme

Mehr

Technische Informatik für Ingenieure WS 2010/2011 Musterlösung Übungsblatt Nr. 3

Technische Informatik für Ingenieure WS 2010/2011 Musterlösung Übungsblatt Nr. 3 Technische Informatik für Ingenieure WS 2010/2011 Musterlösung Übungsblatt Nr. 3 25. Oktober 2010 Übungsgruppenleiter: Matthias Fischer Mouns Almarrani Rafał Dorociak Michael Feldmann Thomas Gewering Benjamin

Mehr

7. Syntax: Grammatiken, EBNF

7. Syntax: Grammatiken, EBNF 7. Syntax: Grammatiken, EBNF Teil 1 Sehr schönes Beispiel für Notwendigkeit der Theoretischen Informatik für Belange der Praktischen Informatik Vertiefung in: Einführung in die Theoretische Informatik

Mehr

Kapitel 2: Methoden zur Beschreibung von Syntax

Kapitel 2: Methoden zur Beschreibung von Syntax Einführung in die Informatik: Programmierung und Softwareentwicklung Wintersemester 2018/19 Kapitel 2: Methoden zur Beschreibung von Syntax Prof. Dr. David Sabel Lehr- und Forschungseinheit für Theoretische

Mehr

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 06: Einführung in Kontrollstrukturen Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil: Einführung in Kontrollstrukturen 3 Grundstrukturen von

Mehr

3. Grundanweisungen in Java

3. Grundanweisungen in Java 3. Grundanweisungen in Java Die Grundanweisungen entsprechen den Prinzipien der strukturierten Programmierung 1. Zuweisung 2. Verzweigungen 3. Wiederholungen 4. Anweisungsfolge (Sequenz) Die Anweisungen

Mehr

4. Induktives Definieren - Themenübersicht

4. Induktives Definieren - Themenübersicht Induktives Definieren 4. Induktives Definieren - Themenübersicht Induktives Definieren Natürliche Zahlen Operationen auf natürlichen Zahlen Induktive Algorithmen Induktiv definierte Mengen Binärbäume Boolesche

Mehr

Kontextfreie Sprachen. Automaten und Formale Sprachen alias Theoretische Informatik. Sommersemester Kontextfreie Sprachen

Kontextfreie Sprachen. Automaten und Formale Sprachen alias Theoretische Informatik. Sommersemester Kontextfreie Sprachen Automaten und Formale Sprachen alias Theoretische Informatik Sommersemester 2012 Dr. Sander Bruggink Übungsleitung: Jan Stückrath Wortproblem: der CYK-Algorithmus Pumping Lemma für kontextfreie Sprachen

Mehr

3.4 Struktur von Programmen

3.4 Struktur von Programmen 3.4 Struktur von Programmen Programme sind hierarchisch aus Komponenten aufgebaut. Für jede Komponente geben wir Regeln an, wie sie aus anderen Komponenten zusammengesetzt sein können. program ::= decl*

Mehr

Variablenarten. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java

Variablenarten. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java Variablenarten Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 10.12.07 G. Bohlender (IANM UNI Karlsruhe) OOP und Klassen 10.12.07 1 / 15

Mehr

3.1 Reservierte Wörter

3.1 Reservierte Wörter 3.1 Reservierte Wörter int Bezeichner für Basis-Typen; if, else, while Schlüsselwörter aus Programm-Konstrukten; (,), ",, {,},,,; Sonderzeichen. 62 3.2 Was ist ein erlaubter Name? Schritt 1: Angabe der

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 41 Einstieg in die Informatik mit Java Weitere Anweisungen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 41 1 Überblick 2 Verbundanweisung 3 Bedingte Anweisung 4 Auswahlanweisung

Mehr

Einführung in die Informatik. Programming Languages

Einführung in die Informatik. Programming Languages Einführung in die Informatik Programming Languages Beschreibung von Programmiersprachen Wolfram Burgard Motivation und Einleitung Wir haben in den vorangehenden Kapiteln meistens vollständige Java- Programme

Mehr

1 Formale Sprachen, reguläre und kontextfreie Grammatiken

1 Formale Sprachen, reguläre und kontextfreie Grammatiken Praktische Informatik 1, WS 2001/02, reguläre Ausdrücke und kontextfreie Grammatiken 1 1 Formale Sprachen, reguläre und kontextfreie Grammatiken Ein Alphabet A ist eine endliche Menge von Zeichen. Die

Mehr

Klausur zur Lehrveranstaltung. Technische Informatik für Ingenieure WS 2009/10

Klausur zur Lehrveranstaltung. Technische Informatik für Ingenieure WS 2009/10 Klausur zur Lehrveranstaltung Technische Informatik für Ingenieure WS 2009/10 22. Februar 2010 Aufgabe 1 2 3 4 5 6 7 Summe mögliche Punkte 15 15 20 15 20 20 15 120 erreichte Punkte Note: Hinweise: Diese

Mehr

Mathematik-Vorkurs für Informatiker Formale Sprachen 1

Mathematik-Vorkurs für Informatiker Formale Sprachen 1 Christian Eisentraut & Julia Krämer www.vorkurs-mathematik-informatik.de Mathematik-Vorkurs für Informatiker Formale Sprachen 1 Aufgabe 1. (Wiederholung wichtiger Begriffe) Kategorie 1 Notieren Sie die

Mehr

15. Rekursion. Rekursive Funktionen, Korrektheit, Terminierung, Aufrufstapel, Bau eines Taschenrechners, BNF, Parsen

15. Rekursion. Rekursive Funktionen, Korrektheit, Terminierung, Aufrufstapel, Bau eines Taschenrechners, BNF, Parsen 453 15. Rekursion Rekursive Funktionen, Korrektheit, Terminierung, Aufrufstapel, Bau eines Taschenrechners, BNF, Parsen Mathematische Rekursion 454 Viele mathematische Funktionen sind sehr natürlich rekursiv

Mehr

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

Java für Anfänger Teil 2: Java-Syntax. Programmierkurs Manfred Jackel Java für Anfänger Teil 2: Java-Syntax Programmierkurs 11.-15.10.2010 Manfred Jackel 1 Syntax für die Sprache Java public class Welcome { } Schlüsselworte Reservierte Worte Keywords Wortsymbol Syntax: griech.

Mehr

Methoden. Gerd Bohlender. Einstieg in die Informatik mit Java, Vorlesung vom

Methoden. Gerd Bohlender. Einstieg in die Informatik mit Java, Vorlesung vom Einstieg in die Informatik mit Java, Vorlesung vom 2.5.07 Übersicht 1 2 definition 3 Parameterübergabe, aufruf 4 Referenztypen bei 5 Überladen von 6 Hauptprogrammparameter 7 Rekursion bilden das Analogon

Mehr

Software Entwicklung 1. Fallstudie: Arithmetische Ausdrücke. Rekursive Klassen. Überblick. Annette Bieniusa / Arnd Poetzsch-Heffter

Software Entwicklung 1. Fallstudie: Arithmetische Ausdrücke. Rekursive Klassen. Überblick. Annette Bieniusa / Arnd Poetzsch-Heffter Software Entwicklung 1 Annette Bieniusa / Arnd Poetzsch-Heffter Fallstudie: Arithmetische Ausdrücke AG Softech FB Informatik TU Kaiserslautern Bieniusa/Poetzsch-Heffter Software Entwicklung 1 2/ 33 Überblick

Mehr

Simulation und Testen von Algorithmen

Simulation und Testen von Algorithmen Simulation und Testen von Algorithmen Softwareentwicklung 1 (gtec) Hanspeter Mössenböck, Herbert Prähofer 1 Handsimulation von Algorithmen Man versteht einen Algorithmus, wenn man genau weiß, wie er arbeitet.

Mehr

Von der Programmiersprache WHILE zum ersten Einstieg in Java

Von der Programmiersprache WHILE zum ersten Einstieg in Java Von der Programmiersprache WHILE zum ersten Einstieg in Java Die Programmiersprache WHILE bildet den Kern jeder imperativen Programmiersprache. Man geht davon aus, dass die Ein- Ausgabe primitiv organisiert

Mehr

Werkzeuge zur Programmentwicklung

Werkzeuge zur Programmentwicklung Werkzeuge zur Programmentwicklung B-15 Bibliothek Modulschnittstellen vorübersetzte Module Eingabe Editor Übersetzer (Compiler) Binder (Linker) Rechner mit Systemsoftware Quellmodul (Source) Zielmodul

Mehr

Vorkurs Informatik WiSe 17/18

Vorkurs Informatik WiSe 17/18 Java Ausdrücke und Variablen Dr. Werner Struckmann / Stephan Mielke, Nicole Naczk, 05.10.2017 Technische Universität Braunschweig, IPS Überblick Ausdrücke, Datentypen und Variablen Kontrollstrukturen 05.10.2017

Mehr

Software Entwicklung 1

Software Entwicklung 1 Software Entwicklung 1 Annette Bieniusa / Arnd Poetzsch-Heffter AG Softech FB Informatik TU Kaiserslautern Fallstudie: Arithmetische Ausdrücke Bieniusa/Poetzsch-Heffter Software Entwicklung 1 2/ 33 Überblick

Mehr

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

Institut für Programmierung und Reaktive Systeme. Java 2. Markus Reschke Java 2 Markus Reschke 07.10.2014 Datentypen Was wird gespeichert? Wie wird es gespeichert? Was kann man mit Werten eines Datentyps machen (Operationen, Methoden)? Welche Werte gehören zum Datentyp? Wie

Mehr

Zuerst wird die Bedingung ausgewertet. Ist sie erfüllt, wird der Rumpf des while-statements ausgeführt. Nach Ausführung des Rumpfs wird das gesamte

Zuerst wird die Bedingung ausgewertet. Ist sie erfüllt, wird der Rumpf des while-statements ausgeführt. Nach Ausführung des Rumpfs wird das gesamte Zuerst wird die Bedingung ausgewertet. Ist sie erfüllt, wird der Rumpf des while-statements ausgeführt. Nach Ausführung des Rumpfs wird das gesamte while-statement erneut ausgeführt. Ist die Bedingung

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 47 Einstieg in die Informatik mit Java Anweisungen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 47 1 Ausdrucksanweisung 2 Einfache Ausgabeanweisung 3 Einfache Eingabeanweisung,

Mehr

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 04: Einführung in Kontrollstrukturen Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil: Einführung in Kontrollstrukturen 3 Grundstrukturen von

Mehr

n 1. Der Begriff Informatik n 2. Syntax und Semantik von Programmiersprachen - 1 -

n 1. Der Begriff Informatik n 2. Syntax und Semantik von Programmiersprachen - 1 - n 1. Der Begriff Informatik n 2. Syntax und Semantik von Programmiersprachen I.2. I.2. Grundlagen von von Programmiersprachen. - 1 - 1. Der Begriff Informatik n "Informatik" = Kunstwort aus Information

Mehr

Einführung in die Informatik. Programming Languages

Einführung in die Informatik. Programming Languages Einführung in die Informatik Programming Languages Beschreibung von Programmiersprachen Wolfram Burgard Cyrill Stachniss 1/15 Motivation und Einleitung Wir haben in den vorangehenden Kapiteln meistens

Mehr

Intensivübung zu Algorithmen und Datenstrukturen

Intensivübung zu Algorithmen und Datenstrukturen Intensivübung zu Algorithmen und Datenstrukturen Silvia Schreier Informatik 2 Programmiersysteme Martensstraße 3 91058 Erlangen Übersicht Programmierung Fallunterscheidung Flussdiagramm Bedingungen Boolesche

Mehr

Tagesprogramm

Tagesprogramm 1 2015-10-22 Tagesprogramm Syntax und Semantik Varianten von Schleifen Varianten von Programmverzweigungen 2 2015-10-22 Syntax und Semantik Darstellung der Syntax Syntax: Aufbau der Sätze bzw. Programme

Mehr

Kapitel 2. Methoden zur Beschreibung von Syntax

Kapitel 2. Methoden zur Beschreibung von Syntax 1 Kapitel 2 Methoden zur Beschreibung von Syntax Grammatik, die sogar Könige zu kontrollieren weiß... aus Molière, Les Femmes Savantes (1672), 2. Akt 2 Ziele Zwei Standards zur Definition der Syntax von

Mehr

Gedächtnis. Während der Abarbeitung eines Algorithmus müssen sich Dinge gemerkt werden bzw. auf Dingen wird gerechnet. Zugriff.

Gedächtnis. Während der Abarbeitung eines Algorithmus müssen sich Dinge gemerkt werden bzw. auf Dingen wird gerechnet. Zugriff. Gedächtnis Während der Abarbeitung eines Algorithmus müssen sich Dinge gemerkt werden bzw. auf Dingen wird gerechnet Hauptspeicher 38265 Telefon CPU Gedächtnis Vorlesender Zugriff Verarbeitungseinheit

Mehr

Kapitel 5: Syntaxdiagramme und Grammatikregeln

Kapitel 5: Syntaxdiagramme und Grammatikregeln 5. Syntaxdiagramme und Grammatikregeln 5-1 Objektorientierte Programmierung (Winter 2010/2011) Kapitel 5: Syntaxdiagramme und Grammatikregeln Syntaxdiagramme Grammatikregeln (kontextfrei) Beispiele: Lexikalische

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 28 Einstieg in die Informatik mit Java Variablenarten Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 28 1 Überblick: Variablenarten 2 Lokale Variablen 3 Lokale Variablen

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 24 Einstieg in die Informatik mit Java Variablenarten Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 24 1 Lokale Variablen 2 Lokale Variablen in Blocks 3 Lokale Variablen

Mehr

Übersicht: Inhalt und Ziele. Kapitel 2: Methoden zur Beschreibung von Syntax. Aufbau von Programmen. Syntax von Programmiersprachen

Übersicht: Inhalt und Ziele. Kapitel 2: Methoden zur Beschreibung von Syntax. Aufbau von Programmen. Syntax von Programmiersprachen Einführung in die Informatik: Programmierung und Softwareentwicklung Wintersemester 2018/19 Übersicht: Inhalt und Ziele Zwei Methoden zur Beschreibung (Definition) der Syntax von Programmiersprachen Backus-Naur-Form

Mehr

Inhalt Kapitel 11: Formale Syntax und Semantik

Inhalt Kapitel 11: Formale Syntax und Semantik Inhalt Kapitel 11: Formale Syntax und Semantik 1 Abstrakte und konkrete Syntax 2 Lexikalische Analyse 3 Formale Sprachen, Grammatiken, BNF 4 Syntaxanalyse konkret 266 Abstrakte und konkrete Syntax Abstrakte

Mehr

Vorkurs Informatik WiSe 16/17

Vorkurs Informatik WiSe 16/17 Java Ausdrücke und Variablen Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe, 05.10.2016 Technische Universität Braunschweig, IPS Überblick Ausdrücke, Datentypen und Variablen Kontrollstrukturen 05.10.2016

Mehr

Die Klasse MiniJava ist in der Datei MiniJava.java definiert:

Die Klasse MiniJava ist in der Datei MiniJava.java definiert: Die Klasse MiniJava ist in der Datei MiniJava.java definiert: import javax.swing.joptionpane; import javax.swing.jframe; public class MiniJava { public static int read () { JFrame f = new JFrame (); String

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 34 Einstieg in die Informatik mit Java weitere Anweisungen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 34 1 Verbundanweisung 2 Bedingte Anweisung 3 Auswahlanweisung

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java Vorlesung vom 25.4.07, Anweisungen Übersicht 1 Ausdrucksanweisung 2 Einfache Ausgabeanweisung 3 Einfache Eingabeanweisung, Vorbereitungen 4 Verbundanweisung 5 Bedingte Anweisung 6 Auswahlanweisung 7 for

Mehr

Sprachen und Programmiersprachen

Sprachen und Programmiersprachen Sprachen und Programmiersprachen Natürliche Sprachen versus Programmiersprachen / Spezifikationssprachen Syntax legt die grammatikalische Korrektheit fest. Semantik legt die Bedeutung von syntaktisch korrekten

Mehr

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

Java für Anfänger Teil 2: Java-Syntax. Programmierkurs Manfred Jackel Java für Anfänger Teil 2: Java-Syntax Programmierkurs 06.-10.10.2008 Manfred Jackel 1 Syntax für die Sprache Java public class Welcome { } Schlüsselworte Reservierte Worte Keywords Wortsymbol Syntax: griech.

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java Vorlesung vom 6.11.07, Weitere Anweisungen Übersicht 1 Verbundanweisung 2 Bedingte Anweisung 3 Auswahlanweisung 4 for Schleife 5 while Schleife 6 do Schleife 7 break Anweisung 8 continue Anweisung 9 Leere

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 27 Einstieg in die Informatik mit Java Methoden / Funktionen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 27 1 Überblick 2 Zweck von Methoden 3 Methodendefinition

Mehr

Gleitkommazahlen. JOHANNES KEPLER UNIVERSITY LINZ Research and teaching network Softwareentwicklung 1 (gtec) Hanspeter Mössenböck, Herbert Prähofer 74

Gleitkommazahlen. JOHANNES KEPLER UNIVERSITY LINZ Research and teaching network Softwareentwicklung 1 (gtec) Hanspeter Mössenböck, Herbert Prähofer 74 Gleitkommazahlen Research and teaching network Softwareentwicklung 1 (gtec) Hanspeter Mössenböck, Herbert Prähofer 74 Die Typen float und double Variablen float x, y; double z; // 32 Bit groß // 64 Bit

Mehr

2.8 Klassen. Nichtgleichartige Elemente können in Klassen zu einem neuen Typ zusammengefasst werden. Beispiel: Die drei Komponenten

2.8 Klassen. Nichtgleichartige Elemente können in Klassen zu einem neuen Typ zusammengefasst werden. Beispiel: Die drei Komponenten 2.8 Klassen Frage: Arrays fassen gleichartige Elemente (d.h. Elemente von gleichem Typ) zusammen. Wie kann man nichtgleichartige Elemente zu einem neuen Typ zusammenfassen? Nichtgleichartige Elemente können

Mehr

Klassenvariablen, Klassenmethoden

Klassenvariablen, Klassenmethoden Einstieg in die Informatik mit Java, Vorlesung vom 11.12.07 Übersicht 1 Klassenmethoden 2 Besonderheiten von Klassenmethoden 3 Aufruf einer Klassenmethode 4 Hauptprogrammparameter 5 Rekursion Klassenmethoden

Mehr

Kapitel 4: Anweisungen und Kontrollstrukturen

Kapitel 4: Anweisungen und Kontrollstrukturen inführung in die Informatik: Programmierung und Softwareentwicklung Wintersemester 2018/19 Kapitel 4: Anweisungen und Kontrollstrukturen Prof. Dr. David Sabel Lehr- und Forschungseinheit für Theoretische

Mehr

II. Grundlagen der Programmierung. Beispiel: Merge Sort. Beispiel: Merge Sort (Forts. ) Beispiel: Merge Sort (Forts. )

II. Grundlagen der Programmierung. Beispiel: Merge Sort. Beispiel: Merge Sort (Forts. ) Beispiel: Merge Sort (Forts. ) Technische Informatik für Ingenieure (TIfI) WS 2006/2007, Vorlesung 9 II. Grundlagen der Programmierung Ekkart Kindler Funktionen und Prozeduren Rekursion Datenstrukturen Merge S ( split, s, merge ) Beispiel:

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 22 Einstieg in die Informatik mit Java Grundlagen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 22 1 Kommentare 2 Bezeichner für Klassen, Methoden, Variablen 3 White

Mehr

Java I Vorlesung Imperatives Programmieren

Java I Vorlesung Imperatives Programmieren Java I Vorlesung 2 Imperatives Programmieren 3.5.2004 Variablen -- Datentypen -- Werte Operatoren und Ausdrücke Kontrollstrukturen: if Imperatives Programmieren Im Kern ist Java eine imperative Programmiersprache.

Mehr

Java Ablaufsteuerung (Beispiele)

Java Ablaufsteuerung (Beispiele) Informatik 1 für Nebenfachstudierende Grundmodul Java Ablaufsteuerung (Beispiele) Kai-Steffen Hielscher Folienversion: 16. Januar 2018 Informatik 7 Rechnernetze und Kommunikationssysteme Blöcke Anweisungen

Mehr

Softwareentwicklung I (IB) Objekte. Prof. Dr. Oliver Braun. Fakultät für Informatik und Mathematik Hochschule München

Softwareentwicklung I (IB) Objekte. Prof. Dr. Oliver Braun. Fakultät für Informatik und Mathematik Hochschule München Softwareentwicklung I (IB) Objekte Fakultät für Informatik und Mathematik Hochschule München Letzte Änderung: 18.03.2018 20:09 Inhaltsverzeichnis Neue Typen durch Klassen............................. 2

Mehr

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

EINI LW/WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 14/15 EINI LW/ Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 14/15 Dr. Lars Hildebrand Fakultät für Informatik Technische Universität Dortmund lars.hildebrand@tu-dortmund.de

Mehr

Elementare Konzepte von

Elementare Konzepte von Elementare Konzepte von Programmiersprachen Teil 2: Anweisungen (Statements) Kapitel 6.3 bis 6.7 in Küchlin/Weber: Einführung in die Informatik Anweisungen (statements) in Java Berechnung (expression statement)

Mehr

1. Erste Schritte 2. Einfache Datentypen 3. Anweisungen und Kontrollstrukturen 4. Verifikation 5. Reihungen (Arrays) II.1.4. Verifikation - 1 -

1. Erste Schritte 2. Einfache Datentypen 3. Anweisungen und Kontrollstrukturen 4. Verifikation 5. Reihungen (Arrays) II.1.4. Verifikation - 1 - 1. Erste Schritte 2. Einfache Datentypen 3. Anweisungen und Kontrollstrukturen 4. Verifikation 5. Reihungen (Arrays) II.1.4. Verifikation - 1 - 4. Verifikation Spezifikation: Angabe, was ein Programm tun

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 26 Einstieg in die Informatik mit Java Methoden Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 26 1 Methoden 2 Methodendefinition 3 Parameterübergabe, Methodenaufruf

Mehr

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

Operatoren für elementare Datentypen Bedingte Anweisungen Schleifen. Operatoren für elementare Datentypen Bedingte Anweisungen Schleifen Programmieren I Martin Schultheiß Hochschule Darmstadt Wintersemester 2011/2012 1 / 25 Operatoren für elementare Datentypen Bedingte Schleifen 2 / 25 Zuweisungsoperator Die Zuweisung von Werten an Variablen

Mehr

3. Anweisungen und Kontrollstrukturen

3. Anweisungen und Kontrollstrukturen 3. Kontrollstrukturen Anweisungen und Blöcke 3. Anweisungen und Kontrollstrukturen Mit Kontrollstrukturen können wir den Ablauf eines Programmes beeinflussen, z.b. ob oder in welcher Reihenfolge Anweisungen

Mehr

2 Programmieren in Java I noch ohne Nachbearbeitung

2 Programmieren in Java I noch ohne Nachbearbeitung 1 2 Programmieren in Java I noch ohne Nachbearbeitung 2.1 Was sind Programme? Eingabe = Verarbeitung = Ausgabe Die Eingabe kann sein Konstanten im Quelltext; Kommandozeilenparameter oder interaktive Eingabe

Mehr

TU Kaiserslautern. Übungsblatt 2: Software-Entwicklung 1 (WS 2017/18) Hinweise zu Einreichaufgaben. Hinweise zu den Übungen

TU Kaiserslautern. Übungsblatt 2: Software-Entwicklung 1 (WS 2017/18) Hinweise zu Einreichaufgaben. Hinweise zu den Übungen Dr. Annette Bieniusa Mathias Weber, M. Sc. Peter Zeller, M. Sc. TU Kaiserslautern Fachbereich Informatik AG Softwaretechnik Übungsblatt 2: Software-Entwicklung 1 (WS 2017/18) Hinweise zu Einreichaufgaben

Mehr

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

Das diesem Dokument zugrundeliegende Vorhaben wurde mit Mitteln des Bundesministeriums für Bildung und Forschung unter dem Förderkennzeichen Das diesem Dokument zugrundeliegende Vorhaben wurde mit Mitteln des Bundesministeriums für Bildung und Forschung unter dem Förderkennzeichen 16OH21005 gefördert. Die Verantwortung für den Inhalt dieser

Mehr

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

Java 8. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Oktober 2014 JAV8 Java 8 Elmar Fuchs Grundlagen Programmierung 1. Ausgabe, Oktober 2014 JAV8 5 Java 8 - Grundlagen Programmierung 5 Kontrollstrukturen In diesem Kapitel erfahren Sie wie Sie die Ausführung von von Bedingungen

Mehr

Grunddatentypen, Ausdrücke und Variablen Typkonversion, Überprüfen und Auswerten von Ausdrücken

Grunddatentypen, Ausdrücke und Variablen Typkonversion, Überprüfen und Auswerten von Ausdrücken Typkonversion, Überprüfen und Auswerten von Ausdrücken Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-12-13/infoeinf WS12/13 Grunddatentypen

Mehr

Ausdrücke. Variable, Typ, Kontext, Deklaration, Initialisierung, Ausdruck, Syntax, Semantik, Seiteneffekt

Ausdrücke. Variable, Typ, Kontext, Deklaration, Initialisierung, Ausdruck, Syntax, Semantik, Seiteneffekt Ausdrücke Variable, Typ, Kontext, Deklaration, Initialisierung, Ausdruck, Syntax, Semantik, Seiteneffekt Variablen als Stellvertreter In der Mathematik Variable ist Stellvertreter eines Wertes ändert sich

Mehr

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE3-Syntaxdiagramme (Stand 05.11.2010) Aufgabe 1: Entwickeln Sie Regeln zur Übersetzung von EBNF in Syntaxdiagramme. Aufgabe 2: Eine Zahl ist entweder

Mehr