Was Sie schon immer über funktionale Programmierung wissen wollten, aber bisher nicht zu fragen wagten
|
|
- Mareke Beckenbauer
- vor 6 Jahren
- Abrufe
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
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
MehrVerarbeitung 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 =
Mehr2.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
Mehr26 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
MehrProgrammieren 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
MehrBerechnungsschemata: 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
MehrVorsicht 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
MehrProgrammierkurs 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
MehrHaskell, 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
MehrName 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
MehrEinfache 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
MehrWas 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
MehrBeispiele: (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))
MehrC++ 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
MehrSmallTalk - 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,
MehrFunktionale Programmierung mit Haskell
Funktionale Programmierung mit Haskell Dr. Michael Savorić Hohenstaufen-Gymnasium (HSG) Kaiserslautern Version 20120622 Überblick Wichtige Eigenschaften Einführungsbeispiele Listenerzeugung und Beispiel
MehrMethoden 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
MehrWS 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)
MehrUm 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
Mehr7 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
MehrProgrammiersprache 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,
MehrGrundprinzipien 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
MehrFunktionales 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
MehrJavaScript. 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
MehrProgrammieren 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
MehrTheorem 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
MehrDeklarationen 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.
MehrProgrammierung 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
MehrAllgemeine 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,
MehrFunktionale Programmiersprachen
Funktionale Programmiersprachen An den Beispielen Haskell und Erlang Übersicht Programmiersprachen λ-kalkül Syntax, Definitionen Besonderheiten von funktionalen Programmiersprache, bzw. Haskell Objektorientierte
MehrKontrollstrukturen 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
MehrProseminar Funktionales Programmieren. Stephan Kreutzer
Proseminar Funktionales Programmieren Die Programmiersprache LISP Stephan Kreutzer Teil I: Funktionales Programmieren Imperative Sprachen Imperative Sprachen: Befehlsorientiert Imperative Sprachen orientieren
MehrFunktionen 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.
MehrVorkurs C++ Programmierung
Vorkurs C++ Programmierung Funktionen Rückblick Operatoren logische Verknüpfungen Zusammengesetzte Operatoren ( Zuweisungsoperatoren ) Kontrollstrukturen Bedingte Anweisungen (if-abfrage, switch-konstrukt)
MehrCrashkurs 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
MehrInterpreter - 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
MehrProgrammier-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
MehrALP 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?
MehrFunktionale 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
MehrFunktionale 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
MehrTHE 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
MehrProgrammierung 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:
MehrJava 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
MehrKorn-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
MehrFunktionen 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
MehrPraktische 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
MehrVerschlü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 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
MehrGrundlagen 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
MehrProgrammieren 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
MehrTeil 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,
MehrAusarbeitung 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
MehrEinfü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)
MehrLö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
MehrAlgorithmen 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
MehrEs 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
MehrFormale 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
Mehrzu 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
MehrVorsemesterkurs 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
MehrWiMa-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
MehrPraktikum 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
MehrFrage, 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
MehrGrundlagen 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.
MehrVorlesung 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
MehrFunktionen 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
MehrFunktionale Programmierung mit C++
Funktionale Programmierung mit C++ Rainer Grimm Softwarearchitekt Partner: Überblick Programmierung in funktionaler Art Warum funktionale Programmierung? Was ist funktionale Programmierung? Charakteristiken
MehrDer λ-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
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
Mehr4 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
MehrJAVA - 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
MehrC.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
MehrII. 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
Mehr5.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
MehrMonaden 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
MehrJava: 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
MehrProgrammierkurs 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
MehrMethoden (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
MehrRekursive Listenverarbeitung
Rekursive Listenverarbeitung Übersicht Rekursion ist die wichtigste Programmiertechnik in Prolog! Rekursive Datenstrukturen Einfache und rekursiv gebildete Strukturen Rekursive Datenstrukturen und rekursive
MehrElementare 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
MehrProgrammierung 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)
MehrProgrammieren 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
MehrProjekt 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
MehrSymbolische 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
MehrJAVA - 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
MehrEscher 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.
MehrFunktionen. Ü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
MehrProgrammierkurs 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
MehrFormale 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
Mehrzu 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
Mehr4.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
MehrGrundlagen 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");
MehrGrundlagen 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:
MehrProgrammiersprachen. 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
Mehrkurze 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
Mehrexpr :: 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,
MehrStrings. 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
MehrInduktive 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
MehrProgrammieren 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
MehrTechnische 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
MehrEinfü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