Funktionale Programmierung am Beispiel Haskell
|
|
- Nadine Böhme
- vor 8 Jahren
- Abrufe
Transkript
1 Funktionale Programmierung am Beispiel Haskell Heiko Waldschmidt Matrikel Nr Baunatal, den
2 Inhaltsverzeichnis 1. Einleitung 3 2. Die Geschichte der funktionalen Programmierung Das Lambda-Kalkül 4 3. Prototypen Experiment 5 4. Syntaktische Möglichkeiten von Haskell Typisierung Syntaktische Besonderheiten Lazy evaluation Modularisierung Seiteneffekte Pattern Matching und Case As-Pattern Wild Cards With-Pattern / guards Case Let Expressions Where clauses IO Typ classes Typklassen Weitere Möglichkeiten von Haskell Interpreter und Compiler Fazit Literaturverzeichnis 19 Seite 2
3 1. Einleitung Dieser Vortrag ist im Rahmen des Seminars Programmiersprachen bei Frau Prof. Leopold entstanden. Er soll Aufzeigen wo die Vorteile (und Nachteile) von funktionaler Programmierung und speziell von Haskell liegen und bei welchen Problemen diese Sprache bzw. funktionale Programmierung bevorzugt eingesetzt werden sollte. Um dies zu zeigen beginne ich zunächst mit der geschichtlichen Entwicklung von funktionaler Programmierung bis zur Entwicklung von Haskell 98. Als zweites versuche ich ein (meiner Meinung nach beeindruckendes) Beispiel vorzustellen an dem man erkennen kann, das funktionale Programmierung zu verwenden deutliche Vorteile haben kann. Anschließend versuche ich einige Möglichkeiten und Vorteile dieser Sprache aufzuzeigen und diese am Schluss noch einmal kurz aufzugreifen. 2. Die Geschichte der funktionalen Programmierung Die funktionale Programmierung entstand als noch kaum jemand an die heutige Art der Programmierung (mittels Höherer Programmiersprachen) dachte. Ihr Ursprung liegt in der Mathematik. Church entwickelte 1932 das Lambda-Kalkül, dessen Nutzen in der Programmierung 1936 von Kleene und Rosser bewiesen wurde d.h. das nachgewiesen wurde das man das Lambda-Kalkül zur Umsetzung von Funktionen in der Informatik nutzen kann bewies Turing, das das Lambda-Kalkül turing-äquivalent ist. Heutige rein funktional geschriebene Programme können in Lambda-Kalküle umgewandelt werden wurde LISP als erste funktionale Sprache von McCarthy entwickelt. Ein großer Vorteil von LISP liegt in seiner Erweiterbarkeit und somit wurden einige erweiterte Sprachen entwickelt (z.b. Common LISP and Scheme). Ende der 70er entwickelte Backus FP. Er hatte die Idee von Funktionen höherer Ordnung und setzte diese in FP um. Gleichzeitig entwickelte man in Edinburgh an der Universität ML. Man suchte nach einer Sprache, mit der man Theoreme beweisen konnte. Auch aus ML entstanden einige Dialekte (z.b. SML, CAML). Seite 3
4 Eine weitere Sprache auf dem Weg bis zur Entwicklung von Haskell ist Miranda. Miranda wurde entwickelt. In Miranda wurde zum ersten Mal lazy evaluation benutzt. Die Entwickler von Miranda wurden gefragt ob man es als Basis zur Entwicklung von Haskell nutzen dürfte, doch sie lehnten ab. Die heute in der Industrie meist genutzte funktionale Sprache ist Erlang, das ende der 80er von Ericsson für Anwendungen in der Telekommunikation entwickelt wurde. Mit Erlang ist parallele funktionale Programmierung möglich. Haskell entstand 1990 (Version 1.0). In Haskell wurden die Ideen der älteren funktionalen Programmiersprachen vereinigt (Funktionen höherer Ordnung, type inference, und lazy Semantik. Eine Neuheit von Haskell sind Typklassen mit denen man Methoden auf ähnlich Art und Weise wie in der Objekt orientierten Programmierung Überladen kann.) Bis 1997 entstanden vier weitere Versionen (bis 1.4). Auf dem Haskell Workshop 1997 in Amsterdam wurde beschlossen, dass eine stabile einheitliche Variante nötig sei. Hierdurch entstand Haskell 98. [Hask] 2.1 Das Lambda-Kalkül Das Lambda-Kalkül ist eine mathematische Schreibweise für Funktionen. Dazu ein Beispiel: mittelwert == λ a, b. ((a+b)/2) -- nun das Beispiel in Haskell: mittelwert (a,b) == ((a+b)/2) Der Vorteil des Lambda-Kalküls liegt darin, dass Programme die im Lambda Kalkül geschrieben sind bezüglich Korrektheit bewiesen werden können. Alle Programme die rein funktional geschrieben wurden können in Lambda-Kalküle umgewandelt werden. Somit kann man die Korrektheit dieser Programme - und damit auch aller Programme die in Haskell 98 geschrieben wurden - beweisen. Hierzu gibt es auch Seite 4
5 eine Berechnungsvorschrift (evtl. ist es sogar ein Algorithmus). Für weitere informationen siehe [Pepp]. 3. Prototypen Experiment 1989 wurde von der ARPA (Advanced Research Project Agency) und dem Office of Naval Research (ONR) ein Projekt ins leben gerufen, bei dem es darum ging Sprachen und Tools zur Verbesserung der Erstellung von Prototypen zu entwickeln würde im Zuge diese ProtoTyp Programmes ein Versuch durchgeführt. Es ging darum einen Prototyp in mehrere Programmiersprachen zum selben Problem zu schreiben. Programmanforderungen: Ein Geo-Server bekommt als Eingabe Informationen über Standorte von Schiffen, Flugzeugen etc. und anderen Sicherheitsrelevanten Objekten. Als Ausgabe soll er die Beziehungen zwischen diesen Objekten liefern. Freundliche Schiffe, Kriegsschiffe, Flugzeuge sollen durch Dreiecke dargestellt werden. Hinzu kommen Zonen, die dargestellt werden sollten z.b. Waffenreichweite, Flugzonen, Regionen von befreundeten Schiffen,die beschützt werden müssen. (Die Beschreibung war noch deutlich detaillierter, doch würde hier den Rahmen sprengen.) Die Beurteilung der fertigen Prototypen übernahm ein Komitee der Navy. Die Ergebnisse: Language Lines of Code Lines of Documentation Development time (hours) (1) Haskell (2) Ada (3) Ada9X (4) C (5) Awk\Nawk (6) Rapide (7) Griffin (8) Proteus (9) Relational Lisp ((10) Haskell) Seite 5
6 (1) wurde von Mark P. Jones geschrieben einem der Autoren von [EiSPP]. Die Auswertung der Programm und der oben aufgeführten Tabelle ergab, dass das Programm in Haskell wesentlich kürzer war als die meisten anderen. (Ich bin mir nicht sicher wessen Meinung dies ist. Es handelt sich entweder um die des Navy Komitees oder die der Autoren von [EiSPP].) Es hatte auch eine im Vergleich sehr kurze Entwicklungszeit und war trotz allem eines der am besten kommentierten Programme. Der Code wurde als sehr gut lesbar bzw. sehr einfach zu verstehen beurteilt. Hierdurch zeigt sich das Haskell sich besonders gut für Prototypenentwicklung eignet. Für weitere Informationen siehe [EiSPP] 4. Syntaktische Möglichkeiten von Haskell 4.1 Typisierung Haskell ist stark typisiert. Die Typisierung kann allerdings implizit durch Haskell erfolgen, d.h. es ist keine explizite Typangabe notwendig. Dies wird im englischen als type inference bezeichnet. Handelt es sich bei dem letzten Schritt vor der Übergabe der Rüchgabeparameter z.b. um eine Division von zwei Integer, do setzt Haskell den Typ des Rückgabeparameters auf Integer und verfolgt die Auswirkungen dieser Typfestlegung über das ganze Programm um evtl. weitere Typen\Parameter festlegen zu können. Diese Typisierung hat den Vorteil, dass schon zu compile-zeit Fehler entdeckt werden können. [agith] Seite 6
7 4.2 Syntaktische Besonderheiten In Haskell gibt es ein paar Besonderheiten. Um Fehler zu vermeiden, wurde auf die Semikolons am Ende der Zeilen verzichtet, da diese in anderen Programmiersprachen von den Programmierern häufig vergessen werden. Ungewöhnlich in Haskell ist, dass die Einrückung der Zeilen vom Compiler mit ausgewertet wird. Rückt man die Zeilen falsch ein kann dies zu falscher Semantik führen. Darauf muss man speziell bei if Verschachtelungen achten. Weitere Informationen findet man in meinen Quellen. [PePP] 4.3 Lazy evaluation Lazy evaluation (Bedarfauswertung) bedeutet, dass Ausdrücke immer erst dann ausgewertet werden, wenn sie benötigt werden und dass eine Auswertung immer nur einmal vorgenommen wird. Beispiel.: f(g(x)) dabei sei f eine Funktion, die auf einer Liste arbeitet. Diese Liste wird ihr von der Funktion g übergeben und zwar ein Element nach dem anderen. Die Funktion g erzeugt (rekursiv) eine unendlich lange Liste. Würde es sich hierbei nicht um lazy evaluation handeln, würde das bedeuten, dass die Funktion g unendlich lange läuft und wir hätten wahrscheinlich ein schlechtes Programm geschrieben. Durch lazy evaluation geschieht nun aber folgendes: Die äußere Funktion f wird zuerst gestartet (wie auch ohne lazy evaluation) und fordert einen Wert / ein Listenelement von der Funktion g an. Anschließend wird dieser Wert der Funktion f bearbeitet und dann fordert sie wieder einen Wert an. Hier entsteht nun der Unterschied, erst jetzt erzeugt die Funktion g ein weiteres Listenelement. Wenn die Funktion f sich beendet, dann wird auch die Funktion g beendet. Dieses Seite 7
8 Programm läuft also nur endlos, wenn f auch eine Endlosschleife erzeugt und von keiner höher geordneten Funktion beendet wird. Lazy evaluation kann also genutzt werden, damit man sich in niedrig geordneten Funktionen keine Gedanken darüber machen braucht wie lange eine zu erzeugende Liste sein muss, da die höher geordnete Funktion sich darum kümmern kann. Hierdurch kann man die Funktion auch für mehrere höher geordnete Funktionen nutzen, die eine unterschiedliche Anzahl an Werten benötigen. Durch lazy evaluation kann man also unendliche Listen erzeugen. Man hat hierdurch eine gute Möglichkeit sehr einfach unendliche Datenstrukturen zu erzeugen (dies geht aber auch noch anders). Ein Nachteil besteht allerdings auch wieder darin, dass sich höher geordnete Funktionen um das Enden der Funktion kümmern müssen, wenn das Programm nicht endlos laufen soll. Dies kann zu Fehlern führen, wenn der Programmiere vergisst sich darum zu kümmern. Eine Möglichkeit dies zu verhindern besteht in entsprechender Modularisierung (siehe Modularisierung), durch welche man nur bestimmten Funktionen erlaubt auf eine bestimmte endlos laufende Funktion zurückzugreifen. Dass eine Auswertung nur einmal in einem Programm durchgeführt wird, bedeutet dass z.b. 3+4 nur einmal berechnet wird, selbst wenn diese Rechnung an den unterschiedlichsten Stellen im Programm geschieht. Hierdurch kann Rechenleistung gespart werden, allerdings erhöht die natürlich auch den Speicherverbrauch, da alle Auswertungen zunächst im Speicher verbleiben. Die führt dazu dass man garbage collection benötigt. [agith] [PePP] Seite 8
9 4.4 Modularisierung Hier zunächst ein Beispiel an dem ich die Modularisierung erklären will: module A where import B funktiona = (...) ( ) module B where import C funktionb = (...) ( ) module C where funktionc = (...) funktionc2 = (...) ( ) In Haskell wird hier folgendes passieren: Modul B importiert die Funktionen aus Modul C und Modul A importiert die Funktionen aus Modul B; Modul A importiert allerdings nicht die Funktionen aus C, da Module in Haskell die Funktionen die sie importieren nicht wieder automatisch exportieren. Um in Modul A die Funktionen aus C zu importieren, müsste man entweder import C hinzufügen oder Modul B folgendermaßen abändern: module B (funktionb, module C) where (...) oder Seite 9
10 module B (funktionb, funktionc, ) where ( ) je nachdem ob man alle Funktionen oder nur bestimmte Funktionen exportieren will. Hierbei handelt es sich um einen gezielten Export. In Haskell gibt es nicht nur gezielten Export sondern auch gezielten Import. z.b.: module B where import C (funktionc) Hier wird aus Modul C nur noch die funktionc importiert. Alternativ kann man auch eine Negativliste angeben, also alle Funktionen die nicht importiert werden sollen. module B where import C hiding (funktionc2) Zusätzlich sind noch Umbenennungen der zu importierenden Funktionen möglich: module B where import C (funktionc) renaming (funktionc to helloworld) Um kurz auf das Problem der Endlosrekursionen aus dem Kapitel lazy evaluation zurückzukommen: Man kann die Modularisierung dazu nutzen, die lazy functions vom Export auszuschließen, so dass sie niemand benutzt, der evtl. dann nicht weiß was er da tut. Haskell erlaubt es also gezielt zu importieren und zu exportieren. Man kann deutlich genauere Einschränkungen treffen als z.b. in Java. [agith] Seite 10
11 4.5 Seiteneffekte In rein funktionaler Programmierung sind keine Seiteneffekte erlaubt, da funktionale Programmierer davon überzeugt sind das durch Seiteneffekte viele Fehler entstehen. Eine Funktion soll immer nur genau eine Sache tun: ein gewünschtes Ergebnis zurückliefern und dabei keine anderen Dinge tun wie z.b. Variablen Hochzuzählen. Ein Extrembeispiel ist folgendes: a[i++] = b[i++] + c[i++]; Einem Programmierer ist meist nicht klar was hier passiert. Dies hängt häufig vom verwendeten Compiler ab. Damit so etwas erst gar nicht passieren kann sind Seiteneffekte in Haskell nicht erlaubt. Dies wird hauptsächlich dadurch verhindert, dass es in rein funktionaler Programmierung keine Variablen gibt. Man kann nur Konstanten deklarieren die dann zur Substitution genutzt werden können (siehe Let und where clauses). Was auch noch notwendig und möglich ist sind Parameter, an denen für gewöhnlich aber nicht mehr manipuliert wird (hier entstehen also keine Seiteneffekte). Es kann sich bei den Parametern auch um Tupel handeln (siehe Quellen aus dem Literaturverzeichnis). [Zuen] [FPML] 4.6 Pattern Matching und Case Haskell bietet viele Möglichkeiten des Pattern Matching die ich hier an Beispielen erklären will. In Haskell gibt es außerdem ein Case, wofür ich auch ein kurzes Beispiel aufführe. Seite 11
12 4.6.1 As-Pattern Die Funktion: f (x:xs) = x:x:xs verdoppelt das erste Element einer Liste, dies kann in Haskell auch auch mit einem as-pattern geschrieben werden. Das entsprechende as-pattern zu obigem Beispiel sieht folgendermaßen aus: f s@ (x:xs) = x:s [agith] Wild Cards: Funtionen, die head bzw. tail zurückgeben: head (x:_) tail (_:xs) = x = xs Der _ ist hier eine wild card. Da in der funktion head, tail nicht mehr weiter gebraucht wird, benutzt man hier die wild card. [agith] With-Pattern / guards sign x x > 0 = 1 x == 0 = 0 x < 0 = -1 Seite 12
13 Diese pattern werden guards genannt und mit dem dargestellt. Ein guard ist immer ein boolscher Ausdruck, ist er wahr, so wird die Funktion zu dem bewachten Ausdruck hin ausgewertet. Die guards werden von oben nach unten überprüft. Pattern matching zur Definition von Funktionen+ take 0 _ = [] take _ [] = [] take n (x:xs) = x : take (n-1) xs [agith] [PePP] Case So schreibt man die take Funktion mit einem Case: Take m ys = case (m,ys) of (0,_) -> [] (_,[]) -> [] (n,x:xs) -> x : take (n-1) xs [agith] Let Expressions let a = b + c in a/d d = e * f Let-Ausdrücke dienen zur Vereinfachung von Ausdrücken. Hier geschieht nichts anderes als eine Substitution. Im in Teil darf nur ein Ausdruck vorkommen. Sollte Seite 13
14 man mehrere benötigen, so muss man auf where clauses zurückgreifen. Es handelt sich hierbei um lokale Definitionen. [agith] Where clauses funktiona a = (b,c) where b = - (abs a) c = abs a [agith] 4.7 IO IO stellt in funktionaler Programmierung ein großes Problem dar. Die meisten funktionalen Programmiersprachen erlauben hier Seiteneffekte um das Problem zu lösen obwohl sie diese eigentlich strikt ablehnen. Dieses Problem gibt es weil IO etwas Imperatives darstellt. Ließ ein Zeichen mache etwas damit und gib es wieder aus, ist eine typische imperative Anweisung die sich in funktionaler Programmierung nur schlecht lösen lässt In Haskell geschieht IO rein funktional. In Haskell gibt es dafür einen eigenen Typ mit Namen IO. Die Funktion main muss in Haskellprogrammen vorhanden sein und muss einen IO Typ haben. Für gewöhnlich IO (). Der Code für ein einfaches getchar, es ließt ein Zeichen und gibt es gleich wieder aus: main :: IO () main = do c <-getchar putchar c Seite 14
15 Nach einem do folgen statements, in diesem Fall besteht das Statement aus einem Pattern (c) das durch <- an die Funktion getchar gebunden wird. Die Statements werden der Reihe nach ausgeführt. Das zweite Statement ist putchar c, das in diesem Fall eine Funktion ist. (Die dritte Möglichkeit für Statements sind lokale Definitionen durch let.) Dies ist der Code zum Einlesen von Zeilen in Haskell: getline :: IO String getline = do c <- getchar if c == \n then return else do l <- getline return (c:l) Die Funktion getline ließt Elemente von Typ IO und gibt einen String zurück. Durch do wird das Pattern c an die Funktion getchar gebunden. Solange kein Zeilenende eingelesen wird, wird das Zeichen auf den Stack gelegt und gleichzeitig wird getline an l gebunden. Die funktion getline ruft sich anschließend wieder rekursiv auf. Der rekursive Aufruf erfolgt so lange bis die Zeile zu Ende ist, dann wird der Stack wieder abgebaut und zwar in umgekehrter Reihenfolge zum Aufbauen des Stacks, d.h. die Zeile wird von hinten nach vorne wieder zusammengesetzt. Dies geschieht durch return (c:l). [agith] 4.8 Type Classes Typklassen Eine Besonderheit von Haskell sind Typklassen. Aus Java kennt man Überladung von Klassen bzw. Funktionen aus Klassen. Haskell versucht diese Idee auch für sich zu nutzen in dem es ähnliche Möglichkeiten für Typen bietet. Da zu gibt es in Haskell eine Klassehierarchien der Standarttypen. (Diese ist zu finden in [HaKu] ) Seite 15
16 Hier nun ein Beispiel: class Eq a where (==) :: a -> a -> Bool (/=) :: a -> a -> Bool Hierdurch definiert man eine Klasse von Typen. Sie beinhaltet alle Typen für die die Funktionen == und /= definiert sind. Man kann nun eine Funktion schreiben, die einen oder mehrere Parameter dieser Typklasse benutzt. Diese Funktion definiert man somit für alle Parameter für die die Funktionen == und /= definiert sind. Dadurch dass in Haskell auch gewöhnliches Überladen erlaubt ist kann man somit höher geordnete Funktionen schon dadurch Überladen, das man Funktionen als Parameter benutzt, die ihrerseits einen Typ einer Typklasse zurückgeben. Man Überlädt Funktionen dadurch in Bezug auf ihre Verschachtelung von Innen nach außen und erbt damit in einer höheren Funktion die Überladung. 4.9 Weitere Möglichkeiten von Haskell Wietere Möglichkeiten die Haskell bietet sind Monaden, garbage collection (siehe [Ggch]), lazy patterns, Polymorphie, Überladen, Funktionen höherer Ordnung, Tupel, Currying, unendliche Datenstrukturen. Diese Möglichkeiten kann ich ihm Rahmen dieses Vortrages nicht aufführen, da dies denselben sprengen würde. Einige dieser Dinge wurden auch schon im Vortrag meines Kommilitonen Oliver Trosien [OlTr] näher erläutert und somit möchte ich auf seinen Vortrag und auf meine anderen Quellen Verwiesen. Seite 16
17 5. Interpreter und Compiler Es gibt mehrere Interpreter und Compiler für Haskell. Der Standard-Interpreter ist Hugs. Er läuft auf fast allen Betriebssystemen (Unix, Linux, Windows 3.x, Win 32 and Macintoshs) und kann als interaktiver Interpreter genutzt werden. Es gibt mehrere Compiler (GHC, nhc98, (HBI) und HBC, Helium) die unterschiedliche Vorteile haben. Sie sind alle (auch Hugs) frei verfügbar und laufen auf unterschiedlich vielen Betriebssystemen. GHC erzeugt den schnellsten Code. Helium implementiert Haskell nur unvollständig hat allerdings eine besonders verständliche Fehlerausgabe und ist daher speziell zum lernen von Grundzügen von Haskell gut geeignet. GHC, nhc98, HBI und HBC implementieren mehr als den Haskell 98 Standard und man sollte sich dessen bewusst sein, da ein Haskell Programm evtl. mit einem anderen Compiler nicht mehr funktioniert. Mit HBI und HBC wird versucht dem Programmierer die Vorteile von Compilern und Interpretern zu ermöglichen. Denn sie implementieren den gleichen Code auf die gleiche Art wobei HBI ein Interpreter und HBC ein Compiler ist. Die Vorteile eines Compilers liegen darin, das das fertige Programm schneller ausgeführt werden kann und die eines Interpreters liegen darin, das man es als Programmierer leichter hat, da man das Programm nicht immer erst kompilieren muss um es zu testen sondern alles in einem Schritt erledigen kann. [Hask] 6. Fazit Wie ich hoffentlich zumindest in einigen Bereichen zeigen konnte hat funktionale Programmierung einige Vorteile. Die Korrektheit von Haskellprogrammen kann mit Hilfe des Lambda-Kalkül bewiesen werden. Haskell vermeidet Fehler durch Vermeidung von Seiteneffekten und starke Typisierung. Zusätzlich wird zur Fehlervermeidung noch auf Semikolons zum Abschluss von Zeilen verzichtet was in anderen Sprachen zu Fehlern führt. Typen können von Haskell selbstständig erkannt werden und müssen nicht explizit angegeben werden. Haskell bietet unendliche Datenstrukturen und spart Rechenzeit durch lazy evaluation und auch garbage collection um Daten die zunächst für lazy evaluation zunächst aufgehoben werden auch wieder aus dem Speicher zu entfernen. Die Fehler die durch Endlosrekursionen Seite 17
18 mit Hilfe von lazy evaluation entstehen können, können durch eine sehr viel genauere Modularisierung vermieden werden. Diese Art der Modularisierung kann natürlich auch noch zu anderen / den üblichen Zwecken eingesetzt werden. Hinzu kommt pattern matching und etwas auf was Haskell Programmierer viel wert legen, nämlich das es geschafft wurde auch IO rein funktional zu behandeln. Und Typklassen bieten erweiterte Möglichkeiten der Überladung und sind Neuentwicklung für Haskell. Haskell besitzt auch umfangreiche Bibliotheken (in denen auch die obige Funktion getline schon implementiert ist) und stellt sowohl Interpreter als auch Compiler zur frei zur Verfügung. Hinzu kommen noch einige Möglichkeiten auf die ich nicht näher eingegangen bin (siehe 4.10). An meinem Beispiel des Prototypen Experiments lässt sich auch erkennen, dass man sich Haskell auf jeden Fall ansehen sollte wenn man vorhat einen Prototypen zu schreiben. Haskell scheint sich außerdem für die Programmierung von Compilern & Interpretern (es gibt einen LaTeX Preprocessor, ein Haskell Compiler Front End, einen Interpreter für das Lambda-Kalkül), Netzwerk- und Webanwendungen (es gibt einen Webserver HWS-WP, linkchk ein Monitor für Netzwerkverbindungen in einem LAN) und Grafikprogramme (QuakeHaskell und einen Grafikeditor) zu eignen. Weiter Programme siehe [HaskP]. Ich kann also abschließend sagen, das Haskell mehr Möglichkeiten bietet, als ein Referat in diesem Umfang erschlagen kann und Haskell damit eine durchaus Interessante und nützliche Sprache darstellt. Seite 18
19 7. Literaturverzeichnis [Pepp] Prof. Dr. Peter Pepper, Funktionale Programmierung in OPAL, ML, HASKELL und GOFER, Springer, Berlin Heidelberg New York, 2. Auflage, 2003 [CoFP] Simon Thompson, The Craft of Funktional Programming, Addison Wesley Longman Limited, Dorchester, 1999 [FpuH] Antony J.T.Davie, An introduktion to funktional programming using Haskell, Cambridge University Press, 1992 [Hask] die Haskell Webseite [HaskP] [WhyFp] John Hughes, Why Functional Programming Matters [agith] Paul Hudak, John Peterson, Joseph Fasel, A Gentle Introduction to Haskell Version 98, Yale Univesity & Los Alamos National Laboratory, June [EiSPP] Paul Hudak, Mark P. Jones, Haskell vs. Ada vs. C++ vs Awk vs.... An Experiment in Software Prototyping Productivity, Yale Univesity Department of Computer Science, 4 July 1994 [Ggch] Patrick m Sansom, Simon L. Peyton Jones,Generational garbage collection for Haskell, Dept. of Compunter Science, University of Glasgow [HaKu] Haskell-Kurs [OlTr] Oliver Trosien, Funktionale Programmierung am Beispiel ML, Seite 19
20 [Zuen] Aus einer Vorlesung von Professor Zündorf, Uni-Kassel, 2004 [FPML] Oliver Trosien, Funktionale Programmierung am Beispiel ML, 2004 Seite 20
Programmierparadigmen: Funktionale Programmierung
Programmierparadigmen: Funktionale Programmierung Thilo Gorfer 6. Juni 2013 Zusammenfassung Ein kurzer Überblick über die funktionale Programmierung am Beispiel Haskell Abstract A short overview of functional
MehrLineargleichungssysteme: Additions-/ Subtraktionsverfahren
Lineargleichungssysteme: Additions-/ Subtraktionsverfahren W. Kippels 22. Februar 2014 Inhaltsverzeichnis 1 Einleitung 2 2 Lineargleichungssysteme zweiten Grades 2 3 Lineargleichungssysteme höheren als
MehrL10N-Manager 3. Netzwerktreffen der Hochschulübersetzer/i nnen Mannheim 10. Mai 2016
L10N-Manager 3. Netzwerktreffen der Hochschulübersetzer/i nnen Mannheim 10. Mai 2016 Referentin: Dr. Kelly Neudorfer Universität Hohenheim Was wir jetzt besprechen werden ist eine Frage, mit denen viele
Mehr1 Vom Problem zum Programm
Hintergrundinformationen zur Vorlesung GRUNDLAGEN DER INFORMATIK I Studiengang Elektrotechnik WS 02/03 AG Betriebssysteme FB3 Kirsten Berkenkötter 1 Vom Problem zum Programm Aufgabenstellung analysieren
MehrArbeiten mit UMLed und Delphi
Arbeiten mit UMLed und Delphi Diese Anleitung soll zeigen, wie man Klassen mit dem UML ( Unified Modeling Language ) Editor UMLed erstellt, in Delphi exportiert und dort so einbindet, dass diese (bis auf
MehrAnleitung über den Umgang mit Schildern
Anleitung über den Umgang mit Schildern -Vorwort -Wo bekommt man Schilder? -Wo und wie speichert man die Schilder? -Wie füge ich die Schilder in meinen Track ein? -Welche Bauteile kann man noch für Schilder
MehrObjektorientierte Programmierung für Anfänger am Beispiel PHP
Objektorientierte Programmierung für Anfänger am Beispiel PHP Johannes Mittendorfer http://jmittendorfer.hostingsociety.com 19. August 2012 Abstract Dieses Dokument soll die Vorteile der objektorientierten
Mehr1 Mathematische Grundlagen
Mathematische Grundlagen - 1-1 Mathematische Grundlagen Der Begriff der Menge ist einer der grundlegenden Begriffe in der Mathematik. Mengen dienen dazu, Dinge oder Objekte zu einer Einheit zusammenzufassen.
Mehr1 topologisches Sortieren
Wolfgang Hönig / Andreas Ecke WS 09/0 topologisches Sortieren. Überblick. Solange noch Knoten vorhanden: a) Suche Knoten v, zu dem keine Kante führt (Falls nicht vorhanden keine topologische Sortierung
MehrPersönliche Zukunftsplanung mit Menschen, denen nicht zugetraut wird, dass sie für sich selbst sprechen können Von Susanne Göbel und Josef Ströbl
Persönliche Zukunftsplanung mit Menschen, denen nicht zugetraut Von Susanne Göbel und Josef Ströbl Die Ideen der Persönlichen Zukunftsplanung stammen aus Nordamerika. Dort werden Zukunftsplanungen schon
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:
Mehr4. BEZIEHUNGEN ZWISCHEN TABELLEN
4. BEZIEHUNGEN ZWISCHEN TABELLEN Zwischen Tabellen können in MS Access Beziehungen bestehen. Durch das Verwenden von Tabellen, die zueinander in Beziehung stehen, können Sie Folgendes erreichen: Die Größe
MehrInformationsblatt Induktionsbeweis
Sommer 015 Informationsblatt Induktionsbeweis 31. März 015 Motivation Die vollständige Induktion ist ein wichtiges Beweisverfahren in der Informatik. Sie wird häufig dazu gebraucht, um mathematische Formeln
MehrAutoCAD 2007 - Dienstprogramm zur Lizenzübertragung
AutoCAD 2007 - Dienstprogramm zur Lizenzübertragung Problem: Um AutoCAD abwechselnd auf mehreren Rechnern einsetzen zu können konnte man bis AutoCAD 2000 einfach den Dongle umstecken. Seit AutoCAD 2000i
MehrFunktionale Programmierung mit Haskell
Funktionale Programmierung mit Haskell Dr. Michael Savorić Hohenstaufen-Gymnasium (HSG) Kaiserslautern Version 20120622 Überblick Wichtige Eigenschaften Einführungsbeispiele Listenerzeugung und Beispiel
MehrONLINE-AKADEMIE. "Diplomierter NLP Anwender für Schule und Unterricht" Ziele
ONLINE-AKADEMIE Ziele Wenn man von Menschen hört, die etwas Großartiges in ihrem Leben geleistet haben, erfahren wir oft, dass diese ihr Ziel über Jahre verfolgt haben oder diesen Wunsch schon bereits
MehrMind Mapping am PC. für Präsentationen, Vorträge, Selbstmanagement. von Isolde Kommer, Helmut Reinke. 1. Auflage. Hanser München 1999
Mind Mapping am PC für Präsentationen, Vorträge, Selbstmanagement von Isolde Kommer, Helmut Reinke 1. Auflage Hanser München 1999 Verlag C.H. Beck im Internet: www.beck.de ISBN 978 3 446 21222 0 schnell
MehrHandbuch ECDL 2003 Basic Modul 5: Datenbank Access starten und neue Datenbank anlegen
Handbuch ECDL 2003 Basic Modul 5: Datenbank Access starten und neue Datenbank anlegen Dateiname: ecdl5_01_02_documentation_standard.doc Speicherdatum: 14.02.2005 ECDL 2003 Basic Modul 5 Datenbank - Access
MehrProgrammierkurs Java
Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE16-Rekursion (Stand 09.12.2011) Aufgabe 1: Implementieren Sie in Java ein Programm, das solange einzelne Zeichen vom Terminal einliest, bis ein #-Zeichen
MehrErstellen einer Collage. Zuerst ein leeres Dokument erzeugen, auf dem alle anderen Bilder zusammengefügt werden sollen (über [Datei] > [Neu])
3.7 Erstellen einer Collage Zuerst ein leeres Dokument erzeugen, auf dem alle anderen Bilder zusammengefügt werden sollen (über [Datei] > [Neu]) Dann Größe des Dokuments festlegen beispielsweise A4 (weitere
MehrMehr Geld verdienen! Lesen Sie... Peter von Karst. Ihre Leseprobe. der schlüssel zum leben. So gehen Sie konkret vor!
Peter von Karst Mehr Geld verdienen! So gehen Sie konkret vor! Ihre Leseprobe Lesen Sie...... wie Sie mit wenigen, aber effektiven Schritten Ihre gesteckten Ziele erreichen.... wie Sie die richtigen Entscheidungen
MehrHandbuch Fischertechnik-Einzelteiltabelle V3.7.3
Handbuch Fischertechnik-Einzelteiltabelle V3.7.3 von Markus Mack Stand: Samstag, 17. April 2004 Inhaltsverzeichnis 1. Systemvorraussetzungen...3 2. Installation und Start...3 3. Anpassen der Tabelle...3
MehrGrundbegriffe der Informatik
Grundbegriffe der Informatik Einheit 15: Reguläre Ausdrücke und rechtslineare Grammatiken Thomas Worsch Universität Karlsruhe, Fakultät für Informatik Wintersemester 2008/2009 1/25 Was kann man mit endlichen
MehrPunkt 1 bis 11: -Anmeldung bei Schlecker und 1-8 -Herunterladen der Software
Wie erzeugt man ein Fotobuch im Internet bei Schlecker Seite Punkt 1 bis 11: -Anmeldung bei Schlecker und 1-8 -Herunterladen der Software Punkt 12 bis 24: -Wir arbeiten mit der Software 8-16 -Erstellung
MehrLernerfolge sichern - Ein wichtiger Beitrag zu mehr Motivation
Lernerfolge sichern - Ein wichtiger Beitrag zu mehr Motivation Einführung Mit welchen Erwartungen gehen Jugendliche eigentlich in ihre Ausbildung? Wir haben zu dieser Frage einmal die Meinungen von Auszubildenden
Mehr1. Standortbestimmung
1. Standortbestimmung Wer ein Ziel erreichen will, muss dieses kennen. Dazu kommen wir noch. Er muss aber auch wissen, wo er sich befindet, wie weit er schon ist und welche Strecke bereits hinter ihm liegt.
MehrSysteme 1. Kapitel 6. Nebenläufigkeit und wechselseitiger Ausschluss
Systeme 1 Kapitel 6 Nebenläufigkeit und wechselseitiger Ausschluss Threads Die Adressräume verschiedener Prozesse sind getrennt und geschützt gegen den Zugriff anderer Prozesse. Threads sind leichtgewichtige
MehrPrimzahlen und RSA-Verschlüsselung
Primzahlen und RSA-Verschlüsselung Michael Fütterer und Jonathan Zachhuber 1 Einiges zu Primzahlen Ein paar Definitionen: Wir bezeichnen mit Z die Menge der positiven und negativen ganzen Zahlen, also
MehrMatrix42. Use Case - Sicherung und Rücksicherung persönlicher Einstellungen über Personal Backup. Version 1.0.0. 23. September 2015 - 1 -
Matrix42 Use Case - Sicherung und Rücksicherung persönlicher Version 1.0.0 23. September 2015-1 - Inhaltsverzeichnis 1 Einleitung 3 1.1 Beschreibung 3 1.2 Vorbereitung 3 1.3 Ziel 3 2 Use Case 4-2 - 1 Einleitung
MehrGutes Leben was ist das?
Lukas Bayer Jahrgangsstufe 12 Im Hirschgarten 1 67435 Neustadt Kurfürst-Ruprecht-Gymnasium Landwehrstraße22 67433 Neustadt a. d. Weinstraße Gutes Leben was ist das? Gutes Leben für alle was genau ist das
MehrFlyer, Sharepics usw. mit LibreOffice oder OpenOffice erstellen
Flyer, Sharepics usw. mit LibreOffice oder OpenOffice erstellen Wir wollen, dass ihr einfach für eure Ideen und Vorschläge werben könnt. Egal ob in ausgedruckten Flyern, oder in sozialen Netzwerken und
MehrÜbungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag
Ludwig-Maximilians-Universität München WS 2015/16 Institut für Informatik Übungsblatt 9 Prof. Dr. R. Hennicker, A. Klarl Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung:
MehrSerienbrieferstellung in Word mit Kunden-Datenimport aus Excel
Sehr vielen Mitarbeitern fällt es schwer, Serienbriefe an Kunden zu verschicken, wenn sie die Serienbrieffunktion von Word nicht beherrschen. Wenn die Kunden mit Excel verwaltet werden, genügen nur ein
MehrWoche 1: Was ist NLP? Die Geschichte des NLP.
Woche 1: Was ist NLP? Die Geschichte des NLP. Liebe(r) Kursteilnehmer(in)! Im ersten Theorieteil der heutigen Woche beschäftigen wir uns mit der Entstehungsgeschichte des NLP. Zuerst aber eine Frage: Wissen
MehrCodeSaver. Vorwort. Seite 1 von 6
CodeSaver Vorwort Die Flut der Passwörter nimmt immer mehr zu. Kontopasswörter, Passwörter für Homepages, Shellzugriffe, Registrierungscodes für Programme und und und. Da ich aber nicht sonderlich viel
MehrGruppenrichtlinien und Softwareverteilung
Gruppenrichtlinien und Softwareverteilung Ergänzungen zur Musterlösung Bitte lesen Sie zuerst die gesamte Anleitung durch! Vorbemerkung: Die Begriffe OU (Organizational Unit) und Raum werden in der folgenden
MehrMediator 9 - Lernprogramm
Mediator 9 - Lernprogramm Ein Lernprogramm mit Mediator erstellen Mediator 9 bietet viele Möglichkeiten, CBT-Module (Computer Based Training = Computerunterstütztes Lernen) zu erstellen, z. B. Drag & Drop
MehrSoftware Engineering Klassendiagramme Assoziationen
Software Engineering Klassendiagramme Assoziationen Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Lesen von Multiplizitäten (1) Multiplizitäten werden folgendermaßen
MehrHandbuch. NAFI Online-Spezial. Kunden- / Datenverwaltung. 1. Auflage. (Stand: 24.09.2014)
Handbuch NAFI Online-Spezial 1. Auflage (Stand: 24.09.2014) Copyright 2016 by NAFI GmbH Unerlaubte Vervielfältigungen sind untersagt! Inhaltsangabe Einleitung... 3 Kundenauswahl... 3 Kunde hinzufügen...
MehrIst Fernsehen schädlich für die eigene Meinung oder fördert es unabhängig zu denken?
UErörterung zu dem Thema Ist Fernsehen schädlich für die eigene Meinung oder fördert es unabhängig zu denken? 2000 by christoph hoffmann Seite I Gliederung 1. In zu großen Mengen ist alles schädlich. 2.
MehrBinäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen
Binäre Bäume 1. Allgemeines Binäre Bäume werden grundsätzlich verwendet, um Zahlen der Größe nach, oder Wörter dem Alphabet nach zu sortieren. Dem einfacheren Verständnis zu Liebe werde ich mich hier besonders
MehrRohstoffanalyse - COT Daten - Gold, Fleischmärkte, Orangensaft, Crude Oil, US Zinsen, S&P500 - KW 07/2009
MikeC.Kock Rohstoffanalyse - COT Daten - Gold, Fleischmärkte, Orangensaft, Crude Oil, US Zinsen, S&P500 - KW 07/2009 Zwei Märkte stehen seit Wochen im Mittelpunkt aller Marktteilnehmer? Gold und Crude
MehrWorkshop: Wie ich mein Handikap verbessere erfolgreich Leben mit Multiple Sklerose!
INTEGRA 7.-9.Mai 2014 Gernot Morgenfurt - Weissensee/Kärnten lebe seit Anfang der 90iger mit MS habe in 2002 eine SHG (Multiple Sklerose) gegründet und möchte viele Menschen zu einer etwas anderen Sichtweise
MehrHohe Kontraste zwischen Himmel und Landschaft abmildern
PhotoLine-Bildbearbeitung Erstellt mit Version 16.11 In diesem Beispiel möchte ich zeigen, wie ich zur Zeit Landschaftsbilder mit hohen Kontrasten bearbeite. "Zur Zeit" deshalb, weil sich das natürlich
MehrAnleitung für die Version 2.4.1 von online 1. Schritt: Rufen Sie die Website auf...
1. Schritt: Rufen Sie die Website auf... www.profax.ch oder http://plc.profax.ch (www.profax.de - www.profax.at) auf und wählen Sie Registration für Klassen und Schulen. Wählen Sie bitte die Variante aus,
MehrAGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom 21.10.2013b
AGROPLUS Buchhaltung Daten-Server und Sicherheitskopie Version vom 21.10.2013b 3a) Der Daten-Server Modus und der Tresor Der Daten-Server ist eine Betriebsart welche dem Nutzer eine grosse Flexibilität
MehrWarum Sie jetzt kein Onlinemarketing brauchen! Ab wann ist Onlinemarketing. So finden Sie heraus, wann Ihre Website bereit ist optimiert zu werden
CoachingBrief 02/2016 Warum Sie jetzt kein Onlinemarketing brauchen! Eine Frage gleich zu Anfang: Wie viele Mails haben Sie in dieser Woche erhalten, in denen behauptet wurde: Inhalt Ihre Webseite sei
MehrKreativ visualisieren
Kreativ visualisieren Haben Sie schon einmal etwas von sogenannten»sich selbst erfüllenden Prophezeiungen«gehört? Damit ist gemeint, dass ein Ereignis mit hoher Wahrscheinlichkeit eintritt, wenn wir uns
MehrErweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:
VBA Programmierung mit Excel Schleifen 1/6 Erweiterung der Aufgabe Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen: Es müssen also 11 (B L) x 35 = 385 Zellen berücksichtigt
MehrDokumentation IBIS Monitor
Dokumentation IBIS Monitor Seite 1 von 16 11.01.06 Inhaltsverzeichnis 1. Allgemein 2. Installation und Programm starten 3. Programmkonfiguration 4. Aufzeichnung 4.1 Aufzeichnung mitschneiden 4.1.1 Inhalt
MehrJava Kurs für Anfänger Einheit 4 Klassen und Objekte
Java Kurs für Anfänger Einheit 4 Klassen und Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 13. Juni 2009 Inhaltsverzeichnis klasse
MehrWie halte ich Ordnung auf meiner Festplatte?
Wie halte ich Ordnung auf meiner Festplatte? Was hältst du von folgender Ordnung? Du hast zu Hause einen Schrank. Alles was dir im Wege ist, Zeitungen, Briefe, schmutzige Wäsche, Essensreste, Küchenabfälle,
MehrAlle Schlüssel-Karten (blaue Rückseite) werden den Schlüssel-Farben nach sortiert und in vier getrennte Stapel mit der Bildseite nach oben gelegt.
Gentlemen", bitte zur Kasse! Ravensburger Spiele Nr. 01 264 0 Autoren: Wolfgang Kramer und Jürgen P. K. Grunau Grafik: Erhard Dietl Ein Gaunerspiel für 3-6 Gentlemen" ab 10 Jahren Inhalt: 35 Tresor-Karten
MehrZwischenablage (Bilder, Texte,...)
Zwischenablage was ist das? Informationen über. die Bedeutung der Windows-Zwischenablage Kopieren und Einfügen mit der Zwischenablage Vermeiden von Fehlern beim Arbeiten mit der Zwischenablage Bei diesen
MehrInformation zum Projekt. Mitwirkung von Menschen mit Demenz in ihrem Stadtteil oder Quartier
Information zum Projekt Mitwirkung von Menschen mit Demenz in ihrem Stadtteil oder Quartier Sehr geehrte Dame, sehr geehrter Herr Wir führen ein Projekt durch zur Mitwirkung von Menschen mit Demenz in
MehrZahlenwinkel: Forscherkarte 1. alleine. Zahlenwinkel: Forschertipp 1
Zahlenwinkel: Forscherkarte 1 alleine Tipp 1 Lege die Ziffern von 1 bis 9 so in den Zahlenwinkel, dass jeder Arm des Zahlenwinkels zusammengezählt das gleiche Ergebnis ergibt! Finde möglichst viele verschiedene
MehrWindows. Workshop Internet-Explorer: Arbeiten mit Favoriten, Teil 1
Workshop Internet-Explorer: Arbeiten mit Favoriten, Teil 1 Wenn der Name nicht gerade www.buch.de oder www.bmw.de heißt, sind Internetadressen oft schwer zu merken Deshalb ist es sinnvoll, die Adressen
MehrMORE Profile. Pass- und Lizenzverwaltungssystem. Stand: 19.02.2014 MORE Projects GmbH
MORE Profile Pass- und Lizenzverwaltungssystem erstellt von: Thorsten Schumann erreichbar unter: thorsten.schumann@more-projects.de Stand: MORE Projects GmbH Einführung Die in More Profile integrierte
MehrGrundlagen der Theoretischen Informatik, SoSe 2008
1. Aufgabenblatt zur Vorlesung Grundlagen der Theoretischen Informatik, SoSe 2008 (Dr. Frank Hoffmann) Lösung von Manuel Jain und Benjamin Bortfeldt Aufgabe 2 Zustandsdiagramme (6 Punkte, wird korrigiert)
MehrHerzlich Willkommen beim Webinar: Was verkaufen wir eigentlich?
Herzlich Willkommen beim Webinar: Was verkaufen wir eigentlich? Was verkaufen wir eigentlich? Provokativ gefragt! Ein Hotel Marketing Konzept Was ist das? Keine Webseite, kein SEO, kein Paket,. Was verkaufen
MehrInformationen zur Verwendung von Visual Studio und cmake
Inhaltsverzeichnis Informationen zur Verwendung von Visual Studio und cmake... 2 Erste Schritte mit Visual Studio... 2 Einstellungen für Visual Studio 2013... 2 Nutzung von cmake... 6 Installation von
MehrNicht kopieren. Der neue Report von: Stefan Ploberger. 1. Ausgabe 2003
Nicht kopieren Der neue Report von: Stefan Ploberger 1. Ausgabe 2003 Herausgeber: Verlag Ploberger & Partner 2003 by: Stefan Ploberger Verlag Ploberger & Partner, Postfach 11 46, D-82065 Baierbrunn Tel.
MehrLiebe oder doch Hass (13)
Liebe oder doch Hass (13) von SternenJuwel online unter: http://www.testedich.de/quiz37/quiz/1442500524/liebe-oder-doch-hass-13 Möglich gemacht durch www.testedich.de Einleitung Yuna gibt jetzt also Rima
Mehr1. Was ihr in dieser Anleitung
Leseprobe 1. Was ihr in dieser Anleitung erfahren könnt 2 Liebe Musiker, in diesem PDF erhaltet ihr eine Anleitung, wie ihr eure Musik online kostenlos per Werbevideo bewerben könnt, ohne dabei Geld für
MehrDoku zur Gebäudebrüter Datenbank
Autor: Christina Baradari, christina.baradari@berlin.de, 0162 2008 114 Doku zur Gebäudebrüter Datenbank Team Web Programmierer: Rahim Baradari Inhaltsverzeichnis 1 Suchen nach Kartierungsdaten... 2 1.1
MehrWelche Gedanken wir uns für die Erstellung einer Präsentation machen, sollen Ihnen die folgende Folien zeigen.
Wir wollen mit Ihnen Ihren Auftritt gestalten Steil-Vorlage ist ein österreichisches Start-up mit mehr als zehn Jahren Erfahrung in IT und Kommunikation. Unser Ziel ist, dass jede einzelne Mitarbeiterin
MehrErstellen von x-y-diagrammen in OpenOffice.calc
Erstellen von x-y-diagrammen in OpenOffice.calc In dieser kleinen Anleitung geht es nur darum, aus einer bestehenden Tabelle ein x-y-diagramm zu erzeugen. D.h. es müssen in der Tabelle mindestens zwei
MehrDie Captimizer BTZ-Datei 2015
Dipl.-Math. Rainer Schwindt Captimizer s Secrets behind the User Interface 2 Die Captimizer BTZ-Datei 2015 Regeln zur BTZ bei laufendem Navigator und Navigator-Neustart beim Jahreswechsel Geheimnisse hinter
MehrStatuten in leichter Sprache
Statuten in leichter Sprache Zweck vom Verein Artikel 1: Zivil-Gesetz-Buch Es gibt einen Verein der selbstbestimmung.ch heisst. Der Verein ist so aufgebaut, wie es im Zivil-Gesetz-Buch steht. Im Zivil-Gesetz-Buch
Mehr10 Erweiterung und Portierung
10.1 Überblick In vielen Fällen werden Compiler nicht vollständig neu geschrieben, sondern von einem Rechnersystem auf ein anderes portiert. Das spart viel Arbeit, ist aber immer noch eine sehr anspruchsvolle
MehrDownloadfehler in DEHSt-VPSMail. Workaround zum Umgang mit einem Downloadfehler
Downloadfehler in DEHSt-VPSMail Workaround zum Umgang mit einem Downloadfehler Downloadfehler bremen online services GmbH & Co. KG Seite 2 Inhaltsverzeichnis Vorwort...3 1 Fehlermeldung...4 2 Fehlerbeseitigung...5
MehrGEONET Anleitung für Web-Autoren
GEONET Anleitung für Web-Autoren Alfred Wassermann Universität Bayreuth Alfred.Wassermann@uni-bayreuth.de 5. Mai 1999 Inhaltsverzeichnis 1 Technische Voraussetzungen 1 2 JAVA-Programme in HTML-Seiten verwenden
MehrAbschluss Version 1.0
Beschreibung Der Abschluss wird normalerweise nur einmal jährlich durchgeführt. Dieses Tech-Note soll helfen, diesen doch seltenen aber periodisch notwendigen Vorgang problemlos durchzuführen. Abschlussvarianten
MehrProfessionelle Seminare im Bereich MS-Office
Der Name BEREICH.VERSCHIEBEN() ist etwas unglücklich gewählt. Man kann mit der Funktion Bereiche zwar verschieben, man kann Bereiche aber auch verkleinern oder vergrößern. Besser wäre es, die Funktion
MehrKulturelle Evolution 12
3.3 Kulturelle Evolution Kulturelle Evolution Kulturelle Evolution 12 Seit die Menschen Erfindungen machen wie z.b. das Rad oder den Pflug, haben sie sich im Körperbau kaum mehr verändert. Dafür war einfach
MehrGeld Verdienen im Internet leicht gemacht
Geld Verdienen im Internet leicht gemacht Hallo, Sie haben sich dieses E-book wahrscheinlich herunter geladen, weil Sie gerne lernen würden wie sie im Internet Geld verdienen können, oder? Denn genau das
MehrDas Leitbild vom Verein WIR
Das Leitbild vom Verein WIR Dieses Zeichen ist ein Gütesiegel. Texte mit diesem Gütesiegel sind leicht verständlich. Leicht Lesen gibt es in drei Stufen. B1: leicht verständlich A2: noch leichter verständlich
Mehriphone- und ipad-praxis: Kalender optimal synchronisieren
42 iphone- und ipad-praxis: Kalender optimal synchronisieren Die Synchronisierung von ios mit anderen Kalendern ist eine elementare Funktion. Die Standard-App bildet eine gute Basis, für eine optimale
MehrBUCHHALTUNG BUCHFÜHRUNG WO IST ER EIGENTLICH? - DER UNTERSCHIED?
BUCHHALTUNG BUCHFÜHRUNG WO IST ER EIGENTLICH? - DER UNTERSCHIED? Wenn auch die Begriffe "Buchhaltung Buchführung" in der letzten Zeit immer mehr zusammen zuwachsen scheinen, so ist er doch noch da: Der
MehrTESTEN SIE IHR KÖNNEN UND GEWINNEN SIE!
9 TESTEN SIE IHR KÖNNEN UND GEWINNEN SIE! An den SeniorNETclub 50+ Währinger Str. 57/7 1090 Wien Und zwar gleich in doppelter Hinsicht:!"Beantworten Sie die folgenden Fragen und vertiefen Sie damit Ihr
MehrRepetitionsaufgaben Wurzelgleichungen
Repetitionsaufgaben Wurzelgleichungen Inhaltsverzeichnis A) Vorbemerkungen B) Lernziele C) Theorie mit Aufgaben D) Aufgaben mit Musterlösungen 4 A) Vorbemerkungen Bitte beachten Sie: Bei Wurzelgleichungen
MehrProjektmanagement in der Spieleentwicklung
Projektmanagement in der Spieleentwicklung Inhalt 1. Warum brauche ich ein Projekt-Management? 2. Die Charaktere des Projektmanagement - Mastermind - Producer - Projektleiter 3. Schnittstellen definieren
MehrPädagogik. Melanie Schewtschenko. Eingewöhnung und Übergang in die Kinderkrippe. Warum ist die Beteiligung der Eltern so wichtig?
Pädagogik Melanie Schewtschenko Eingewöhnung und Übergang in die Kinderkrippe Warum ist die Beteiligung der Eltern so wichtig? Studienarbeit Inhaltsverzeichnis 1. Einleitung.2 2. Warum ist Eingewöhnung
MehrWir arbeiten mit Zufallszahlen
Abb. 1: Bei Kartenspielen müssen zu Beginn die Karten zufällig ausgeteilt werden. Wir arbeiten mit Zufallszahlen Jedesmal wenn ein neues Patience-Spiel gestartet wird, muss das Computerprogramm die Karten
Mehricloud nicht neu, aber doch irgendwie anders
Kapitel 6 In diesem Kapitel zeigen wir Ihnen, welche Dienste die icloud beim Abgleich von Dateien und Informationen anbietet. Sie lernen icloud Drive kennen, den Fotostream, den icloud-schlüsselbund und
MehrOECD Programme for International Student Assessment PISA 2000. Lösungen der Beispielaufgaben aus dem Mathematiktest. Deutschland
OECD Programme for International Student Assessment Deutschland PISA 2000 Lösungen der Beispielaufgaben aus dem Mathematiktest Beispielaufgaben PISA-Hauptstudie 2000 Seite 3 UNIT ÄPFEL Beispielaufgaben
MehrKrippenspiel für das Jahr 2058
Ev.-Luth. Landeskirche Sachsens Spielen & Gestalten Krippenspiel für das Jahr 2058 Krippenspiel für das Jahr 2058 K 125 Impressum Weihnachtsspielangebot 2009 Krippenspiel für das Jahr 2058 K 125 Die Aufführungsrechte
MehrEinrichten einer mehrsprachigen Webseite mit Joomla (3.3.6)
Einrichten einer mehrsprachigen Webseite mit Joomla (3.3.6) 1. Loggen Sie sich im Administratorbereich ein und gehen Sie auf Extension > Extension Manager 2. Wählen Sie Install languages 3. Klicken Sie
MehrViele Bilder auf der FA-Homepage
Viele Bilder auf der FA-Homepage Standardmäßig lassen sich auf einer FA-Homepage nur 2 Bilder mit zugehörigem Text unterbringen. Sollen es mehr Bilder sein, muss man diese als von einer im Internet
MehrDatenbanken Kapitel 2
Datenbanken Kapitel 2 1 Eine existierende Datenbank öffnen Eine Datenbank, die mit Microsoft Access erschaffen wurde, kann mit dem gleichen Programm auch wieder geladen werden: Die einfachste Methode ist,
MehrArtikel Schnittstelle über CSV
Artikel Schnittstelle über CSV Sie können Artikeldaten aus Ihrem EDV System in das NCFOX importieren, dies geschieht durch eine CSV Schnittstelle. Dies hat mehrere Vorteile: Zeitersparnis, die Karteikarte
MehrVersetzungsgefahr als ultimative Chance. ein vortrag für versetzungsgefährdete
Versetzungsgefahr als ultimative Chance ein vortrag für versetzungsgefährdete Versetzungsgefährdete haben zum Großteil einige Fallen, die ihnen das normale Lernen schwer machen und mit der Zeit ins Hintertreffen
MehrDaten sammeln, darstellen, auswerten
Vertiefen 1 Daten sammeln, darstellen, auswerten zu Aufgabe 1 Schulbuch, Seite 22 1 Haustiere zählen In der Tabelle rechts stehen die Haustiere der Kinder aus der Klasse 5b. a) Wie oft wurden die Haustiere
MehrSpielmaterial. Hallo! Ich bin der kleine AMIGO und zeige euch, wie dieses Spiel funktioniert. Viel Spaß! von Liesbeth Bos
Kissenschlacht_Regel.qxp:Layout 1 19.05.2010 12:00 Uhr Seite 1 Hallo! Ich bin der kleine AMIGO und zeige euch, wie dieses Spiel funktioniert. Viel Spaß! von Liesbeth Bos Spieler: 2 4 Personen Alter: ab
MehrStellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster
Es gibt in Excel unter anderem die so genannten Suchfunktionen / Matrixfunktionen Damit können Sie Werte innerhalb eines bestimmten Bereichs suchen. Als Beispiel möchte ich die Funktion Sverweis zeigen.
MehrPräventionsforum+ Erfahrungsaustausch. HANDOUT GRUPPEN-ADMINISTRATOREN Anlage zum Endnutzer-Handbuch. Stand: 11.09.2014 Änderungen vorbehalten
Präventionsforum+ Erfahrungsaustausch HANDOUT GRUPPEN-ADMINISTRATOREN Anlage zum Endnutzer-Handbuch Stand: 11.09.2014 Änderungen vorbehalten Anlage zum Endnutzer-Handbuch Handout Gruppen-Administratoren
MehrPapa - was ist American Dream?
Papa - was ist American Dream? Das heißt Amerikanischer Traum. Ja, das weiß ich, aber was heißt das? Der [wpseo]amerikanische Traum[/wpseo] heißt, dass jeder Mensch allein durch harte Arbeit und Willenskraft
MehrEinführung in die Programmierung
Technische Universität München WS 2003/2004 Institut für Informatik Prof. Dr. Christoph Zenger Testklausur Einführung in die Programmierung Probeklausur Java (Lösungsvorschlag) 1 Die Klasse ArrayList In
MehrMit dem Tool Stundenverwaltung von Hanno Kniebel erhalten Sie die Möglichkeit zur effizienten Verwaltung von Montagezeiten Ihrer Mitarbeiter.
Stundenverwaltung Mit dem Tool Stundenverwaltung von Hanno Kniebel erhalten Sie die Möglichkeit zur effizienten Verwaltung von Montagezeiten Ihrer Mitarbeiter. Dieses Programm zeichnet sich aus durch einfachste
Mehr