Grundlagen der Programmiersprachen SS 2016 - Aufgabenblatt 4 Prof. Dr. U. Kastens Institut für Informatik, Fakultät für Elektrotechnik, Informatik und Mathematik, Universität Paderborn Ausgabe: 28.06.2016 -- Abgabe: Bis 05.07.2015, 14:15 Uhr (Übungskasten auf D3) Aufgabe 1 (KFG, XML und DTD [3 Punkte]) Wir entwerfen eine XML-Struktur für Kochbücher. Ein Kochbuch besteht aus beliebig vielen Rezepten. Ein Rezept hat einen Namen, eine Zutatenliste, eine Kochanleitung und evtl. eine Kalorienangabe. Die Zutatenliste besteht aus einer oder mehr Zutaten. Eine Zutat, ein Rezeptname, eine Kalorienangabe und eine Kochanleitung soll durch Buchstabenfolgen (#PCDATA) dargestellt werden. a) b) c) Geben Sie, wie auf Folie 223 dargestellt eine kontextfreie Grammatik in EBNF an, die die Struktur derartiger Kochbücher beschreibt. Transformieren Sie die kontextfreie Grammatik aus a) in eine Dokumenttypdefinition (DTD) für XML. Schreiben Sie ein Kochbuch in XML mit einem Rezept Ihrer Wahl gemäß Ihrer DTD. Aufgabe 2 (Grammatikentwurf für Folgen [3 Punkte]) Eine Schnittstellenbeschreibung besteht aus den Wortsymbol ’interface’, einem Funktionsnamen und der in runde Klammern eingeschlossenen Parameterliste, gefolgt vom Wortsymbol ’returns’ und dem Ergebnistyp. Die Parameterliste ist eine eventuell leere Liste von formalen Parametern, die durch Semikolon getrennt sind. Ein formaler Parameter besteht aus einer durch Komma getrennten Liste von Parameternamen, gefolgt von Doppelpunkt und Parametertyp. Funktionsname, Ergebnistyp, Parameternamen und Parametertyp sind Bezeichner. Typische Beispiele: interface stop() returns void interface add(a, b: int) returns int interface print3(format : string; a,b : int; c: float) returns int Entwerfen Sie die Grammatik für Schnittstellenbeschreibungen in BNF nach dem Schema von Folie 214. Aufgabe 3 (Gültigkeitsbereiche [2 Punkte]) Kennzeichnen Sie die Gültigkeitsbereiche der Definitionen im folgenden Beispiel nach der C-Regel und der Algol-Regel. Verwenden Sie senkrechte Balken, die je nach Gültigkeitsregel am Blockanfang oder an einer Definition anfangen und am Blockende oder vor einem eingeschachtelten Block oder einer verdeckenden Definition enden. Aufgabe 4 (Stellen als Werte [2 Punkte]) #include <stdio.h> int main() { int res; int *resref; res = 41; resref = &res; *resref = *resref + 1; printf("%d\n", *resref); return 0; } a) b) Führen Sie die Zuweisungen dieses C-Programms, wie auf Folie 403 dargestellt, schrittweise aus und geben Sie nach jeder Zuweisung den Inhalt der Speicherstellen an. Wir ersetzen die Zuweisung *resref = *resref + 1; durch *resref++; Führen Sie das modifizierte Programm aus und erklären Sie die Wirkung dieser Änderung.
© Copyright 2024 ExpyDoc