Programmieren in Haskell Einführung



Ähnliche Dokumente
Programmieren in Haskell Einführung

Funktionale Programmierung mit Haskell

Einführung in die Programmierung

Computeranwendung und Programmierung (CuP)

Informatik Java-Programmierkurs im Rahmen der Berufs- u. Studienorientierung für Schüler. Joliot-Curie-Gymnasium GR 2010 Nico Steinbach

ecaros2 Installer procar informatik AG 1 Stand: FS 09/2012 Eschenweg Weiterstadt

Downloadfehler in DEHSt-VPSMail. Workaround zum Umgang mit einem Downloadfehler

Diana Lange. Generative Gestaltung Operatoren

Hochschule Darmstadt Informatik-Praktikum (INF 1) WS 2015/2016 Wirtschaftsingenieur Bachelor 5. Aufgabe Datenstruktur, Dateieingabe und -ausgabe

ALP I. Funktionale Programmierung

Hello World. Javakurs 2014, 1. Vorlesung. Sebastian Schuck. basierend auf der Vorlage von Arne Kappen. wiki.freitagsrunde.org. 3.

Übungen zur Vorlesung Einführung in die Informatik Wintersemester 2010/11

Scala kann auch faul sein

Anleitung zur Erstellung von Serienbriefen (Word 2003) unter Berücksichtigung von Titeln (wie Dr., Dr. med. usw.)

Einführung in die Programmierung (EPR)

Objektorientierte Programmierung

Anleitung für die Teilnahme an den Platzvergaben "Studio II, Studio IV und Studio VI" im Studiengang Bachelor Architektur SS15

Cisco AnyConnect VPN Client - Anleitung für Windows7

Typdeklarationen. Es gibt in Haskell bereits primitive Typen:

MASTER-BERATUNG. im Fach Kunstgeschichte

Programmieren in C. Macros, Funktionen und modulare Programmstruktur. Prof. Dr. Nikolaus Wulff

Klausur in Programmieren

Auswertung JAM! Fragebogen: Deine Meinung ist uns wichtig!

WS 2011/2012. Georg Sauthoff 1. November 10, 2011

Modellierung und Programmierung 1

Automatisierung ( Fernsteuerung ) von Excel unter Microsoft Windows Tilman Küpper (tilman.kuepper@hm.edu)

Einfache Arrays. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Kurze Einführung in die Programmiersprache C++ und in Root

Lest in der Gruppe die Themenübersicht durch. Wechselt euch ab beim Vorlesen.

Leichte-Sprache-Bilder

Datenbanken Microsoft Access 2010

* Leichte Sprache * Leichte Sprache * Leichte Sprache *

Installation OMNIKEY 3121 USB

Handbuch ECDL 2003 Modul 2: Computermanagement und Dateiverwaltung Der Task-Manager

Melde- und Veröffentlichungsplattform Portal (MVP Portal) Hochladen einer XML-Datei

Wir machen neue Politik für Baden-Württemberg

Schrittweise Anleitung zur Erstellung einer Angebotseite 1. In Ihrem Dashboard klicken Sie auf Neu anlegen, um eine neue Seite zu erstellen.

TeamSpeak3 Einrichten

Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2015/16. Vorbereitende Aufgaben

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag

Erwin Grüner

Objektorientierte Programmierung. Kapitel 0: Begrüssung

Die Programmiersprache C

CAQ Software für Ihr Qualitätsmanagement. Ablauf für die Erfassung der Fehler in der Fertigung

Grundlagen der Programmierung Prof. H. Mössenböck. 3. Verzweigungen

Informationsblatt Induktionsbeweis

Praktikum Ingenieurinformatik. Termin 2. Verzweigungen (if-else), printf und scanf, while-schleife

Datentypen. Agenda für heute, 4. März, Pascal ist eine streng typisierte Programmiersprache

Besucherbefragung im Jugend-Cafe am Markt in Rhauderfehn

Grundbegriffe der Informatik

2. ERSTELLEN VON APPS MIT DEM ADT PLUGIN VON ECLIPSE

1. Adressen für den Serienversand (Briefe Katalogdruck Werbung/Anfrage ) auswählen. Die Auswahl kann gespeichert werden.

Stand: Adressnummern ändern Modulbeschreibung

IT-Basics 2. DI Gerhard Fließ

Modul CTO Barcode für Windows Seite 1

Einführung in die Programmierung

Erste Schritte mit

Trusted Shops Kundenbewertungen für MAGENTO. 23. November Trusted Shops GmbH

Einführung in die Programmierung

Abwesenheitsnotiz im Exchange Server 2010

Fakultät für Mathematik und Naturwissenschften_Psychologie_Studienorganisation_jExam. jexam. Einschreibung & Bedienung

Installationsanleitung für den aeton CommunicaEtor. Version 1.1.0

Quelltextähnlichkeit

C-Probeklausur (Informatik 1; Umfang: C, Teil 1; SS07)

Microsoft Visual Studio Community 2015

