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

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

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

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

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

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

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

Einführung in die Programmierung. Organisatorisches. Skript zur Vorlesung Einführung in die Programmierung

Einführung in die Programmierung

Syntax von Programmiersprachen

Fortgeschrittene Funktionale Programmierung

Übersicht über 1. Vorlesungsabschnitt Form und Darstellung von Informationen

Einführung in die Informatik: Programmierung und Software-Entwicklung

TU Kaiserslautern. Übungsblatt 2: Software-Entwicklung 1 (WS 2017/18) Hinweise zu Einreichaufgaben. Hinweise zu den Übungen

Übungen zu Grundlagen der Logik in der Informatik - WS15/16

Übung zur Vorlesung Digitale Medien. Dr. Alexander De Luca Ludwig-Maximilians-Universität München Wintersemester 2013/2014

Einführung in die Programmierung WS 2014/15. Übungsblatt 0: Einführung

Übungsblatt 1: Zur Benutzung von Computern im CIP-Pool der Informatik

Alphabet, formale Sprache

Übungsblatt 6. Vorlesung Theoretische Grundlagen der Informatik im WS 17/18

Theoretische Informatik: Logik

Einführung in die Programmierung WS 2009/10. Übungsblatt 7: Imperative Programmierung, Parameterübergabe

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

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

Grundlagen der Betriebssysteme

Diskrete Strukturen. Abgabetermin: 15. Januar 2013, 14 Uhr in die DS Briefkästen

Programmierpraktikum

Mathematik für Informatiker 1 Wintersemester 2013/14 Übungsblatt 4

Programmierkurs Java

Nachklausur zur Vorlesung Informatik 3 mit einigen Anmerkungen zu Lösungen

Advanced Topics of Software Engineering. Organisatorische Hinweise

Sprachen sind durch folgenden Aufbau gekennzeichnet:

Einführung in die Programmierung WS 2009/10. Übungsblatt 5: Typen, Variablen und einfache Methoden in Java

Interaktive Whiteboards Software Easiteach unter Apple OS X El Capitan

Grundlagen der Informationsverarbeitung:

Übung zur Vorlesung. Digitale Medien. Vorlesung: Heinrich Hußmann Übung: Renate Häuslschmid, Hanna Schneider

Mathematik 1 Organisatorisches und Übungssystem

Logik für Informatiker

Logik für Informatiker

Algorithmen und Datenstrukturen Tafelübung 1. Jens Wetzl 26. Oktober 2011

Logik für Informatiker

Prüfungsvorleistung Datenstrukturen

Übungsaufgaben zu Formalen Sprachen und Automaten

Modellierung und Programmierung 1

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

Logik für Informatiker

Grundlagen der Programmiersprachen

Programmierung mit Java Teil 1

PHYSIK I. - Mechanik, Akustik, Wärmelehre - Ablauf der Vorlesung. Übungen. Leistungsnachweis

Abschnitt 4: Daten und Algorithmen

11. Übung Formale Grundlagen der Informatik

Grundlagen der Theoretischen Informatik Musterlösungen zu ausgewählten Übungsaufgaben

Labor - Übungen mit ios

Tutoraufgabe 1 (Hoare-Kalkül):

Statistik 2. Herbstsemester Universität Mannheim Abteilung Volkswirtschaftslehre Lehrstuhl für Statistik Toni Stocker

7. Syntax: Grammatiken, EBNF

Organisatorisches und Überblick

Funktionale Programmierung ALP I. λ Kalkül WS 2012/2013. Prof. Dr. Margarita Esponda. Prof. Dr. Margarita Esponda

Gruppe 3 / 5 / 10. Tutorübung zu Einsatz und Realisierung von Datenbanksystemen (SS 17) Michael Schwarz

Einführung in die Informatik I (autip)

Algorithmen & Datenstrukturen

Butz, Krüger: Mensch-Maschine-Interaktion, Kapitel 0 - Einführung. Mensch-Maschine-Interaktion

Algorithmen und Datenstrukturen

Übungsblatt 1 - Lösung

Grundlagen der Rechnerarchitektur

How To: Bachelor SWT. Heiko Geppert. Fachgruppe Informatik

Programmierung. Prof. Dr. Michael Hanus Tel , R. 706 / CAP-4

Vorlesung Berechenbarkeit und Komplexität Wintersemester 2016/17. Wer sind wir? Willkommen zu

Dateien in ILIAS hochladen, herunterladen und löschen

Überblick und Wiederholung

Vorlesung Programmierung

Softwaretechnik WS 16/17

Vorwort. Verzeichnis der Ergänzungslieferungen. Die drei Lernstufen

Universität Karlsruhe (TH)

HINWEISE ZUM AUSFÜLLEN UND FÜHREN DES ERNÄHRUNGSPROTOKOLLS

Konstruieren der SLR Parsing Tabelle

Übungen zur Vorlesung. Maschinelles Lernen. Wintersemester 2011/2012

Einführung in die Programmierung I

Einführung in die Programmierung für Computerlinguisten

Algorithmen und Datenstrukturen (AuD) Prof. Dr. Claudia Eckert und Dr. Thomas Stibor

