Einführung in das Programmieren mit der Sprache Common Lisp

1. Semester (2 semestrig)

Donnerstags 18-20 c.t.

Durchgenommene Themen:
24.10.96 Einrichten des Arbeitsevironments und Historie von Lisp
31.10.96 Touretzky Kapitel 1, Listing und Prefix Notation.
07.11.96 Touretzky Kapitel 1.8-1.13
14.11.96 Touretzky Kapitel 2: Cons, List, Second, Length.
21.11.96
Schritte zum Programmieren
0 Definition der Aufgabe
1. Das Problem in einzelnen Schritte zerlegen
2. Die einzelnen Schritte in Code übersetzen
3. Die einzelnen Schritte hierarchisch strukturiert zusammensetzen.
Definition my-fourth
(defun my-fourth (ab)
(first (rest (rest (rest ab)))))
(setf x '(one two three four))
(my-fourth x)
Aufgabe:
2.8
2.9
Umgang mit Xemacs üben&
28.11 Cons, List
5.12. Cons Cell Notation bei Cons, List, Car Cdr,
Eval Notation. Step Funktion.
12.12. Eval Notation von Defun.
9.1. Lokale Variablendeklaration let*
lokale-globale Variablendeklaration setf
Conditional if
16.1. Wiederholung von if in verschiedenen Aufgabenstellungen.
23.1 Syntax von if, defun, setf, let*
30.1. Anwendung von if defun set und let* innerhalb konkreter Aufgaben.
6.2. And, Or, Cond mit Syntaktischen Beispielen.
13.2 Syntax von And, Or, Funktion von Step
17.4. Besprechung der Hausaufgabe.
25.4.Kompletter Overview ueber alle Funktionen
16.5. Neue Listenfunktionen nthcdr, nrth, reverse, cons, append, remove, member intersection, union, set-difference.
22.5.
C-x l
:stella
open /tmp/test.snd
"lade den algorithm mit C-c C-x"
mix test 0
(defun xxx () .....) -> type list
(algorithm test1 fm

                     (length 10 rhythm 1 dur .2 amplitude .5 frequency 440)

                     (vars (a (xxx '( 23 25 22 24)))

                     (setf frequency (pitch (nth count a)))
                    (incf rhythm .1))

(algorithm test1 fm

                      (length 10 rhythm 1 dur .2 amplitude .5 frequency 440)
                      (incf rhythm .1)
                      (setf frequency (item (items 220 440 880 1320))))
30.5 - count in Common Music, mod in Lisp,
         Benutzung von Lisp Funktionen in Common Music.
13.6. rekursive Funktionen innerhalb musikalischer Strukturen
20.6. Pattern permutation mit rekursiven Programmstrukturen
 

WS 1997/98
          3.12. Iterationsmechanismus loop, Problematisierung der rekursiver Programmierstrukturen
7.1. Assoc, Rassoc, Mapcar, Lambda
4.2. loop for i from 0 to element do ....
 
Aufgaben:
24.10.96 Login Acounts ausprobieren.
31.10.96 Kapitel 1 aus Touretzky lesen, Übung 1.3 in Lisp Syntax übersetzen.
07.11.96 Schreibe defun der Funktion Touretzky S. 22.
14.11.96 Schreibe defun mit der Funktion:
((1 2 3)(4 5 6)(7 8 9)) ermittle die Anzahl der Elemente in der 2. Liste.
21.11.96 Uebe Umgang mit xemacs. Schreibe Programm.
28.11 Touretzky 2.20 (schreibe die Symbolische Notation in Lisp Code um)
und 2.22
5.12 Schreibe Eval Notation der Funktionen Yun und Yo und steppe die Funktionen.
Lese Touretzky 3.2 und 3.4
12.12.96 Lese 3.8, 3.11 und 3.12 und folgende Summary, löse die Aufgaben 3.15, 3.16, 3.17
9.1.97 Aufgabe 4.1-4.4, 4.3 optional
16.1.97 Lese 4.1-4.3 und 5.1-5.6 und löse die Aufgaben 4.3. und 4.4.
23,1,97 Syntaxen auswendig lernen und die Funktion wissen.
30.1.97 Schreibe eine Funktion, die den kleineren von 2 Werten sucht, diesen quadriert und dann ausdruckt "Das Quadrat des kleineren Wertes ist: ..."
(test 3 5) -> (Das Quadrat des kleineren Wertes ist 9)
Schreibe eine weitere Funktion in dem mit 2 "if" Ausdruecken von 3 Werten der kleinste gesucht wird die dann halbiert werden. Man kann hierbei auch let* und setf benutzen.
(test 2 4 6) -> 1
Schreibe eine Funktion die als Input 2 Zahlen nimmt und den Abstand zwischen diesen 2 Zahlen ausdruckt.
(test 3 5) -> 2
6.2. Aufgabe 4.9, 4.10, 4.11, lerne die Syntax von Cond, And und Or.

13.2. Schreibe die Syntax aller bisher durchgenommenen Funktionen auf einen Zettel. Danach gebe Beispiele der Anwendung der Funktionen. (defun, if, cond, and, or, step, oddp, cons, numberp, zerop, symbolp, print, list, first, second, ... tenth,)

Das Ausgangsmaterial ist '(c4 h3 c4 g3 as3 c4 h3 c4 d4 g3): Welches ist der hoechste Ton, welches ist der tiefste Ton, sind Toene doppelt. Welche Intervalle gibt es, welche Intervalle sind absteigend ....

17.4 lese Kapitel 6.1-6.5

25.4. Alle bisher gelernten Funktionen muessen gelernt werden.

Bitte lese die Lisp Tutorials in:

file:/usr/local/lib/cm/doc/contrib/lispintro.html

file:/usr/local/lib/cm/doc/contrib/lispstyle.html

Suche Dir 3 Aufgabe aus Kapitel 6aus, in denen ein Programm erstellt werden soll und versuche die Aufgabe zu realisieren.

16.5. A) Lese Kapitel 6 bis zum Ende

B) Schreibe eine Reihenkonstruktion auf die auf die neuen Funktionen zur Veränderung der Reihe zugreift und eine musikalische Strategie zur Veränderung des Materials verfolgt.

C) Entwerfe den Programmcode für eine der Funktionen remove, member, intersetction, union, set-difference mithilfe von if, car cdr usw. Falls Bereiche dieser Aufgabe unklar sind, formuliere diese verbal.

22.5. Erzeuge mindestens 3 Soundfile mit Daten, die durch eine Funktion mithilfe von Listenoperationen modifiziert sind.

30.5. Schreibe 3 kurze musikalische Strukturen mit 4 Elementen und unterschiedlichen Listen Manipulationen.

6.6. Schreibe 3 algorithmen mit jeweil
1. einem sich erneuernten Funktionsaufruf
2. mit einem "count" walking durch eine Liste
3. mit rekursivem Aufruf einer Funktion

13.6. schreibe einen Algorithmus mit rekursivem Listenafruf
informiere Dich ueber Rekursionen.

20.6. modifiziere das im Unterricht entwickelte Beispiel auf eine Pattern permutation mit Reihenfolgenveraenderungen.
 

WS 1997/98
 
29.10 Entwickle eine compositorische Idee, die in dem Seminar realisiert werden soll.
3.12  bilde 3!!! Variationen zu dem Iterationsmechanismus
(defun funktion (start-frequenz intervall element-anzahl)
  (let* (a )
    (loop for counter from 0 to (- element-anzahl 1) do
              (setf a (cons (+ start-frequenz (* counter intervall)) a)))
  (print (reverse a))
  ))
 
7.1. Erfülle die Aufgabe 7.10 c und e.

14.1. Löse Aufgabe 7.10 f und g

4.2. Schreibe unter Benutzung der in der Aufgabe 7.10 entwickelten Programme ein Programmset, das eine Liste mit Notennamen und eine Liste mit Transpositionsfaktoren als Argumente nimmt und als Output Frequenzen oder Tonnummern mit Transpositionen ausgibt, wobei jeweils ein Element der Notenliste durch ein Element der Notenliste transponiert wird. Weiterhin soll das Programm als Input die Anzahl der zu erzeugenden Elemente annehmen.

(transpo (a c e g f) (2 4 3 5 6 7) 20)