Programmierparadigmen

Ähnliche Dokumente
Gliederung. Programmierparadigmen. Sprachmittel in SCHEME. Objekte: Motivation. Objekte in Scheme

Programmierparadigmen

GI Vektoren

Gliederung. Programmierparadigmen. Einführung in Prolog: Einführung in Prolog: Programmieren in Prolog. Einführung Syntax Regeln Listen Relationen

Grundlagen der Programmierung

Gliederung. Algorithmen und Datenstrukturen II. Problem: Längste gemeinsame Teilsequenz. Problem: Längste gemeinsame Teilsequenz

Die Programmiersprache C Eine Einführung

Programmtransformationen und Induktion in funktionalen Programmen

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

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

Einleitung Entwicklung in C Hello-World! Konstrukte in C Zusammenfassung Literatur. Grundlagen von C. Jonas Gresens

4 Schleifen und Dateien

Microcontroller / C-Programmierung Selbststudium Semesterwoche 1

S. d. I.: Programieren in C Folie 4-1. im Gegensatz zu Pascal gibt es in C kein Schlüsselwort "then"

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

Vorlesung Programmieren

Einführung in die funktionale Programmierung

Einstieg in die Informatik mit Java

zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme

Programmieren I + II Regeln der Code-Formatierung

Funktionale Programmierung mit Haskell

Typdeklarationen. Es gibt in Haskell bereits primitive Typen:

Grundlagen der Programmierung

Typklassen, Eingabe und Monaden In Haskell

Funktionale Programmierung mit Haskell

CGI Programmierung mit Ha. Markus Schwarz

Informatik Repetitorium SS Volker Jaedicke

Das erste C++ Programm

zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme

Programmierkurs Java

Grundlagen der Programmierung Prof. H. Mössenböck. 14. Schrittweise Verfeinerung

Programmiersprachen Einführung in C. Unser erstes C-Programm. Unser erstes C-Programm. Unser erstes C-Programm. Unser erstes C-Programm

Tutoraufgabe 1 (Zweierkomplement): Lösung: Programmierung WS16/17 Lösung - Übung 2

Informatik B von Adrian Neumann

Übersicht Programmablaufsteuerung

RO-Tutorien 3 / 6 / 12

Was bisher geschah. deklarative Programmierung. funktionale Programmierung (Haskell):

Musterlösung zur Übung 5

Übung Grundlagen der Programmierung. Übung 03: Schleifen. Testplan Testergebnisse

Elementare Datentypen in C++

Programmieren in Haskell Einführung

Funktionale Programmierung

Weitere Operationen auf neu deklarierten Typen: Begriffsklärung: Weitere Anwendungen der datatype-deklaration: Beispiel: (Aufzählungstypen)

Programmierung in Python

Schachtelung der 2. Variante (Bedingungs-Kaskade): if (B1) A1 else if (B2) A2 else if (B3) A3 else if (B4) A4 else A

Programmablaufplan. Vorkurs Informatik. Sommersemester Institut für Informatik Heinrich-Heine-Universität Düsseldorf

Grundlagen der Informatik I (Studiengang Medieninformatik)

Kapitel 7. Zusammengesetzte Datentypen, Vektoren, Zeichenketten

VBA-Programmierung: Zusammenfassung

Grundlagen. Die Komponenten eines C Programms. Das erste Programm

Einstieg in die Informatik mit Java

Informatik. Studiengang Chemische Technologie. Michael Roth WS 2012/2013. Hochschule Darmstadt -Fachbereich Informatik-

Der Datentyp String. Stringvariable und -vergleiche

Einstieg in die Informatik mit Java

Hochschule Darmstadt Informatik-Praktikum WS 2016/2017 WIng Bachelor 4. Aufgabenblatt Modularisierung, Funktionen, Unterprogramme

Nachname:... Vorname:... MatrNr.:... Klausur PR2. Erstellen Sie eine Struktur für eine Komplexe Zahl mit den Elementen real und imag vom Typ double.

