Algorithmen und Programmieren 1 Funktionale Programmierung - Musterlösung zu Übung 3 -
|
|
- Daniela Böhmer
- vor 6 Jahren
- Abrufe
Transkript
1 Algorithmen und Programmieren 1 Funktionale Programmierung - Musterlösung zu Übung 3 - Dozent: Prof. Dr. G. Rote Tutoren: J. Fleischer, T. Haimberger, N. Lehmann, C. Pockrandt, A. Steen Ziele dieser Übung Mit Funktionen höherer Ordnung sicher in Haskell umgehen und die Idee der Gültigkeitsbereiche verstehen. In dieser Übung sollte man folgende Konzepte geübt und verstanden haben: Gültigkeitsbereiche (Scope) Listengeneratoren Typdenitionen (type) Funktionen höherer Ordnung iterate map (.) Aufgabe 13: Kleiner als der Durchschnitt Schreiben Sie eine Funktion, die berechnet, wie viele Zahlen in einer Liste von Integer-Werten kleiner als der Durchschnittswert sind. -- Berechnet, wie viele Zahlen in der Liste xs kleiner als der Durchschnittswert sind. lessthanavg :: [Integer] -> Int lessthanavg xs = length (filter (`ltavg` xs) xs) -- Prueft, ob eine Zahl x kleiner als der Durchschnittswert der Liste xs ist. ltavg :: Integer -> [Integer] -> Bool ltavg x xs = fromintegral (length xs) * x < sum xs 1
2 Aufgabe 12: Gültigkeitsbereiche Geben Sie für jeden eingeführten Namen den Gültigkeitsbereich an. Aufgabe 12a) x = 25:: Integer biggerthanavg3:: Integer->Integer->Integer->Integer biggerthanavg3 x y z = sum (map (\x -> if fromintegral x > avg3 x y z then 1 else 0) [x,y, z]) where avg3:: Integer->Integer->Integer->Double test1:: Integer avg3 a b c = fromintegral (a+b+c) / 3 test1 = biggerthanavg fläche:: Float -> Float fläche x = 2*x^2*pi --> private scope(biggerthanavg3) x ist global sichtbar. Allerdings NICHT in den Funktionen biggerthanavg3 und fläche. biggerthanavg3 ist global sichtbar, jeder kann biggerthanavg3 aufrufen. x im Ausdruck biggerthanavg3 x y z ist nicht im Ausdruck (\x -> if fromintegral x > avg3 x y z then 1 else 0), y und z hingegen schon. avg3 ist nur für biggerthanavg3 und alle Unterfunktionen von biggerthanavg3 sichtbar. test1 ist global sichtbar, jeder kann test1 aufrufen. fläche ist global sichtbar, jeder kann fläche aufrufen. Aufgabe 12b) f x y = let n = 3 in take n (g y) ++ take n (g x) where g x = take n xys where xys = [x] ++ yxs yxs = [y] ++ xys n = 10 --> private scope(f) --> private scope(g) --> private scope(g) --> private scope(f) f ist global sichtbar, jeder kann f aufrufen. n im Ausdruck n=3 ist durch die let <expr> in <expr> nur im Ausdruck take n (g y) ++ take n (g x) sichtbar g ist nur für f und alle Unterfunktionen von g sichtbar. xys ist nur für g und alle Unterfunktionen von g sichtbar. xys ist nur für g und alle Unterfunktionen von g sichtbar. n im Ausdruck n=10 ist nur für f und alle Unterfunktionen von f sichtbar, allerdings überschattet das n aus dem let <expr> in <epxr> dieses n. x im Ausdruck f x y wird durch das x im Ausdruck g x überschattet. Das y im Ausdruck f x y ist in ganz f sichtbar. 2
3 Aufgabe 14: Preisberechnung Listen der beiden folgenden Datentypen type Einkaufsliste = [(String, Float)] type Preisliste = [(String, Float)] geben an, was gekauft werden soll und wie viel (in einer passenden Einheit, z. B. kg), zum Beispiel [("Mehl",0.5), ("Butter",0.25)], und andererseits den Preis in Euro pro Einheit für jeden Artikel. Aufgabe 14a) Denieren Sie eine Funktion preis:: Preisliste -> Einkaufsliste -> (Float,[String]) zur Berechnung des Gesamtpreises aller Artikel einer Einkaufsliste. Die zweite Komponente des Ergebnisses soll die Liste der Artikelnamen enthalten, die in der Preisliste nicht gefunden wurden. type Einkaufsliste = [(String, Float)] type Preisliste = [(String, Float)] preis :: Preisliste -> Einkaufsliste -> (Float, [String]) preis preise einkauf = (gesamt, nicht_in_liste) where nicht_in_liste = [x x <- map fst einkauf, not $ elem x bekannte_preise] bekannte_preise = map fst preise gesamt = sum [p * p' (n, p) <- preise, (n', p') <- einkauf, n == n'] -- Testfunktion testeinkauf = preis [("Butter", 1.09),("Brot", 2.49),("Wurst", 0.99),("Käse", 1.99)] [("Brot", 2.49),("Butter", 1.09),("Malzbier", 1.0)] Aufgabe 14b) Erweitern Sie die Funktion so, dass der Preis für jeden gekauften Artikel der Einkaufsliste auf Cent gerundet wird. type Einkaufsliste = [(String, Float)] type Preisliste = [(String, Float)] fixedpreis :: Preisliste -> Einkaufsliste -> (Float, [String]) fixedpreis preise einkauf = (gesamt, nicht_in_liste) where nicht_in_liste = [x x <- map fst einkauf, not $ elem x bekannte_preise] bekannte_preise = map fst preise gesamt = sum [centfix (p * p') (n, p) <- preise, (n', p') <- einkauf, n == n'] centfix :: Float -> Float centfix x = fromintegral (round (x*100))/ Testfunktion testeinkauf = fixedpreis [("Butter", 1.09),("Brot", 2.49),("Wurst", 0.99),("Käse", 1.99)] [("Brot", 2.49),("Butter", 1.09),("Malzbier", 1.0)] 3
4 Aufgabe 15: Funktionsiteration Die folgende Funktion iter wendet eine Funktion f n-mal hintereinander auf ein Argument x an. Zum Beispiel liefert iter 3 f x das Ergebnis f(f(f(x))), das man in der Mathematik manchmal als f 3 (x) oder noch genauer f (3) (x) schreibt, damit man es nicht mit der Potenz (f(x)) 3 verwechselt. iter n f x n==0 = x n>0 = f (iter (n-1) f x) Aufgabe 15a) Welchen Typ hat iter? -- Theoretisch könnte der Typ von iter wie folgt aussehen: iter :: (Num t, Ord t) => t -> (a -> a) -> a -> a -- Da die Abbruchbedingung aber n == 0 ist (statt z.b. n < 0) -- sollte man Bruchzahlen ausschlieÿen. iter :: Integral t => t -> (a -> a) -> a -> a Aufgabe 15b) Geben Sie eine alternative Denition als Funktion iter n f ohne den Parameter x. -- Eine alternative Definition ohne den Parameter x. iter2 :: Int -> (a -> a) -> a -> a iter2 n f n == 0 = id -- Identität n > 0 = f.(iter (n-1) f) -- Komposition Aufgabe 15c) Lösen Sie Aufgabe 4b (Zinseszinsen) mit Hilfe der Funktion iter und der Lösung von Aufgabe 4a. (Achten Sie auf die Reihenfolge der Argumente.) -- Die gegebene Funktion zur Berechnung der Zinsen. zinsen :: Double -> Double -> Double zinsen kapital zinsfuss = kapital * zinsfuss * Diese Funktion berechnet den Zinseszins nach einer Zeitperiode. endwert :: Double -> Double -> Double endwert kapital zinsfuss = kapital + (zinsen kapital zinsfuss) -- Diese Funktion berechnet den Zinseszins nach zwei Zeitperioden. endwert2 :: Double -> Double -> Double endwert2 kapital zinsfuss = iter 2 (`endwert` zinsfuss) kapital -- Diese Funktion berechnet den Zinseszins nach k Zeitperioden. endwertn :: Double -> Double -> Int -> Double endwertn kapital zinsfuss k = iter k (`endwert` zinsfuss) kapital 4
5 Aufgabe 16: Iterierter Logarithmus Die Funktion logbase a x = log a x berechnet den Logarithmus von x zur Basis a; das ist die Zahl y, für die a y = x ist. Aufgabe 16a) Bestimmen Sie die kleinste Zahl x, für die logbase 2 x >= 5 ist. -- Findet die kleinste natuerliche Zahl, fuer die logbase b x >= y ist. -- Idee: logbase b x >= y gilt genau dann, wenn x >= b**y ist. minlog :: Double -> Double -> Int minlog b y = ceiling (b**y) -- Es folgt eine alternative Definitionen mit Listengeneratoren. -- Die Auswertung dauert wesentlich länger. minlog' :: Double -> Double -> Int minlog' b y = (truncate.head) kandidaten where kandidaten = [x x <- [1..], logbase b x >= y] Aufgabe 16b) Bestimmen Sie die kleinste Zahl x, für die iter 3 (logbase 2) x >= 2 ist. -- Findet die kleinste natuerliche Zahl, fuer die -- iter n (logbase b) x >= y ist. -- Idee: logbase b (logbase b (logbase b x)) >= y gilt genau dann, -- wenn x >= b**b**b**y ist. miniter :: Int -> Double -> Double -> Int miniter n b y = ceiling (iter n (b**) y) -- Es folgt eine alternative Definitionen mit Listengeneratoren. -- Die Auswertung dauert wesentlich länger. miniter' :: Int -> Double -> Double -> Int miniter' n b y = (truncate.head) kandidaten where kandidaten = [x x <- [1..], iter n (logbase b) x >= y] 5
6 Aufgabe 17: Potenzieren, Summe und Produkt Das Potenzieren mit einer natürlich Zahl als Exponent kann man als iteriertes Multiplizieren denieren: x n := x x x x mit n Faktoren: potenz x n = iter n (x*) 1 Aufgabe 17a) x xx Die Turmfunktion turm x k = x k := x ist eine geschachtelte Potenz, bei der in dem Turm auf der rechten Seite x insgesamt k-mal vorkommt. (Potenzieren ist rechtsassoziativ!) Denieren Sie diese Funktion unter Verwendung von potenz und iter. -- Berechnet die Potenz x^n. potenz :: Num a => a -> Integer -> a potenz x n = iter n (x*) 1 -- Die in der Aufgabenstellung beschriebene Turmfunktion. turm :: Integer -> Integer -> Integer turm x k = iter (k-1) (potenz x) x Aufgabe17b) Die Multiplikation kann als iterierte Addition aufgefasst werden. Schreiben Sie eine entsprechende Funktion mal a b, die analog zur Funktion potenz das Produkt als iterierte Summe deniert. -- Definiert das Produkt als iterierte Summe. mal :: Num a => Integer -> a -> a mal x y = iter x (y+) 0 Aufgabe 17c) Welche Funktion muss man iterieren, damit man die Summenfunktion plus a b = a + b erhält? Schreiben Sie eine entsprechende Funktionsdenition für plus. -- Um die Summenfunktion zu erhalten, muss man die Nachfolgerfunktion (+1) iterieren. plus :: Num a => Integer -> a -> a plus a b = iter a (+1) b 6
7 Aufgabe 18: Funktionsiteration Aufgabe 18a) Jemand hat die Funktion g = iter 23 deniert. Wie können Sie das Argument 23 aus der Funktion g herausnden? Schreiben Sie eine Funktion entdecke, die für alle n 0 die folgende Beziehung erfüllt: entdecke (iter n) == n, -- Die Beispielfunktion aus der Aufgabenstellung. g :: (a -> a) -> a -> a g = iter Es soll gelten: entdecke (iter n) == n. entdecke :: (Num a, Num b) => ((a -> a) -> b -> c) -> c entdecke f = f (1+) 0 Aufgabe 18b) Addition: Schreiben Sie eine Funktion sumiter mit der Eigenschaft sumiter (iter a) (iter b) == iter (a+b), für alle a, b 0. Verwenden Sie nicht einfach entdecke und +, sondern suchen Sie eine direktere Denition. -- Es soll gelten: sumiter (iter n) (iter m) == iter (n+m) sumiter :: (a -> b -> c) -> (a -> c -> d) -> a -> b -> d sumiter f g h = (g h).(f h) -- Alternativ: sumiter f g h x = g h (f h x) Aufgabe 18c) Multiplikation: Schreiben Sie eine analoge Funktion proditer für das Produkt von a und b. -- Es soll gelten: proditer (iter n) (iter m) == iter (n*m) -- Schrittweise Vereinfachung der Definition: ---> proditer f g h x = f (g h) x ---> proditer f g h = f (g h) ---> proditer f g h = (f.g) h ---> proditer f g = f.g proditer :: (b -> c) -> (a -> b) -> a -> c proditer = (.) 7
Funktionale Programmierung mit Haskell
Funktionale Programmierung mit Haskell Dr. Michael Savorić Hohenstaufen-Gymnasium (HSG) Kaiserslautern Version 20120622 Überblick Wichtige Eigenschaften Einführungsbeispiele Listenerzeugung und Beispiel
MehrFunktionale Programmierung ALP I. Funktionen höherer Ordnung. Teil 2 SS 2013. Prof. Dr. Margarita Esponda. Prof. Dr.
ALP I Funktionen höherer Ordnung Teil 2 SS 2013 Funktionen höherer Ordnung Nehmen wir an, wir möchten alle Zahlen innerhalb einer Liste miteinander addieren addall:: (Num a) => [a -> a addall [ = 0 addall
MehrGrundlagen der Programmierung 2 (1.C)
Grundlagen der Programmierung 2 (1.C) Prof. Dr. Manfred Schmidt-Schauÿ Künstliche Intelligenz und Softwaretechnologie 3. Mai 2006 Funktionen auf Listen: map map :: (a -> b) -> [a] -> [b] map f [] = []
MehrProgrammieren in Haskell
Programmieren in Haskell Syntax und Semantik von Haskell Programmieren in Haskell 1 Was wir heute (und nächstes mal) machen Datentypdefinitionen Wertdefinitionen, Variablenbindungen Musterbindungen Funktionsbindungen
MehrHaskell, Typen, und Typberechnung. Grundlagen der Programmierung 3 A. Einige andere Programmiersprachen. Typisierung in Haskell
Haskell, Typen, und Typberechnung Grundlagen der Programmierung 3 A Typen, Typberechnung und Typcheck Prof. Dr. Manfred Schmidt-Schauß Ziele: Haskells Typisierung Typisierungs-Regeln Typ-Berechnung Milners
MehrWas bisher geschah Funktionale Programmierung in Haskell: Algebraische Datentypen Pattern Matching Polymorphie Typklassen Rekursive Datentypen:
Was bisher geschah Funktionale Programmierung in Haskell: Algebraische Datentypen Pattern Matching Polymorphie Typklassen Rekursive Datentypen: Peano-Zahlen, Listen, Bäume Rekursive Funktionen strukturelle
MehrWas bisher geschah. deklarative Programmierung. funktionale Programmierung (Haskell):
Was bisher geschah deklarative Programmierung funktional: Programm: Menge von Termgleichungen, Term Auswertung: Pattern matsching, Termumformungen logisch: Programm: Menge von Regeln (Horn-Formeln), Formel
MehrGrundprinzipien der funktionalen Programmierung
Grundprinzipien der funktionalen Programmierung Funktionen haben keine Seiteneffekte Eine Funktion berechnet einen Ausgabewert der nur von den Eingabewerten abhängt: 12 inputs + output 46 34 2 Nicht nur
MehrTypdeklarationen. Es gibt in Haskell bereits primitive Typen:
Typdeklarationen Es gibt in bereits primitive Typen: Integer: ganze Zahlen, z.b. 1289736781236 Int: ganze Zahlen mit Computerarithmetik, z.b. 123 Double: Fließkommazahlen, z.b. 3.14159 String: Zeichenketten,
MehrWS 2011/2012. Georg Sauthoff 1. October 18, 2011
in in WS 2011/2012 Georg 1 AG Praktische Informatik October 18, 2011 1 gsauthof@techfak.uni-bielefeld.de Neue Übungsgruppen in neue Übungsgruppen neue Tutoren Sprechstunden in GZI-Arbeitsraum (V2-240)
MehrBeispiele: (Funktionen auf Listen) (3) Bemerkungen: Die Datenstrukturen der Paare (2) Die Datenstrukturen der Paare
Beispiele: (Funktionen auf Listen) (3) Bemerkungen: 5. Zusammenhängen der Elemente einer Liste von Listen: concat :: [[a]] -> [a] concat xl = if null xl then [] else append (head xl) ( concat (tail xl))
MehrProgrammieren in Haskell Einführung
Programmieren in Haskell Einführung Peter Steffen Universität Bielefeld Technische Fakultät 16.10.2009 1 Programmieren in Haskell Veranstalter Dr. Peter Steffen Raum: M3-124 Tel.: 0521/106-2906 Email:
MehrFunktionale Programmierung mit Haskell. Jan Hermanns
Funktionale Programmierung mit Haskell Jan Hermanns 1 Programmiersprachen imperativ deklarativ konventionell OO logisch funktional Fortran Smalltalk Prolog Lisp C Eiffel ML Pascal Java Haskell 2 von Neumann
MehrTutorium - Haskell in der Schule. Ralf Dorn - Dennis Buchmann - Felix Last - Carl Ambroselli
Tutorium - Haskell in der Schule Wer sind wir? Otto-Nagel-Gymnasium in Berlin-Biesdorf Hochbegabtenförderung und MacBook-Schule Leistungskurse seit 2005 Einführung Was ist funktionale Programmierung? Einführung
MehrTECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK
TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK WS 11/12 Einführung in die Informatik II Übungsblatt 2 Univ.-Prof. Dr. Andrey Rybalchenko, M.Sc. Ruslán Ledesma Garza 8.11.2011 Dieses Blatt behandelt
MehrFunktionale Programmierung
Funktionale Programmierung Jörg Kreiker Uni Kassel und SMA Solar Technology AG Wintersemester 2011/2012 2 Teil II Typen mit Werten und Ausdruck, sogar listenweise 3 Haskell Programme Programm Module ein
MehrWS 2011/2012. Georg Sauthoff 1. November 1, 2011
WS 2011/2012 Georg 1 AG Praktische Informatik November 1, 2011 1 gsauthof@techfak.uni-bielefeld.de Übungen Abgaben und Aufgabenblätter am Ende der Vorlesung Skript gibt es demnächst in den Übungen Der
MehrProgrammierung für Mathematik HS12 Übung 3
Programmierung für Mathematik HS12 Übung 3 14. Oktober 2012 1 Aufgabe: Code verstehen 1.1 Ziele Präzedenz verstehen. If else kennen lernen. 1.2 Aufgabenstellung 1.2.1 Präzedenz Lesen Sie folgende Codeaussschnitte.
MehrPotenzen - Wurzeln - Logarithmen
Potenzen - Wurzeln - Logarithmen Anna Geyer 4. Oktober 2006 1 Potenzrechnung Potenz Produkt mehrerer gleicher Faktoren 1.1 Definition (Potenz): (i) a n : a... a, n N, a R a... Basis n... Exponent od. Hochzahl
MehrGroßübung zu Einführung in die Programmierung
Großübung zu Einführung in die Programmierung Daniel Bimschas, M.Sc. Institut für Telematik, Universität zu Lübeck https://www.itm.uni-luebeck.de/people/bimschas Inhalt 1. Besprechung Übung 4 Iteration
MehrVBA-Programmierung: Zusammenfassung
VBA-Programmierung: Zusammenfassung Programmiersprachen (Definition, Einordnung VBA) Softwareentwicklung-Phasen: 1. Spezifikation 2. Entwurf 3. Implementierung Datentypen (einfach, zusammengesetzt) Programmablaufsteuerung
MehrALP I Einführung in Haskell
ALP I Einführung in Haskell WS 2012/2013 Was ist Haskell? Haskell ist eine rein Funktionale Programmiersprache mit einer nach Bedarf Auswertung-Strategie oder "Lazy Evaluation". Was bedeutet rein funktional?
MehrZahlen in Haskell Kapitel 3
Einführung in die Funktionale Programmiersprache Haskell Zahlen in Haskell Kapitel 3 FH Wedel IT-Seminar: WS 2003/04 Dozent: Prof. Dr. Schmidt Autor: Timo Wlecke (wi3309) Vortrag am: 04.11.2003 - Kapitel
MehrHaskell. A Wild Ride. Sven M. Hallberg. sm@khjk.org. 21C3 Berlin / Bildungswerk Hamburg 20.6.2007 p. 1/36
21C3 Berlin / Bildungswerk Hamburg 20.6.2007 p. 1/36 Haskell A Wild Ride Sven M. Hallberg sm@khjk.org 21C3 Berlin / Bildungswerk Hamburg 20.6.2007 p. 2/36 Überblick Vorsichtsmaßnahmen Einführung und Sprachgrundlagen
MehrEinfache Ausdrücke Datentypen Rekursive funktionale Sprache Franz Wotawa Institut für Softwaretechnologie wotawa@ist.tugraz.at
Inhalt SWP Funktionale Programme (2. Teil) Einfache Ausdrücke Datentypen Rekursive funktionale Sprache Franz Wotawa Institut für Softwaretechnologie wotawa@ist.tugraz.at Interpreter für funktionale Sprache
MehrALP I. Funktionale Programmierung
ALP I Funktionale Programmierung Sortieren und Suchen (Teil 1) WS 2012/2013 Suchen 8 False unsortiert 21 4 16 7 19 11 12 7 1 5 27 3 8 False sortiert 2 4 6 7 9 11 12 18 21 24 27 36 Suchen in unsortierten
MehrFunktionale Programmierung mit Haskell
Funktionale Programmierung mit Haskell Prof. Dr. Hans J. Schneider Lehrstuhl für Programmiersprachen und Programmiermethodik Friedrich-Alexander-Universität Erlangen-Nürnberg Sommersemester 2011 I. Die
Mehrzu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme
Bisher Datentypen: einfach Zahlen, Wahrheitswerte, Zeichenketten zusammengesetzt Arrays (Felder) zur Verwaltung mehrerer zusammengehörender Daten desselben Datentypes eindimensional, mehrdimensional, Array-Grenzen
Mehrzu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme
Bisher Datentypen: einfach Zahlen, Wahrheitswerte, Zeichenketten zusammengesetzt Arrays (Felder) zur Verwaltung mehrerer zusammengehörender Daten desselben Datentypes eindimensional, mehrdimensional, Array-Grenzen
MehrC.3 Funktionen und Prozeduren
C3 - Funktionen und Prozeduren Funktionsdeklarationen in Pascal auch in Pascal kann man selbstdefinierte Funktionen einführen: Funktionen und Prozeduren THEN sign:= 0 Funktion zur Bestimmung des Vorzeichens
MehrModul 122 VBA Scribt.docx
Modul 122 VBA-Scribt 1/5 1 Entwicklungsumgebung - ALT + F11 VBA-Entwicklungsumgebung öffnen 2 Prozeduren (Sub-Prozeduren) Eine Prozedur besteht aus folgenden Bestandteilen: [Private Public] Sub subname([byval
MehrFortgeschrittene OLAP Analysemodelle
Fortgeschrittene OLAP Analysemodelle Jens Kübler Imperfektion und erweiterte Konzepte im Data Warehousing 2 Grundlagen - Datenanalyse Systemmodell Datenmodell Eingaben System Schätzer Datentypen Datenoperationen
MehrProgrammiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny
Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny 7. Funktionen Einleitung Nach dem Prinzip Divide and Conquer bietet es sich an, größere Aufgaben in kleinere Teile zu unterteilen. Anweisungsblöcke,
MehrFunktionale Programmierung
Schleifen 1 Funktionale Programmierung Jörg Kreiker Uni Kassel und SMA Solar Technology AG Wintersemester 2011/2012 3 Teil I Jedem Anfang wohnt ein Zauber inne 4 Über mich Diplom in Informatik in Saarbrücken
MehrIntegrierte Office Anwendungen
Integrierte Office Anwendungen 4D View 4D View Formeln: Operatoren, Konstanten und Funktionen Stand 10.09.09 4D View wird in der TOPIX:8 Kosten- und Leistungsrechnung, im TOPIX:8 Analytik-Report sowie
MehrGrundlagen der Programmierung Prof. H. Mössenböck. 6. Methoden
Grundlagen der Programmierung Prof. H. Mössenböck 6. Methoden Parameterlose Methoden Beispiel: Ausgabe einer Überschrift class Sample { static void printheader() { // Methodenkopf Out.println("Artikelliste");
MehrGrundlagen der Informatik I (Studiengang Medieninformatik)
Grundlagen der Informatik I (Studiengang Medieninformatik) Thema: 3. Datentypen, Datenstrukturen und imperative Programme Prof. Dr. S. Kühn Fachbereich Informatik/Mathematik Email: skuehn@informatik.htw-dresden.de
MehrProgrammieren in Haskell
Programmieren in Haskell Felder (Arrays) Programmieren in Haskell 1 Was wir heute machen Motivationsbeispiel Die Typklasse Ix Felder in Haskell Funktionstabellierung Binäre Suche Pascalsches Dreieck Ein
MehrMathematik Vorkurs WS 15/16 FB III
M Mathematik Vorkurs WS 15/16 FB III Mathe Online Kurs Hier mit seinem Namen und seiner Normalen email Adresse registrieren Mathe Online Kurs Auf Nachfrage biete ich Termine an, an denen ich Probleme bzw.
MehrVerträge für die funktionale Programmierung Design und Implementierung
1 Verträge für die funktionale Programmierung Design und Implementierung RALF HINZE Institut für Informatik III, Universität Bonn Römerstraße 164, 53117 Bonn, Germany Email: ralf@informatik.uni-bonn.de
MehrDefinieren Sie eine Funktion circlearea zur Berechnung der Fläche eines Kreises mit gegebenen Radius (Float).
Haskell Funktionen Definieren Sie eine Funktion circlearea zur Berechnung der Fläche eines Kreises mit gegebenen Radius (Float). circlearea :: Float -> Float circlearea radius = 2 * pi * radius^2 Definieren
MehrFunktionen Häufig müssen bestimmte Operationen in einem Programm mehrmals ausgeführt werden. Schlechte Lösung: Gute Lösung:
Funktionen Häufig müssen bestimmte Operationen in einem Programm mehrmals ausgeführt werden. Schlechte Lösung: Der Sourcecode wird an den entsprechenden Stellen im Programm wiederholt Programm wird lang
MehrAlgorithmische Kernsprache. Zuweisung, einfache und bedingte Anweisung, Blöcke, Schleifen, return, debugging.
Algorithmische Kernsprache Zuweisung, einfache und bedingte Anweisung, Blöcke, Schleifen, return, debugging. Ausdrücke Anweisungen Ausdrücke bezeichnen einen Wert Kontext stellt Werte von Variablen Werte
MehrFunktionale Programmierung mit Haskell
Funktionale Programmierung mit Haskell Prof. Dr. Hans J. Schneider Lehrstuhl für Programmiersprachen und Programmiermethodik Friedrich-Alexander-Universität Erlangen-Nürnberg Sommersemester 2011 I. Die
MehrProgrammieren in C. Rekursive Funktionen. Prof. Dr. Nikolaus Wulff
Programmieren in C Rekursive Funktionen Prof. Dr. Nikolaus Wulff Rekursive Funktionen Jede C Funktion besitzt ihren eigenen lokalen Satz an Variablen. Dies bietet ganze neue Möglichkeiten Funktionen zu
MehrPraktikum am 16. April 2008 Variablen
Praktikum am 16. April 2008 Variablen Prof. Dr. Bernhard Humm Version: 1.0 Date: 10.4.2008 Hochschule Darmstadt Fachbereich Informatik Schöfferstr. 8b 64295 Darmstadt 1 Umgang mit Datentypen Experimentieren
Mehr1. Probeklausur zu Programmierung 1 (WS 07/08)
Fachschaft Informatikstudiengänge Fachrichtung 6.2 Informatik Das Team der Bremser 1. Probeklausur zu Programmierung 1 (WS 07/08) http://fsinfo.cs.uni-sb.de Name Matrikelnummer Bitte öffnen Sie das Klausurheft
Mehr9.2 Invertierbare Matrizen
34 9.2 Invertierbare Matrizen Die Division ist als Umkehroperation der Multiplikation definiert. Das heisst, für reelle Zahlen a 0 und b gilt b = a genau dann, wenn a b =. Übertragen wir dies von den reellen
MehrSWP Prüfungsvorbereitung
20. Juni 2011 1 Grammatiken 2 LL(1) 3 EXP 4 Datentypen 5 LP Grammatiken Angabe Erstellen Sie First- und Follow-Mengen aller Non-Terminale der folgenden Grammatik. S a S S B y B A C A A b b A x A ɛ C c
MehrProjekt Systementwicklung
Projekt Systementwicklung Effiziente Codierung: Laufzeitoptimierung Prof. Dr. Nikolaus Wulff Effiziente Codierung Der Wunsch effizienten Code zu schreiben entstammt mehreren Quellen: Zielplattformen mit
MehrProgrammieren in C. Operatoren, Variablen und deren Sichtbarkeit. Prof. Dr. Nikolaus Wulff
Programmieren in C Operatoren, Variablen und deren Sichtbarkeit Prof. Dr. Nikolaus Wulff Auswertung von Ausdrücken Was passiert wenn ein Ausdruck wie z. B. int y,x=2; y = ++x * x++; im Computer abgearbeitet
MehrSyntaktische Analyse (Parsen)
Syntaktische Analyse (Parsen) Gegeben: eine kontextfreie Grammatik G und ein String w. Fragen: Vorgehen: gehört w zu L(G)? Welche Bedeutung hat w? Konstruiere Herleitungsbaum zu w P raktische Informatik
MehrWS 2009/10. Diskrete Strukturen
WS 2009/10 Diskrete Strukturen Prof. Dr. J. Esparza Lehrstuhl für Grundlagen der Softwarezuverlässigkeit und theoretische Informatik Fakultät für Informatik Technische Universität München http://www7.in.tum.de/um/courses/ds/ws0910
MehrTag 7. Pattern Matching und eigene Datentypen
Tag 7 Pattern Matching und eigene Datentypen Heute werden wir eine Technik kennenlernen, die dafür sorgt, daß wir sehr viel übersichtlichere und kürzere Programme schreiben können. Als Überleitung auf
MehrFunktionale Programmierung. ALP I Lambda-Kalkül. Teil IVb WS 2012/2013. Prof. Dr. Margarita Esponda. Prof. Dr. Margarita Esponda
ALP I Lambda-Kalkül Teil IVb WS 2012/2013 λ-kalkül-parser Hilfsfunktionen: Die break-funktion ist eine Funktion höherer Ordnung, die eine Liste beim ersten Vorkommen einer Bedingung in zwei Listen spaltet.
MehrKontrollstrukturen und Funktionen in C
Kontrollstrukturen und Funktionen in C Lernziele: Vertiefen der Kenntnisse über Operatoren, Kontrollstrukturen und die Verwendung von Funktionen. Aufgabe 1: Quickies: Datentypen in C a) Was sind die elementaren
MehrÜbungen zur Vorlesung Funktionale Programmierung. Wintersemester 2012/2013 Übungsblatt 1
Übungsblatt 1 Installieren Sie die Haskell-Platform (http://www.haskell.org/platform/) auf ihrem Rechner. Stellen Sie zudem sicher, dass ghci zu ihrer Pfadvariablen hinzugefügt wird. Unter Windows nden
Mehr4.4 Taylorentwicklung
4.4. TAYLORENTWICKLUNG 83 4.4 Taylorentwicklung. Definitionen f sei eine reellwertige m + -mal stetig differenzierbare Funktion der n Variablen x bis x n auf einem Gebiet M R n. Die Verbindungsgerade der
MehrProgrammierung 1 - Repetitorium
WS 2002/2003 Programmierung 1 - Repetitorium Andreas Augustin und Marc Wagner Homepage: http://info1.marcwagner.info Donnerstag, den 10.04.03 Kapitel 7 Korrektheit 7.1 Abstrakte Prozeduren Abstrakte Prozedur
MehrTag 6. Module, benannte Funktionen und Rekursion
Tag 6 Module, benannte Funktionen und Rekursion Wir verlassen nun die abgeschlossene kleine Welt des interaktiven Interpreters und lernen, wie man richtige Haskell-Programme schreibt. Im Interpreter haben
MehrEinführung in die funktionale Programmierung
Einführung in die funktionale Programmierung Prof. Dr. Manfred Schmidt-Schauÿ Künstliche Intelligenz und Softwaretechnologie 20. November 2006 Monaden und I/O Monade ist ein Datentyp für (sequentielle)
MehrKurze Einführung in die Programmiersprache C++ und in Root
Kurze Einführung in die Programmiersprache C++ und in Root Statistik, Datenanalyse und Simulation; 31.10.2006 Inhalt 1 Einführung in die Programmiersprache C++ Allgemeines Variablen Funktionen 2 1 Einführung
MehrSurjektive, injektive und bijektive Funktionen.
Kapitel 1: Aussagen, Mengen, Funktionen Surjektive, injektive und bijektive Funktionen. Definition. Sei f : M N eine Funktion. Dann heißt f surjektiv, falls die Gleichung f(x) = y für jedes y N mindestens
Mehr5 25 Radizieren 25 5 und Logarithmieren log 25 2
.1 Übersicht Operationen Addition und Subtraktion 7 Operationen. Stufe Multiplikation 3 1 und Division 1: 3 Operationen 3. Stufe Potenzieren, Radizieren und Logarithmieren log. Reihenfolge der Operationen
MehrGrundlagen der Programmierung 2. Bäume
Grundlagen der Programmierung 2 Bäume Prof. Dr. Manfred Schmidt-Schauÿ Künstliche Intelligenz und Softwaretechnologie 24. Mai 2006 Graphen Graph: Menge von Knoten undzugehörige (gerichtete oder ungerichtete)
MehrFelder. November 5, 2014
Felder Universität Bielefeld AG Praktische Informatik November 5, 2014 Felder: Datenstrukturen mit konstantem Zugriff Felder nennt man auch, Vektoren, Matrizen,... Konstanter Zugriff heisst: Zugriff auf
MehrDeklarationen in C. Prof. Dr. Margarita Esponda
Deklarationen in C 1 Deklarationen Deklarationen spielen eine zentrale Rolle in der C-Programmiersprache. Deklarationen Variablen Funktionen Die Deklarationen von Variablen und Funktionen haben viele Gemeinsamkeiten.
MehrObjektorientierte Programmierung
Unterlagen zur Veranstaltung Einführung in die Objektorientierte Programmierung Mit Processing Alexis Engelke Sommer 2012 Alexis Engelke Inhalt Level 1: Geometrie Hintergrundfarben Punkte, Linien und deren
MehrGliederung. Tutorium zur Vorlesung. Gliederung. Gliederung. 1. Gliederung der Informatik. 1. Gliederung der Informatik. 1. Gliederung der Informatik
Informatik I WS 2012/13 Tutorium zur Vorlesung 1. Alexander Zietlow zietlow@informatik.uni-tuebingen.de Wilhelm-Schickard-Institut für Informatik Eberhard Karls Universität Tübingen 11.02.2013 1. 2. 1.
MehrFormale Methoden in der Informatik Wiederholung klassische Logik Konkrete Datentypen (algebraische Strukturen) Abstrakte Datentypen
Was bisher geschah Formale Methoden in der Informatik Wiederholung klassische Logik Konkrete Datentypen (algebraische Strukturen) Abstrakte Datentypen Syntax: Signatur Semantik: Axiome (FOL-Formeln, meist
MehrGenerische Record-Kombinatoren mit statischer Typprüfung
System Generische mit statischer Typprüfung Brandenburgische Technische Universität Cottbus Lehrstuhl Programmiersprachen und Compilerbau Lehrstuhlkolloquium am 13. Januar 2010 Überblick System System
MehrDie Programmiersprache C Eine Einführung
Die Programmiersprache C Eine Einführung Christian Gentsch Fakutltät IV Technische Universität Berlin Projektlabor 2. Mai 2014 Inhaltsverzeichnis 1 Einführung Entstehungsgeschichte Verwendung 2 Objektorientiert
MehrObjektorientiertes Programmieren für Ingenieure
Uwe Probst Objektorientiertes Programmieren für Ingenieure Anwendungen und Beispiele in C++ 18 2 Von C zu C++ 2.2.2 Referenzen und Funktionen Referenzen als Funktionsparameter Liefert eine Funktion einen
Mehr7. Textfelder zur Zahleneingabe
Einführung in die VBA-Programmierung von Excel, Teil 2 Th.Biedermann Hermannsburg 09/2003 S. 1 7. Textfelder zur Zahleneingabe Bereits im 1. Teil dieses Manuskripts wurde in Kap. 6.5.4 beschrieben, welche
MehrPraktikum Ingenieurinformatik. Termin 4. Funktionen, numerische Integration
Praktikum Ingenieurinformatik Termin 4 Funktionen, numerische Integration 1 Praktikum Ingenieurinformatik Termin 4 1. Funktionen. Numerische Integration, Trapezverfahren 1.1. Funktionen Eine Funktion ist
MehrJAVA - Methoden
Übungen Informatik I JAVA - http://www.fbi-lkt.fh-karlsruhe.de/lab/info01/tutorial Übungen Informatik 1 Folie 1 sind eine Zusammenfassung von Deklarationen und Anweisungen haben einen Namen und können
MehrModul Entscheidungsunterstützung in der Logistik. Einführung in die Programmierung mit C++ Übung 2
Fakultät Verkehrswissenschaften Friedrich List, Professur für Verkehrsbetriebslehre und Logistik Modul Entscheidungsunterstützung in der Logistik Einführung in die Programmierung mit C++ Übung 2 SS 2016
Mehr[10] Software Transactional Memory in Haskell, Tortenwurf und Aufgabenblatt 7
Haskell Live [10 Software Transactional Memory in Haskell, Tortenwurf und Aufgabenblatt 7 Bong Min Kim e0327177@student.tuwien.ac.at Christoph Spörk christoph.spoerk@inode.at Bernhard Urban lewurm@gmail.com
MehrEinfache Rechenstrukturen und Kontrollfluss II
Einfache Rechenstrukturen und Kontrollfluss II Martin Wirsing in Zusammenarbeit mit Moritz Hammer und Axel Rauschmayer http://www.pst.informatik.uni-muenchen.de/lehre/ss06/infoii/ SS 06 Ziele Lernen imperative
Mehr620.900 Propädeutikum zur Programmierung
620.900 Propädeutikum zur Programmierung Andreas Bollin Institute für Informatik Systeme Universität Klagenfurt Andreas.Bollin@uni-klu.ac.at Tel: 0463 / 2700-3516 Lösung der Aufgaben (1/2) Lösung Aufgabe
MehrMathematik für Informatiker II Übungsblatt 7
Mathematik für Informatiker II Übungsblatt 7 Vincent Blaskowitz Übungsblatt 7 vom 03.06.20 Aufgabe Aufgabenstellung Berechnen Sie die folgenden Logarithmen ohne Taschenrechner: i log 0,008 ii log 2 Lösung
MehrFunktionale Programmierung mit Haskell
Funktionale Programmierung mit Haskell Prof. Dr. Hans J. Schneider Lehrstuhl für Programmiersprachen und Programmiermethodik Friedrich-Alexander-Universität Erlangen-Nürnberg Sommersemester 2012 I. Die
MehrÜbungsblatt 2. Abgabe: Freitag, 7. November 2014, 18:00 Uhr
Informatik I: Einführung in die Programmierung Prof. Dr. Bernhard Nebel Dr. Christian Becker-Asano, Dr. Stefan Wölfl Wintersemester 2014/2015 Universität Freiburg Institut für Informatik Übungsblatt 2
MehrKontrollstrukturen, Pseudocode und Modulo-Rechnung
Kontrollstrukturen, Pseudocode und Modulo-Rechnung CoMa-Übung III TU Berlin 29.10.2012 CoMa-Übung III (TU Berlin) Kontrollstrukturen, Pseudocode und Modulo-Rechnung 29.10.2012 1 / 1 Themen der Übung 1
MehrProgrammieren in C/C++ und MATLAB
Programmieren in C/C++ und MATLAB Sven Willert Sabine Schmidt Christian-Albrechts-Universität zu Kiel CAU 4-1 Übung 1) Schreiben Sie ein Programm, das die Fläche unter einer Parabel, also das Integral
MehrVorkurs Mathematik 1
Vorkurs Mathematik 1 Einführung in die mathematische Notation Konstanten i komplexe Einheit i 2 + 1 = 0 e Eulersche Zahl Kreiszahl 2 Einführung in die mathematische Notation Bezeichner Primzahlen, Zähler
MehrFunktionale Programmierung. der direkte Weg vom Modell zum Programm
1 Funktionale Programmierung der direkte Weg vom Modell zum Programm Peter Padawitz, TU Dortmund 19. Juni 2010 2 Inhalt Modelle Bestandteile eines Modells Konstruktor- versus destruktorbasierte Modelle
MehrSE1 Freiwillige Zusatzaufgaben
SE1 Freiwillige Zusatzaufgaben Christian Rehn 5. Dezember 2010 Hinweise Zu diesen Aufgaben wird es keine Musterlösung und keine Korrektur geben. Ihr könnt mich aber jederzeit fragen. Ich hab die Aufgaben
MehrGrundlagen der Programmierung in C Funktionen
Der erste Mechanismus für Code-Reuse! Grundlagen der Programmierung in C Funktionen Wintersemester 2005/2006 G. Zachmann Clausthal University, Germany zach@in.tu-clausthal.de Ältester Mechanismus für Code-Reuse:
Mehr12. ArcView-Anwendertreffen 2010. Workshop Programmierung in ArcGIS. Daniel Fuchs. Wo kann eigene Programmierung in ArcGIS verwendet werden?
Wo kann eigene Programmierung in ArcGIS verwendet werden? 12. ArcView-Anwendertreffen 2010 Workshop Programmierung in ArcGIS Daniel Fuchs 1) Makros für die Automatisierung einzelner Arbeitsschritte im
MehrKapitel 5: Abstrakte Algorithmen und Sprachkonzepte. Elementare Schritte
Elementare Schritte Ein elementarer Berechnungsschritt eines Algorithmus ändert im Allgemeinen den Wert von Variablen Zuweisungsoperation von fundamentaler Bedeutung Zuweisungsoperator In Pascal := In
MehrÜbersicht. Schleifen. Schleifeninvarianten. Referenztypen, Wrapperklassen und API. 9. November 2009 CoMa I WS 08/09 1/15
Übersicht Schleifen Schleifeninvarianten Referenztypen, Wrapperklassen und API CoMa I WS 08/09 1/15 CoMa I Programmierziele Linux bedienen Code umschreiben strukturierte Datentypen Anweisungen und Kontrollstrukturen
Mehr19. Funktional-reaktive Programmierung
19. Funktional-reaktive Programmierung Graphische Figuren type Dimension = Int data Figure = Rect Dimension Dimension Triangle Dimension Angle Dimension Polygon [Point] Circle Dimension Translate Point
MehrTutorium für Fortgeschrittene
Tutorium für Fortgeschrittene Stroop Aufgabe: Die Farbe gesehener Wörter ist zu klassifizieren. Es gibt 4 Farben (rot, blau, gelb, grün) In Eprime: red, blue, yellow and green. Jeder Farbe ist einer Taste
MehrCorinne Schenka Vorkurs Mathematik WiSe 2012/13. Die kleineren Zahlbereiche sind jeweils Teilmengen von größeren Zahlbereichen:
2. Zahlbereiche Besonderheiten und Rechengesetze Die kleineren Zahlbereiche sind jeweils Teilmengen von größeren Zahlbereichen: 2.1. Die natürlichen Zahlen * + besitzt abzählbar unendlich viele Elemente
MehrProgrammierung in Python
Programmierung in Python imperativ, objekt-orientiert dynamische Typisierung rapid prototyping Script-Sprache Funktionales und rekursives Programmieren P raktische Informatik 1, W S 2004/05, F olien P
MehrRekursion. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung
Rekursion Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-12-13/infoeinf WS12/13 Aufgabe 1: Potenzfunktion Schreiben Sie eine Methode, die
MehrFunktionen höherer Ordnung
4 Funktionen höherer Ordnung In den vorangegangenen Kapiteln haben wir gesehen, dass in funktionalen Sprachen alle zusammengesetzte Werte Ausdrücke über Konstruktoren sind, die intern als Bäume bzw. als
MehrEinführung in die Informatik für Hörer aller Fakultäten II. Andreas Podelski Stephan Diehl Uwe Waldmann
Einführung in die Informatik für Hörer aller Fakultäten II Andreas Podelski Stephan Diehl Uwe Waldmann 1 Einführung in die Informatik für Hörer aller Fakultäten II Andreas Podelski Stephan Diehl Uwe Waldmann
MehrEinführung in die Java- Programmierung
Einführung in die Java- Programmierung Dr. Volker Riediger Tassilo Horn riediger horn@uni-koblenz.de WiSe 2012/13 1 Rückblick Datentypen (int, long, double, boolean, String) Variablen und Variablendeklarationen
Mehr