dieser nicht fehler finden algorithmus enthält einfach einen gravierenden welcher zu ist
TRANSCRIPT
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.