Dieser nicht Fehler finden Algorithmus enthält einfach einen gravierenden welcher zu ist.

22
Dieser nicht Fehler finden Algorithmus enthält einfach einen gravierenden welcher zu ist.

Transcript of Dieser nicht Fehler finden Algorithmus enthält einfach einen gravierenden welcher zu ist.

Page 1: Dieser nicht Fehler finden Algorithmus enthält einfach einen gravierenden welcher zu ist.

Dieser nicht Fehler finden Algorithmus enthält einfach einen gravierenden welcher zu

ist.

Page 2: Dieser nicht Fehler finden Algorithmus enthält einfach einen gravierenden welcher zu ist.

Dieser nicht Fehler finden Algorithmus enthält einfach einen gravierenden welcher zu

ist.

Ein falscher Satz.

Page 3: Dieser nicht Fehler finden Algorithmus enthält einfach einen gravierenden welcher zu ist.

Inhalt

• WasMöglichkeit, eine Programmiersprache mit Regeln zu beschreiben

• Lernziel• einfache Sprache mit Regeln beschreiben• Programme einer Sprache erzeugen• erkennen, ob Programme korrekt sind

Page 4: Dieser nicht Fehler finden Algorithmus enthält einfach einen gravierenden welcher zu ist.

Ablauf

• Ablauf der Stunde:• Vortrag 25 min• Übungen 60 min• Abschluss 5 min

Page 5: Dieser nicht Fehler finden Algorithmus enthält einfach einen gravierenden welcher zu ist.

Gliederung des Vortrags

1. Terminologie: Symbol, Alphabet, Wort, Sprache

2. Definition einer Sprache3. Regelbasierte Definition einer

Sprache4. Extended Backus Naur Form5. Beispiel

Page 6: Dieser nicht Fehler finden Algorithmus enthält einfach einen gravierenden welcher zu ist.

1. Terminologie

• Symbol• Eine Sprache besteht aus einer Menge

von Symbolen.

• Beispiele:», ¤, ¿15, -, +, 45, %, =if, then, begin, a, >

Page 7: Dieser nicht Fehler finden Algorithmus enthält einfach einen gravierenden welcher zu ist.

1. Terminologie (2)

• Alphabet• Ein Alphabet ist die Menge aller Symbole,

die zu einer Sprache gehören.

• Beispiele:

Alphabet1 = {¤, ¿, ‡, &}

Alphabet2 = {0,1,2,3,...+,-,=,...}Alphabet3 = {if, then, begin, a, >,...}

Page 8: Dieser nicht Fehler finden Algorithmus enthält einfach einen gravierenden welcher zu ist.

1. Terminologie (3)

• Wort• Ein Wort ist ein Element der Sprache und

besteht aus einem oder mehreren Symbolen des Alphabets.

• Beispiele:¤ ‡ & ¿ » # * ‡ + ¿ 15 * 3 = 45if a > b then c := a + b

Page 9: Dieser nicht Fehler finden Algorithmus enthält einfach einen gravierenden welcher zu ist.

1. Terminologie (4)

• Sprache• Eine Sprache besteht aus einer Menge

von Worten.

• Wenn M die Menge aller möglichen Worte w ist, die man auf Basis eines gegebenen Alphabets bilden kann,dann ist jede Teilmenge von M eine Sprache.

Page 10: Dieser nicht Fehler finden Algorithmus enthält einfach einen gravierenden welcher zu ist.

abc

cba

aac

aab

bbb

baa aba aaaaca

cabbcabacacb

bbc ccc

bbc

cac

abb

cca

bab bba

bcc

cbb

cbc

acc

bcbcaa

Page 11: Dieser nicht Fehler finden Algorithmus enthält einfach einen gravierenden welcher zu ist.

2. Definition einer Sprache

• Eine Sprache kann definiert werden durch:• Aufzählung aller Worte der Sprache

(Bsp. Duden)• Regeln, wie man alle Worte der Sprache

bilden kann• Regeln, wie man entscheidet, ob ein

Wort zu einer Sprache gehört

Page 12: Dieser nicht Fehler finden Algorithmus enthält einfach einen gravierenden welcher zu ist.

3. Regeln zur Bildung von Worten

• Welche Symbole gibt es?• Welche Symbole können

hintereinander auftreten? Wo?• Welche Symbole können optional

auftreten? Wo?• Welche Symbole können alternativ

zueinander auftreten? Wo?

Page 13: Dieser nicht Fehler finden Algorithmus enthält einfach einen gravierenden welcher zu ist.

