CGI Programmierung mit Ha. Markus Schwarz



Ähnliche Dokumente
Einführung in die Programmierung

Informatik Seminar im Sommersemester 2001

teischl.com Software Design & Services e.u. office@teischl.com

Java Kurs für Anfänger Einheit 5 Methoden

Funktionale Programmierung

Einführung in die Java- Programmierung

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

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

4. Jeder Knoten hat höchstens zwei Kinder, ein linkes und ein rechtes.

4 Aufzählungen und Listen erstellen

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

Funktionale Programmierung mit Haskell

Web-Kürzel. Krishna Tateneni Yves Arrouye Deutsche Übersetzung: Stefan Winter

Vorkurs C++ Programmierung

Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

Grundlagen von Python

WPF Steuerelemente Listbox, ComboBox, ListView,

Proxy. Krishna Tateneni Übersetzer: Stefan Winter

php Hier soll ein Überblick über das Erstellen von php Programmen gegeben werden. Inhaltsverzeichnis 1.Überblick Parameterübergabe...

Objektorientierte Programmierung OOP

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

ACHTUNG: Es können gpx-dateien und mit dem GP7 aufgezeichnete trc-dateien umgewandelt werden.

Einführung in die Java- Programmierung

2. Semester, 2. Prüfung, Lösung

Übungsblatt 3: Algorithmen in Java & Grammatiken

Professionelle Seminare im Bereich MS-Office

Klassenentwurf. Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? Objektorientierte Programmierung mit Java

M. Graefenhan Übungen zu C. Blatt 3. Musterlösung

Besonderheiten von C#

Leichte-Sprache-Bilder

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

R. Brinkmann Seite Schriftliche Übung Mathematik Stochastik II (Nachschreiber) Jan. 2007

Der Kalender im ipad

Einführung in die Programmierung für Wirtschaftsinformatik

Anleitung für IQES-Verantwortliche Persönliche Konten verwalten

WPF Bindung. Dr. Beatrice Amrhein

Javakurs 2013 Objektorientierung

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden.

AutoTexte und AutoKorrektur unter Outlook verwenden

Hilfedatei der Oden$-Börse Stand Juni 2014

Versand Etiketten / Endlosdruck

Standard-Kontaktformular

Der Gabelstapler: Wie? Was? Wer? Wo?

Felder. November 5, 2014

SAMMEL DEINE IDENTITÄTEN::: NINA FRANK :: :: WINTERSEMESTER 08 09

Anleitung OpenCms 8 Webformular Auswertung

Session Beans & Servlet Integration. Ralf Gitzel ralf_gitzel@hotmail.de

WhiteStarUML Tutorial

Um zusammenfassende Berichte zu erstellen, gehen Sie folgendermaßen vor:

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

kleines keyword brevier Keywords sind das Salz in der Suppe des Online Marketing Gordian Hense

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015

Die Excel Schnittstelle - Pro Pack

Anleitung zur Erstellung und Bearbeitung von Seiten in Typo3. Typo3. Anleitung. Wenpas Informatik

Java Einführung Collections

4. AUSSAGENLOGIK: SYNTAX. Der Unterschied zwischen Objektsprache und Metasprache lässt sich folgendermaßen charakterisieren:

Modellierung und Programmierung 1

Anwendertreffen 20./21. Juni

Erstellen der Barcode-Etiketten:

Erste Schritte. Lavid-F.I.S. Faktura. Erste Schritte

Typdeklarationen. Es gibt in Haskell bereits primitive Typen:

Dokumentation Externe Anzeige von Evento Web Dialogen

Kurzanleitung OOVS. Reseller Interface. Allgemein

Kurzeinführung Excel2App. Version 1.0.0

Operationalisierbare Qualitätskriterien für die Programmierung mit Erfahrungen aus PRÜ1 und PRÜ2

Vermeiden Sie es sich bei einer deutlich erfahreneren Person "dranzuhängen", Sie sind persönlich verantwortlich für Ihren Lernerfolg.

