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

Post on 06-Apr-2015

104 views 0 download

Transcript of 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.

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

ist.

Ein falscher Satz.

Inhalt

• WasMöglichkeit, eine Programmiersprache mit Regeln zu beschreiben

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

Ablauf

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

Gliederung des Vortrags

1. Terminologie: Symbol, Alphabet, Wort, Sprache

2. Definition einer Sprache3. Regelbasierte Definition einer

Sprache4. Extended Backus Naur Form5. Beispiel

1. Terminologie

• Symbol• Eine Sprache besteht aus einer Menge

von Symbolen.

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

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, >,...}

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

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.

abc

cba

aac

aab

bbb

baa aba aaaaca

cabbcabacacb

bbc ccc

bbc

cac

abb

cca

bab bba

bcc

cbb

cbc

acc

bcbcaa

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

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?

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

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

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

4. Elemente der EBNF (3)

• Metazeichen• beschreiben Beziehungen zwischen

Nichtterminal- und Terminalsymbolen

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

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

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)

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'

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

5. Beispiel (2)

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

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

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

ganzZahl)

• 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.