Statistische Software (R)

TECHNISCHE UNIVERSITÄT MÜNCHEN. Abgabe: (vor der Vorlesung)

TECHNISCHE UNIVERSITÄT MÜNCHEN

Funktionen in JavaScript

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

Musterbeispiele: Aussagenlogik (Lösung)

Informatikgrundlagen (WS 2016/2017)

Objektorientierte Programmierung. Kapitel 3: Syntaxdiagramme

Abgabe: (vor 12 Uhr)

Übungsblatt 5 zur Vorlesung Wahrscheinlichkeitstheorie

Übung zur Vorlesung Multimedia im Netz

FORMALE SYSTEME. 3. Vorlesung: Endliche Automaten. TU Dresden, 17. Oktober Markus Krötzsch

Kapitel -1 Organisatorisches

Kennenlernen. Tutorium 7 iloveswt.de Fabian I. Miltenberger INSTITUT FÜR PROGRAMMSTRUKTUREN UND DATENORGANISATION (IPD)

Vorbereitende Aufgaben

Grundlagen der Programmierung II (GP 2)

QQ2 - Bericht Betreuung des Maple-Praktikums im Sommersemester 2005

FAKULTÄT FÜR INFORMATIK

Transkript:

Ludwig-Maximilians-Universität München WS 2017/18 Institut für Informatik Übungsblatt 2 Prof. Dr. R. Hennicker, P. Wendler Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag Aufgabe 2-1 EBNF-Grammatik für Spielzeugkisten Präsenz Im Folgenden betrachten wir eine einfache Sprache, mit der man den Inhalt von Spielzeugkisten in einem Kinderzimmer beschreiben kann. Generell wird dabei eine Spielzeugkiste durch das Wort "Kiste" angegeben und anschließend wird in runden Klammern entweder "leer" geschrieben oder es wird der Inhalt der Spielzeugkiste aufgezählt. Der Inhalt einer Spielzeugkiste besteht aus einer Reihe von Gegenständen, wobei zwischen jeweils zwei (aneinander grenzenden) Gegenständen immer angegeben werden soll, ob der erste "neben" oder "auf" dem zweiten liegt. Ein Gegenstand ist entweder ein Spielzeug oder wiederum eine Spielzeugkiste, die ihrerseits (wie oben beschrieben) angegeben wird. Spielzeuge sind "Puppe", "Auto", "Ball" oder "Teddy". Beispiele für gültige Ausdrücke dieser Sprache sind also: Kiste (leer) Kiste (Puppe neben Auto auf Kiste (Teddy neben Auto) neben Ball) Ungültig sind Konstruktionen, in denen vor oder nach einer Präposition kein Gegenstand steht, also z.b.: Kiste (neben Auto) Kiste (Auto neben) a) Definieren Sie eine EBNF-Grammatik für die oben beschriebene Sprache. Das Startsymbol soll den Namen Spielzeugkiste haben. Spielzeugkiste = "Kiste" "(" ( "leer" Inhalt ) Inhalt = Gegenstand Gegenstand = Spielzeug Spielzeugkiste Spielzeug = "Puppe" "Ball" "Auto" "Teddy" Praeposition = "neben" "auf" b) Leiten Sie mit der oben definierten EBNF-Grammatik folgenden Ausdruck ab: Kiste (Auto auf Kiste (leer)) Hinweis: Geben Sie sowohl die lange als auch die kurze Ableitung des Ausdrucks an. Geben Sie in jedem Schritt an, ob Sie eine Regel angewendet haben und welche Operatoren Sie angewendet haben! 1

Lange Lösung: Spielzeugkiste -(Regel)-> "Kiste" "(" ( "leer" Inhalt ) -(Op )--> "Kiste" "(" Inhalt -(Regel)-> "Kiste" "(" Gegenstand -(Regel)-> "Kiste" "(" (Spielzeug Spielzeugkiste) -(Op {})-> "Kiste" "(" (Spielzeug Spielzeugkiste) Praeposition Gegenstand -(Op {})-> "Kiste" "(" (Spielzeug Spielzeugkiste) Praeposition Gegenstand -(Op )--> "Kiste" "(" Spielzeug Praeposition Gegenstand -(Regel)-> "Kiste" "(" ("Puppe" "Ball" "Auto" "Teddy") ("neben" "auf") (Spielzeug Spielzeugkiste) -(Op )--> "Kiste" "(" "Auto" "auf" Spielzeugkiste -(Regel)-> "Kiste" "(" "Auto" "auf" "Kiste" "(" ( "leer" Inhalt ) -(Op )--> "Kiste" "(" "Auto" "auf" "Kiste" "(" "leer" Kurze Lösung: Spielzeugkiste -(Regel, Op )--> "Kiste" "(" Inhalt -(Regel, Op {})-> "Kiste" "(" Gegenstand Praeposition Gegenstand -(Op {})--------> "Kiste" "(" Gegenstand Praeposition Gegenstand -(Regel, Op )--> "Kiste" "(" Spielzeug "auf" Spielzeugkiste -(Regel, Op )--> "Kiste" "(" "Auto" "auf" "Kiste" "(" "leer" c) Erstellen Sie zu der oben definierten EBNF-Grammatik ein äquivalentes Syntaxdiagramm. Spielzeugkiste : Kiste ( leer Inhalt ) Inhalt : Gegenstand Gegenstand Praeposition Gegenstand : Spielzeug Spielzeugkiste 2

