2.2 Syntax, Semantik und Simulation
|
|
- Claus Kohler
- vor 5 Jahren
- Abrufe
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 I.2. I.2. Grundlagen von von Programmiersprachen. - 1 - 1. Der Begriff Informatik "Informatik" = Kunstwort aus Information und Mathematik
Mehr1. 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
MehrThomas 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
MehrSyntax 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
MehrBeispiel: 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
MehrKapitel 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
MehrSyntax 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
Mehr2.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
MehrEinfü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
MehrSyntax 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
MehrSprachen 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
MehrEin 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
MehrAlphabet, 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
MehrSyntax 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
MehrFormale 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
MehrEinfü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
Mehr3 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
MehrTechnische 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
MehrGrammatiken. 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,
Mehr3 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
MehrTechnische 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
Mehr7. 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
MehrKapitel 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
MehrJavakurs 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
Mehr3. 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
Mehr4. 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
MehrKontextfreie 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
Mehr3.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*
MehrVariablenarten. 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
Mehr3.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
MehrEinstieg 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
MehrEinfü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
Mehr1 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
MehrKlausur 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
MehrMathematik-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
Mehr15. 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
MehrJava 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.
MehrMethoden. 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
MehrSoftware 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
MehrSimulation 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.
MehrVon 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
MehrWerkzeuge zur Programmentwicklung
Werkzeuge zur Programmentwicklung B-15 Bibliothek Modulschnittstellen vorübersetzte Module Eingabe Editor Übersetzer (Compiler) Binder (Linker) Rechner mit Systemsoftware Quellmodul (Source) Zielmodul
MehrVorkurs 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
MehrSoftware 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
MehrInstitut 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
MehrZuerst 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
MehrEinstieg 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,
MehrJavakurs 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
Mehrn 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
MehrEinfü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
MehrIntensivü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
MehrTagesprogramm
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
MehrKapitel 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
MehrGedä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
MehrKapitel 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
MehrEinstieg 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
MehrEinstieg 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
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
MehrInhalt 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
MehrVorkurs 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
MehrDie 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
MehrEinstieg 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
MehrEinstieg 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
MehrSprachen und Programmiersprachen
Sprachen und Programmiersprachen Natürliche Sprachen versus Programmiersprachen / Spezifikationssprachen Syntax legt die grammatikalische Korrektheit fest. Semantik legt die Bedeutung von syntaktisch korrekten
MehrJava 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.
MehrEinstieg 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
MehrEinstieg 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
MehrGleitkommazahlen. 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
Mehr2.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
MehrKlassenvariablen, 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
MehrKapitel 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
MehrII. 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:
MehrEinstieg 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
MehrJava 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.
MehrJava 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
MehrSoftwareentwicklung 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
MehrEINI 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
MehrElementare 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)
Mehr1. 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
MehrEinstieg 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
MehrOperatoren 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
Mehr3. 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
Mehr2 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
MehrTU 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
MehrDas 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
MehrJava 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
MehrGrunddatentypen, 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
MehrAusdrü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
MehrProgrammierkurs 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