Blocktutorium EidP. -Theorie II. EBNF Syntaxdiagramm Methodenüberladung

Ähnliche Dokumente
Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag

Alphabet, formale Sprache

Programmierkurs Java

Kapitel 2. Methoden zur Beschreibung von Syntax

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen. I.2. I.2. Grundlagen von von Programmiersprachen.

Einführung in die Programmierung für NF. Rückgabewerte, EBNF, Fallunterscheidung, Schleifen

Syntax von Programmiersprachen

1. Formale Sprachen 1.2 Grammatiken formaler Sprachen

Programmierpraktikum

Kapitel IV Formale Sprachen und Grammatiken

Sprachen sind durch folgenden Aufbau gekennzeichnet:

Java für Anfänger Teil 2: Java-Syntax. Programmierkurs Manfred Jackel

Methoden. Gerd Bohlender. Einstieg in die Informatik mit Java, Vorlesung vom

Grundlagen der theoretischen Informatik

Java für Anfänger Teil 2: Java-Syntax. Programmierkurs Manfred Jackel

Einführung in die Programmierung I. 1.0 EBNF 2.0 Einfache Java Programme. Thomas R. Gross. Department Informatik ETH Zürich

Einstieg in die Informatik mit Java

Formale Sprachen, reguläre und kontextfreie Grammatiken

Einstieg in die Informatik mit Java

Informatik I Tutorium WS 07/08

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag

Formale Sprachen. Inhaltsverzeichnis. M. Jakob. 10. Dezember Allgemeine Einführung. Aufbau formaler Sprachen

Der Datentyp String. Stringvariable und -vergleiche

Vorname:... Matrikel-Nr.:... Unterschrift:...

Einstieg in die Informatik mit Java

1 Syntax von Programmiersprachen

Programmiersprachen und Übersetzer

Theorie der Informatik. Theorie der Informatik. 6.1 Einführung. 6.2 Alphabete und formale Sprachen. 6.3 Grammatiken. 6.4 Chomsky-Hierarchie

Syntax. Gilbert Beyer und Annabelle Klarl. Einführung in die Informatik. Zentralübung zur Vorlesung Einführung in die Informatik

Nachholklausur zur Vorlesung: Einführung in die objektorientierte Programmierung mit Java WS1415

Einstieg in die Informatik mit Java

Übung Praktische Informatik I

Programmierung WS12/13 Lösung - Übung 1 M. Brockschmidt, F. Emmes, C. Otto, T. Ströder

Grammatiken. Eine Grammatik G mit Alphabet Σ besteht aus: Variablen V. Startsymbol S V. Kurzschreibweise G = (V, Σ, P, S)

Formale Sprachen. Inhalte. Lehrplan. Hinweis

Grundlagen der Theoretischen Informatik

7. Formale Sprachen und Grammatiken

(Prüfungs-)Aufgaben zu formale Sprachen

Elementare Konzepte von

Einstieg in die Informatik mit Java

Funktionen nur wenn dann

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 12/13. Kapitel 3. Grunddatentypen, Ausdrücke und Variable

Syntax. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

EidP. Blocktutorium SS 2014

Theoretische Informatik I

Empfehlenswerte Referenzen

Einführung in die Programmierung EBNF. Thomas R. Gross. Department Informatik ETH Zürich

Objektorientierte Programmierung. Kapitel 3: Syntaxdiagramme und Grammatikregeln

Funktionen nur wenn dann

Technische Informatik für Ingenieure WS 2010/2011 Musterlösung Übungsblatt Nr. 4

Theorie der Informatik

String s1, s2; Eine Zuweisung geschieht am einfachsten direkt durch Angabe des Strings eingeschlossen in doppelte Hochkommata:

Programmierung mit C Zeiger

Vererbung. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java 23.5.

Prof. Dr. Wolfgang Schramm. Vorname:... Matrikel-Nr.:... Unterschrift:...

Name: Klasse: Datum: a) Welche 3-stelligen Zahlen kannst du mit 5 Plättchen legen? Schreibe alle Möglichkeiten auf.

7. Syntax: Grammatiken, EBNF

Übungsblatt 1 - Lösung

Objektorientierte Programmierung. Kapitel 3: Syntaxdiagramme

Kapitel: Die Chomsky Hierarchie. Die Chomsky Hierarchie 1 / 14

Einstieg in die Informatik mit Java

2.5 Primitive Datentypen

Wird in Java zwischen Gross- und Kleinschreibung unterschieden?

Der eigentliche Inhalt (z.b. arithmetisch, algebraisch) wird ignoriert:

AuD-Tafelübung T-B5b

Beuth Hochschule Einführende Gentle-Programme WS12/13, S. 1

Aufgabensammlung Theo Inf I 1

THIA - Übungsblatt 2.

Einführung in die Informatik. Programming Languages

Einstieg in die Informatik mit Java

IT-Basics 2. DI Gerhard Fließ

Am Anfang werden die Attribute deklariert public class Kreis {

Einführung in die Programmierung I. 2.0 Einfache Java Programme. Thomas R. Gross. Department Informatik ETH Zürich

Variablen. CoMa-Übung VIII TU Berlin. CoMa-Übung VIII (TU Berlin) Variablen / 15

Programmieren I + II Regeln der Code-Formatierung

Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny

Scala: Klassen, Methoden und Objekte. von Simon Lerch

Formale Sprachen und Grammatiken

Präzedenz von Operatoren

Theoretische Grundlagen der Informatik

Grundlagen der Informatik I (Studiengang Medieninformatik)

LR-Parser, Shift-Reduce-Verfahren

Übungsblatt 3: Algorithmen in Java & Grammatiken

Kapitel 3. Grunddatentypen, Ausdrücke und Variable

C-Deklarationen lesen und schreiben

Algorithmen und Datenstrukturen I - Exkurs Formale Sprachen -

Programmieren in C++ Überladen von Methoden und Operatoren

Vererbung, Polymorphie

Projekt 3 Variablen und Operatoren

Java: Eine kurze Einführung an Beispielen

Abschnitt 2: Daten und Algorithmen

Formale Sprachen und endliche Automaten

Methoden und Wrapperklassen

Algorithmen mit konstantem Platzbedarf: Die Klasse REG

Konstruktor. Grundlagen der Programmierung. Stephan Kleuker 90

Kapitel 5: Syntaxdiagramme und Grammatikregeln

Transkript:

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!