Bedienungsanleitung. Matthias Haasler. Version 0.4. für die Arbeit mit der Gemeinde-Homepage der Paulus-Kirchengemeinde Tempelhof

Algorithmen mit Python

Sich einen eigenen Blog anzulegen, ist gar nicht so schwer. Es gibt verschiedene Anbieter. ist einer davon.

Einführung in die Programmierung Laborübung bei Korcan Y. Kirkici. 12.Übung bis

AUTOMATISCHE -ARCHIVIERUNG. 10/07/28 BMD Systemhaus GmbH, Steyr Vervielfältigung bedarf der ausdrücklichen Genehmigung durch BMD!

GISA. Berechtigungs-Modul

Ein Blick voraus. des Autors von C++: Bjarne Stroustrup Conrad Kobsch

15 Optimales Kodieren

How-to: Webserver NAT. Securepoint Security System Version 2007nx

Facebook I-Frame Tabs mit Papoo Plugin erstellen und verwalten

QR Code. Christina Nemecek, Jessica Machrowiak

Tutorium Informatik 1. Aufgabe 2: Formatierte Ein- und Ausgabe

Best practice Einsatz von 2D-Codes in der Bibliothek

Delegatesund Ereignisse

Testklausur 1 zur Vorlesung. Modellierung und Programmierung I. Dr. Monika Meiler Zeit: 60 Minuten

4PLAN Managed Service HR Controlling Prozess und Leistungen

MORE Profile. Pass- und Lizenzverwaltungssystem. Stand: MORE Projects GmbH

OP-LOG

Innere Klassen in Java

Informatik für Schüler, Foliensatz 23 Konstruktor, String-Methode und Heldenklassse

Kapitel 4. Einführung in den Scannergenerator Flex. Einführung in den Scannergenerator Flex Wintersemester 2008/09 1 / 9

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck

Round Table 60: 859 Pakete für den Weihnachtskonvoi

Das Modul Hilfsmittel ermöglicht den Anwender die Verwaltung der internen Nachrichten, Notizen, Kontakte, Aufgaben und Termine.

USB-Stick mit SecurStick ohne Administratorrechte verschlüsseln

Interaktive Medien Richtlinien für das Codieren Version vom 18. Juni 2014

PHP - Projekt Personalverwaltung. Erstellt von James Schüpbach

SUB-ID- VERWALTUNG MIT GPP SETUP-GUIDE FÜR PUBLISHER

Um sich zu registrieren, öffnen Sie die Internetseite und wählen Sie dort rechts oben

Landes-Arbeits-Gemeinschaft Gemeinsam Leben Gemeinsam Lernen Rheinland-Pfalz e.v.

Evangelisieren warum eigentlich?

Das DAAD-PORTAL. Prozess der Antragstellung in dem SAPbasierten Bewerbungsportal des DAAD.

1 Vom Problem zum Programm

Transkript:

CGI Programmierung mit Ha Markus Schwarz

Überblick Was ist funktionale Programmierung Einführung in Haskell CGI-Programmierung mit Haskell Ein etwas größeres Beispiel

Was ist funktionale Programm Ein Programm ist eine Funktion Es gibt keine Zuweisungen Keine Seiteneffenkte kürzerer und besser wartbarer Code

Einführung in Haskell Funktionen Typen Listen Funktionen höherer Ordnung

Funktionen in Haskell Verknüpfung einer Definition mit einem Bezeich Bezeichner beginnen mit kleinem Buchstaben Bestehen meist aus einer Deklaration und einem Eine Funktionendeklaration hat beliebig viele fo meter und genau einen Typ

Beispiele für Funktionen antwort :: Int antwort = 42 inc :: Int -> Int inc n = n + 1 fac :: Int -> Int fac 0 = 1 fac n = n * fac (n - 1)

Typen Vordefinierte Datentypen (Char, Int, Bool,... ) Synonyme Algebraische Datentypen Klassen Im Gegensatz zu C ist Haskell streng typisiert

