• Keine Ergebnisse gefunden

Aufgabe2KontextfreieGrammatikanwenden (5Punkte) Aufgabe1Syntaxdiagramme (5Punkte) Ubungsblatt2:Software-EntwicklungI(WS2006/07) TUKaiserslautern

N/A
N/A
Protected

Academic year: 2022

Aktie "Aufgabe2KontextfreieGrammatikanwenden (5Punkte) Aufgabe1Syntaxdiagramme (5Punkte) Ubungsblatt2:Software-EntwicklungI(WS2006/07) TUKaiserslautern"

Copied!
4
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Prof. Dr. A. Poetzsch-Heter Dipl.-Inform. J. O. Blech Dipl.-Inform. M. J. Gawkowski Dipl.-Inform. N. Rauch

TU Kaiserslautern

Fachbereich Informatik AG Softwaretechnik

Ubungsblatt 2: Software-Entwicklung I (WS 2006/07)

Ausgabe: 31. Oktober 2006 Abgabe: 6. November 2006, 12.00 Uhr Abnahme praktischer Teil: 7. - 9. November 2006

Aufgabe 1 Syntaxdiagramme (5 Punkte)

Ein Bezeichner in ML besteht aus folgenden Bestandteilen:

1. einem Buchstaben (a-z bzw. A-Z) am Anfang

2. einer Folge aus Buchstaben, Ziern (0-9), Unterstrichen ( ) und Hochkommata (0).

Beachten Sie, dass die Folge aus dem zweiten Bestandteil auch leer sein kann!

a) Beschreiben Sie den syntaktischen Aufbau von Bezeichnern in der Programmiersprache ML mit Syntaxdiagrammen. Identizieren Sie Startsymbol, Terminale und Nichtterminale und geben

Sie dann die Syntaxdiagramme an. (2 Punkte)

b) Uberfuhren Sie Ihre Syntaxdiagramme in eine kontextfreie Grammatik. (2 Punkte) c) Beschreiben Sie ein Verfahren, das allgemein kontextfreie Grammatiken in Syntaxdiagramme

uberfuhrt. Geht das auch umgekehrt? (1 Punkt)

Aufgabe 2 Kontextfreie Grammatik anwenden (5 Punkte)

Die formale Sprache L sei durch die Grammatik G = (N; T; ; S) deniert mit:

N = fS; Xg;

T = fa; b; c; dg;

= 8>

>>

>>

<

>>

>>

>:

(1) S ! aaXb;

(2) X ! aXb;

(3) X ! bXac;

(4) X ! XX;

(5) X ! d

9>

>>

>>

=

>>

>>

>; :

a) Geben Sie alle Worter der Sprache L an, die weniger als sieben Buchstaben besitzen. (1 Punkt) b) Entscheiden Sie, ob das Wort w = aaadbbdacaadbbb zur Sprache L gehort. Geben Sie in diesem

Fall eine ensprechende Ableitung an. (1 Punkt)

c) Ist die Grammatik G eindeutig? Begrunden Sie Ihre Antwort! (1 Punkt)

(2)

d) Erlautern Sie den Zusammenhang zwischen der Lange eines Wortes und der minimalen bzw.

maximalen Anzahl von Regelanwendungen, um es zu erzeugen. Wie viele Regelanwendungen brauchen Sie mindestens (hochstens), um ein Wort der Lange 1000 zu erzeugen? (2 Punkte)

Aufgabe 3 Kontextfreie Grammatik erstellen (5 Punkte)

Ein vollstandiger Stadtteilname sei wie folgt deniert:

Ein vollstandiger Stadtteilname besteht aus dem Namen der Stadt und dem Namen des Stadt- teils getrennt durch einen Bindestrich ('-').

Namen fur Stadt und Stadtteil bestehen jeweils aus mindestens drei Buchstaben, wobei der erste ein Grobuchstabe, alle weiteren Kleinbuchstaben sein mussen.

Dem Namen fur Stadt und Stadtteil kann jeweils ein Bad gefolgt von einem Leerzeichen vorangestellt werden.

Beispiele fur vollstandige Stadtteilnamen sind: Kaiserslautern-Betzenberg, Stuttgart-Bad Cann- statt.

Geben Sie eine kontextfreie Grammatik an, die den Aufbau der vollstandigen Stadtteilnamen formal beschreibt.

Aufgabe 4 Diskussion von Syntax und Semantik (0 Punkte)

Die folgenden Satze sollen auf korrekte Syntax und auf die Moglichkeit der Zuordnung einer sinn- vollen Bedeutung (Semantik) gepruft werden. Die Syntax eines Satzes gilt als korrekt, wenn sie den alten bzw. den neuen deutschen Rechtschreibregeln und den Grammatikregeln der deutschen Sprache genugt. Uberprufen Sie fur jeden Satz, ob seine Syntax korrekt ist und ob ihm eine Seman- tik zugeordnet werden kann. Geben sie eine kurze(!) Begrundung, falls diese Kriterien nicht erfullt sind.

