5. Aufgabenblatt vom Montag, den 19. November 2012 zur Vorlesung Informatik A (Frank Hoffmann) Einzelabgabe bis Freitag, den 30. November 2012 , 1200 1. Einfaches Haskell (4 Punkte) Versuchen Sie, kurze elegante Lösungen zu finden. (a) Schreiben Sie Funktionen maxFour :: Int -> Int -> Int -> Int -> Int die das Maximum der 4 Argumente zurückgibt, analog minFour für das Minimum. (b) Schreiben Sie eine Funktion between :: Int -> Int -> Int -> Bool die entscheidet, ob das dritte Argument zwischen den beiden ersten Argumenten liegt. (c) Schreiben Sie eine Funktion howManyEqual :: Int -> Int -> Int -> Int -> Int die die maximale Anzahl paarweiser gleicher Argumente zurückgibt. 2. Schnelles Potenzieren (2 Punkte) Schreiben Sie eine rekursive Funktion powerOfTwo :: Int -> Integer die rekrusiv die Potenz 2n ausrechnet. Aber statt immer wieder mit 2 zu multiplizieren möchte man quadrieren. Sie sollten nach n gerade/ungerade unterscheiden. 3. Binärsuche (4 Punkte) Schreiben Sie eine rekursive Funktion binSearch :: Int -> [Int] -> Bool die für einen ganzzahligen Anfragewert und eine Liste von ganzen Zahlen feststellt, ob der Wert in der Liste vorhanden ist. Sie können voraussetzen, dass die Liste sortiert ist. Dabei soll das Prinzip der Binärsuche (s. Übung 4) umgesetzt werden. Sie können aber nicht voraussetzen, dass die Länge der Liste eine Zweierpotenz ist. 4. Klammertest (4 Punkte) Schreiben Sie eine Funktion klammerTest :: String -> Bool, die testet, ob die in einem Eingabestring vorkommenden öffnenden und schließenden runden Klammern 0 (0 bzw. 0 )0 einen korrekten Klammerausdruck bilden. Korrekte Klammerausdrücke sind dadurch gekennzeichnet, dass in jedem Präfix (Anfangsstück) des Strings mindestens so viele öffnende wie schließende Klammern auftreten und insgesamt es gleich viele öffnende und schließende Klammern gibt. Definieren Sie ggf. geeignete Hilfsfunktionen. Hinweis: Achten Sie bei Programmieraufgaben immer auf eine ausreichende und klare Kommentierung, sonst Punktabzug! Bei diesem Zettel gilt Einzelabgabe! Schicken Sie per email das lauffähige Haskell-Skript mit Bezeichner NameUeb5.hs an Ihren Tutor, geben Sie es außerdem in Papierform ab.