Was Sie schon immer über funktionale Programmierung wissen wollten, aber bisher nicht zu fragen wagten

Größe: px
Ab Seite anzeigen:

Download "Was Sie schon immer über funktionale Programmierung wissen wollten, aber bisher nicht zu fragen wagten"

Transkript

1 Programmieren in PPL Was Sie schon immer über funktionale Programmierung wissen wollten, aber bisher nicht zu fragen wagten

2 PPL at a glance KIV ist im wesentlichen in PPL programmiert PPL (proof programming language) ist eine ML artige funktionale Sprache PPL entstand zur Zeit von ML, Ende der 1980er PPL setzt die damals neuesten Konzepte um, beispielsweise eine virtuelle Maschine (SECD Maschine) und Bytecode, Polymorphie, Typisierung PPL Syntax ist ähnlich zu LISP (viele Klammern!) PPL ist statisch typisiert, Typen werden inferiert Beweisbar korrekte Software Sommersemester

3 Typinferenz PPL 1> (+ 3 ab ) Error: types of arguments INT x STRING do not match type of built in function (INT x INT -> INT) in (+ 3 ab) PPL 1> (list 2 ab ) Error: Expressions (2 n) must be of same type, but their types INT x STRING are not unifiable Beweisbar korrekte Software Sommersemester

4 Typinferenz PPL 1>(ppltype (list a b )) The type of (LIST a b) is (LIST (STRING)) The computed substitution is ((239428) (STRING)) [a, b] Beweisbar korrekte Software Sommersemester

5 PPL at a glance KIV hat kein Pattern matching fun and(true,true) t = true and(_,_) = false Modulkonzept für Code Automatisches Currying (+ 2) : nat nat Lazy evaluation Beweisbar korrekte Software Sommersemester

6 Ausdrücke inppl Ausdrücke werden interpretiert Konstante PPL 1> 3 3 PPL 1> Beweisbar korrekte Software Sommersemester

7 Ausdrücke inppl Ausdrücke werden interpretiert Konstante PPL 1> 3 3 PPL 1> Variable PPL 1> x Error: The identifier X has no definition PPL 1> (def (x 1)) PPL 1> x 1 Wert von x Fehlermeldung PPL 1> Beweisbar korrekte Software Sommersemester

8 Ausdrücke inppl Befehl oder Funktion (f param1 param2 paramn) param1 paramn sind wieder Ausdrücke Beweisbar korrekte Software Sommersemester

9 Funktionen KIV kennt 3 Arten von Funktionen Vordefinierte Funktionen, z.b. +, equal, emptyp Selbst definierte Funktionen Lambda Ausdrücke Wichtigstes Syntaxkonstrukt in KIV: Funktionsanwendung (fun param1 paramn) Funktionsname Ausdruck für Argument Beweisbar korrekte Software Sommersemester

10 Funktionen KIV kennt 3 Arten von Funktionen Vordefinierte Funktionen, z.b. +, equal, emptyp Selbst definierte Funktionen Lambda Ausdrücke Wichtigstes Syntaxkonstrukt in KIV: Funktionsanwendung (fun param1 paramn) Ausdruck für Argument Beispiel: PPL 1> (+ 3 4) Beweisbar korrekte Software Sommersemester

11 Funktionen Funktionsanwendungen können geschachtelt sein. Ein Argument kann eine Funktionsapplikation sein: PPL 1> (- 7 (+ 2 3)) Beweisbar korrekte Software Sommersemester

12 Funktionen Funktionsanwendungen können geschachtelt sein. Ein Argument kann eine Funktionsapplikation sein: PPL 1> (- 7 (+ 2 3)) Funktionen werden mit lambda definiert: (lambda (var1 varn) expr) Formaler Parameter Funktionsrumpf Beweisbar korrekte Software Sommersemester

13 Funktionen Funktionsanwendungen können geschachtelt sein. Ein Argument kann eine Funktionsapplikation sein: PPL 1> (- 7 (+ 2 3)) Funktionen werden mit lambda definiert: (lambda (var1 varn) expr) Formaler Parameter Funktionsrumpf Beispiel: PPL 1>((lambda (x y) (* x y)) 3 4) 12 Bisher keine Rekursion möglich Beweisbar korrekte Software Sommersemester

