| Volker Stolz | Disclaimer | Last modified: 2005-04-05 06:07 UTC |
|
MOVES: Software Modeling and Verification (Informatik 2) |
|||||
| Computer Science / RWTH / I2 / Teaching / Praktikum / SWP | ||||||
|
|
SoftwarepraktikumFunktionales Programmieren in Haskell
Der Lehrstuhl für Informatik II bietet regelmäßig im Sommersemester ein Softwarepraktikum in funktionaler Programmierung in der Sprache Haskell an. Was ist Haskell?Haskell ist eine moderne funktionale Programmiersprache. Gegenüber älteren funktionalen Programmiersprachen wie Lisp zeichnet sich Haskell insbesondere durch eine lesbarere und komfortablere Syntax, ein sehr ausdrucksstarkes Typsystem (mit objekt-orientierten Konstrukten) und vollständige Seiteneffektfreiheit (referenzielle Transparenz) aus. Für einen Eindruck hier einige kurze Beispiele:
factorial n = product [1..n]
ggt x y
| x == 0 = y
| y == 0 = x
| x >= y = ggt (x `mod` y) y
| otherwise = ggt x (y `mod` x)
-- Man beachte den Typ von Quicksort:
-- Sortiert werden können alle Listen
-- auf deren Elementen eine Ordnung definiert ist
quicksort :: Ord a => [a] -> [a]
quicksort [] = []
quicksort (x:xs) = quicksort [y | y <- xs, y < x]
++ [x]
++ quicksort [y | y <- xs, y >= x]
-- Datentyp Binärbaum mit Suchfunktion
data Tree a
= EmptyTree | Node (Tree a) a (Tree a)
elementOfTree :: Eq a => a -> Tree a -> Bool
elementOfTree element EmptyTree = False
elementOfTree element (Node left entry right)
= (element == entry)
|| elementOfTree element left
|| elementOfTree element right
-- Ein/Ausgabe:
main :: IO ()
main = do
putStr "Text eingeben: "
text <- getLine
putStr "Text in Grossbuchstaben: "
putStr (map toUpper text)
Wir werden mit dem Haskell-Interpreter Hugs arbeiten, der auch für den eigenen PC frei verfügbar ist. PraktikumsaufgabeIm Praktikum wird eine Laufzeitumgebung für die einfache imperative Programmiersprache PSA programmiert:
Es werden einfache Methoden des Compilerbaus eingesetzt. Hierfür sind keine Vorkenntnisse erforderlich. Beispiel für PSA+ (mit Ein-/Ausgabe)
Ablauf des PraktikumsDa das Praktikum keine Kenntnisse in Haskell voraussetzt, beginnt es mit einem einwöchigen Kurs, der in der Woche vor Vorlesungsbeginn von Dienstag bis Freitag jeweils von 9:30 Uhr bis 16:30 Uhr stattfindet. Nach jeder Unterrichtsstunde wird das Gelernte am Rechner praktisch geübt. Bitte beachten Sie unsere Webseiten für kurzfristige Raumänderungen! Während des Semesters erstellen jeweils zwei Teilnehmer zusammen das oben genannte PSA-Laufzeitsystem. Dieses besteht aus 7 Teilen, die jeweils bis zu einem festen Termin abgeschlossen werden müssen. Die Arbeit erfolgt auf Workstations unter Unix. Grundkenntnisse im Arbeiten mit einer Unix-Workstation werden vorausgesetzt. Im Blauen Raum des CIP-Pools erfolgt zu festen Zeiten sowohl Beratung als auch Testatabnahme. Vorkenntnisse in Haskell oder Compilerbau werden nicht benötigt. Weitere InformationenIch beantworte gerne weitere Fragen zum Praktikum persönlich oder per E-Mail. |