FH München, FB 03 FA WS 06/07. Ingenieurinformatik. Name Vorname Matrikelnummer Sem.Gr.: Hörsaal Platz

Zeichendarstellung. Zeichen sind Zahlen (in C) Zeichen und switch

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

+ C - Formatierte Eingabe mit scanf()

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 : [ ]))?

public class SternchenRechteckGefuellt {

Werkzeuge zur Programmentwicklung

Einführung in die Programmierung für Wirtschaftsinformatik

Funktionale Programmierung

Einführung in die Programmierung Wintersemester 2011/12

Informatik I. Vorlesung an der Universität Bonn im Wintersemester 2001/02. Prof. Dr. Rainer Manthey Prof. Dr. Rainer Manthey Informatik I 1

Lua - Erste Schritte in der Programmierung

Programmierung WS12/13 Lösung - Übung 1 M. Brockschmidt, F. Emmes, C. Otto, T. Ströder

Funktionale Programmierung am Beispiel Haskell

ALP I Einführung in Haskell

Programmieren für Physiker: C++

6. Iteration (Schleifenanweisungen)

Java programmieren: Konsolen-Programme

1 Vom Problem zum Programm

5.4 Klassen und Objekte

Übungsblatt 7. Was ist die Ausgabe de facto? Entspricht die Ausgabe Ihren Erwartungen?

JavaScript. Dies ist normales HTML. Hallo Welt! Dies ist JavaScript. Wieder normales HTML.

Luis Kornblueh. May 22, 2014

Es ist für die Lösung der Programmieraufgabe nicht nötig, den mathematischen Hintergrund zu verstehen, es kann aber beim Verständnis helfen.

Dr. Monika Meiler. Inhalt

Übungen zu C++ Kapitel 1

6. Bearbeitung von Strings in C Bearbeitung von Strings in C

Programmier-Befehle - Woche 10

Funktionale Programmierung mit Haskell

CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik)