14 Definition von Werten def bindet beliebige PPL Objekte an Variablen (def (var1 expr1) def darf nicht (def (var2 expr2) innerhalb anderer PPL Ausdrücke auftreten (def(varn exprn) ) Beispiel: PPL 1> (def (x 3) PPL 1> x 3 PPL 1> y [T, F] (y (list t f))) Beweisbar korrekte Software Sommersemester

15 Definition von Werten Die Ausdrücke in def werden parallel ausgewertet: PPL 1> (def (x 0)) 0 PPL 1> (def (x 3) (y (+ 1 x))) PPL 1> y 1 PPL 1> x Beweisbar korrekte Software Sommersemester

16 Funktionsdefinitionen Auch Funktionsrümpfe werden mit def an Namen gebunden: PPL 1> (def (fun (lambda (x) (+ x x)))) PPL 1> (fun 3) 6 Wasfehlt noch: Rekursion! Dafürbenützt mandefrec: PPL 1> (defrec (fac (lambda (x) (if (= 0 x) 1 (* x (fac (- x 1))) )))) PPL 1> (fac 4) 24 PPL 1> def kann hier nicht anstelle von defrec verwendet werden, da sonst eine ggf. schon bestehende alte Definition von fac verwendet würde Beweisbar korrekte Software Sommersemester

17 Funktionsdefinitionen PPL ist higher order: Funktionen als Parameter und als Rückgabewerte sind zulässig: PPL 1> (defrec (filter (lambda (test alist)) (cond ((emptyp alist) (list)) ((test (car alist)) (cons (car alist) (filter test (cdr alist)))) (t (filter test (cdr alist))) ))) PPL 1> (filter (lambda (x) (< x 10)) (list )) [1, 2, 3] Beweisbar korrekte Software Sommersemester

18 Funktionsdefinitionen PPL ist higher order: Funktionen als Parameter und als Rückgabewerte sind zulässig: PPL 1> (defrec (filter (lambda (test alist)) (cond ((emptyp alist) (list)) ((test (car alist)) (cons (car alist) (filter test (cdr alist)))) (t (filter test (cdr alist))) ))) PPL 1> (filter (lambda (x) (< x 10)) (list )) [1, 2, 3] PPL 1> (def (mkplusx (lambda (x) (lambda (y) (+ x y))))) PPL 1> (mkplusx 2) << A FUNCTION OF TYPE (INT -> INT) >> PPL 1> ((mkplusx 2) 6) Beweisbar korrekte Software Sommersemester

19 Typausdrücke PPL ist stark typisiert. Jeder PPL Ausdruck hat einen Typ. Typfehler in Funktionsdefinitionen sind unmöglich. Typausdrücke sind: <typevar> := *t*, *t2*, *t3*, <typeexpr> := <typevar> (<typeconstructor> <typeexpr1> <typeexprn>) Typkonstruktoren sind: bool, string, int, tree, (0 stellig) list (1 stellig) Alle Listenelemente haben denselben Typ! mkpair (2 stellig) fun (n stellig) Beweisbar korrekte Software Sommersemester

20 Typausdrücke Einige Beispiele: Ausdruck Typ 3 (int) ab (mkpair 3 t) (lambda (x y) (+ x y)) (list 3) nil (lambda (x) x) (lambda (x) (cons x nil)) (string) (pair (int) (bool)) (fun (int)(int)(int)) (list (int)) (list *t*) (fun *t* *t*) (fun *t* (list *t*)) Beweisbar korrekte Software Sommersemester

21 Typausdrücke Einige Beispiele: Ausdruck Typ 3 (int) ab (mkpair 3 t) (lambda (x y) (+ x y)) (list 3) nil (lambda (x) x) (lambda (x) (cons x nil)) (string) (pair (int) (bool)) (fun (int)(int)(int)) (list (int)) (list *t*) (fun *t* *t*) (fun *t* (list *t*)) Pretty printing von Typen in KIV anders: (int) int (list (int)) int* (fun (int) (int)) int -> int (pair (int) (int)) [ int int ] Beweisbar korrekte Software Sommersemester

22 Vordefinierte Funktionen Es gibt in PPL eine Reihe von vordefinierten Funktionen, z.b.: +,,*, div <, >, = (list arg1,,argn), car, cdr, emptyp, member, append (mkpair arg1 arg2), fst, snd (and arg1 argn), or, not Details siehe Praktikumsdoku Beweisbar korrekte Software Sommersemester

23 Listenfunktionen Listen sind in PPL vordefiniert. Wichtige Funktionen: nil oder (list): Erzeugt leere Liste (cons expr1 expr2): Fügt expr1 vorne an Liste expr2 and (append expr1 expr2): Hängtexpr2 hinten an expr1 an (car expr): Liefert das erste Element von expr (cdr expr): Liefert die Restliste (ohne das erste Element) von expr Beweisbar korrekte Software Sommersemester

24 Beispiele zu Listen PPL 1> (car (cons 1 (list 2 3))) 1 PPL 1> (cdr (append (list 1 2) (list 3 4))) [2, 3, 4] PPL 1> (cons 2 nil) [2] PPL 1> (emptyp (cons t nil)) F PPL 1> Beweisbar korrekte Software Sommersemester

25 Kontrollstrukturen PPL kennt nur wenige Kontrollstrukturen: Fallunterscheidungen Definition lokaler Variablen backtracking Beweisbar korrekte Software Sommersemester

26 Fallunterscheidung Fallunterscheidungen werden mit cond oder if durchgeführt: (if condexpr thenexpr elseexpr) (cond (test1 expr1) (test2 expr2) (t exprn)) Bi Beispiele: il PPL 1> (if t (+ 2 3) 0) 5 PPL 1> (cond ((emptyp (list)) 0) 0 (t 1)) Beweisbar korrekte Software Sommersemester

27 Lokale Variablen Lokale Variablen werden mit let* deklariert: (let* ((var1 expr1) (var2 expr2) (varn exprn)) expr) Zuerst wird expr1 ausgewertet und das Ergebnis an var1 gebunden, dann expr2, in der var1 benutzt werden kann, usw. Das Ergebnis des let* ist expr Bei let (statt let*) werden expr1,,exprn parallel l ausgewertet Beweisbar korrekte Software Sommersemester

28 Lokale Variablen Beispiel: PPL 1> (let* ((x (+ 2 5)) (y (+ x x )) ) (+ y y )) 28 PPL 1> Beweisbar korrekte Software Sommersemester

29 backtracking KIV hat ein generisches System für Exceptions und Exception Handler Hier nur ein wichtiger Spezialfall für backtracking backtracking ist in PPL sehr leicht zu realisieren backtracking wird mit dem Kommando (fail) ausgelöst oder durch andere vordefinierte Funktionen wie makettree, refine, infer, match Die Fortsetzungsstelle für die Programmausführung wird mit orl dkl deklariert: (orl expr1 expr2) Wird zuerst ausgewertet Falls fail in expr1 wird expr2 ausgewertet Beweisbar korrekte Software Sommersemester

30 Backtracking Beispiele PPL 1> (orl 3 4) 3 PPL 1> (orl (fail) (+ 3 (fail)) 4) 4 PPL 1> (equal (fail) (fail)) Error: operation FAIL failed Beweisbar korrekte Software Sommersemester

31 Schnittstelle zum Dateisystem Laden von PPL Source Dateien: load und require PPL 1> (load ~/ppl/proplogic ) ;;; loading proplogic ;;; loaded proplogic exit in einer Datei beendet das Laden an dieser Stelle Schnittstelle zum Dateisystem: cd, pwd PPL 1> (cd ~ ) T PPL 1> (pwd) /home/dominik Beweisbar korrekte Software Sommersemester

32 Ein /Ausgabe Textausgabe: before PPL 1> (def (x (before x wird initialisiert 3))) x wird initialisiert PPL 1> (def (y (before (+ x 7) (+ x 1)))) 10 PPL 1> y Beweisbar korrekte Software Sommersemester

33 Ein /Ausgabe Mit read kann man Eingaben vom Benutzer verlangen (read x (<typ> expr)) Datentyp der Eingabe Ausdruck für das Ergebnis des read Beweisbar korrekte Software Sommersemester

34 Ein /Ausgabe Beispiel für read: PPL 1> (read x ((INT) x)) PPL 2> c c PPL 2> exit Error: no positive type case for read found in function <-PPL PPL 1> (def (y (read x ((INT) (* x x))))) PPL 2> 4 4 PPL 2> exit PPL 1> y Beweisbar korrekte Software Sommersemester

35 Formeln und Sequenzen inkiv Datentypen für Formeln (fl) und Sequenzen (seq) sind in KIV fest eingebaut Werden am PPL Prompt wie folgt eingegeben: gg 1. Durch direkte Konstruktion der PPL Datenstruktur PPL 1> (mkall (mkvl1 (list (mkxov (mksym s )) (mkxov (mksym s0 )))) (mkeq (mkxov (mksym s )) (mkxov (mksym s0 )))) all s, s0. s = s0 PPL1> 2. Über den Parser PPL 1> % all s, s0. s = s0 all s, s0. s = s0 PPL 1> Beweisbar korrekte Software Sommersemester

36 Formeln und Sequenzen inkiv Man benötigt allerdings zuerst eine geeignete Signatur Variante 1: Aus Projekt laden PPl 1> (resetsig) PPL 1> (def (dvg (load-devgraph-dir-til-ok (mkdirectory?/lib/basic )))) PPL 1> (add-specsig-dvg nat dvg) T PPL 1> % 0 +1 = = PPL 1> Top level Spezifikation, deren Signatur man nutzen will Beweisbar korrekte Software Sommersemester

37 Formeln und Sequenzen inkiv Variante 2: Eingabe am PPL Prompt PPL 1> % sorts s ; [s] PPL 1> % variables s, s0, s1 : s ; [s, s0, s1] Aus Formeln kann man Sequenzen bauen: PPL 1> (def (formel1 % not n = 0 +1 )) PPL 1> (def (formel2 % ex n. not (n = 0 +1) )) PPL 1> (def (seq (mkseq (mkfl1 (list formel1 % true )) (mkfl1 (list formel2))))) PPL 1> seq not n = 0 +1, true - ex n. not n = Beweisbar korrekte Software Sommersemester

38 Beweisbäume in KIV (Beweis )Bäume sind ebenfalls ein fest in KIV eingebauter Datentyp Ein Beweisbaum ist entweder Eine Sequenz PPL 1> (ppltype seq) The type of SEQ is (TREE) The computed substitution is NIL Beweisbar korrekte Software Sommersemester

39 Beweisbäume in KIV Ein zusammengesetzer Baum PPL 1> (ppltype dis_r) The type of DIS_R is (TREE) The computed substitution is NIL Beweisbar korrekte Software Sommersemester

40 Beweisregeln als Bäume Sequenzenkalkülregeln werden als Bäume repräsentiert Konklusion und Prämissen Pä enthalten hl Metavariablen, die durch pattern matching instanziiert werden Formeln: $phi, $psi Formellisten: $Gamma, $Delta Programme:$alpha, $ l h $beta Boolesche Werte: $epsilon Beweisbar korrekte Software Sommersemester

41 Matching von Formelpatterns PPL 1> (def (seq (mkseq (mkfl1 (list)) (mkfl1 (list % n = n or n < n ) )))) - n = n or n < n PPL 1> (concl dis_r) $Γ - $ϕ or $ψ, $Δ PPL 1> (matchp seq (concl dis_r)) T Beweisbar korrekte Software Sommersemester

42 Beweisbäume konstruieren Beweisbäume werden durch Regelanwendungen konstruiert In PPL heißt das, daß ein Beweisbaum an einer offenen Prämisse um einen Regelbaum erweitert wird. Dazu: 1. Matchen der Konklusion des Regelbaums und der Prämisse des Beweisbaums 2. Instanziieren der Prämisse des Regelbaums 3. Kombination der beiden Teilbäume zu einem neuen Baum Dies erledigt die Funktion refine e Beweisbar korrekte Software Sommersemester

43 refine PPL 1> seq - n = n or n < n PPL 1> (refine seq 1 dis_r) ** A TREE ** Beweisbar korrekte Software Sommersemester

44 refine PPL 1> (def (id (lambda (x) x))) PPL 1> (orl (refine (id seq) 1 neg_r) (before Pech gehabt seq)) Pech gehabt - n = n or n < n PPL 1> Beweisbar korrekte Software Sommersemester

45 refine und backtracking PPL 1> (orl (refine(id seq) 1 neg_r) (refine(id seq) 1 con_r) (refine(id seq) 1 imp_r) (refine(id seq) 1 dis_r)) ** A TREE ** PPL 1> Beweisbar korrekte Software Sommersemester

46 Fehlersuche PPL hat einen Debugger: Siehe Praktikumsdoku Funktionsaufrufe werden mit dem Tracer überwacht. Er gibt bei jedem Funktionsaufruf die Parameterwerte und beim Verlassen der Funktion den Ergebniswert aus. Aufruf erfolgt mit (trace fun) Will man nur manche Argumente sehen: (trace (fun 0 2 3)) Ergebnis ausgeben Das Tracen wird beendet mit (untrace fun) Aufrufparameter 2 und 3 ausgeben Beweisbar korrekte Software Sommersemester

47 Der Tracer PPL 1> (trace reverse-h) (reverse-h) PPL 1> (reverse (list 1)) +++ REVERSE-H first argument: [1] second argument: [] REVERSE-H first argument: [] second argument: [1] REVERSE-H [1] --- REVERSE-H [1] Beweisbar korrekte Software Sommersemester

Funktionale Programmierung

Funktionale Programmierung FP-1.0 Funktionale Programmierung Prof. Dr. Uwe Kastens SS 2013 Vorlesung Funktionale Programmierung SS 2013 / Folie 100 Begrüßung Functional Programming is Fun FP-1.1 Fun ctional Programming is Fun ctional

Mehr

Verarbeitung unendlicher Datenstrukturen Jetzt können wir z.b. die unendliche Liste aller geraden Zahlen oder aller Quadratzahlen berechnen:

Verarbeitung unendlicher Datenstrukturen Jetzt können wir z.b. die unendliche Liste aller geraden Zahlen oder aller Quadratzahlen berechnen: Verarbeitung unendlicher Datenstrukturen Jetzt können wir z.b. die unendliche Liste aller geraden Zahlen oder aller Quadratzahlen berechnen: take 1 0 ( f i l t e r ( fn x => x mod 2=0) nat ) ; val it =

Mehr

2.5 Listen. Kurzschreibweise: [42; 0; 16] Listen werden mithilfe von [] und :: konstruiert.

2.5 Listen. Kurzschreibweise: [42; 0; 16] Listen werden mithilfe von [] und :: konstruiert. 2.5 Listen Listen werden mithilfe von [] und :: konstruiert. Kurzschreibweise: [42; 0; 16] # let mt = [];; val mt : a list = [] # let l1 = 1::mt;; val l1 : int list = [1] # let l = [1;2;3];; val l : int

Mehr

26 Hierarchisch strukturierte Daten

26 Hierarchisch strukturierte Daten Algorithmik II Peter Wilke Sommersemester 2005 Teil III Funktionale Programmierung 26 Hierarchisch strukturierte Daten Peter Wilke Algorithmik II Sommersemester 2005 1 Peter Wilke Algorithmik II Sommersemester

Mehr

Programmieren in Haskell

Programmieren in Haskell Programmieren in Haskell Syntax und Semantik von Haskell Programmieren in Haskell 1 Was wir heute (und nächstes mal) machen Datentypdefinitionen Wertdefinitionen, Variablenbindungen Musterbindungen Funktionsbindungen

Mehr

Berechnungsschemata: Funktion als Parameter abstrahiert Operation im Schema, wird bei Aufruf des Schemas konkretisiert

Berechnungsschemata: Funktion als Parameter abstrahiert Operation im Schema, wird bei Aufruf des Schemas konkretisiert 6. Funktionen als Daten, Übersicht Orthogonales Typsystem: Funktionen sind beliebig mit anderen Typen kombinierbar Notation für Funktionswerte (Lambda-Ausdruck): fn (z,k) => z*k Datenstrukturen mit Funktionen

Mehr

Vorsicht bei redundanten und unvollständigen Matches!

Vorsicht bei redundanten und unvollständigen Matches! Vorsicht bei redundanten und unvollständigen Matches! # let n = 7;; val n : int = 7 # match n with 0 -> "null";; Warning: this pattern-matching is not exhaustive. Here is an example of a value that is

Mehr

Programmierkurs Python I

Programmierkurs Python I Programmierkurs Python I Michaela Regneri & Stefan Thater Universität des Saarlandes FR 4.7 Allgemeine Linguistik (Computerlinguistik) Winter 2010/11 Übersicht Kurze Wiederholung: while Sammeltypen (kurz

Mehr

Haskell, Typen, und Typberechnung. Grundlagen der Programmierung 3 A. Einige andere Programmiersprachen. Typisierung in Haskell

Haskell, Typen, und Typberechnung. Grundlagen der Programmierung 3 A. Einige andere Programmiersprachen. Typisierung in Haskell Haskell, Typen, und Typberechnung Grundlagen der Programmierung 3 A Typen, Typberechnung und Typcheck Prof. Dr. Manfred Schmidt-Schauß Ziele: Haskells Typisierung Typisierungs-Regeln Typ-Berechnung Milners

Mehr

Name und Syntax Was passiert? Anmerkungen / Erklärungen

Name und Syntax Was passiert? Anmerkungen / Erklärungen LISP Liste Version 1.4 A. = Ausdruck; L. = Liste; Z. = Zahl Überprüfen usw. (member ) Wenn A. in L. vorhanden ist, gibt LISP alles zurück, was nach dem entsprechenden Atom kommt (einschließlich

Mehr

Einfache Ausdrücke Datentypen Rekursive funktionale Sprache Franz Wotawa Institut für Softwaretechnologie wotawa@ist.tugraz.at

Einfache Ausdrücke Datentypen Rekursive funktionale Sprache Franz Wotawa Institut für Softwaretechnologie wotawa@ist.tugraz.at Inhalt SWP Funktionale Programme (2. Teil) Einfache Ausdrücke Datentypen Rekursive funktionale Sprache Franz Wotawa Institut für Softwaretechnologie wotawa@ist.tugraz.at Interpreter für funktionale Sprache

Mehr

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

Was bisher geschah. deklarative Programmierung. funktionale Programmierung (Haskell): Was bisher geschah deklarative Programmierung funktional: Programm: Menge von Termgleichungen, Term Auswertung: Pattern matsching, Termumformungen logisch: Programm: Menge von Regeln (Horn-Formeln), Formel

Mehr

Beispiele: (Funktionen auf Listen) (3) Bemerkungen: Die Datenstrukturen der Paare (2) Die Datenstrukturen der Paare

Beispiele: (Funktionen auf Listen) (3) Bemerkungen: Die Datenstrukturen der Paare (2) Die Datenstrukturen der Paare Beispiele: (Funktionen auf Listen) (3) Bemerkungen: 5. Zusammenhängen der Elemente einer Liste von Listen: concat :: [[a]] -> [a] concat xl = if null xl then [] else append (head xl) ( concat (tail xl))

Mehr

C++ Teil 2. Sven Groß. 16. Apr IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Apr / 22

C++ Teil 2. Sven Groß. 16. Apr IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Apr / 22 C++ Teil 2 Sven Groß IGPM, RWTH Aachen 16. Apr 2015 Sven Groß (IGPM, RWTH Aachen) C++ Teil 2 16. Apr 2015 1 / 22 Themen der letzten Vorlesung Hallo Welt Elementare Datentypen Ein-/Ausgabe Operatoren Sven

Mehr

SmallTalk - Eine kurze Einführung

SmallTalk - Eine kurze Einführung SmallTalk - Eine kurze Einführung Andreas Lochbihler Lehrstuhl Programmierparadigmen Universität Karlsruhe 15. Juni 2009 SmallTalk Entwickelt seit Anfang der 70er bei XEROX PARC Alan Kay, Dan Ingalls,

Mehr

Funktionale Programmierung mit Haskell

Funktionale Programmierung mit Haskell Funktionale Programmierung mit Haskell Dr. Michael Savorić Hohenstaufen-Gymnasium (HSG) Kaiserslautern Version 20120622 Überblick Wichtige Eigenschaften Einführungsbeispiele Listenerzeugung und Beispiel

Mehr

Methoden und Funktionen in Scala

Methoden und Funktionen in Scala Methoden und Funktionen in Scala Kapitel 11 und 12 des Buches 1 Jede Methode hat einen Typ Für die folgende Methode def square(v: Int) = v*v erhalten wir von der Scala-Shell die Rückmeldung square: (Int)Int

Mehr

WS 2011/2012. Georg Sauthoff 1. October 18, 2011

WS 2011/2012. Georg Sauthoff 1. October 18, 2011 in in WS 2011/2012 Georg 1 AG Praktische Informatik October 18, 2011 1 gsauthof@techfak.uni-bielefeld.de Neue Übungsgruppen in neue Übungsgruppen neue Tutoren Sprechstunden in GZI-Arbeitsraum (V2-240)

Mehr

Um nicht immer den Strukturnamen verwenden zu müssen, kann man auch alle Definitionen einer Struktur auf einmal sichtbar machen:

Um nicht immer den Strukturnamen verwenden zu müssen, kann man auch alle Definitionen einer Struktur auf einmal sichtbar machen: Öffnen von Strukturen Um nicht immer den Strukturnamen verwenden zu müssen, kann man auch alle Definitionen einer Struktur auf einmal sichtbar machen: open P a i r s ; opening Pairs type a Pair = a * a

Mehr

7 Funktionen. 7.1 Definition. Prototyp-Syntax: {Speicherklasse} {Typ} Name ({formale Parameter});

7 Funktionen. 7.1 Definition. Prototyp-Syntax: {Speicherklasse} {Typ} Name ({formale Parameter}); S. d. I.: Programieren in C Folie 7-1 7 Funktionen 7.1 Definition Prototyp-Syntax: Speicherklasse Typ Name (formale Parameter); der Funktions-Prototyp deklariert eine Funktion, d.h. er enthält noch nicht

Mehr

Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny

Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny 7. Funktionen Einleitung Nach dem Prinzip Divide and Conquer bietet es sich an, größere Aufgaben in kleinere Teile zu unterteilen. Anweisungsblöcke,

Mehr

Grundprinzipien der funktionalen Programmierung

Grundprinzipien der funktionalen Programmierung Grundprinzipien der funktionalen Programmierung Funktionen haben keine Seiteneffekte Eine Funktion berechnet einen Ausgabewert der nur von den Eingabewerten abhängt: 12 inputs + output 46 34 2 Nicht nur

Mehr

Funktionales Programmieren in Python

Funktionales Programmieren in Python Wintersemester 2008/2009 1 Funktionen sind Objekte 2 lambda Funktionen 3 apply 4 map 5 zip 6 filter 7 reduce 8 List Comprehension Funktionales Programmieren Wer nicht funktional programmiert, programmiert

Mehr

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

JavaScript. Dies ist normales HTML. Hallo Welt! Dies ist JavaScript. Wieder normales HTML. JavaScript JavaScript wird direkt in HTML-Dokumente eingebunden. Gib folgende Zeilen mit einem Texteditor (Notepad) ein: (Falls der Editor nicht gefunden wird, öffne im Browser eine Datei mit der Endung

Mehr

Programmieren in Haskell Programmiermethodik

Programmieren in Haskell Programmiermethodik Programmieren in Haskell Programmiermethodik Peter Steffen Universität Bielefeld Technische Fakultät 12.01.2011 1 Programmieren in Haskell Bisherige Themen Was soll wiederholt werden? Bedienung von hugs

Mehr

Theorem Proving. Software Engineering in der Praxis. Prädikatenlogik. Software Engineering in der Praxis Wintersemester 2006/2007

Theorem Proving. Software Engineering in der Praxis. Prädikatenlogik. Software Engineering in der Praxis Wintersemester 2006/2007 Seite 1 Theorem Proving Prädikatenlogik Seite 2 Gliederung Warum Theorembeweisen? Wie funktioniert Theorembeweisen? Wie kann mir das Werkzeug KIV dabei helfen? Seite 3 Warum Theorembeweisen? Wie kann man

Mehr

Deklarationen in C. Prof. Dr. Margarita Esponda

Deklarationen in C. Prof. Dr. Margarita Esponda Deklarationen in C 1 Deklarationen Deklarationen spielen eine zentrale Rolle in der C-Programmiersprache. Deklarationen Variablen Funktionen Die Deklarationen von Variablen und Funktionen haben viele Gemeinsamkeiten.

Mehr

Programmierung 1 (Wintersemester 2015/16) Wiederholungstutorium Lösungsblatt 11 (Parser II)

Programmierung 1 (Wintersemester 2015/16) Wiederholungstutorium Lösungsblatt 11 (Parser II) Fachrichtung 6.2 Informatik Universität des Saarlandes Tutorenteam der Vorlesung Programmierung 1 Programmierung 1 (Wintersemester 2015/16) Wiederholungstutorium Lösungsblatt 11 (Parser II) Hinweis: Dieses

Mehr

Allgemeine Hinweise: TECHNISCHE UNIVERSITÄT MÜNCHEN. Name Vorname Studiengang Matrikelnummer. Hörsaal Reihe Sitzplatz Unterschrift

Allgemeine Hinweise: TECHNISCHE UNIVERSITÄT MÜNCHEN. Name Vorname Studiengang Matrikelnummer. Hörsaal Reihe Sitzplatz Unterschrift TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Lehrstuhl für Sprachen und Beschreibungsstrukturen WS 2008/09 Einführung in die Informatik 2 Klausur Prof. Dr. Helmut Seidl, T. M. Gawlitza, S. Pott,

Mehr

Funktionale Programmiersprachen

Funktionale Programmiersprachen Funktionale Programmiersprachen An den Beispielen Haskell und Erlang Übersicht Programmiersprachen λ-kalkül Syntax, Definitionen Besonderheiten von funktionalen Programmiersprache, bzw. Haskell Objektorientierte

Mehr

Kontrollstrukturen Blöcke / Schleifen / Bedingungen

Kontrollstrukturen Blöcke / Schleifen / Bedingungen Kontrollstrukturen Blöcke / Schleifen / Bedingungen 1 Einfache Anweisungen und Blöcke einfache Anweisung abgeschlossen mit Semikolon ; typische Fälle: o Deklaration, Zuweisung, Funktionsaufruf Sonderfall

Mehr

Proseminar Funktionales Programmieren. Stephan Kreutzer

Proseminar Funktionales Programmieren. Stephan Kreutzer Proseminar Funktionales Programmieren Die Programmiersprache LISP Stephan Kreutzer Teil I: Funktionales Programmieren Imperative Sprachen Imperative Sprachen: Befehlsorientiert Imperative Sprachen orientieren

Mehr

Funktionen in JavaScript

Funktionen in JavaScript Funktionen in JavaScript Eine Funktion enthält gebündelten Code, der sich in dieser Form wiederverwenden lässt. Mithilfe von Funktionen kann man denselben Code von mehreren Stellen des Programms aus aufrufen.

Mehr

Vorkurs C++ Programmierung

Vorkurs C++ Programmierung Vorkurs C++ Programmierung Funktionen Rückblick Operatoren logische Verknüpfungen Zusammengesetzte Operatoren ( Zuweisungsoperatoren ) Kontrollstrukturen Bedingte Anweisungen (if-abfrage, switch-konstrukt)

Mehr

Crashkurs Haskell Mentoring WiSe 2016/17. Anja Wolffgramm Freie Universität Berlin

Crashkurs Haskell Mentoring WiSe 2016/17. Anja Wolffgramm Freie Universität Berlin Crashkurs Haskell Mentoring WiSe 2016/17 Anja Wolffgramm Freie Universität Berlin 02/11/2016 , Inhalt Kommandozeile Haskell installieren & starten Ein 1. Haskell-Programm Funktionsdefinition Primitive

Mehr

Interpreter - Gliederung

Interpreter - Gliederung Institut für Informatik Ludwig-Maximilian Universität Interpreter - Gliederung Programmiersprache Syntax Konkrete Syntax Abstrakter Syntax Baum (Abstrakte Syntax) Parser Syntaktische Struktur einer Sprache

Mehr

Programmier-Befehle - Woche 10

Programmier-Befehle - Woche 10 Funktionen Rekursion Selbstaufruf einer Funktion Jeder rekursive Funktionsaufruf hat seine eigenen, unabhängigen Variablen und Argumente. Dies kann man sich sehr gut anhand des in der Vorlesung gezeigten

Mehr

ALP I Einführung in Haskell

ALP I Einführung in Haskell ALP I Einführung in Haskell WS 2012/2013 Was ist Haskell? Haskell ist eine rein Funktionale Programmiersprache mit einer nach Bedarf Auswertung-Strategie oder "Lazy Evaluation". Was bedeutet rein funktional?

Mehr

Funktionale Programmierung

Funktionale Programmierung Funktionale Programmierung Jörg Kreiker Uni Kassel und SMA Solar Technology AG Wintersemester 2011/2012 2 Teil II Typen mit Werten und Ausdruck, sogar listenweise 3 Haskell Programme Programm Module ein

Mehr

Funktionale Programmierung mit Haskell. Jan Hermanns

Funktionale Programmierung mit Haskell. Jan Hermanns Funktionale Programmierung mit Haskell Jan Hermanns 1 Programmiersprachen imperativ deklarativ konventionell OO logisch funktional Fortran Smalltalk Prolog Lisp C Eiffel ML Pascal Java Haskell 2 von Neumann

Mehr

THE GO PROGRAMMING LANGUAGE. Michael Karnutsch & Marko Sulejic

THE GO PROGRAMMING LANGUAGE. Michael Karnutsch & Marko Sulejic THE GO PROGRAMMING LANGUAGE Part 1: Michael Karnutsch & Marko Sulejic Gliederung Geschichte / Motivation Compiler Formatierung, Semikolons Variablen, eigene Typen Kontrollstrukturen Funktionen, Methoden

Mehr

Programmierung und Modellierung

Programmierung und Modellierung Programmierung und Modellierung Terme, Suchbäume und Pattern Matching Martin Wirsing in Zusammenarbeit mit Moritz Hammer SS 2009 2 Inhalt Kap. 7 Benutzerdefinierte Datentypen 7. Binärer Suchbaum 8. Anwendung:

Mehr

Java 8. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Oktober 2014 JAV8

Java 8. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Oktober 2014 JAV8 Java 8 Elmar Fuchs Grundlagen Programmierung 1. Ausgabe, Oktober 2014 JAV8 5 Java 8 - Grundlagen Programmierung 5 Kontrollstrukturen In diesem Kapitel erfahren Sie wie Sie die Ausführung von von Bedingungen

Mehr

Korn-Shell: Einführung in Shellscripte 1. Übersicht: Einführung - 2. Die Kornshell im Detail - 3.Grundlagen der Programmierung

Korn-Shell: Einführung in Shellscripte 1. Übersicht: Einführung - 2. Die Kornshell im Detail - 3.Grundlagen der Programmierung 1. Übersicht: Einführung - 2. Die Kornshell im Detail - 3.Grundlagen der Programmierung 1. Übersicht und Einführung 1.1 Die Shell allgemein 1.2 Die korn-shell 1.3 Der Weg zum ersten Skript 1.4 Nutzen und

Mehr

Funktionen in Python

Funktionen in Python Funktionen in Python Prof. Dr. Rüdiger Weis Beuth Hochschule für Technik Berlin 1 / 31 1 def Anweisung 2 Argumentübergabe 3 Lokale Variablen 4 Default Argumente 5 Aufruf mit Schlüsselwort 6 Variable Argumente

Mehr

Praktische Informatik 3: Einführung in die Funktionale Programmierung Vorlesung vom 10.11.2010: Rekursive Datentypen

Praktische Informatik 3: Einführung in die Funktionale Programmierung Vorlesung vom 10.11.2010: Rekursive Datentypen Rev. 1152 1 [23] Praktische Informatik 3: Einführung in die Funktionale Programmierung Vorlesung vom 10.11.2010: Rekursive Datentypen Christoph Lüth & Dennis Walter Universität Bremen Wintersemester 2010/11

Mehr

Verschlüsseln eines Bildes. Visuelle Kryptographie. Verschlüsseln eines Bildes. Verschlüsseln eines Bildes

Verschlüsseln eines Bildes. Visuelle Kryptographie. Verschlüsseln eines Bildes. Verschlüsseln eines Bildes Verschlüsseln eines Bildes Visuelle Kryptographie Anwendung von Zufallszahlen Wir wollen ein Bild an Alice und Bob schicken, so dass Alice allein keine Information über das Bild bekommt Bob allein keine

Mehr

Übung KogInf Problemlösen, Suche, Lisp

Übung KogInf Problemlösen, Suche, Lisp Übung KogInf Problemlösen, Suche, Lisp Michael Siebers 5. und 12. November 2012 Zu Meiner Person Michael Siebers, Dipl. Psych., B.Sc. AI Raum: W05/05.045 Tel.: +49-951-863 2863 E-mail: michael.siebers@uni-bamberg.de

Mehr

Grundlagen der Programmierung in C++ Arrays und Strings, Teil 1

Grundlagen der Programmierung in C++ Arrays und Strings, Teil 1 Grundlagen der Programmierung in C++ Arrays und Strings, Teil 1 Wintersemester 2005/2006 G. Zachmann Clausthal University, Germany zach@in.tu-clausthal.de Das C++ Typsystem simple structured integral enum

Mehr

Programmieren als Grundkompetenz

Programmieren als Grundkompetenz Programmieren als Grundkompetenz Irrtümer, Chancen und Methodik der Programmierausbildung Michael Sperber sperber@informatik.uni-tuebingen.de Vorgeschichte... AP Computer Science (1987/1998) Informatik

Mehr

Teil 4: Rekursion und Listen

Teil 4: Rekursion und Listen Einführung in das Programmieren Prolog Sommersemester 2006 Teil 4: Rekursion und Listen Version 1.0 Gliederung der LV Teil 1: Ein motivierendes Beispiel Teil 2: Einführung und Grundkonzepte Syntax, Regeln,

Mehr

Ausarbeitung des Interpreter Referats

Ausarbeitung des Interpreter Referats Ausarbeitung des Interpreter Referats Gliederung 1. Programmiersprache 1.2. Syntax 1.2.1. Konkrete Syntax 1.2.2. Abstrakter Syntax Baum (Abstrakte Syntax) 2. Parser 2.1. Syntaktische Struktur einer Sprache

Mehr

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

Einführung Datentypen Verzweigung Schleifen. Java Crashkurs. Kim-Manuel Klein May 4, 2015 Java Crashkurs Kim-Manuel Klein (kmk@informatik.uni-kiel.de) May 4, 2015 Quellen und Editoren Internet Tutorial: z.b. http://www.java-tutorial.org Editoren Normaler Texteditor (Gedit, Scite oder ähnliche)

Mehr

Lösung Probeklausur Informatik I

Lösung Probeklausur Informatik I Lösung Probeklausur Informatik I 1 Lösung Aufgabe 1 (5 Punkte) Algorithmen und Programme Was ist der Unterschied zwischen einem Algorithmus und einem Programm? Ein Algorithmus ist eine Vorschrift zur Durchführung

Mehr

Algorithmen und Programmierung

Algorithmen und Programmierung Algorithmen und Programmierung Kapitel 5 Formale Algorithmenmodelle A&P (WS 14/15): 05 Formale Algorithmenmodelle 1 Überblick Motivation Formale Algorithmenmodelle Registermaschine Abstrakte Maschinen

Mehr

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

Es ist für die Lösung der Programmieraufgabe nicht nötig, den mathematischen Hintergrund zu verstehen, es kann aber beim Verständnis helfen. Ziele sind das Arbeiten mit Funktionen und dem Aufzählungstyp (enum), sowie - einfache Verzweigung (if else) - Alternativen switch case - einfache Schleifen (while oder do while) Aufgabe 3: Diese Aufgabe

Mehr

Formale Methoden der Softwaretechnik 1 Vorlesung vom : Grundlage von Isabelle

Formale Methoden der Softwaretechnik 1 Vorlesung vom : Grundlage von Isabelle 1 Formale Methoden der Softwaretechnik 1 Vorlesung vom 16.11.09: Grundlage von Isabelle Christoph Lüth, Lutz Schröder Universität Bremen Wintersemester 2009/10 2 Fahrplan Teil I: Grundlagen der Formalen

Mehr

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

zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme Bisher Datentypen: einfach Zahlen, Wahrheitswerte, Zeichenketten zusammengesetzt Arrays (Felder) zur Verwaltung mehrerer zusammengehörender Daten desselben Datentypes eindimensional, mehrdimensional, Array-Grenzen

Mehr

Vorsemesterkurs Informatik

Vorsemesterkurs Informatik Stand der Folien: 31. März 2011 Vorsemesterkurs Informatik Sommersemester 2011 Grundlagen der Programmierung in Haskell SoSe 2011 Übersicht 1 Ausdrücke und Typen 2 Funktionen 3 Rekursion 4 Listen 5 Paare

Mehr

WiMa-Praktikum 1. Woche 8

WiMa-Praktikum 1. Woche 8 WiMa-Praktikum 1 Universität Ulm, Sommersemester 2017 Woche 8 Lernziele In diesem Praktikum sollen Sie üben und lernen: Besonderheiten der For-Schleife in Matlab Wiederholung des Umgangs mit Matrizen und

Mehr

Praktikum Funktionale Programmierung Teil 1: Lexen und Parsen

Praktikum Funktionale Programmierung Teil 1: Lexen und Parsen Praktikum Funktionale Programmierung Teil 1: Lexen und Parsen Professur für Künstliche Intelligenz und Softwaretechnologie Sommersemester 2009 Überblick Teil 1: Lexen und Parsen Die Sprache LFP +C Professur

Mehr

Frage, Fragen und nochmals Fragen

Frage, Fragen und nochmals Fragen Frage, Fragen und nochmals Fragen Berthold Hoffmann Universität Bremen and DFKI Bremen hof@informatik.uni-bremen.de In diesem Text stehen einige Fragen, die man sich zu den Folien der Veranstaltung Funktionales

Mehr

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny Grundlagen der Informatik Prof. Dr. Stefan Enderle NTA Isny 2 Datenstrukturen 2.1 Einführung Syntax: Definition einer formalen Grammatik, um Regeln einer formalen Sprache (Programmiersprache) festzulegen.

Mehr

Vorlesung Objektorientierte Programmierung WS 2013/2014 / Folie 620

Vorlesung Objektorientierte Programmierung WS 2013/2014 / Folie 620 OOP-6.20 / FP-9.3a 6.4 Scala: objektorientierte und funktionale Sprache Scala: Objektorientierte Sprache (wie Java, in kompakterer Notation) ergänzt um funktionale Konstrukte (wie in SML); objektorientiertes

Mehr

Funktionen in Matlab. Nutzerdefinierte Funktionen können in.m-datei gespeichert werden

Funktionen in Matlab. Nutzerdefinierte Funktionen können in.m-datei gespeichert werden Funktionen in Matlab Zusammenfassung von Befehlssequenzen als aufrufbare/wiederverwendbare Funktionen in einem Programmblock mit festgelegter Schnittstelle (Signatur) Derartige prozedurale Programmierung

Mehr

Funktionale Programmierung mit C++

Funktionale Programmierung mit C++ Funktionale Programmierung mit C++ Rainer Grimm Softwarearchitekt Partner: Überblick Programmierung in funktionaler Art Warum funktionale Programmierung? Was ist funktionale Programmierung? Charakteristiken

Mehr

Der λ-kalkül. Frank Huch. Sommersemester 2015

Der λ-kalkül. Frank Huch. Sommersemester 2015 Der λ-kalkül Frank Huch Sommersemester 2015 In diesem Skript werden die Grundlagen der Funktionalen Programmierung, insbesondere der λ-kalkül eingeführt. Der hier präsentierte Stoff stellt einen teil der

Mehr

Übung - Modellierung & Programmierung II

Übung - Modellierung & Programmierung II 1 Übung - Modellierung & Programmierung II Mathias Goldau, Stefan Koch, Wieland Reich, Dirk Zeckzer, Stefan Philips, Sebastian Volke math@informatik.uni-leipzig.de stefan.koch@informatik.uni-leipzig.de

Mehr

4 Kontrollfluss-Diagramme

4 Kontrollfluss-Diagramme 4 Kontrollfluss-Diagramme In welcher Weise die Operationen eines Programms nacheinander ausgeführt werden, läßt sich anschaulich mithilfe von Kontrollfluss-Diagrammen darstellen. Ingredienzien: Start Stop

Mehr

JAVA - Methoden - Rekursion

JAVA - Methoden - Rekursion Übungen Informatik I JAVA - Methoden - Rekursion http://www.fbi-lkt.fh-karlsruhe.de/lab/info01/tutorial Übungen Informatik 1 1 Methoden Methoden sind eine Zusammenfassung von Deklarationen und Anweisungen

Mehr

C.3 Funktionen und Prozeduren

C.3 Funktionen und Prozeduren C3 - Funktionen und Prozeduren Funktionsdeklarationen in Pascal auch in Pascal kann man selbstdefinierte Funktionen einführen: Funktionen und Prozeduren THEN sign:= 0 Funktion zur Bestimmung des Vorzeichens

Mehr

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

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java: Technische Informatik für Ingenieure (TIfI) WS 2005/2006, Vorlesung 9 II. Grundlagen der Programmierung Ekkart Kindler Funktionen und Prozeduren Datenstrukturen 9. Datenstrukturen Daten zusammenfassen

Mehr

5.14 Generics. Xiaoyi Jiang Informatik I Grundlagen der Programmierung

5.14 Generics. Xiaoyi Jiang Informatik I Grundlagen der Programmierung Motivation für Generics: Containertypen speichern eine Anzahl von Elementen anderer Typen Wie definiert man die Containerklasse ArrayList? In der Definition könnte man als Elementtyp Object angeben maximale

Mehr

Monaden in anderen Programmiersprachen

Monaden in anderen Programmiersprachen Monaden in anderen Programmiersprachen Themen Informatik-Seminar SS 2013: Programmiersprachen und Sprachsysteme Bei: Prof. Dr. Schmidt, FH Wedel inf9500 Sebastian Philipp Überblick Motivation Monaden in

Mehr

Java: Eine kurze Einführung an Beispielen

Java: Eine kurze Einführung an Beispielen Java: Eine kurze Einführung an Beispielen Quellcode, javac und die JVM Der Quellcode eines einfachen Java-Programms besteht aus einer Datei mit dem Suffix.java. In einer solchen Datei wird eine Klasse

Mehr

Programmierkurs Python I

Programmierkurs Python I Programmierkurs Python I Michaela Regneri 2009-11-05 (Folien basieren auf dem gemeinsamen Kurs mit Stefan Thater) Übersicht Variablen Datentypen Werte Operatoren und Ausdrücke Kontrollstrukturen: if, while

Mehr

Methoden (fortgeschritten) in C# - 1

Methoden (fortgeschritten) in C# - 1 Methoden (fortgeschritten) in C# - 1 Marc Satkowski 20. November 2016 C# Kurs Gliederung 1. Opertatoren Überladung 2. delegate 3. Anonyme Methoden delegate Lamda Ausdruck-Lamdas Anweisung-Lamdas Variablenbereich

Mehr

Rekursive Listenverarbeitung

Rekursive Listenverarbeitung Rekursive Listenverarbeitung Übersicht Rekursion ist die wichtigste Programmiertechnik in Prolog! Rekursive Datenstrukturen Einfache und rekursiv gebildete Strukturen Rekursive Datenstrukturen und rekursive

Mehr

Elementare Datentypen in C++

Elementare Datentypen in C++ Elementare Datentypen in C++ bool signed/unsigned char signed/unsigned short int signed/unsigned int signed/unsigned long int (signed/unsigned long long int) float double long double void enum char Der

Mehr

Programmierung 1 (Wintersemester 2015/16) Lösungsblatt: Aufgaben für die Übungsgruppen: 12 (Kapitel 13)

Programmierung 1 (Wintersemester 2015/16) Lösungsblatt: Aufgaben für die Übungsgruppen: 12 (Kapitel 13) Fachrichtung 6.2 Informatik Universität des Saarlandes Tutorenteam der Vorlesung Programmierung 1 Programmierung 1 (Wintersemester 2015/16) Lösungsblatt: Aufgaben für die Übungsgruppen: 12 (Kapitel 13)

Mehr

Programmieren in Haskell

Programmieren in Haskell Programmieren in Haskell Wir steigen ein... Programmieren in Haskell 1 Was wir heute machen Umfrage: Wer hat den Hugs ausprobiert? Ausdrücke und Werte Datentypen Funktionen Aufgabe für diese Woche Programmieren

Mehr

Projekt Sprachdialogsysteme SoSe 2006. Voice XML - Teil II. Cristina Vertan, Walther v. Hahn

Projekt Sprachdialogsysteme SoSe 2006. Voice XML - Teil II. Cristina Vertan, Walther v. Hahn Projekt Sprachdialogsysteme SoSe 2006 Voice XML - Teil II Cristina Vertan, Walther v. Hahn Implizite Verifizierung den Benutzereingaben welcome to Courses Details

Mehr

Symbolische Programmierung. Gerd Stolpmann. Informatikbüro Dipl. Inform. Gerd Stolpmann

Symbolische Programmierung. Gerd Stolpmann. Informatikbüro Dipl. Inform. Gerd Stolpmann 1.3.2006 Informatikbüro Dipl. Inform. Gerd Stolpmann Symbolische Programmierung Gerd Stolpmann 1 Übersicht Symbolische Datenverarbeitung: Was ist das? Symbolische Programmierung ist das Anwendungsgebiet

Mehr

JAVA - Methoden

JAVA - Methoden Übungen Informatik I JAVA - http://www.fbi-lkt.fh-karlsruhe.de/lab/info01/tutorial Übungen Informatik 1 Folie 1 sind eine Zusammenfassung von Deklarationen und Anweisungen haben einen Namen und können

Mehr

Escher funktionale und logische Programmierung

Escher funktionale und logische Programmierung Escher funktionale und logische Programmierung Seminar Programming Languages From Hell Lars Hupel 2010-06-07 Dieses Werk ist lizenziert unter den Bedingungen der Creative Commons Namensnennung 3.0 Deutschland.

Mehr

Funktionen. Überblick über Stored Functions. Syntax zum Schreiben einer Funktion. Schreiben einer Funktion

Funktionen. Überblick über Stored Functions. Syntax zum Schreiben einer Funktion. Schreiben einer Funktion Überblick über Stored Functions Funktionen Eine Funktion ist ein benannter PL/SQL- Block, der einen Wert zurückgibt. Eine Funktion kann in der Datenbank als Objekt zur wiederholbaren Ausführung gespeichert

Mehr

Programmierkurs Python I

Programmierkurs Python I Programmierkurs Python I Michaela Regneri & Stefan Thater Universität des Saarlandes FR 4.7 Allgemeine Linguistik (Computerlinguistik) Winter 2010/11 Übersicht Variablen Datentypen Werte Ausdrücke Operatoren

Mehr

Formale Methoden in der Informatik Wiederholung klassische Logik Konkrete Datentypen (algebraische Strukturen) Abstrakte Datentypen

Formale Methoden in der Informatik Wiederholung klassische Logik Konkrete Datentypen (algebraische Strukturen) Abstrakte Datentypen Was bisher geschah Formale Methoden in der Informatik Wiederholung klassische Logik Konkrete Datentypen (algebraische Strukturen) Abstrakte Datentypen Syntax: Signatur Semantik: Axiome (FOL-Formeln, meist

Mehr

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

zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme Bisher Datentypen: einfach Zahlen, Wahrheitswerte, Zeichenketten zusammengesetzt Arrays (Felder) zur Verwaltung mehrerer zusammengehörender Daten desselben Datentypes eindimensional, mehrdimensional, Array-Grenzen

Mehr

4.Grundsätzliche Programmentwicklungsmethoden

4.Grundsätzliche Programmentwicklungsmethoden 4.Grundsätzliche Programmentwicklungsmethoden 1.1 Grundlage strukturierter und objektorientierter Programmierung Begriff Software Engineering - umfaßt den gezielten Einsatz von Beschreibungsmitteln, Methoden

Mehr

Grundlagen der Programmierung Prof. H. Mössenböck. 6. Methoden

Grundlagen der Programmierung Prof. H. Mössenböck. 6. Methoden Grundlagen der Programmierung Prof. H. Mössenböck 6. Methoden Parameterlose Methoden Beispiel: Ausgabe einer Überschrift class Sample { static void printheader() { // Methodenkopf Out.println("Artikelliste");

Mehr

Grundlagen der Programmierung in C Funktionen

Grundlagen der Programmierung in C Funktionen Der erste Mechanismus für Code-Reuse! Grundlagen der Programmierung in C Funktionen Wintersemester 2005/2006 G. Zachmann Clausthal University, Germany zach@in.tu-clausthal.de Ältester Mechanismus für Code-Reuse:

Mehr

Programmiersprachen. Organisation und Einführung. Berthold Hoffmann. Studiengang Informatik Universität Bremen

Programmiersprachen. Organisation und Einführung. Berthold Hoffmann. Studiengang Informatik Universität Bremen Organisation und Einführung Studiengang Informatik Universität Bremen Sommersemester 2010 (Vorlesung am Montag, der 12. April 2010) (Montag, der 12. April 2008) 1 Vorstellung 2 Organisation 3 Einführung

Mehr

kurze Wiederholung class templates

kurze Wiederholung class templates kurze Wiederholung class templates Ein class template ist ein Template, dass mit einem oder mehreren typename -Parametern implementiert wird. Um solch ein Template zu benutzen, übergibt man dem Template

Mehr

expr :: Expr expr = Mul (Add (Const 3) (Const 4)) (Div (Sub (Const 73) (Const 37)) (Const 6))

expr :: Expr expr = Mul (Add (Const 3) (Const 4)) (Div (Sub (Const 73) (Const 37)) (Const 6)) 1 - Korrektur 2 - Abstrakte Datentypen für arithmetische Ausdrücke Der Datentyp Wir beginnen zunächst mit dem algebraischen Datentyp für Ausdrücke. Hierfür definieren wir einen Konstruktor Number für Zahlen,

Mehr

Strings. Daten aus Dateien einlesen und in Dateien speichern.

Strings. Daten aus Dateien einlesen und in Dateien speichern. Strings. Daten aus Dateien einlesen und in Dateien speichern. Strings Ein String ist eine Zeichenkette, welche von MATLAB nicht als Programmcode interpretiert wird. Der Ausdruck 'a' ist ein String bestehend

Mehr

Induktive Definitionen

Induktive Definitionen Induktive Definitionen Induktive Definition: Konstruktive Methode zur Definition einer Menge M von Objekten aus Basisobjekten mittels (Erzeugungs-) Regeln Slide 1 Rekursion über den Aufbau: Konstruktive

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java Vorlesung 10: Ein Interpreter für While Prof. Dr. Peter Thiemann Albert-Ludwigs-Universität Freiburg, Germany SS 2015 Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 1

Mehr

Technische Universität München WS 2004/2005 Fakultät für Informatik 11. Dezember 2004 Prof. Dr. Seidl

Technische Universität München WS 2004/2005 Fakultät für Informatik 11. Dezember 2004 Prof. Dr. Seidl Name: Vorname: Matr. Nr.: Technische Universität München WS 2004/2005 Fakultät für Informatik 11. Dezember 2004 Prof. Dr. Seidl Zwischenklausur zu Einführung in die Informatik I Hinweis: In dieser Zwischenklausur

Mehr

Einführung in die Programmiertechnik

Einführung in die Programmiertechnik Einführung in die Programmiertechnik Funktionale Programmierung: Scheme Grundlagen funktionaler Programmierung Idee: Zu lösendes Problem wird als mathematische Funktion formuliert Beispiel Rechtschreibprüfung:

Mehr