in diesem Aufgabenzettel behandeln wir LISP-artige Datenstrukturen. Benutzen Sie die Unit lispunit.pas !

Aufgabe 1

Schreiben Sie eine rekursive Funktion

function ListClone(l : list). list

die die als Parameter übergebene Liste l  struktur- und inhaltsgleich kopiert, also einen Clone der Liste erzeugt.

Testen Sie Ihre Funktion, in dem Sie folgende Listen erzeugen und clonen, und dann die Ausgangslisten und die Clone in Klammerdarstellung mit writelist ausgeben.

  • [['a',2],3,'de',[5.0]]
  • [[['LI'],'S','P'],2004]

 


Aufgabe 2

a) Schreiben Sie eine Funktion

function CountAtoms(l : list): integer,

die die Anzahl der Atome einer Liste als Funktionsergebnis liefert.

b) Schreiben Sie eine Funktion

function CountLists(l : list): integer,

die die Anzahl der Listen in einer Liste als Funktionsergebnis liefert.

(1,2,3) liefert 1, ((1),(2)) und (((1))) liefern 3.

Wenden Sie die Funktionen auf die Listen nach Aufgabe 1 an! Schreiben Sie ein sinnvolles Rahmenprogramm mit entsprechenden Ausgaben.


Abzugeben bis 15.6.2004, 24h