a) "Dieser Satz kein Verb.\

b) "dieser Satz hat eine Semantik\

c) "Studieren in Kaiserslautern ist.\

d) "Der Betzenberg ist der hochste deutsche Fuballberg.\

e) "In Kaiserslautern ist es nachts kalter als drauen.\

Aufgabe 5 Einfache ML-Programme (6 Punkte)

Einfache ML-Programme genugen folgender Syntax:

(3)

Top level Declaration Program

;

Top level Declaration

Declaration Expression

;

Declaration

= Expression

val

fun Function Heading : Type = Expression

Ident

Function Heading

Ident ( Ident : Type )

,

Expression

Infix Expression

if Expression then Expression else Expression

Type

Ident list

Infix Expression

Atomic Expression

Infix Expression Infix Operator Infix Expression

Atomic Expression Ident Constant

Expression

Expression (

] [

)

,

, Ident

Expression

( )

(4)

Prufen Sie, ob die folgenden Texte der obigen Syntax genugen. Begrunden Sie Ihre Antwort!

a) fun x (x:int, x:int) : int = if x = x then if x = x then x else x else x; (2 Punkte) b) fun und (x:bool, y:bool) : bool = x andalso y; (2 Punkte) c) fun t (x : int list) = if x = [4, 5, 3] then false orelse true; (2 Punkte)

Aufgabe 6 Der ML-Interpreter sml (praktisch) (9 Punkte)

In dieser Aufgabe geht es um die praktische Benutzung der Programmiersprache ML. Dazu konnen Sie die Laufzeitumgebung des Standard ML of New Jersey (sml) verwenden.

a) Starten Sie die SML-Umgebung.

b) Geben Sie die folgenden Funktionsvereinbarungen ein:

fun isEmpty (s:int list) : bool = (s = []);

fun top (s:int list) : int = hd(s);

fun pop (s:int list) : int list = tl(s);

fun lessthan ( x:int, y:int ) : bool = x < y;

fun push ( x:int, xs:int list ) : int list = x :: xs;

fun ifthenelse( i:bool, t:'a, e:'a ) : 'a = if i then t else e;

c) Geben Sie die Ausdrucke aus Aufgabe 3 a, Ubungsblatt 1, in den ML-Interpreter ein und werten Sie diese aus. Beachten Sie, dass jede Eingabe in den Interpreter mit einem Semikolon abgeschlossen werden muss.

Geben Sie weiterhin Ihre Losungen zu Aufgabe 3 c und d, Ubungsblatt 1, ein und werten Sie sie aus.

(2 Punkte) d) Wie verhalt sich der ML-Interpreter bei Eingabe der Texte aus Aufgabe 5, Ubungsblatt 2?

Diskutieren Sie kurz das Resultat. (1 Punkt)

e) Schreiben Sie eine ML-Funktion, die vier Zahlen als Argumente hat und als Ergebnis das Pro- dukt der zweiten und der vierten Zahl, vermindert um die Summe der ersten und dritten Zahl, zuruckliefert. Testen Sie die Funktion anhand von mindestens funf aussagekraftigen Eingaben.

(3 Punkte) f) Strings werden in doppelte Hochkommata eingeschlossen, wie z. B. "ein string". Strings werden mit Hilfe des Konkatenationsoperators ^ aneinandergehangt. Schreiben Sie eine ML- Funktion, die vier Strings als Argumente hat, diese Strings aneinanderhangt und den so zusam- mengesetzten String als Ergebnis liefert. Testen Sie auch diese Funktion mit mindestens funf Eingaben.

(3 Punkte)

Referenzen

ÄHNLICHE DOKUMENTE

Eine m¨ ogliche Aufgabe ist, diesen Stapel so zu trennen, dass am Ende die Karte mit der Nummer 42 auf einem zweiten Stapel liegt, die restlichen Karten auf einem dritten Stapel.

Betrachten Sie noch einmal den rekursiv referenzierten Verbund DataSetList aus der 4. Aufgabe, Übungs- blatt 9.!. a) Schreiben Sie eine

∗ wenn nein: lege die Karte auf den vierten Stapel c) Beschreibung: Sie brauchen drei Stapel. • wiederhole Folgendes f¨ ur alle Karten auf dem

Das Theorem beschreibt die Korrektheit eines Verfahrens zum Vergleich von rotierten listen: statt der shift Funktionen kann auch eine “String”-like Suche

[r]

Aufgabe 3 Störe meine Kreise nicht 2. interface

c) Wieviele Schritte sind (ausgehend von dem in a) gew¨ ahlten Startwert) h¨ ochstens erforderlich, um eine Genauigkeit (welche Norm?) von ε = 10 −4

Mathematisches Institut der Universit¨ at Heidelberg Prof. Den x q -Faktor kann man einfach ignorieren: Es ist nur ein konstan- ter Faktor und beeinflußt die Konvergenz nicht. Will