Blocktutorium EidP. -Theorie II EBNF Syntaxdiagramm Methodenüberladung
<Nichtterminal> ::= bla blubb [ 0 oder ein mal] { beliebig oft (0.. N) } Klammern (sind auch) möglich
Aufgabe 1 Geben Sie eine Grammatik mit Regeln in EBNF für die Signaturen des Buchbestandes der Bibliothek an. Eine solche Signatur besteht aus 1-3 Großbuchstaben, einer maximal 4-stelligen Ziffernfolge ohne führende Nullen, einer optionalen Angabe über die Auflage und einer ebenfalls optionalen Angabe über die Anzahl der Exemplare. Die Auflage wird als Ziffernfolge (ohne führende Nullen) in runden Klammern angegeben, die Exemplaranzahldurch ein + Zeichen und eine Ziffernfolge (ohne führende Nullen). Beispiel: TVI 1067 +7 TYD 27 (2) TVA 16 (2) +10 und TZU 87 sind korrekte Signaturen.
Geben Sie eine Grammatik mit Regeln in EBNF für die Signaturen des Buchbestandes der Bibliothek an. Eine solche Signatur besteht aus 1-3 Großbuchstaben, einer maximal 4-stelligen Ziffernfolge ohne führende Nullen, einer optionalen Angabe über die Auflage und einer ebenfalls optionalen Angabe über die Anzahl der Exemplare. Die Auflage wird als Ziffernfolge (ohne führende Nullen) in runden Klammern angegeben, die Exemplaranzahldurch ein + Zeichen und eine Ziffernfolge (ohne führende Nullen). Methodik: 1.: G = (Σ, N, P, <Startsymbol>) //Startsymbol aus Text leicht ersichtlich: Hauptgegenstand, den wir beschreiben wollen
Eine solche Signatur besteht aus 1-3 Großbuchstaben, einer maximal 4-stelligen Ziffernfolge ohne führende Nullen, einer optionalen Angabe über die Auflage und einer ebenfalls optionalen Angabe über die Anzahl der Exemplare. Die Auflage wird als Ziffernfolge (ohne führende Nullen) in runden Klammern angegeben, die Exemplaranzahldurch ein + Zeichen und eine Ziffernfolge (ohne führende Nullen). Methodik: 2.: Text von links nach rechts durchgehen und P schrittweise aufbauen
Beispiel: TVI 1067 +7 TYD 27 (2) TVA 16 (2) +10 und TZU 87 sind korrekte Signaturen. Methodik: 3.: Plausibilitäts-& Terminierungscheck
1.: G = (Σ, N, P, <Startsymbol>) //Startsymbol aus Text leicht ersichtlich: Hauptgegenstand, den wir beschreiben wollen 2.: Text von links nach rechts durchgehen und P aufbauen 3.: Plausibilitäts-& Terminierungscheck 4.: Verwendete Symbole in Σ={ } und N={ } Fertig Methodik:
Aufgabe 1 b) TVA 16 (2) +10 und TZU 87 Aus Grammatik ableiten
=> Syntaxdiagramm Aufgabe 1 c)
Aufgabe 2 In einem Backrezept wollen wir beschreiben können, welche Zutaten und wie viel davon für ein Gebäck gebraucht werden. Dazu geben wir an, wie viele Teelöffel "TL" oder Esslöffel "EL einer Zutat benötigt werden. Die Anzahl der Tee-oder Esslöffel muss eine positive ganze Zahl ungleich 0 sein. Als Zutaten können wir "Salz", "Zucker", "Mehl" und "Milch" verwenden. Ein Backrezept besteht dann aus beliebig vielen, aber mindestens einer solchen Mengenangabe. Q.: http://www.pst.ifi.lmu.de/lehre/wise-11-12/infoeinf/uebungen/blatt02/angabe02.pdf
Aufgabe 2 Beispiele für gültige Backrezepte sind also: 5 EL Zucker 10 EL Mehl 20 TL Milch 1 TL Salz 1 TL Salz Ungültig sind beispielsweise folgende Konstruktionen: 0 TL Salz 5 TL 3 EL Milch 10 EL Mehl Zucker Q.: http://www.pst.ifi.lmu.de/lehre/wise-11-12/infoeinf/uebungen/blatt02/angabe02.pdf
Aufgabe 2 a) Denieren Sie eine EBNF-Grammatik für die oben beschriebene Sprache. b) Leiten Sie mit der oben deniertenebnf-grammatik folgenden Ausdruck ab: 1 TL Zucker 3 EL Mehl c) Erstellen Sie zu der oben deniertenebfn-grammatik ein äquivalentes Syntaxdiagramm. Q.: http://www.pst.ifi.lmu.de/lehre/wise-11-12/infoeinf/uebungen/blatt02/angabe02.pdf
Aufgabe 2 Struktur? In einem Backrezept wollen wir beschreiben können, welche Zutaten und wie viel davon für ein Gebäck gebraucht werden. Dazu geben wir an, wie viele Teelöffel "TL" oder Esslöffel "EL einer Zutat benötigt werden. Die Anzahl der Tee-oder Esslöffel muss eine positive ganze Zahl ungleich 0 sein. Als Zutaten können wir "Salz","Zucker", "Mehl" und "Milch" verwenden. Ein Backrezept besteht dann aus beliebig vielen, aber mindestens einer solchen Mengenangabe. Q.: http://www.pst.ifi.lmu.de/lehre/wise-11-12/infoeinf/uebungen/blatt02/angabe02.pdf
Aufgabe 2 Struktur! In einem Backrezeptwollen wir beschreiben können, welche Zutaten und wie viel davon für ein Gebäck gebraucht werden. Dazu geben wir an, wie viele Teelöffel "TL" oderesslöffel "EL einer Zutatbenötigt werden. Die Anzahl der Tee- oder Esslöffel muss eine positive ganze Zahl ungleich 0 sein. Als Zutaten können wir "Salz","Zucker", "Mehl" und "Milch" verwenden. Ein Backrezept besteht dann aus beliebig vielen, aber mindestens einer solchen Mengenangabe. Q.: http://www.pst.ifi.lmu.de/lehre/wise-11-12/infoeinf/uebungen/blatt02/angabe02.pdf
Aufgabe 2 In einem Backrezeptwollen wir beschreiben können, welche Zutaten und wie viel davon für ein Gebäck gebraucht werden. Dazu geben wir an, wie viele Teelöffel "TL" oderesslöffel "EL einer Zutatbenötigt werden. Die Anzahl der Tee- oder Esslöffel muss eine positive ganze Zahl ungleich 0 sein. Als Zutaten können wir "Salz","Zucker", "Mehl" und "Milch" verwenden. Ein Backrezept besteht dann aus beliebig vielen, aber mindestens einer solchen Mengenangabe. Q.: http://www.pst.ifi.lmu.de/lehre/wise-11-12/infoeinf/uebungen/blatt02/angabe02.pdf
Aufgabe 2 b) leiten Sie mit der oben denierten EBNF-Grammatik folgenden Ausdruck ab: 1 TL Zucker 3 EL Mehl c) Erstellen Sie zu der oben deniertenebfn-grammatik ein äquivalentes Syntaxdiagramm. Q.: http://www.pst.ifi.lmu.de/lehre/wise-11-12/infoeinf/uebungen/blatt02/angabe02.pdf
Aufgabe 2 Lösung a) <Backrezept> ::= <Mengenangabe> {<Mengenangabe>} <Mengenangabe> ::= <Anzahl> <Einheit> <Zutat> <Anzahl> ::= <ZoN> {<Z>} <ZoN> ::= 1.. 9 <Z> ::= 0 <ZoN> <Einheit> ::= TL EL <Zutat> ::= SALZ ZUCKER MEHL MILCH
Aufgabe 2 Lösung b) <Backrezept> ::= <Mengenangabe> {<Mengenangabe>} <Mengenangabe> ::= <Anzahl> <Einheit> <Zutat> <Anzahl> ::= <ZoN> {<Z>} <ZoN> ::= 1.. 9 <Z> ::= 0 <ZoN> <Einheit> ::= TL EL <Zutat> ::= SALZ ZUCKER MEHL MILCH <Backrezept> - <Mengenangabe><Mengenangabe> -<Anzahl> <Einheit> <Zutat> <Anzahl> <Einheit> <Zutat> -<ZoN> TL Zucker <ZoN> EL Mehl -1 TL Zucker 3 EL Mehl
Aufgabe 3 Geben Sie EBNF-Regeln für die Beschreibung einer Musik-CD an. Solch eine Beschreibung besteht aus einem Interpretennamen(Folge von Buchstaben, Ziffern und Leerzeichen; auch leere Folgen sind möglich z.b. bei Samplern), einem CD-Titel (nichtleere Folge von Buchstaben, Ziffern und Leerzeichen) und einer Beschreibung des Inhalts. Diese Inhaltsbeschreibung besteht aus Angeben zu Musikstücken (mindestens einer), die jeweils aus einem Musiktitel (nichtleere Folge von Buchstaben, Ziffern und Leerzeichen ) und der Länge des Titels in der Form Minuten : Sekundenbesteht, wobei die Sekunden (< 60) immer genau zweistellig angegeben werden müssen und die Minuten mindestens einstellig (Beispiel: 4:03). Berücksichtigen Sie in ihrer EBNF alle Einschränkungen, die in der Aufgabenstellung formuliert wurden (z.b. Sekunden < 60).
Aufgabe 3 jetzt mal jeder für sich! 12 Minuten! Bei Fragen und Problemen melden! Geben Sie EBNF-Regeln für die Beschreibung einer Musik-CD an. Solch eine Beschreibung besteht aus einem Interpretennamen(Folge von Buchstaben, Ziffern und Leerzeichen; auch leere Folgen sind möglich z.b. bei Samplern), einem CD-Titel (nichtleere Folge von Buchstaben, Ziffern und Leerzeichen) und einer Beschreibung des Inhalts. Diese Inhaltsbeschreibung besteht aus Angeben zu Musikstücken (mindestens einer), die jeweils aus einem Musiktitel (nichtleere Folge von Buchstaben, Ziffern und Leerzeichen ) und der Länge des Titels in der Form Minuten : Sekundenbesteht, wobei die Sekunden (< 60) immer genau zweistellig angegeben werden müssen und die Minuten mindestens einstellig (Beispiel: 4:03). Berücksichtigen Sie in ihrer EBNF alle Einschränkungen, die in der Aufgabenstellung formuliert wurden (z.b. Sekunden < 60).
Aufgabe 3 Lösung <CD> ::= <Interpret> <Titel> <Beschr> <Interpret> ::={<B> <Z> _} <B> ::= a.. z A.. Z <Z> ::= 0.. 9 <Titel> ::=(<B> <Z> _){<B> <Z> _} <Beschr> ::= <MusikStk> {<MusikStk>} <MusikStk> ::= <Titel><Länge> <Länge> ::= <Minuten>:<Sekunden> <Minuten> ::= <Z> {<Z>} <Sekunden> ::= <Zkleiner6><Z> <Zkleiner6> ::= 0.. 5
Methodenüberladung
Methoden überladen Methodensignatur = Name + Parameter (Anzahl und Typ, inklusive Reihenfolge) Methodensignaturen müssen eindeutig sein! int foo(double x, double y) { } sei gegeben intfoo(floatx, floaty) { } void foo(float x, double y) { } void foo(double x, float y) { } voidfoo(floatx, floaty) { }
Überladene Methoden aufrufen Gegeben: voidfoo(floatx, doubley) { }//1) voidfoo(doublex, floaty) { }//2) Aufruf: foo(2.5, 4.2f); //ruft 2) auf foo(2.5f, 4.2); //ruft 1) auf
Überladene Methoden aufrufen Angenomme, folgendes wäre erlaubt: intfoo(floatx, doubley) { } //1) voidfoo(floatx, doubley) { } //2) Aufruf: foo(2.5f, 4.2); Wie sollte Java hier entscheiden? automatisch 2) annehmen, weil wir das Ergebnis keiner Variable zuweisen => void? Was wenn wir 1) wollen, aber den Ergebnistyp nicht brauchen? => daher verboten!