1 Vom Problem zum Programm

HEINZ MARTIN PRINTSCREEN BETRIEBSANLEITUNG. Rev 2.11

Programmieren in Haskell Einstieg in Haskell

Fragen. f [ ] = [ ] f (x : y : ys) = x y : f ys f (x : xs) = f (x : x : xs) Wozu evaluiert f [1, 2, 3] (Abkürzung für f (1 : 2 : 3 : [ ]))?

zur Sage New Classic 2015

Handbuch für Easy Mail in Leicht Lesen

Java Kurs für Anfänger Einheit 4 Klassen und Objekte

Das Seminar ist eine Prüfungsleistung für Bachelor und Masterstudierende der Informatik!

Kurzanleitung LFB-Online für Schulen

Angaben zu einem Kontakt...1 So können Sie einen Kontakt erfassen...4 Was Sie mit einem Kontakt tun können...7

Einrichten einer mehrsprachigen Webseite mit Joomla (3.3.6)

Informatik 1 Tutorial

Version 0.3. Installation von MinGW und Eclipse CDT

Das sogenannte Beamen ist auch in EEP möglich ohne das Zusatzprogramm Beamer. Zwar etwas umständlicher aber es funktioniert

Einführung in die C++ Programmierung für Ingenieure

kurze Anleitung zur Nutzung der Kaspersky Rescue Disk 10 Inhalt

P&P Software - Adressexport an Outlook 05/29/16 14:44:26

Anleitung für die Online-Bewerbung über LSF auf Lehrveranstaltungen aller Lehramtsstudiengänge

Zählen von Objekten einer bestimmten Klasse

Funktionen Häufig müssen bestimmte Operationen in einem Programm mehrmals ausgeführt werden. Schlechte Lösung: Gute Lösung:

Weil Ihre Sicherheit für uns an erster Stelle steht.

Dokumentation IBIS Monitor

Anleitung Migration Dr. Tax 2.0 -> Dr. Tax Office 3.0. Office 3.0

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag

Woche 1: Was ist NLP? Die Geschichte des NLP.

Allgemeines. Verschiedene Sprachkonzepte C-Sprachfamilie C-ähnliche Programmiersprachen Allgemeines zu C. #include <stdio.h>

Objektorientiertes Programmieren mit Suse Linux

Dialyse Benchmark - Online so funktioniert s

Sie können diesen Service verwenden, um fast beliebig große Dateien auch über 2 GB zu versenden.

HolidayCheck HotelManager

Erste Schritte. Das Arduino-Board. Ihr Fundino-Board. Programmieren für Ingenieure Sommer Andreas Zeller, Universität des Saarlandes

Fachdidaktik der Informatik Jörg Depner, Kathrin Gaißer

I.1 Die Parrot Assemblersprache

Daten-Synchronisation zwischen dem ZDV-Webmailer und Outlook ( ) Zentrum für Datenverarbeitung der Universität Tübingen

Transkript:

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: psteffen@techfak.uni-bielefeld.de 2 Programmieren in Haskell

Hinweise zu den Vorlesungen Hinweise zu den Vorlesungen Algorithmen & Datenstrukturen I und Programmieren in Haskell findet Ihr hier: http://www.techfak.uni-bielefeld.de/ags/pi/lehre/audiws09/ Folien als pdf Übungsblätter Hinweise zur Haskell-Installation 3 Programmieren in Haskell

Programmiersprachen imperative Programmiersprachen: Pascal, C, Fortran,... Objektorientierte Programmiersprachen: Java, C++, Smalltalk, Delphi,... Funktionale Programmiersprachen: Haskell, Lisp, Miranda, Standard ML,... Logische Programmiersprachen: Prolog 4 Programmieren in Haskell

99 Bottles of Beer Die Internetseite http://99-bottles-of-beer.net/ enthält Programme in insgesamt 1304 unterschiedlichen Programmiersprachen, die den 99 Bottles of Beer-Song ausgeben. Ein guter Überblick über die verschiedenen Programmiersprachen! 5 Programmieren in Haskell

99 Bottles of Beer Text 99 bottles of beer on the wall, 99 bottles of beer. Take one down and pass it around, 98 bottles of beer on the wall. 98 bottles of beer on the wall, 98 bottles of beer. Take one down and pass it around, 97 bottles of beer on the wall. 97 bottles of beer on the wall, 97 bottles of beer. Take one down and pass it around, 96 bottles of beer on the wall.... 1 bottle of beer on the wall, 1 bottle of beer. Take one down and pass it around, no more bottles of beer on the wall. No more bottles of beer on the wall, no more bottles of beer. Go to the store and buy some more, 99 bottles of beer on the wall. 6 Programmieren in Haskell

99 Bottles of Beer Pascal 7 Programmieren in Haskell

99 Bottles of Beer C 8 Programmieren in Haskell

99 Bottles of Beer Java 9 Programmieren in Haskell

99 Bottles of Beer Haskell 10 Programmieren in Haskell

