Wie soll man ein Programm beschreiben (bzw. mit was)?
Umgangssprache
Großes Vokabular
Komplizierte grammatikalische Regeln
Zergliedern von Sätzen nur für Teilgebiete der Sprache praktisch gelöst
Mehrfache Bedeutung von Wörtern
Sinnbilder, Redewendungen
-> Lösung zur Vermeidung der Probleme der Umgangssprache
Was gibt es für Probleme bei Programmiersprachen (Hinsichtlich der Vielfalt) und welche Ziele gehen damit einher?
Große Vielfalt unterschiedlicher Sprachen
Junges Feld, neue Ideen ausdrücken, Markt schützen
Vielfältige Zwecke, Spezialisierung (JS für Webentwicklung, Kotlin für Android etc.)
Unterschiede in “Vokabular” und Grammatik
-> evtl. gleiche Bedeutung: a += 1; a++; a := a + 1; inc(a);
Ziele beim Sprachentwurf
Einfache, knappe Darstellung der Algorithmen
Für Computer leicht umzusetzen
Für Menschen leicht verständlich
Fehlermöglichkeiten minimieren
=> Ziele widersprechen sich
Wie sieht die Interpretation einer Sprache durch einen Prozessor aus (In Schritten)?
Symbole verstehen
Schritten eine Bedeutung zuordnen
Operationen ausführen
Was ist mit Syntax gemeint?
Vokabular und Grammatik -> Syntax
Grammatikregeln -> Syntaxdiagramm, Backus-Naur-Form BNF
Regeln erfüllt -> syntaktisch korrekt
Regeln nicht erfüllt -> Syntaxfehler
Jedem Nichtterminal wird ein Diagramm zugeordnet
Jedes Diagramm hat einen Eingang und einen Ausgang
Nichtterminale in Kasten, Termin im Kreis
Pfeile zeigen die Leserichtung
Definierung von Regeln
Mit Regelanwendung sind die mathematischen Rechenregeln gemeint (Klammer vor Punkt vor Strich)
Man kann sich folgendes Vorstellen, die Symbole links von “::=” können Symbol, die rechts von “::=” sind, zusammenfassen. Heißt, man kann die Symbole auf der rechten Seite durch das auf der linken ersetzen.
Folgt man der Logik, sind die äquivalenten Symbole zu <Faktor> die Grundsymbole, durch die man gegebene Terme Stück für Stück verkleinern/zusammenfassen kann
Anwendung der Regeln am oben genannten Beispiel:
Schaut man sich die Regeln an, sieht man unter <Faktor>, dass dieser eine <ganze Zahl> ein <Bezeichner> (bzw. Variable) oder eine geklammerte (<Formel>) sein kann. Diese 3 Voraussetzungen werden dem Beispiel Stück für Stück zugeordnet. Die Zahlen sind also <ganze Zahl> und “Alpha” ist ein <Bezeichner>.
Nun lassen sich diese Grundbedingung “zusammenfassen” bzw. auf- oder ableiten. Da ein <Faktor> eine <ganze Zahl> oder auch ein <Bezeichner> sein kann, wird <Faktor> nun an die Stelle der Grundbedingungen gesetzt, wodurch die nun 3x <Faktor> in dem Beispiel-Term steht.
Ein <Term> wiederum kann auch ein <Faktor> sein, weshalb die <Faktor>-Symbole nun durch <Term>-Symbole ersetzt werden. Theoretisch, könnte man nun weitermachen und alles auf <Formel>-Symbole ab- oder aufleiten, aber dann würde die Additionszeichen etc. immer noch dastehen. Deshalb leitet man erstmal nur zwei der <Term>-Symbole auf bzw. ab.
Nun wird erstmal in der Klamm weitergemacht, in man nun das Symbol <ganze Zahl> bis zum Term auf-/ableitet. In der Klammer steht nun <Formel>+<Term> was wiederum in der Regel unter <Formel> definiert ist. Heißt, man kann den Inhalt nun durch das <Formel>-Symbol ersetzen.
Schauen wir wieder in die Regeln unter <Faktor>, ist zu sehen, dass (<Formel>) das gleiche wie <Faktor> ist - entsprechend wird die Klammer durch <Faktor> ersetzt.
Unter <Term> ist definiert, dass dieses das Äquivalent zu <Term> * <Faktor> ist, also ersetzen wird die Mulitplikation durch das Symbol <Term> (Oder schreiben dieselbe Zeile nur ohne Mal und <Faktor>-Symbol).
Nun steht nur noch <Formel> + <Term> als Term, dieses ist nach Regeldefinition dasselbe, wie <Formel>, also ersetzen wir den Term, durch das Symbol (Bzw. Schreiben den Term ohne Plus und <Term> auf)
Was ist mit Semantik gemeint?
Bedeutung -> Semantik der Programmiersprache
Inkonsistenzen -> semantische Fehler
Bsp.:
Name des ersten Monats im Jahr?
Januar -> Korrekt
Name des dreizehnten Monats im Jahr?
??? -> Fehler, da es keine Bedeutung für den dreizehnten Monat gibt (Auch, weil es keinen 13ten gibt)
Wähle Zahl n zwischen 1 und 13!
Name des n-ten Monats im Jahr?
??? -> Selber Fehler, aber erst beim Ablauf!
Von Syntax- und Semantikfehlern, welche weiteren Fehler können noch bei der Formulierung auftreten?
Beispiel:
Berechne den “Umfang” aus “Radius * Pi”
Eigentlich lautet die Formel “2 * Radius * Pi”
Allgemeine logische Fehler
Nur beinahe angestrebter Ablauf
Nur in besonderen Situationen falsch
Logische Fehler sind für Prozessor nicht erkennbar!
-> Daher bedarf es großer Sorgfalt bei Erstellung der Logik
-> Daher Nutzung von methodischen Vorgehensweisen im Entwurf
Last changed9 months ago