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 Was Mö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 Sprache 3. Regelbasierte Definition einer Sprache 4. Extended Backus Naur Form 5. 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 = 45 if 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.
acb bac bca cab abc aac baa aba aaa aca cba bbb caa bcb aab cbb abb bab bba acc bbc ccc cac cca bcc cbc bbc
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 ¤ steht Rechenzeichen ::= '+' | '-' | '*' | '/' [] Option: [‡] bedeutet, dass ‡ optional ist ganze_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ücken regel1 ::= ['-'] zahl | ziffer regel2 ::= ['-'] (zahl | ziffer)
4. Elemente der EBNF (6) Metazeichen (Fortsetzung) ... Bereich: '0' ... '9' bedeutet, dass alle Zeichen zw. 0 und 9 vorkommen können ziffer ::= '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.