Blatt 4 als PDF - Universität Paderborn

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.