Datentypen (1) Synonyme type Name = String type Alter = Int type Person = (Name, Alter) Auzählungstypen data Monat = Jan Feb Mar Apr Mai Jun Aug Sep Okt Nov Dez

Datentypen (2) Produkttypen data Person = Teilnehmer Name Alter Es können beliebig viele Konstruktoren erzeu Können nur durch Konstruktor erzeugt werde Steigern die Lesbarkeit des Programmes

Listen in Haskell Elementarer Bestandteil der Sprache Definition einer Liste durch eckige Klammern. Elemente sind durch Kommata voneinander getr Viele polymorophe Listenfunktionen (++) :: [a] -> [a] -> [a] (!!) :: [a] -> Int -> a length :: [a] -> Int

Funktionen höherer Ordnu Funktionen als Parameter und/oder Rückgabew Umwandlung einer Liste von Integern in eine Liste mit Hilfe von map map :: (a -> b) -> [a] -> [b] alsstring :: Int -> String... map alsstring [1, 2, 42] => ["1", "2", "42"]

λ Notation Definition anonymer Funktionen Definition dort, wo sie benutzt werden map (\n -> n + 1) [1, 2, 3, 4]

CGI Programmierung mit Ha Hello World Abstraktion durch eine CGI Bibliothek Modellierung von HTML

(1) #! /usr/bin/runhugs Hello World (2) main :: IO() (3) main = putstr ("Content-type: text/html\n\n" ++ "<html>" ++ "<head><title>helloworld</title></head> ++ "<body><h1>hello World</h1></body>" ++ "</html>")

Die CGI Bibliothek von Erik M

Vorteile der Abstraktion Details des HTTP sind völlig transparent Dekodieren der Parameter erfolgt automatisch Lesbarere Skripte, da nur die für die Problemlös ten Bestandteile enthalten sind. Bessere Möglichkeiten der Portabilität

Modellierung von HTML data HTML = Text String Element Tag [(Name, Value)] [HTML] page :: String -> [(Name,Value)] -> [HTML] -> h :: Int ->String -> HTML hr :: HTML ul :: [[HTML]] -> HTML dl :: [(String,[HTML])] -> HTML href :: URL -> [HTML] -> HTML table :: String -> [String] -> [[ [HTML] ]] ->

Hello World (2) Anstatt direkt auf stdout zu schreiben, wird di benutzt. Modellieren der Seite mit Hilfe von Funktionen (1) import CGI hello :: HTML (2) hello = page "Hello World" [] [h1 "Hello Wo (3) main :: IO () (4) main = wrapper (\env -> do return (Content(

Umgebungsvariablen und Para Werden automatisch extrahiert und als eine Liste Wert Paaren übergeben Indizierter Zugriff ist möglich lookup "name" env Beispiel: Seite mit einer Liste alles Umgebungsv Parameter

Beispiel: Umgebungsvariab seite :: [(Name, Value)] -> HTML seite env = page "Umgebungsvariablen" [] [ h1 "Umgebungsvariablen", dl (map (\(dt,dd) -> (dt, [prose dd])) env) ] main :: IO () main = wrapper(\env -> do return (Content(seite en

Fallbeispiel: Damenproble Wie lassen sich n Damen auf einem n*n Schach nen, ohne daß sie sich bedrohen? Schwerpunkt liegt auf der Modellierung von HT Formular Ausgabe

Das Formular Folgende Parameter sollen einstellbar sein Die Anzahl der Damen (Listbox) Welche Lösung soll angezeit werden (Freitext Soll die Tabelle einen Rand haben oder nicht (R Welches Zeichen (Auswahlliste) Knopf zum Löschen der Eingaben Knopf zum Abschicken

Fazit Haskell ist für den Einsatz als CGI-Sprache gee Mit Hilfe von Biblotheken läßt sich die Arbeit ve Kodieren / Dekodieren von Request und Res Erzeugen von HTML Ungeeignet für Seiten mit viel Design

Vielen Dank Fragen Anmerkungen Kritik