4. Extended Backus Naur Form (EBNF)

• Methode, um Regeln zu definieren, die eine Programmiersprache beschreiben

• benannt nach J. Backus und P. Naur• vier Elemente:

• Produktion• Terminalsymbol• Nichtterminalsymbol• Metazeichen

Page 14: Dieser nicht Fehler finden Algorithmus enthält einfach einen gravierenden welcher zu ist.

4. Elemente der EBNF (1)

• Produktion• ist eine Regel• „Eine Gleichung besteht aus zwei

mathematischen Ausdrücken rechts und links von einem Gleichheitszeichen.“

• Gleichung ::= math_Ausdruck '=' math_Ausdruck

Page 15: Dieser nicht Fehler finden Algorithmus enthält einfach einen gravierenden welcher zu ist.

4. Elemente der EBNF (2)

• Terminalsymbol• ist ein Symbol• wird in Hochkommata geschrieben '‡'• Term_Symbol ::= 'if' | 'then' | 'begin'

• Nichtterminalsymbol• es gibt für jedes Nichtterminalsymbol eine

Produktion, wie es gebildet wird• Addition ::= math_ausdruck '+'

math_ausdruck

Page 16: Dieser nicht Fehler finden Algorithmus enthält einfach einen gravierenden welcher zu ist.

4. Elemente der EBNF (3)

• Metazeichen• beschreiben Beziehungen zwischen

Nichtterminal- und Terminalsymbolen

• ::= Definition: trennt die linke und die rechte Seite einer Produktion A ::= ¤ &Gleichheitszeichen ::= '='

Page 17: Dieser nicht Fehler finden Algorithmus enthält einfach einen gravierenden welcher zu ist.

4. Elemente der EBNF (4)

• Metazeichen (Fortsetzung)• | Alternative:

‡ | ¤ bedeutet, dass an dieser Stelle entweder ‡ oder ¤ stehtRechenzeichen ::= '+' | '-' | '*' | '/'

• [] Option: [‡] bedeutet, dass ‡ optional istganze_zahl ::= ['+'|'-'] natürliche_zahl

Page 18: Dieser nicht Fehler finden Algorithmus enthält einfach einen gravierenden welcher zu ist.

4. Elemente der EBNF (5)

• Metazeichen (Fortsetzung)• {} Iteration:

¤ {&} bedeutet, dass & beliebig oft stehen kann: ¤, ¤ &, ¤ & &, ¤ & & &zahl ::= ziffer {ziffer}

• () Gruppierung: zur logischen Gruppierung von Teilausdrückenregel1 ::= ['-'] zahl | zifferregel2 ::= ['-'] (zahl | ziffer)

Page 19: Dieser nicht Fehler finden Algorithmus enthält einfach einen gravierenden welcher zu ist.

4. Elemente der EBNF (6)

• Metazeichen (Fortsetzung)• ... Bereich:

'0' ... '9' bedeutet, dass alle Zeichen zw. 0 und 9 vorkommen könnenziffer ::= '0' ... '9'buchstabe ::= 'a' ... 'z' | 'A' ... 'Z'

Page 20: Dieser nicht Fehler finden Algorithmus enthält einfach einen gravierenden welcher zu ist.

5. Beispiel

• Ziel: Definition von ganzen Zahlen und Ziel: Kommazahlen basierend auf EBNF

• Zahlen bestehen aus Ziffern und einem oder keinem Komma

• vor dem Komma steht entweder eine Null oder eine Ziffernfolge, die nicht mit einer Null anfängt

• hinter dem Komma können beliebig viele Nullen hintereinander stehen

• vor einer Zahl kann ein Vorzeichen stehen

Page 21: Dieser nicht Fehler finden Algorithmus enthält einfach einen gravierenden welcher zu ist.

5. Beispiel (2)

• Ziffer ::= '0'...'9'• ZifferOhneNull ::= '1' ... '9'• Komma ::= ','• ganzZahl ::= Ziffer |

ZifferOhneNull {Ziffer}• nachKommaZahl::= Ziffer {Ziffer}• kommaZahl ::= ganzZahl Komma

nachKommaZahl• zahl ::= ['+'|'-'] (kommaZahl |

ganzZahl)

Page 22: Dieser nicht Fehler finden Algorithmus enthält einfach einen gravierenden welcher zu ist.

• Dieser Fehler enthält einfach einen gravierenden Algorithmus, welcher nicht zu finden ist.

• Dieser Algorithmus enthält einen gravierenden Fehler, welcher nicht einfach zu finden ist.