Einf. in das symbolische Programmieren CIS, SS 2001, H.Leiss ================================================================= Abgabe: Dienstag, 3.7.2001 in der Uebungsstunde (Raum 1.14) ----------------------------------------------------------- Aufgabe 12. (an den Rechnern in Z 36) 8 Punkte ----------- Fuehre die Anwesenheitsaufgabe 2 (siehe Kursseite!) vom letzten Dienstag aus: a) Teste das Anzeigen einer .dot-Datei mit "Ubersetzen in Postscritpt und Aufrufen von Ghostview. (siehe Anwesenheitsaufgabe 2) b) Schreibe den Teil des Programms, der die Baeume durchnumeriert und setze ihn in das Programm 'dottree.pro' auf der Kursseite ein. drawTree(+Term,+Wurzelnummer,-naechste nicht verbrauchte Knotennummer) Hinweis: - mache eine Fallunterscheidung danach, ob der Term ein Blatt oder ein Verzweigungsknoten ist. - schreibe ein Hilfspraedikat drawTrees(+Termliste,+N,+M,-K), das die Terme der Termliste als Teilbaume des Baums mit Nummer N beschreibt (wie /bin/dot es braucht), und deren Knoten anfangend mit M numeriert, und K die erste nicht gebrachte Zahl ist. (Siehe das Beispiel auf der Anwesenheitsaufgabe 2.) c) Teste dann mit drawTree/1 ein Paar Beispielterme: kleine Terme, den Syntaxbaum aus Aufgabe 11, Listen (!). Drucke das Bild eines Terms aus, in dem Dein Name an den Blaettern auftritt, aus und gib es mit ab! d) Freiwillig: 5 Punkte Schreibe ein Programm, das den Benutzer auffordert, einen Term einzugeben, und gib den als Baum dargestellten Term am Bildschirm aus! (vgl. Folien S.50 und das Programm drawTree/1 aus 'dottree.pro') Aufgabe 13 6 Punkte ---------- Erweitere den tokenizer um die Faelle, wo Punkte in Zahlen auftreten, damit bei Faellen wie den folgenden nicht irrtuemlich ein Satzende erkannt wird: a) 12.345.89 b) am 2.11. 1988 c) 12,55 DM d) der 24. Dezember Das erweiterte Programm soll aber auch alle Satzenden erkennen, die das bisherige Programm schon erkennt. Hinweis: - Man kann annehmen, dass Zahlen nur in Token vorkommen, die keine Buchstaben, sondern nur Ziffern, Punkt und Komma enthalten. - Wo muss die Behandlung dieser Sonderfaelle im Programm eingefuegt werden? - Was muss fuer diese Faelle gemacht werden? Teste das Programm an einer Beispieldatei. Welche korrekten Satzenden erkennt das Programm nicht? Welche erkennt es irrtuemlich als Satzende?