Thorben Meier
|
|
- Timo Maurer
- vor 8 Jahren
- Abrufe
Transkript
1 F# Thorben Meier Einleitung F# ist eine Multi-Paradigmen-Programmiersprache, die neben funktionalen auch imperative und objektorientierte Sprachelemente enthält. Ihre größten Einflüsse kommen aus der funktionalen und imperativen Programmiersprache ML und insbesondere deren objektorientierter Erweiterung Ocaml (Objective Categorical Abstract Machine Language) sowie aus C# in Hinblick auf die Objektorientierung. F# entstand 2005 aus einem Forschungsprojekt von Don Syme bei,,microsoft Research. Seit Visual Studio 2010 wird F# offiziell als.net-sprache unterstützt und von der Microsoft Entwicklungsabteilung gepflegt. 2 Übersicht Sprachelemente 2.1 Allgemein In F# gibt es keine echten Variablen sondern lediglich Funktionen mit gleichem Rückgabewert. Solche werden mit dem let-operator definiert. F# ist streng typisiert und nutzt Typinferenz, sodass Programmierer die Datentypen nicht explizit angeben müssen. l e t pi = Listing 1: let Hierbei handelt es sich demnach nicht um eine Variablenzuweisung, sondern eine Funktionsdefinition, weswegen folgende Anweisung nicht kompiliert werden kann. l e t pi = l e t pi = 3 Listing 2: let Möchte man ein ähnliches Verhalten nutzen, wie man es von Variablen gewohnt ist, muss man dies beim ersten Deklarieren kenntlich machen. l e t mutable x = 0 x < 5 p r i n t f n %i x // g i b t 5 aus Listing 3: let Auch das Referenzieren von Variablen ist möglich. 1
2 l e t x = r e f 0 // x h a e l t e i n e Referenz auf einen I n t e g e r x := 5 // 5 wird x zugewiesen p r i n t f n %i! x // mit! wird d i e Referenz d e r e f e r e n z i e r t Listing 4: let Gewöhnliche Funktionen und Funktionen höherer Ordnung (,,Currying ) werden auch mit let definiert. // Typinferenz : Fuer a und b werden f l o a t s erwartet l e t d u r c h s c h n i t t a b = ( a + b ) / 2. 0 l e t quadrat x = x x l e t zwei mal f x = f ( f x ) // Aufruf z.b. : zwei mal quadrat 5 Listing 5: let Rekursive Funktionen tragen das Schlüsselwort rec. Außerdem bietet F# das für funktionale Sprachen übliche,,pattern Matching. l e t rec f a k u l t a e t n = match n with 0 > 1 > n f a k u l t a e t ( n 1) Listing 6: let rec Elemente wie Lambda-Ausdrücke,,,List Comprehension, Monaden (in F# computation expressions) und,,closures als Möglichkeit für Kapselung sind in F# ebenfalls enthalten. 2.2 Objektorientierung Wie bereits erwähnt, bietet F# auch an, objektorientiert zu arbeiten und dabei Klassen zu definieren. Mit dem Schlüsselwort type definiert man eine Klasse. Eine Klasse ist also ein abstrakter Datentyp (vgl. type in Haskell). type Konto (nummer : int, b e s i t z e r : s t r i n g ) = l e t mutable guthaben = 0 // I n s t a n z v a r i a b l e n member x. Nummer = nummer member x. B e s i t z e r = b e s i t z e r member x. Guthaben = guthaben end // Instanzmethoden member x. Einzahlen ( betrag ) = guthaben < guthaben + betrag member x. Auszahlen ( betrag ) = guthaben < guthaben betrag Listing 7: Klassen Neue Objekte und weitere Funktionen, die mit Objekten der neuen Klasse arbeiten, werden dann wie folgt definiert. l e t homer = new Konto (12345, Homer ) l e t marge = new Konto (67890, Marge ) 2
3 l e t ueberweisen betrag ( q u e l l e : Konto ) ( z i e l : Konto ) = q u e l l e. Auszahlen betrag z i e l. Einzahlen betrag l e t kontoinfo ( x : Konto ) = p r i n t f n Nummer : %i, B e s i t z e r : %s, Guthaben : %i \ x. Nummer x. B e s i t z e r x. Guthaben Listing 8: Erzeugen von Objekten & Methoden 3 Nebenläufigkeit 3.1 Nebenläufigkeit mit.net-bibliotheken In F# stehen die klassischen Mechanismen zum Erzeugen, Starten usw. von Threads durch die Einbindung der.net-bibliothek System.Threading jederzeit zur Verfügung. Dazu gehören auch die klassischen Methoden zum Synchronisieren von Threads (z.b. Semaphore) und das Sperren von Ressourcen. Bei diesem Verfahren obliegt es natürlich immer dem Programmierer, fehlerfrei zu programmieren, wie folgender Deadlock zeigt. l e t threada = new Thread ( fun ( ) > p r i n t f n ThreadA g e s t a r t e t l o c k resa ( fun ( ) > p r i n t f n Ressource A g e s p e r r t Thread. Sleep (100) // Tu etwas mit A l o c k stateb ( fun ( ) > p r i n t f n Ressource B g e s p e r r t ) ) p r i n t f n ThreadA f e r t i g ) l e t threadb = new Thread ( fun ( ) > p r i n t f n ThreadB g e s t a r t e t l o c k resb ( fun ( ) > p r i n t f n Ressource B g e s p e r r t Thread. Sleep (100) // Tu etwas mit B l o c k statea ( fun ( ) > p r i n t f n Ressource A g e s p e r r t ) ) p r i n t f n ThreadB f e r t i g ) threada. S t a r t ( ) threadb. S t a r t ( ) threada. Join ( ) threadb. Join ( ) Listing 9: Threads & Locks Die.NET-Runtime verfügt neben den klassischen Möglichkeiten über einen sog. Threadpool. In Abhängigkeit von der Maschine wird für jeden Prozess, der den Threadpool verwendet, ein statistisches Threadpool-Objekt der Klasse System.Threading.ThreadPool erzeugt, in dem von Anfang an mehrere Threads auf Aufgaben warten. Der Vorteil besteht darin, dass Threads nicht für jede parallele Berechnung unter einem aufwändig Kontextwechsel erzeugt werden müssen, sondern permanent zur Verfügung stehen und völlig eigenständig Aufgaben aus einer Warteschlange nehmen und ihre Ergebnisse als,,callbacks in einer weiteren Warteschlange ablegen. Für schwergewichtige Aufgaben, wie Benutzeroberflächen, bieten sich per Hand erzeugte Threads jedoch mehr an, da man über diesen expliziten Thread jederzeit volle Kontrolle hat, was bei Threads aus dem Threadpool nicht 3
4 möglich ist, wie z.b. das Abbrechen oder das einfache Abfragen mit Thread.Join(), ob der Thread fertig ist. 3.2 Asynchrone Workflows Asynchrone Workflows sind speziell in F# das Mittel für Parallelität. Sie geben dem Programmierer die Möglichkeit einen,,single-threaded Code mit minimalen Änderungen in einen,,multi-threaded Code zu ändern, indem man um den eigentlichen Code einen sogenannten async-block baut und der Rest von Kompiler bzw. der Laufzeitumgebung übernommen wird. Um zu verstehen, was passiert, wenn man Code in einem async-block ausführt, betrachten wir folgendes Beispiel. l e t task1 = async { r eturn 10+10} l e t task2 = async { r eturn 20+20} Async. Run ( Async. P a r a l l e l [ task1 ; task2 ] ) Listing 10: async Die Anweisung async {return 10+10} erzeugt ein Objekt des Typs Async<int>. Dieses Objekt stellt die asynchron durchzuführende Berechnung da. Die Anweisung Async.Parallel [task1; task2] fügt die beiden Objekte der Tasks task1 und task2 zu einem Objekt des Typs Async<int[]> zusammen, indem die beiden Tasks task1 und task2 innerhalb einer Monade (computation expression) als Aufträge in die Warteschlange des Threadpools gelegt werden. Die Anweisung Async.Run stößt nun den zusammengesetzten Task an, d.h.,,startet die Threads im Threadpool, wobei der Rückgabewert das Array [ 20; 40 ] als Callback aus dem Threadpool geliefert wird. Beginnen wir mit parallelen CPU Tasks als erstes größeres Beispiel. l e t rec f i b x = i f x <= 2 then 1 else f i b ( x 1) + f i b ( x 2) l e t f i b s = Async. P a r a l l e l [ f o r i in > async { return f i b ( i ) } ] > Async. RunSynchronously Listing 11: parallele CPU Tasks Hier werden parallel (und unabhängig von einander) die Fibonacci-Zahlen berechnet. Mit Async.RunSynchronously wird die gesamte asynchrone Berechung gestartet und es wird synchron auf das Ergebnis gewartet. Betrachten wir als zweites etwas größeres Beispiel das asynchrone Abrufen von Webseiten, also von asynchronen I/O Operationen. l e t asynchttp u r l = async { // Erzeuge Anfrage Objekt l e t req = WebRequest. Create ( u r l ) // Warte a u f Antwort, asynchron l e t! resp = req. AsyncGetResponse ( ) // Hol den Stream der Antwort und l i e s s ihn use stream = resp. GetResponseStream ( ) 4
5 use reader = new System. IO. StreamReader ( stream ) } // L i e s s den gesamten Stream, synchron return r eader. ReadToEnd ( ) Listing 12: asynchroner Webaufruf In der gezeigten Implementierung wird der Thread in dem Aufruf von AsyncGetResponse() pausiert bzw. suspended. Die Magie hinter asynchronen I/O Operationen liegt in dem let!-operator. Man kann sich den Operator etwa wie folgt vorstellen:,,führe die Anweisung aus und warte auf das Ergebnis. Falls nötig (und bei Webaufrufen nahezu immer), pausiere den Thread und gib ihn im Threadpool wieder frei. Sobald die Antwort ankommt, führe die ausstehenden Anweisungen als einen,,callback aus. Der use bzw. use!-operator ist mit let zu vergleichen. Der Unterschied liegt darin, dass use die gebundenen Objekte mit dem Ende des Gültigkeitsbereichs wieder freigibt. Werfen wir nun noch einen Blick auf die Kombination von parallelen CPU Tasks und asynchronen I/O Operationen. l e t asynchttp u r l = async { l e t req = WebRequest. Create ( u r l ) use! resp = req. AsyncGetResponse ( ) use stream = resp. GetResponseStream ( ) use reader = new StreamReader ( stream ) return r eader. ReadToEnd ( ) } l e t s i t e s = [ http : / /www. bing. com ; http : / /www. g o o gle. com ; http : / /www. yahoo. com ; http : / /www. search. com ] l e t g e t S i t e s = Async. P a r a l l e l [ f o r s i t e in s i t e s > asynchttp s i t e ] > Async. RunSynchronously Listing 13: paralleler asynchroner Webaufruf Wir sehen hiermit, dass wir auch parallel mehrere asynchrone I/O Operationen ausführen können, indem für jede Webseite mittels Async.Parallel ein Thread aus dem Threadpool genommen wird. Beim Warten auf req.asyncgetresponse() wird der Thread im Threadpool wieder freigegeben. Sobald die Antwort der Webseite ankommt wird mit einem,,callback die Ausführung fortgesetzt, indem wieder ein Thread (muss nicht der selbe sein) aus dem Threadpool genommen wird. Mit Async.RunSynchronously starten wir wiederum die ganze Berechnung und warten synchron auf das Ergebnis. Das Limit für solche Ausführungen liegt einzig und allein an der Rechenleistung der Maschine und kann bei genügend Rechenleistung bei mehreren Tausend liegen. 3.3,,Message Passing mit MailboxProcessor Bisher haben wir gesehen, wie man einfachen asynchronen,,,multi-threaded Code schreibt. Was wir bisher noch nicht berücksichtigt haben, ist die Interprozesskommunikation, mit der verschiedenene parallel ausgeführte Prozesse bzw. Tasks miteinander über Nachrichten kommunizieren können. Das Prinzip nennt sich,,message passing und ist besonders durch die Programmiersprache Erlang bekannt. 5
6 In F# funktioniert das Prinzip des,,message passing über den MailboxProcessor, den man sich in der Tat wie ein Postfach vorstellen kann. Es können Nachrichten gesendet und empfangen werden. Wie das funktioniert, zeigt folgendes einfaches Beispiel. l e t agent = MailboxProcessor. S t a r t ( fun inbox > async { l e t count = r e f 0 while true do l e t! msg = inbox. Receive ( ) count :=! count + 1 p r i n t f n Nachricht %d : %s! count msg }) agent. Post ( Hallo! ) Listing 14: MailboxProcessor Der fun-operator ist an dieser Stelle neu und siganlisiert einen Lambda-Ausdruck, der hier allerdings einfach wie eine anonyme Funktion verwendet wird und die aus der Initialisierung des Postfachs mit MailboxProcessor.Start entstandene inbox an den async-block weiterreicht. Technisch gesehen handelt es sich hierbei um eine Art,,Agent. Der,,Agent kümmert sich in dem Beispiel gewissermaßen autonom um das Verarbeiten der Nachrichten. Mit agent.post( Hallo! ) wird eine Nachricht an den Agenten geschickt und entsprechend des obigen Codes ausgegeben. Der Thread wird auch hier solange pausiert, bis inbox.receive() eine Antwort liefert. Schauen wir uns folgendes Beispiel an, in dem der Agent eine Nachricht geschickt bekommt und darauf Antwortet. type Message = s t r i n g AsyncReplyChannel<s t r i n g > l e t agent = MailboxProcessor<Message >. S t a r t ( fun inbox > async { }) l e t! ( message, replychannel ) = inbox. Receive ( ) ; i f ( message = Stop ) then replychannel. Reply ( Stop ) // Stoppe d i e Ausfuehrung... else replychannel. Reply ( Du hast +message+ gesendet. ) // Fuehre irgendetwas aus... l e t messagehandler input = p r i n t f n Sende : %s input l e t r e p l y = agent. PostAndReply ( fun replychannel > input, replychannel ) i f ( r e p l y <> Stop ) then p r i n t f n Antwort : %s r e p l y else p r i n t f n Gestoppt! Listing 15: MailboxProcessor Um eine Antwort zu erhalten, müssen wir einen AsyncReplyChannel,,mitschicken. Dazu bauen wir uns einen neuen Datentyp Message, der aus einem String und eben jenem AsyncReplyChannel besteht, der in diesem Fall mit string parametrisiert ist und damit auch nur Strings als Antwort geschickt werden dürfen. Der messagehandler kann 6
7 Nachrichten verschicken und erwartet die entsprechende Antwort. Zum Schicken einer Nachricht, auf die eine Antwort erwartet wird, benutzen wir agent.postandreply. Innerhalb dieses Aufrufs bauen wir mittels einer anonymen Funktion die Message, die an den agent geschickt werden soll. Anschließend warten wir (diesmal synchron, also blockierend) auf die Antwort vom agent und verarbeiten sie entsprechend weiter. Der agent pausiert bis die Nachricht eingetroffen ist und verarbeitet sie dann seinerseits weiter. Ein solches,,pattern kann man wunderbar als abstraktes Mittel zur Synchronisation bei der Interprozesskommunikation und insbesondere bei der verteilten Interprozeskommunikation nutzen, um so Probleme wie bspw.,,dining Philosophers zu lösen ohne Gefahr zu laufen,,deadlocks und der gleichen zu erzeugen. 7
8 Quellen Syme, D. (2007): [ ] Syme, D. (2010): [ ] Syme, D. (2010): [ ] Sharp Programming [ ] Sharp %28programming language%29 [ ] [ ] [ ] 8
Objektorientierte 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
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
MehrAbamsoft Finos im Zusammenspiel mit shop to date von DATA BECKER
Abamsoft Finos im Zusammenspiel mit shop to date von DATA BECKER Abamsoft Finos in Verbindung mit der Webshopanbindung wurde speziell auf die Shop-Software shop to date von DATA BECKER abgestimmt. Mit
MehrVerhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...
PIWIN I Kap. 8 Objektorientierte Programmierung - Vererbung 31 Schlüsselwort: final Verhindert, dass eine Methode überschrieben wird public final int holekontostand() {... Erben von einer Klasse verbieten:
MehrWas meinen die Leute eigentlich mit: Grexit?
Was meinen die Leute eigentlich mit: Grexit? Grexit sind eigentlich 2 Wörter. 1. Griechenland 2. Exit Exit ist ein englisches Wort. Es bedeutet: Ausgang. Aber was haben diese 2 Sachen mit-einander zu tun?
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 Wichtig... Mittags keine Pommes... Praktikum A 230 C 207 (Madeleine + Esma) F 112 F 113
MehrObjektorientierte Programmierung
Objektorientierte Programmierung 1 Geschichte Dahl, Nygaard: Simula 67 (Algol 60 + Objektorientierung) Kay et al.: Smalltalk (erste rein-objektorientierte Sprache) Object Pascal, Objective C, C++ (wiederum
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
MehrSecond Steps in eport 2.0 So ordern Sie Credits und Berichte
Second Steps in eport 2.0 So ordern Sie Credits und Berichte Schritt 1: Credits kaufen, um Zugangscodes generieren zu können Wählen Sie Credits verwalten und klicken Sie auf Credits kaufen. Geben Sie nun
MehrDas große ElterngeldPlus 1x1. Alles über das ElterngeldPlus. Wer kann ElterngeldPlus beantragen? ElterngeldPlus verstehen ein paar einleitende Fakten
Das große x -4 Alles über das Wer kann beantragen? Generell kann jeder beantragen! Eltern (Mütter UND Väter), die schon während ihrer Elternzeit wieder in Teilzeit arbeiten möchten. Eltern, die während
MehrARCO Software - Anleitung zur Umstellung der MWSt
ARCO Software - Anleitung zur Umstellung der MWSt Wieder einmal beschert uns die Bundesverwaltung auf Ende Jahr mit zusätzlicher Arbeit, statt mit den immer wieder versprochenen Erleichterungen für KMU.
MehrDas RSA-Verschlüsselungsverfahren 1 Christian Vollmer
Das RSA-Verschlüsselungsverfahren 1 Christian Vollmer Allgemein: Das RSA-Verschlüsselungsverfahren ist ein häufig benutztes Verschlüsselungsverfahren, weil es sehr sicher ist. Es gehört zu der Klasse der
MehrWhitepaper. Produkt: combit Relationship Manager 7. combit Relationship Manager email-rückläufer Script. combit GmbH Untere Laube 30 78462 Konstanz
combit GmbH Untere Laube 30 78462 Konstanz Whitepaper Produkt: combit Relationship Manager 7 combit Relationship Manager email-rückläufer Script Inhalt Einleitung 3 Notwendige Anpassungen 3 crm Solution
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
MehrÜbung: Verwendung von Java-Threads
Übung: Verwendung von Java-Threads Ziel der Übung: Diese Übung dient dazu, den Umgang mit Threads in der Programmiersprache Java kennenzulernen. Ein einfaches Java-Programm, das Threads nutzt, soll zum
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
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
MehrLieber SPAMRobin -Kunde!
Lieber SPAMRobin -Kunde! Wir freuen uns, dass Sie sich für SPAMRobin entschieden haben. Mit diesem Leitfaden möchten wir Ihnen die Kontoeinrichtung erleichtern und die Funktionen näher bringen. Bitte führen
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.
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
Mehr5.2 Neue Projekte erstellen
5.2 Neue Projekte erstellen Das Bearbeiten von bestehenden Projekten und Objekten ist ja nicht schlecht wie aber können Sie neue Objekte hinzufügen oder gar völlig neue Projekte erstellen? Die Antwort
MehrKurzanleitung /Kompalitätstest Barcode. Sie haben zwei Möglichkeiten unsere Barcode/Strichcodes für Ihren eigenen stationären Einzelhandel zu nutzen.
Kurzanleitung /Kompalitätstest Barcode Bitte drucken Sie diese Anleitung aus. Sie haben zwei Möglichkeiten unsere Barcode/Strichcodes für Ihren eigenen stationären Einzelhandel zu nutzen. 1. Möglichkeit
MehrDie YouTube-Anmeldung
Die YouTube-Anmeldung Schön, dass Sie sich anmelden wollen, um den Ortsverein Kirchrode-Bemerode-Wülferode zu abonnieren, d.h. regelmäßig Bescheid zu bekommen, wenn der Ortsverein etwas Neues an Videos
MehrInhaltsverzeichnis. 1. Empfängerübersicht / Empfänger hinzufügen 2. Erstellen eines neuen Newsletters / Mailings 3. Versand eines Newsletters
Erste Schritte Wir heißen Sie herzlich willkommen im Newslettersystem der Euroweb Internet GmbH. Hier erfahren Sie die grundlegendsten Informationen, die Sie zur Erstellung und zum Versand eines Newsletters
MehrWebinar-Partnerprogramm
Webinar-Partnerprogramm Mit dem Webinar-Partnerprogramm können Sie noch mehr Teilnehmer für Ihre Webinare gewinnen. Nutzen Sie Ihr Netzwerk, um Ihre Webinare noch besser zu vermarkten. Nutzen Sie das Webinar-Partnerprogramm,
Mehr40-Tage-Wunder- Kurs. Umarme, was Du nicht ändern kannst.
40-Tage-Wunder- Kurs Umarme, was Du nicht ändern kannst. Das sagt Wikipedia: Als Wunder (griechisch thauma) gilt umgangssprachlich ein Ereignis, dessen Zustandekommen man sich nicht erklären kann, so dass
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
MehrDokumentation zur Versendung der Statistik Daten
Dokumentation zur Versendung der Statistik Daten Achtung: gem. 57a KFG 1967 (i.d.f. der 28. Novelle) ist es seit dem 01. August 2007 verpflichtend, die Statistikdaten zur statistischen Auswertung Quartalsmäßig
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
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
MehrFachdidaktik der Informatik 18.12.08 Jörg Depner, Kathrin Gaißer
Fachdidaktik der Informatik 18.12.08 Jörg Depner, Kathrin Gaißer Klassendiagramme Ein Klassendiagramm dient in der objektorientierten Softwareentwicklung zur Darstellung von Klassen und den Beziehungen,
MehrZimmertypen. Zimmertypen anlegen
Zimmertypen anlegen Hier legen Sie Ihre Zimmer an, damit sie auf der Homepage dargestellt werden und online buchbar gemacht werden können. Wobei wir ausdrücklich darauf hinweisen möchten, dass es ganz
MehrÜbung 9 - Lösungsvorschlag
Universität Innsbruck - Institut für Informatik Datenbanken und Informationssysteme Prof. Günther Specht, Eva Zangerle Besprechung: 15.12.2008 Einführung in die Informatik Übung 9 - Lösungsvorschlag Aufgabe
MehrAUSBILDUNG eines OBEDIENCE HUNDES
Beginners, CH (Box, Carré), 15 m entfernt Beginners, CH ab 2017 FCI - 1 (Box, Carré), 15 m entfernt mit Platz, 15 m FCI - 2 FCI - 3 mit Platz und Abrufen, 23 m Voransenden in einen Kreis, dann in ein Viereck
MehrLeichte-Sprache-Bilder
Leichte-Sprache-Bilder Reinhild Kassing Information - So geht es 1. Bilder gucken 2. anmelden für Probe-Bilder 3. Bilder bestellen 4. Rechnung bezahlen 5. Bilder runterladen 6. neue Bilder vorschlagen
MehrSWE5 Übungen zu Software-Engineering
1 Übungen zu Software-Engineering 1) Klassen und Objekte 2) Telefonanlage 3) Objekt- und Klassendiagramme 4) Assoziationen 5) Telefonanlage (Erweiterung) 6) Fahrzeuge 7) Familien 2 Aufgabe 1: Klassen und
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
MehrSummenbildung in Bauteiltabellen mit If Then Abfrage
Summenbildung in Bauteiltabellen mit If Then Abfrage Die in Bauteiltabellen ausgelesenen Werte lassen sich in jeder Spalte als Summe berechnen. So können selbstverständlich die Flächen der in der Tabelle
MehrSteganos Secure E-Mail Schritt für Schritt-Anleitung für den Gastzugang SCHRITT 1: AKTIVIERUNG IHRES GASTZUGANGS
Steganos Secure E-Mail Schritt für Schritt-Anleitung für den Gastzugang EINLEITUNG Obwohl inzwischen immer mehr PC-Nutzer wissen, dass eine E-Mail so leicht mitzulesen ist wie eine Postkarte, wird die
MehrDieser Ablauf soll eine Hilfe für die tägliche Arbeit mit der SMS Bestätigung im Millennium darstellen.
Millennium SMS Service Schnellübersicht Seite 1 von 6 1. Tägliche Arbeiten mit der SMS Bestätigung Dieser Ablauf soll eine Hilfe für die tägliche Arbeit mit der SMS Bestätigung im Millennium darstellen.
MehrErstellen einer digitalen Signatur für Adobe-Formulare
Erstellen einer digitalen Signatur für Adobe-Formulare (Hubert Straub 24.07.13) Die beiden Probleme beim Versenden digitaler Dokumente sind einmal die Prüfung der Authentizität des Absenders (was meist
MehrDatenübernahme von HKO 5.9 zur. Advolux Kanzleisoftware
Datenübernahme von HKO 5.9 zur Advolux Kanzleisoftware Die Datenübernahme (DÜ) von HKO 5.9 zu Advolux Kanzleisoftware ist aufgrund der von Update zu Update veränderten Datenbank (DB)-Strukturen in HKO
MehrOutlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang
sysplus.ch outlook - mail-grundlagen Seite 1/8 Outlook Mail-Grundlagen Posteingang Es gibt verschiedene Möglichkeiten, um zum Posteingang zu gelangen. Man kann links im Outlook-Fenster auf die Schaltfläche
MehrFax einrichten auf Windows XP-PC
Um ein PC Fax fähig zu machen braucht man einen sogenannten Telefon Anschluss A/B das heißt, Fax funktioniert im Normalfall nur mit Modem nicht mit DSL. Die meisten neueren PCs haben ein Modem integriert.
MehrRegistrierung am Elterninformationssysytem: ClaXss Infoline
elektronisches ElternInformationsSystem (EIS) Klicken Sie auf das Logo oder geben Sie in Ihrem Browser folgende Adresse ein: https://kommunalersprien.schule-eltern.info/infoline/claxss Diese Anleitung
MehrSichere E-Mail Anleitung Zertifikate / Schlüssel für Kunden der Sparkasse Germersheim-Kandel. Sichere E-Mail. der
Sichere E-Mail der Nutzung von Zertifikaten / Schlüsseln zur sicheren Kommunikation per E-Mail mit der Sparkasse Germersheim-Kandel Inhalt: 1. Voraussetzungen... 2 2. Registrierungsprozess... 2 3. Empfang
MehrObjektorientierte Programmierung. Kapitel 12: Interfaces
12. Interfaces 1/14 Objektorientierte Programmierung Kapitel 12: Interfaces Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2012/13 http://www.informatik.uni-halle.de/ brass/oop12/
MehrPhysik & Musik. Stimmgabeln. 1 Auftrag
Physik & Musik 5 Stimmgabeln 1 Auftrag Physik & Musik Stimmgabeln Seite 1 Stimmgabeln Bearbeitungszeit: 30 Minuten Sozialform: Einzel- oder Partnerarbeit Voraussetzung: Posten 1: "Wie funktioniert ein
MehrSchritte 4. Lesetexte 13. Kosten für ein Girokonto vergleichen. 1. Was passt? Ordnen Sie zu.
Kosten für ein Girokonto vergleichen 1. Was passt? Ordnen Sie zu. a. die Buchung, -en b. die Auszahlung, -en c. der Dauerauftrag, - e d. die Überweisung, -en e. die Filiale, -n f. der Kontoauszug, - e
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
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
MehrNicht über uns ohne uns
Nicht über uns ohne uns Das bedeutet: Es soll nichts über Menschen mit Behinderung entschieden werden, wenn sie nicht mit dabei sind. Dieser Text ist in leicht verständlicher Sprache geschrieben. Die Parteien
MehrJeopardy and andere Quizformate im bilingualen Sachfachunterricht Tipps zur Erstellung mit Powerpoint
Bilingual konkret Jeopardy and andere Quizformate im bilingualen Sachfachunterricht Tipps zur Erstellung mit Powerpoint Moderner Unterricht ist ohne die Unterstützung durch Computer und das Internet fast
MehrInformatik Java-Programmierkurs im Rahmen der Berufs- u. Studienorientierung für Schüler. Joliot-Curie-Gymnasium GR 2010 Nico Steinbach
Informatik Java-Programmierkurs im Rahmen der Berufs- u. Studienorientierung für Schüler Joliot-Curie-Gymnasium GR 2010 Nico Steinbach 0. Organisatorisches Warum habt Ihr euch für den Kurs eingeschrieben?
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
MehrDas sogenannte Beamen ist auch in EEP möglich ohne das Zusatzprogramm Beamer. Zwar etwas umständlicher aber es funktioniert
Beamen in EEP Das sogenannte Beamen ist auch in EEP möglich ohne das Zusatzprogramm Beamer. Zwar etwas umständlicher aber es funktioniert Zuerst musst du dir 2 Programme besorgen und zwar: Albert, das
MehrIn diesem Tutorial lernen Sie, wie Sie einen Termin erfassen und verschiedene Einstellungen zu einem Termin vornehmen können.
Tutorial: Wie erfasse ich einen Termin? In diesem Tutorial lernen Sie, wie Sie einen Termin erfassen und verschiedene Einstellungen zu einem Termin vornehmen können. Neben den allgemeinen Angaben zu einem
MehrHIER GEHT ES UM IHR GUTES GELD ZINSRECHNUNG IM UNTERNEHMEN
HIER GEHT ES UM IHR GUTES GELD ZINSRECHNUNG IM UNTERNEHMEN Zinsen haben im täglichen Geschäftsleben große Bedeutung und somit auch die eigentliche Zinsrechnung, z.b: - Wenn Sie Ihre Rechnungen zu spät
MehrNina. bei der Hörgeräte-Akustikerin. Musterexemplar
Nina bei der Hörgeräte-Akustikerin Nina bei der Hörgeräte-Akustikerin Herausgeber: uphoff pr-consulting Alfred-Wegener-Str. 6 35039 Marburg Tel.: 0 64 21 / 4 07 95-0 info@uphoff-pr.de www.uphoff-pr.de
MehrBedienungsanleitung für den SecureCourier
Bedienungsanleitung für den SecureCourier Wo kann ich den SecureCourier nach der Installation auf meinem Computer finden? Den SecureCourier finden Sie dort, wo Sie mit Dateien umgehen und arbeiten. Bei
MehrWiderrufsbelehrung der Free-Linked GmbH. Stand: Juni 2014
Widerrufsbelehrung der Stand: Juni 2014 www.free-linked.de www.buddy-watcher.de Inhaltsverzeichnis Widerrufsbelehrung Verträge für die Lieferung von Waren... 3 Muster-Widerrufsformular... 5 2 Widerrufsbelehrung
MehrVorkurs C++ Programmierung
Vorkurs C++ Programmierung Klassen Letzte Stunde Speicherverwaltung automatische Speicherverwaltung auf dem Stack dynamische Speicherverwaltung auf dem Heap new/new[] und delete/delete[] Speicherklassen:
MehrInhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER
AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER Inhalt 1 Einleitung... 1 2 Einrichtung der Aufgabe für die automatische Sicherung... 2 2.1 Die Aufgabenplanung... 2 2.2 Der erste Testlauf... 9 3 Problembehebung...
MehrEinrichten eines Postfachs mit Outlook Express / Outlook bis Version 2000
Folgende Anleitung beschreibt, wie Sie ein bestehendes Postfach in Outlook Express, bzw. Microsoft Outlook bis Version 2000 einrichten können. 1. Öffnen Sie im Menü die Punkte Extras und anschließend Konten
MehrINDEX. Öffentliche Ordner erstellen Seite 2. Offline verfügbar einrichten Seite 3. Berechtigungen setzen Seite 7. Öffentliche Ordner Offline
Öffentliche Ordner Offline INDEX Öffentliche Ordner erstellen Seite 2 Offline verfügbar einrichten Seite 3 Berechtigungen setzen Seite 7 Erstelldatum 12.08.05 Version 1.1 Öffentliche Ordner Im Microsoft
MehrJava: Vererbung. Teil 3: super() www.informatikzentrale.de
Java: Vererbung Teil 3: super() Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und IMMER zuerst den Konstruktor der Elternklasse auf! Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und
MehrAZK 1- Freistil. Der Dialog "Arbeitszeitkonten" Grundsätzliches zum Dialog "Arbeitszeitkonten"
AZK 1- Freistil Nur bei Bedarf werden dafür gekennzeichnete Lohnbestandteile (Stundenzahl und Stundensatz) zwischen dem aktuellen Bruttolohnjournal und dem AZK ausgetauscht. Das Ansparen und das Auszahlen
MehrLeitfaden zur ersten Nutzung der R FOM Portable-Version für Windows (Version 1.0)
Leitfaden zur ersten Nutzung der R FOM Portable-Version für Windows (Version 1.0) Peter Koos 03. Dezember 2015 0 Inhaltsverzeichnis 1 Voraussetzung... 3 2 Hintergrundinformationen... 3 2.1 Installationsarten...
MehrEnigmail Konfiguration
Enigmail Konfiguration 11.06.2006 Steffen.Teubner@Arcor.de Enigmail ist in der Grundkonfiguration so eingestellt, dass alles funktioniert ohne weitere Einstellungen vornehmen zu müssen. Für alle, die es
Mehrinfach Geld FBV Ihr Weg zum finanzellen Erfolg Florian Mock
infach Ihr Weg zum finanzellen Erfolg Geld Florian Mock FBV Die Grundlagen für finanziellen Erfolg Denn Sie müssten anschließend wieder vom Gehaltskonto Rückzahlungen in Höhe der Entnahmen vornehmen, um
MehrÜberblick. Lineares Suchen
Komplexität Was ist das? Die Komplexität eines Algorithmus sei hierbei die Abschätzung des Aufwandes seiner Realisierung bzw. Berechnung auf einem Computer. Sie wird daher auch rechnerische Komplexität
MehrCOMPUTER MULTIMEDIA SERVICE
Umgang mit Web-Zertifikaten Was ist ein Web-Zertifikat? Alle Webseiten, welche mit https (statt http) beginnen, benötigen zwingend ein Zertifikat, welches vom Internet-Browser eingelesen wird. Ein Web
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
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
MehrTYPO3-Zusatzkurs für www.durlacher.de
TYPO3-Zusatzkurs für www.durlacher.de In diesem Zusatzkurs (Kapitel 14 bis 18) gehen wir die Dinge an, die im alltäglichen Umgang mit TYPO3 auf www.durlacher.de hilfreich sind. Verschieben, Löschen, Blind
MehrGrundlagen der höheren Mathematik Einige Hinweise zum Lösen von Gleichungen
Grundlagen der höheren Mathematik Einige Hinweise zum Lösen von Gleichungen 1. Quadratische Gleichungen Quadratische Gleichungen lassen sich immer auf die sog. normierte Form x 2 + px + = 0 bringen, in
MehrAnleitung zum Online-Monitoring für Installateure
Anleitung zum Online-Monitoring für Installateure Herzlich Willkommen zum neuen Online-Monitoring von SENEC.IES! Diese Anleitung erläutert Ihnen als Installateur die Einrichtung des Online-Monitorings
MehrInkrementelles Backup
Inkrementelles Backup Im Gegensatz zu einer kompletten Sicherung aller Daten werden bei einer inkrementellen Sicherung immer nur die Dateien gesichert, die seit der letzten inkrementellen Sicherung neu
MehrErklärung zum Internet-Bestellschein
Erklärung zum Internet-Bestellschein Herzlich Willkommen bei Modellbahnbau Reinhardt. Auf den nächsten Seiten wird Ihnen mit hilfreichen Bildern erklärt, wie Sie den Internet-Bestellschein ausfüllen und
MehrBeschreibung E-Mail Regeln z.b. Abwesenheitsmeldung und Weiterleitung
Outlook Weiterleitungen & Abwesenheitsmeldungen Seite 1 von 6 Beschreibung E-Mail Regeln z.b. Abwesenheitsmeldung und Weiterleitung Erstellt: Quelle: 3.12.09/MM \\rsiag-s3aad\install\vnc\email Weiterleitung
MehrNach der Anmeldung im Backend Bereich landen Sie im Kontrollzentrum, welches so aussieht:
Beiträge erstellen in Joomla Nach der Anmeldung im Backend Bereich landen Sie im Kontrollzentrum, welches so aussieht: Abbildung 1 - Kontrollzentrum Von hier aus kann man zu verschiedene Einstellungen
MehrAnmeldung, Registrierung und Elternkontrolle des MEEP!-Tablet-PC
Anmeldung, Registrierung und Elternkontrolle des MEEP!-Tablet-PC Starten Sie in den Browsern Chrome oder Safari die Seite: www.mymeep.de Erstellen Sie Ihren persönlichen Account unter Eltern Login neu,
MehrNeue Schriftarten installieren
.DIE Neue Schriftarten installieren Die Informationen zu jeder Schriftart (Font) sind in jeweils einer Datei untergebracht, der sog. Font-Datei mit der Endung.ttf ttf steht für True Type Font und bedeutet,
MehrSich einen eigenen Blog anzulegen, ist gar nicht so schwer. Es gibt verschiedene Anbieter. www.blogger.com ist einer davon.
www.blogger.com Sich einen eigenen Blog anzulegen, ist gar nicht so schwer. Es gibt verschiedene Anbieter. www.blogger.com ist einer davon. Sie müssen sich dort nur ein Konto anlegen. Dafür gehen Sie auf
MehrEasyWk DAS Schwimmwettkampfprogramm
EasyWk DAS Schwimmwettkampfprogramm Arbeiten mit OMEGA ARES 21 EasyWk - DAS Schwimmwettkampfprogramm 1 Einleitung Diese Präsentation dient zur Darstellung der Zusammenarbeit zwischen EasyWk und der Zeitmessanlage
MehrÄnderungsbeschreibung HWS32 SEPA Überweisungen
Änderungsbeschreibung HWS32 SEPA Überweisungen Inhaltsverzeichnis SEPA ÜBERWEISUNGEN... 2 INSTALLATION... 2 ÄNDERUNGEN IN DER ADRESSVERWALTUNG... 4 ÄNDERUNGEN IM RECHNUNGSEINGANGSBUCH... 5 DIE ÜBERWEISUNGSPROGRAMME
Mehr1. Man schreibe die folgenden Aussagen jeweils in einen normalen Satz um. Zum Beispiel kann man die Aussage:
Zählen und Zahlbereiche Übungsblatt 1 1. Man schreibe die folgenden Aussagen jeweils in einen normalen Satz um. Zum Beispiel kann man die Aussage: Für alle m, n N gilt m + n = n + m. in den Satz umschreiben:
MehrKurze Anleitung zum Guthaben-Aufladen bei. www.blau.de
Kurze Anleitung zum Guthaben-Aufladen bei www.blau.de Seite 1 von 8 Inhaltsverzeichnis 1 blau.de aufrufen... 3 2 Ihr Konto bei blau.de... 4 2.1 Aufladen über das Internet... 5 2.2 Aufladen direkt am Mobiltelefon
MehrAnlegen eines SendAs/RecieveAs Benutzer unter Exchange 2003, 2007 und 2010
1 von 6 Anlegen eines SendAs/RecieveAs Benutzer unter Exchange 2003, 2007 und 2010 ci solution GmbH 2010 Whitepaper Draft Anleitung Deutsch Verfasser: ci solution GmbH 2010 Manfred Büttner 16. September
MehrDHBW Karlsruhe, Vorlesung Programmieren, Klassen (2)
DHBW Karlsruhe, Vorlesung Programmieren, Klassen (2) Aufgabe 3 Bankkonto Schreiben Sie eine Klasse, die ein Bankkonto realisiert. Attribute für das Bankkonto sind der Name und Vorname des Kontoinhabers,
MehrACDSee 2009 Tutorials: Rote-Augen-Korrektur
In diesem Tutorial lernen Sie den schnellsten Weg zum Entfernen roter Augen von Ihren Fotos mit der Rote-Augen- Korrektur. Die Funktion zur Reduzierung roter Augen ist ein Untermenü des Bearbeitungsmodus.
MehrGrundlagen verteilter Systeme
Universität Augsburg Insitut für Informatik Prof. Dr. Bernhard Bauer Wolf Fischer Christian Saad Wintersemester 08/09 Übungsblatt 3 12.11.08 Grundlagen verteilter Systeme Lösungsvorschlag Aufgabe 1: a)
MehrFlowFact Alle Versionen
Training FlowFact Alle Versionen Stand: 29.09.2005 Rechnung schreiben Einführung Wie Sie inzwischen wissen, können die unterschiedlichsten Daten über verknüpfte Fenster miteinander verbunden werden. Für
MehrZählen von Objekten einer bestimmten Klasse
Zählen von Objekten einer bestimmten Klasse Ziel, Inhalt Zur Übung versuchen wir eine Klasse zu schreiben, mit der es möglich ist Objekte einer bestimmten Klasse zu zählen. Wir werden den ++ und den --
MehrAnleitung. So erstellen Sie eine Familienkarte für Ihre Gemeinde. 1. Google-Konto eröffnen
Anleitung So erstellen Sie eine Familienkarte für Ihre Gemeinde 1. Google-Konto eröffnen Zunächst benötigen Sie ein Konto bei Google, falls Sie nicht bereits eines haben: Gehen Sie dazu auf Google.com
Mehr.htaccess HOWTO. zum Schutz von Dateien und Verzeichnissen mittels Passwortabfrage
.htaccess HOWTO zum Schutz von Dateien und Verzeichnissen mittels Passwortabfrage Stand: 21.06.2015 Inhaltsverzeichnis 1. Vorwort...3 2. Verwendung...4 2.1 Allgemeines...4 2.1 Das Aussehen der.htaccess
MehrLernwerkstatt 9 privat- Freischaltung
Was tun, wenn mein Rechner immer wieder die Freischaltung der Lernwerkstatt 9 privat verliert und ich die Ursache dafür nicht finden kann? Normalerweise genügt es, genau eine einzige online-freischaltung
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
MehrAnwendungsbeispiele. Neuerungen in den E-Mails. Webling ist ein Produkt der Firma:
Anwendungsbeispiele Neuerungen in den E-Mails Webling ist ein Produkt der Firma: Inhaltsverzeichnis 1 Neuerungen in den E- Mails 2 Was gibt es neues? 3 E- Mail Designs 4 Bilder in E- Mails einfügen 1 Neuerungen
Mehr