--------------------------------------------------------------------------- -- Übungen zur Vorlesung "Praktische Informatik 1", WS 98/99 -- Übungsblatt 5, 24.11.98 -- -- Name: -- Tutoriumsgruppe: --------------------------------------------------------------------------- --------------------------------------------------------------------------- -- Vertreterstammdaten --------------------------------------------------------------------------- type PersNr = Int type Name = String type Ort = String type Provision = Int type Konto = Int type Vertreter = (PersNr, Name, Ort, Provision, Konto) type VertrListe = [Vertreter] maier :: Vertreter maier = (8413, "Maier", "Ulm", 7, 72515) mueller :: Vertreter mueller = (5016, "Mueller", "Stuttgart", 5, 20000) schulze :: Vertreter schulze = (1215, "Schulze", "Ulm", 6, 5050) vertrdaten :: VertrListe vertrdaten = [maier, mueller, schulze] --------------------------------------------------------------------------- -- Artikelstammdaten --------------------------------------------------------------------------- type ArtNr = Int type Bezeichnung = String type Preis = Int type Artikel = (ArtNr, Bezeichnung, Preis) type ArtListe = [Artikel] hemd1 :: Artikel hemd1 = (11, "Hemd", 3980) hemd2 :: Artikel hemd2 = (12, "Hemd", 8900) mantel :: Artikel mantel = (21, "Mantel", 36000) hose :: Artikel hose = (31, "Hose", 11050) artdaten :: ArtListe artdaten = [hemd1, hemd2, mantel, hose] --------------------------------------------------------------------------- -- Umsatzdaten --------------------------------------------------------------------------- type Tag = Int type Stueckzahl = Int type Umsatz = (PersNr, ArtNr, Stueckzahl, Tag) type UmsatzListe = [Umsatz] u01 :: Umsatz u01 = (8413, 12, 40, 24) u02 :: Umsatz u02 = (5016, 21, 10, 24) u03 :: Umsatz u03 = (8413, 11, 70, 24) u04 :: Umsatz u04 = (1215, 11, 20, 25) u05 :: Umsatz u05 = (5016, 21, 35, 25) u06 :: Umsatz u06 = (8413, 31, 35, 24) u07 :: Umsatz u07 = (1215, 31, 5, 24) u08 :: Umsatz u08 = (1215, 12, 10, 24) u09 :: Umsatz u09 = (8413, 11, 20, 25) umsatzdaten :: UmsatzListe umsatzdaten = [u01, u02, u03, u04, u05, u06, u07, u08, u09] --------------------------------------------------------------------------- -- Aufgabe 1 --------------------------------------------------------------------------- ------------------ -- Teilaufgabe a) ------------------ -- Projektionsfunktionen für Vertreterdaten persnr :: Vertreter -> PersNr name :: Vertreter -> Name ort :: Vertreter -> Ort prov :: Vertreter -> Provision konto :: Vertreter -> Konto -- Projektionsfunktionen für Artikeldaten artnr :: Artikel -> ArtNr bez :: Artikel -> Bezeichnung preis :: Artikel -> Preis -- Projektionsfunktionen für Umsatzdaten um_persnr :: Umsatz -> PersNr um_artnr :: Umsatz -> ArtNr stueck :: Umsatz -> Stueckzahl tag :: Umsatz -> Tag ------------------ -- Teilaufgabe b) ------------------ namen :: VertrListe -> [Name] preise :: ArtListe -> [Preis] ------------------ -- Teilaufgabe c) ------------------ project :: (a -> b) -> [a] -> [b] namen' :: VertrListe -> [Name] preise' :: ArtListe -> [Preis] --------------------------------------------------------------------------- -- Aufgabe 2 --------------------------------------------------------------------------- ------------------ -- Teilaufgabe a) ------------------ aendere_prov :: Int -> Vertreter -> Vertreter aendere_kto_stand :: Int -> Vertreter -> Vertreter ------------------ -- Teilaufgabe b) ------------------ provisions_erhoehung :: Int -> VertrListe -> VertrListe ------------------ -- Teilaufgabe c) ------------------ verschmelzen :: (a -> b -> c) -> [a] -> [b] -> [c] konto_gutschrift :: [Int] -> VertrListe -> VertrListe --------------------------------------------------------------------------- -- Aufgabe 3 --------------------------------------------------------------------------- ------------------ -- Teilaufgabe a) ------------------ -- Vergleichsfunktionen für Vertreterdaten ist_persnr :: PersNr -> Vertreter -> Bool ist_name :: Name -> Vertreter -> Bool ist_ort :: Ort -> Vertreter -> Bool ist_prov :: Provision -> Vertreter -> Bool ist_konto :: Konto -> Vertreter -> Bool -- Vergleichsfunktionen für Artikeldaten ist_artnr :: ArtNr -> Artikel -> Bool ist_bez :: Bezeichnung -> Artikel -> Bool ist_preis :: Preis -> Artikel -> Bool -- Vergleichsfunktionen für Umsatzdaten ist_um_persnr :: PersNr -> Umsatz -> Bool ist_um_artnr :: ArtNr -> Umsatz -> Bool ist_stueck :: Stueckzahl -> Umsatz -> Bool ist_tag :: Tag -> Umsatz -> Bool ------------------ -- Teilaufgabe b) ------------------ select :: (a -> Bool) -> [a] -> [a] ------------------ -- Teilaufgabe c) ------------------ -- Welche Vertreter kommen aus Ulm? -- ulm = ... Ihre Lösung ... -- Welche Artikelbezeichnung hat der Artikel mit der Nummer 12? -- art12 = ... Ihre Lösung ... --------------------------------------------------------------------------- -- Aufgabe 4 --------------------------------------------------------------------------- ------------------ -- Teilaufgabe a) ------------------ oder :: (a -> Bool) -> (a -> Bool) -> a -> Bool und :: (a -> Bool) -> (a -> Bool) -> a -> Bool ------------------ -- Teilaufgabe b) ------------------ -- Welche Umsätze hat der Vertreter mit der Nummer 1215 am 25. getätigt? -- um1215_25 = <... Ihre Lösung ...> -- Alle Umsätze für Artikel mit Nummer 11 oder 31 am 24. -- um_11_31_24 = <... Ihre Lösung ...> --------------------------------------------------------------------------- ---------------------------------------------------------------------------