Spielzeug : Präposition : Puppe Auto Teddy Ball neben auf Aufgabe 2-2 EBNF-Grammatik für Backrezepte Hausaufgabe 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. 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 a) Definieren Sie eine EBNF-Grammatik für die oben beschriebene Sprache. Das Startsymbol soll den Namen Backrezept haben. Sie können folgende Regeln verwenden: Zahl = ZifferOhne0 { Ziffer } ZifferOhne0 = "1" "2"... "9" Ziffer = "0" ZifferOhne0 Backrezept = Mengenangabe Mengenangabe = Zahl Masseinheit Zutat Masseinheit = "TL" "EL" Zutat = "Salz" "Zucker" "Mehl" "Milch" b) Leiten Sie mit der oben definierten EBNF-Grammatik folgenden Ausdruck ab: 1 TL Zucker 3 EL Mehl 3

Hinweis: Geben Sie sowohl die lange als auch die kurze Ableitung des Ausdrucks an. Geben Sie in jedem Schritt an, ob Sie eine Regel angewendet haben und welche Operatoren Sie angewendet haben! Lange Lösung: Backrezept -(Regel)-------> Mengenangabe -(Regel)-------> Zahl Masseinheit Zutat -(Regel)-------> ZifferOhne0 { Ziffer } ("TL" "EL") ("Salz" "Zucker" "Mehl" "Milch") -(Op {}, Op )-> ZifferOhne0 "TL" "Zucker" -(Regel)-------> ("1" "2"... "9") "TL" "Zucker" -(Op )--------> "1" "TL" "Zucker" -(Op {})-------> "1" "TL" "Zucker" Mengenangabe -(Regel)-------> "1" "TL" "Zucker" Zahl Masseinheit Zutat -(Regel)-------> "1" "TL" "Zucker" ZifferOhne0 { Ziffer } ("TL" "EL") ("Salz" "Zucker" "Mehl" "Milch") -(Op )--------> "1" "TL" "Zucker" ZifferOhne0 { Ziffer } "EL" "Mehl" -(Op {})-------> "1" "TL" "Zucker" ZifferOhne0 "EL" "Mehl" -(Regel)-------> "1" "TL" "Zucker" ("1" "2"... "9") "EL" "Mehl" -(Op )--------> "1" "TL" "Zucker" "3" "EL" "Mehl" -(Op {})-------> "1" "TL" "Zucker" "3" "EL" "Mehl" Kurze Lösung: Backrezept -(Regel, Op {})-------> Mengenangabe Mengenangabe -(Op {})--------------> Mengenangabe Mengenangabe -(Regel)--------------> Zahl Masseinheit Zutat Zahl Masseinheit Zutat -(Regel, Op {}, Op )-> ZifferOhne0 "TL" "Zucker" ZifferOhne0 "TL" "Mehl" -(Regel, Op )--------> "1" "TL" "Zucker" "3" "EL" "Mehl" c) Erstellen Sie zu der oben definierten EBNF-Grammatik ein äquivalentes Syntaxdiagramm. Dabei brauchen Sie die Regeln für Zahl, ZifferOhne0 und Ziffer nicht beachten. Backrezept : Mengenangabe Mengenangabe Mengenangabe : Zahl Masseinheit Zutat Maßeinheit : TL EL 4

Zutat : Salz Mehl Milch Zucker Besprechung der Präsenzaufgaben in den Übungen ab 27.10.2017. Abgabe der Hausaufgaben bis Mittwoch, 08.11.2017, 14:00 Uhr über UniWorX (siehe Folien der ersten Zentralübung). Sie können Ihre Lösungen zu den Übungsaufgaben freiwillig zur Korrektur abgeben. Die Aufgaben haben keinen Einfluss auf Klausurzulassung oder Noten. Die Aufgaben dienen dazu, Ihnen eine intensive Beschäftigung mit dem Stoff der Vorlesung und eine gute Betreuung zu ermöglichen. Die Abgabe zur Korrektur erfolgt über das UniWorX-System. Hinweise zur Anmeldung finden Sie auf den Folien zur ersten Zentralübung. Erstellen Sie alle nötigen Dateien in einem eigenen Ordner (für jedes Übungsblatt ein eigener Ordner) und geben Sie den gesamten Ordner als ZIP-Archiv ab. In dem Ordner dürfen nur Dateien mit der Endung.java,.pdf,.jpg oder.txt enthalten sein. Word-Dokumente werden nicht korrigiert! Unter Windows kann ein ZIP-Archiv wie folgt erstellt werden: rechter Mausklick auf den Ordner, Auswahl von Senden an -> ZIP-komprimierter Ordner. Unter Mac OS hingehen: rechter Mausklick auf den Ordner, Auswahl von Komprimieren/Compress. 5