Haskell benannt nach dem amerikanischen Logiker Haskell B. Curry entwickelt seit 1987 funktionale Programmiersprache Haskell-Homepage: http://haskell.org/ Implementierungen: Haskell-Interpreter hugs: http://www.haskell.org/hugs/. Diesen verwenden wir in der Vorlesung und in den Übungen. Verfügbar für Unix, Linux, Windows, MacOSX. Haskell-Compiler ghc: http://www.haskell.org/ghc/ Haskell-Compiler nhc98: http://haskell.org/nhc98/ Jeweils zum kostenlosen Download. 11 Programmieren in Haskell

Warum Haskell? Haskell ist eine funktionale Programmiersprache. Für einen Informatiker ist es sinnvoll, unterschiedliche Arten von Programmiersprachen kennenzulernen. Haskell ist eine recht einfache Sprache. Man kann schnell relativ komplizierte Algorithmen formulieren, ohne viel von der Sprache gelernt zu haben. Haskell wird in Schulen kaum gelehrt. Insofern haben fast alle Studienanfänger die gleiche Ausgangsbasis. Haskell ist die am weitesten verbreitete funktionale Programmiersprache 12 Programmieren in Haskell

Ein bißchen Haskell Ein Haskell-Programm besteht aus einem oder mehreren Modulen Ein Modul besteht aus Typdeklarationen und Definitionen answer :: Int answer = 42 - - Typdeklaration - - Definition yes :: Bool yes = True greater :: Bool greater = (answer > 71) 13 Programmieren in Haskell

Im Hugs... Main> answer 42 Main> yes True Main> greater False 14 Programmieren in Haskell

Haskell-Module Haskell-Script: Endung.hs, Kommentare werden mit - - eingeleitet Literate-Haskell-Script: Endung.lhs, alles ist Kommentar, nur Zeilen, die mit > beginnen, gehören zum Programm. Zum Beispiel: Definition fuer answer: > answer :: Int > answer = 42 Defintion fuer yes: > yes :: Bool > yes = True Zwischen Kommentaren und Definitionen muss sich mindestens eine leere Zeile befinden. 15 Programmieren in Haskell

Bedienung vom hugs Aufrufen mit hugs <Modulname> Laden eines neuen Moduls: :l <Modulname> Erneutes Laden eines Moduls nach einer Änderung: :r Den Typ eines Ausdrucks anzeigen: :t <Ausdruck> Alle verfügbaren Kommandos anzeigen: :? hugs beenden: :q 16 Programmieren in Haskell

Haskell-Typen Typ Werte Int Ganze Zahlen, -2147483648-2147483648 Integer Ganze Zahlen, unbeschränkte Genauigkeit Float Fliesskommazahlen 32 bit Double Fliesskommazahlen 64 bit Bool Wahrheitswerte, True/False Char Zeichen, a, b,... String Zeichenketten, Haskell Int -> Int Funktionen 17 Programmieren in Haskell

Int vs. Integer > fakint :: Int -> Int > fakint 0 = 1 > fakint n = n * fakint (n-1) Main> fakint 20-2102132736 > fakinteger :: Integer -> Integer > fakinteger 0 = 1 > fakinteger n = n * fakinteger (n-1) Main> fakinteger 20 2432902008176640000 18 Programmieren in Haskell

Ein weiteres Beispiel square :: Int -> Int square x = x*x allequal :: Int -> Int -> Int -> Bool allequal n m p = (n==m) && (m==p) maxi :: Int -> Int -> Int maxi n m n >= m = n otherwise = m 19 Programmieren in Haskell

Im Hugs Main> square 5 25 Main> allequal 1 1 2 False Main> maxi 23 117 117 20 Programmieren in Haskell

Ein ziemlich ausgefeiltes Beispiel, das Ihr jetzt noch nicht verstehen müsst qsort :: (Ord a) => [a] -> [a] qsort [] = [] qsort (a:as) = qsort [b b <- as, b < a] ++ [a] ++ qsort [ b b <- as, b >= a] Main> qsort [1,4,2,2,4] [1,2,2,4,4] 21 Programmieren in Haskell

Listenkonkatenation Hugs.Base> [1,4,2] ++ [2,4] [1,4,2,2,4] Zeichenketten (Strings) sind auch Listen: Hugs.Base> "Haskell " ++ "ist " ++ "toll!" "Haskell ist toll!" Main> qsort "Haskell ist toll!" "!Haeikllllosstt" 22 Programmieren in Haskell

Coole Sachen mit Listen Die ersten 7 Elemente: Main> take 7 "Robert Giegerich" "Robert" Unendliche (!) Listen: Main> [1..] [1,2,3,4,5,6,7,8,9,10,11, Die ersten 4 natürlichen Zahlen (!!): Main> take 4 [1..] [1,2,3,4] 23 Programmieren in Haskell

Eure Aufgabe für diese Woche 1 Hugs installieren oder mit Techfak-Installation vertraut machen 2 Beispiele ausprobieren 24 Programmieren in Haskell