6 Ein- und Ausgabe. Bisher war unsere (Bildschirm-) Ausgabe leichtflüchtig (

Studentische Lösung zum Übungsblatt Nr. 7

JAVA - Methoden

PIWIN 1 Übung Blatt 5

Grundlagen der Programmierung

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

Programmieren in Haskell

II.1.1. Erste Schritte - 1 -

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

Tag 6. Module, benannte Funktionen und Rekursion

Funktionale Programmiersprachen

String s1, s2; Eine Zuweisung geschieht am einfachsten direkt durch Angabe des Strings eingeschlossen in doppelte Hochkommata:

Einführung Datentypen Verzweigung Schleifen. Java Crashkurs. Kim-Manuel Klein May 4, 2015

Excel Funktionen durch eigene Funktionen erweitern.

Transkript:

Programmierparadigmen D. Rösner Institut für Wissens- und Sprachverarbeitung Fakultät für Informatik Otto-von-Guericke Universität Magdeburg Sommer 2009, 22. Juni 2009, c 2009 D.Rösner D. Rösner PGP 2009... 1

Gliederung 1 D. Rösner PGP 2009... 2

I/O in Haskell: vordefinierte Funktionen für I/O aus dem Haskell prelude show: Wandeln von Werten in Strings show :: Show a => a -> String Prelude> show 3 "3" Prelude> show [3, 4] "[3,4]" relevante Literatur: s. u.a. [Hud00], Ch. 3.1, [Tho99], Ch. 18 D. Rösner PGP 2009... 4

I/O in Haskell: cont. getline: Einlesen einer Zeile als String getline :: IO String Prelude> getline eine Zeile eingelesen Prelude> getline [a,b] ++ [c,d,e] Prelude> D. Rösner PGP 2009... 5

I/O in Haskell: cont. getchar: Einlesen eines einzelnen Zeichens von Eingabe getchar :: IO Char Prelude> getchar a Prelude> getchar * Prelude> getchar ^ Prelude> D. Rösner PGP 2009... 6

I/O in Haskell: cont. putstr: Schreiben eines Strings auf Ausgabe putstr :: String -> IO () Prelude> putstr "das ist die Ausgabe" das ist die Ausgabe Prelude> putstr ("Zeile 1 gefolgt von" ++ "\n" ++ "Zeile 2") Zeile 1 gefolgt von Zeile 2 Prelude> D. Rösner PGP 2009... 7

I/O in Haskell: cont. IO a: I/O-Aktionen vom Typ a, d.h. ein Objekt vom Typ IO a ist ein Programm, das I/O durchführt und Wert vom Typ a liefert Spezialfall: IO () wenn nur die I/O-Aktionen, aber nicht der Rückgabewert interessieren der spezielle Haskell-Typ () enthält nur ein Element (ebenfalls () geschrieben) s.a. [Hud00], Ch. 3.1, [Tho99], Ch. 18 D. Rösner PGP 2009... 9

I/O in Haskell: cont. durch Funktionskomposition lassen sich komplexere I/O-Funktionen gewinnen Beispiel: Ausgabe eines Strings auf eine abgeschlossene Zeile putstrln :: String -> IO () putstrln = putstr. (++ "\n") Beispiel: Ausgabe eines bel. Objekts als String auf eine abgeschlossene Zeile print :: Show a => a -> IO () print = putstrln. show D. Rösner PGP 2009... 10

I/O in Haskell: die die erlaubt I/O-Aktionen zu sequentialisieren und durch I/O-Aktionen zurückgegebene Werte zu erfassen und an andere Aktionen weiterzugeben mögliche Sicht: ergibt eine auf Haskell aufgesetzte imperative Sprache (mit Kommandos und Zuweisungen) für I/O, die aber das funktionale Modell von Haskell nicht verletzt s.a. [Hud00], Ch. 3.1, [Tho99], Ch. 18 D. Rösner PGP 2009... 12

I/O in Haskell: die : einen String exakt 4 mal ausgeben put4times :: String -> IO () put4times str = do putstrln str putstrln str putstrln str putstrln str D. Rösner PGP 2009... 13

I/O in Haskell: die : einen String n mal ausgeben putntimes :: Int -> String -> IO () putntimes n str = if n <= 1 then putstrln str else do putstrln str putntimes (n-1) str put4times = putntimes 4 D. Rösner PGP 2009... 14

I/O in Haskell: die innerhalb eines do können Ergebnisse von I/O benannt und damit weiterverwendet werden Syntax: name <- wert_io_aktion Semantik: in nachfolgenden Ausdrücken kann mit der Wert der I/O-Aktion referenziert werden name D. Rösner PGP 2009... 15

I/O in Haskell: die Beispiel: lies zwei Zeilen ein und gib sie in vertauschter Reihenfolge und jeweils umgedreht aus reverse2lines :: IO () reverse2lines = do line1 <- getline line2 <- getline putstrln (reverse line2) putstrln (reverse line1) D. Rösner PGP 2009... 16

I/O in Haskell: die mit return kann veranlasst werden, dass aus einem do ein Wert eines bestimmten Typs zurückgegeben wird Beispiel: lies zwei Zeilen ein und gib sie mit einem Leerzeichen als Separator aneinandergehängt als einen String zurück concat2lines :: IO String concat2lines = do line1 <- getline line2 <- getline return (line1 ++ " " ++ line2) D. Rösner PGP 2009... 17

Literatur: I Paul Hudak. The Haskell School of Expression Learning Functional Programming through Multimedia. Cambridge University Press, Cambridge, UK, 2000. ISBN 0-521-64338-4. Simon Thompson. Haskell - The Craft of Functional Programming. Addison Wesley Longman Ltd., Essex, 1999. 2nd edition, ISBN 0-201-34275-8; Accompanying Web site: http://www.cs.ukc.ac.uk/people/staff/sjt/craft2e. D. Rösner PGP 2009... 18