Informatiker Board (http://www.informatikerboard.de/board/index.php)
- Themengebiete (http://www.informatikerboard.de/board/board.php?boardid=1)
--- Theoretische Informatik (http://www.informatikerboard.de/board/board.php?boardid=5)
---- formale Sprachen (http://www.informatikerboard.de/board/board.php?boardid=12)
----- Ableitungsbaum (http://www.informatikerboard.de/board/thread.php?threadid=1741)


Geschrieben von m-i am 12.12.2013 um 17:02:

  Ableitungsbaum

Meine Frage:
Bilden Sie zu dem folgenden IMP-Programm einen Ableitungsbaum, indem sie die nummerierten Bereiche des Baumes mit den entsprechenden Werten ausfüllen. Sollte an eine nummerierte Stelle des Baumes KEIN Eintrag stehen wählen Sie bitte "---" aus!
IMP-Programm:
x:=17 if x<=0 und nicht x=0 then x=0 else x=1

Die Interpretation des Ableitungsbaumes ist eindeutig!

Meine Ideen:
also ich verstehe nicht genau was der code sagt..
ich definiere ja zuerst x als 17 und überprüfe dann ob x<=0 ist, was es ja nicht ist... deshalb macht die if abfrage für mich voll keinen sinn?
hilfe kann mir jemand helfen? :'(



Geschrieben von Karlito am 13.12.2013 um 10:26:

 

Hallo,

ob der Code sinnvoll ist, spielt doch für die Bearbeitung der Aufgabe keine Rolle... Wo liegt dein Problem?

VG,

Karlito



Geschrieben von m-i am 14.12.2013 um 14:24:

 

ich verstehe dann nicht wie ich die aufgabe bearbeiten soll.. weil es für mich irgendwie keinen sinn macht :/



Geschrieben von Karlito am 15.12.2013 um 13:02:

 

Hallo,

was genau ergibt denn für dich keinen Sinn? Im prinzip geht es darum, wie ein Compiler den Quelltext analysiert und den einzelnen Symbolen Typen zuordnet. Dabei ist es offensichtlich so, dass Variablen immer den Typ <v> haben und konstante Ganzzahlen den Typ <d>. Scheinbar ist es weiterhin noch so, dass wenn man den Wert verarbeiten oder ändern will ein <a> hinzukommt. <c> sind Commands, also Anweisungsblöcke.

Im Prinzip musst Du nur nach Mustern suchen wie andere Programmteile repräsentiert sind und diese kopieren... Z.B. wird am Anfang der Variable x der Wert 17 zugewiesen. Im then-Zweig wird der Variable x der Wert 0 zugewiesen und im else Zweig wird der Variable x der Wert 1. Es wäre quatsch, die gleiche Operation verschieden zu repräsentieren (zumindest hier). Daraus kannst du Folgern, dass die Knoten 3, 4 und 11 entfallen. An der Stelle 2 steht ein <v>, an der Stelle 5 die Zahl 17 und am Knoten 10 steht x.

Ich hoffe das hilft dir weiter.

Gruß,

Karlito


Forensoftware: Burning Board, entwickelt von WoltLab GmbH