ALP I Einführung in Haskell
|
|
|
- Adolph Stein
- vor 9 Jahren
- Abrufe
Transkript
1 ALP I Einführung in Haskell WS 2012/2013
2 Was ist Haskell? Haskell ist eine rein Funktionale Programmiersprache mit einer nach Bedarf Auswertung-Strategie oder "Lazy Evaluation".
3 Was bedeutet rein funktional? - Programme werden als mathematische Funktionen dargestellt - Haskell Funktionen haben keine Seiteneffekte. keine Seiteneffekte Referenzielle Transparenz - Eine Funktion liefert immer bei gleicher Eingabe das gleiche Ergebnis. - Der Wert eines Ausdrucks hängt nur von den Werten der aktuellen Parameter ab.
4 Funktionen Eingabewerte e 1 e 2. F a nur ein Ausgabewert ė n Das Ergebnis einer Funktion hängt nur von den Eingabewerten ab. Beispiel: 1 f(1,2) 2 f(x,y)=x 2 +y 3
5 Funktionen Arithmetische Operationen können auch als Funktionen betrachtet werden (+)(x,y) = x + y 3
6 Funktionen in Haskell Einfache Funktionsdefinitionen in Haskell: f x = x*x quadrat x = x*x Allgemeine Syntax: Funktionsname Ausdruck, dessen Wert dem Ergebnis der Funktion entspricht f e 1 e 2... e n = Funktionskörper Eingabeargumente ohne Klammern und Kommas
7 Funktionsapplikation Die Anwendung einer Funktion mit konkreten Argumenten wird als Funktionsapplikation bezeichnet. Funktionsdefinition: f x y z = x*y + x*z Funktionsapplikation: Funktionsreduktion f *0 + 1* Die Variablen auf der rechten Seite der Funktionsdefinition werden durch die entsprechenden konkreten Argumente ersetzt.
8 Normalform Kann ein Ausdruck nicht mehr weiter reduziert werden, dann befindet er sich in seiner Normalform und die Berechnung ist beendet. Beispiele: Ausdruck Normalform des Ausdruck sin "text" "text" Zahlen Zeichenkette "1 + 2" "1 + 2" '2' '2' Zeichen
9 Auswertungsstrategie Innerhalb eines Ausdrucks kann es mehrere Funktionsapplikationen geben. Die Reihenfolge, in der unabhängige Teilausdrücke ausgewertet werden, verändert nicht den Wert des gesamtes Ausdrucks. Aber verschiedene Reihenfolgen können die Anzahl der notwendigen Berechnungen stark beeinflussen. Eine Auswertungsstrategie kann sogar entscheiden, ob eine Berechnung beendet werden kann oder nicht.
10 Bottom ( ) Wenn die Auswertung eines Ausdrucks zu einer unendlichen Folge von Reduktionen führt, wird entweder das Programm nicht beendet oder es stürzt ab, weil der Speicher voll wird. In der Theorie wird das Symbol Bottom verwendet, um den Wert von Ausdrücken darzustellen, die nicht vollständig ausgewertet werden können (die divergent sind).
11 Bottom ( ) Bottom kann in Haskell wie folgt ausgedrückt werden: bottom = bottom In dem Prelude-Module ist eine Funktion dafür definiert: undefined = error "Prelude; undefined"
12 Auswertungsstrategien Funktionsbeispiele: Auswertungsstrategien g x = 2 * x f x = x + x Auszuwertender Ausdruck: f (g 5) Call-by-value Ausdrücke werden von innen nach außen und von links nach rechts ausgewertet. f (g 5) f (2 * 5) f Es wird garantiert, dass die Argumente zuerst ausgewertet werden und dann an die Funktion weitergegeben werden. Call-by-name Ausdrücke werden von außen nach innen ausgewertet. f (g 5) (g 5) + (g 5) (2*5) + (g 5) 10 + (g 5) 10 + (2*5) Ohne die Argumente auszuwerten, werden zuerst die äusseren Funktionen angewendet.
13 Auswertungsstrategien Auswertungsstrategie in Haskell Call-by-need oder Lazy-evaluation Auswertung nach Bedarf Lazy-evaluation ist eine optimierte Auswertungsvariante von call-by-name und wird in Haskell und anderen funktionalen Sprachen verwendet. Beispiel: g x = 2 * x f x = x * x f (g 5) (g 5) * (g 5) where g 5 = 2*5 (g 5) * (g 5) where g 5 = * 10 call-by-need ist eine Art 100 call-by-name-auswertungsstrategie mit Gedächtnis
14 Auswertungsstrategien Auswertungsstrategie in Haskell f 6 (double 3) (2 + 6) + * Definitionen: f y x = (2 + y) + x * x double x = 2 * x Anwendung: f 6 (double 3) Call-by-need oder Lazy-evaluation Auswertung nach Bedarf (double 3) 8 + * (double 3) 8 + * (2*3) 8 + *
15 Auswertungsstrategien Strikte Funktionen Informell kann man sagen, dass eine Funktion f strikt nach einem ihrer Argumente a ist, wenn für die Auswertung der Funktion, die Auswertung von a notwendig ist. Formale Definition: f ist strikt f = Beispiel: Die + Funktion ist strikt nach beiden Argumenten (2*4) + (5*6) oder (+) (2*4) (5*6) (2*4) + (5*6)
16 Auswertungsstrategien Haskell - Auswertungsstrategie ist nicht strikt Ausdrücke werden nur bei Bedarf ausgewertet im Gegensatz zu imperative Sprachen, in denen eager-evaluation verwendet wird. Beispiel: x = x + 1 g a = a f a b = b g 5 5 g x g x x + 1 (x + 1) + 1 ((x + 1) + 1) g ist strikt nach a f ist strikt nach b, aber nicht nach a f f x 3 3 f 2 x f 2 weil die Auswertung von x nicht terminiert
17 Haskell-Programm Ein Haskell-Programm besteht aus einer Reihe von Funktionen und einem Ausdruck, der ausgewertet werden soll. Name.hs rectarea a b = a*b rectperimeter a b = 2*(a+b) Eine Reihe von Funktionsdefinitionen werden in eine Skript-Datei geschrieben mit der Kommandozeile :load Name.hs (rectarea 4 5) + (rectarea 2 1) wird diese vom Haskell- Interpreter gelesen. Dann können Ausdrücke damit ausgewertet werden.
18 Berechnungsmodel Funktionsdefinitionen werden als Ersetzungsregeln interpretiert Ausdrücke werden damit zu einem Wert (Normalform) reduziert Hat ein Ausdruck keine reduzierbaren Teilausdrücke, so ist er in Normalform In Haskell werden Ausdrücke nur nach Bedarf ausgewertet.
19 Pseudo-Funktionen mit Seiteneffekte Eingabe der Zeit abhängig ist e 1 e 2. F a ė n Der Zustand einer globalen Variable wird verändert Eine Funktion, die während Ihrer Berechnung globale Daten in irgend ein Speichermedium manipuliert, verändert damit der Zustand der Ausführung- Umgebung und produziert damit Seiteneffekte.
20 keine Seiteneffekte Referentielle Transparenz Vorteile der referentiellen Transparenz - Die Korrektheit der Programme oder einfache Eigenschaften können mit klassischen mathematischen Verfahren geprüft werden. - Die Wartung ist einfacher, weil die Auswertung von Teilausdrücken Kontext und Zeit unabhängig sind. - Wichtige Optimierungen durch den Compiler sind möglich - Parallele Auswertung von Teilausdrücke - gleiche Ausdrücke werden nur ein mal ausgewertet - usw.
21 Datentypen Ein Datentyp entspricht dem Wertbereich, den die Argumente oder das Ergebnis einer Funktion haben können. Jeder Ausdruck in Haskell hat einen wohldefinierten Datentyp. Funktionen werden oft nur für bestimmte Datentypen definiert. Der Datentyp von Variablen oder Ausdrücken wird durch explizite Deklaration oder durch Typ-Inferenz festgestellt.
22 Datentypen Explizite Deklaration des Datentyps einer Funktion Syntax: Funktionsname :: Funktionstyp Beispiele: sum :: Int -> Int -> Int sum a b = a + b Typ-Signatur doppel :: Int -> Int doppel a = 2*a pi :: double pi = Konstante Funktion
23 Datentypen Haskell hat ein statisches Typsystem Der Datentyp der Funktionen wird statisch während der Übersetzungszeit des Programms abgeleitet. Vorteile: Datentyp-Fehler werden früher erkannt durch die Reduzierung der Typ-Überprüfung reduziert sich die Ausführungszeit
24 Grundlegende Datentypen Int ganzzahlige Werte ( ) Integer ganzzahlige Werte (unbeschränkt) Bool Wahrheitswerte True False Char Zeichen 'a' '1' '+' Float Gleitkommazahlen (32 Bits) Double Gleitkommazahlen (64 Bits) Typ 1 -> Typ 2 Funktionen
25 Konstanten (Literale) Konstante Werte, die im Programm direkt geschrieben werden, besitzen einen Typ, der sich aus der Schreibweise ergibt. Beispiele: Typ Ganze Zahlen: Gleitpunktzahlen Integer Double Zeichen 'A' 'a' '1' '+' '\n' Char Zeichenketten "Zeichenkette" [Char]
26 Arithmetische Operationen Symbol Operator Priorität + Addition 4 - Subtraktion 4 * Multiplikation 3 / Division 3 `div` Ganzzahlige Division 3 `mod` Rest 3 ** Ganzzahlige Potenz 2 ^ Potenz 2 die niedrigeren Zahlen entsprechen einer höheren Priorität Arithmetische Operatoren mit der gleichen Priorität sind linksassoziativ
27 Jeder Ausdruck hat einen Wert und einen Datentyp 1 `div` 2 Wert 0 Typ Integer 1/2 0.5 Double 1 `mod` 2 1 Integer -6 `mod` 4-2 Integer 0.0 ^ Double 3 / 0 Infinity Double sqrt(-5) NaN keine Zahl Double 0 / 0 NaN Double (3/0)/(2/0) NaN Double
28 Kommentare Blockkommentare {-.Blockkommentare.. -} Zeilenkommentare -- Zeilenkommentare
29 Vergleichsoperatoren Priorität Kleiner < 5 Größer > 5 Kleiner oder gleich <= 5 Größer oder gleich >= 5 Gleichheit == 6 Ungleichheit /= 6
30 Allgemeine Form: Fallunterscheidung if <bool-ausdruck> then <Ausdruck> else <Ausdruck> Beispiel: sign :: Int -> Int sign x = if x > 0 then 1 else if x < 0 then -1 else 0
31 Case-Verteiler Beispiele: Übersetzung der Tonnamen von Deutsch zu Italienisch german2italian :: Char -> String german2italian x = case x of 'c' "do" 'd' "re" 'e' "mi" 'f' "fa" 'g' "sol" 'a' "la" 'h' "si"
32 Logische Operatoren Priorität Logische Negation not 1 UND && 7 ODER 8 Beispiele: True False True True && False False not ( True undefined ) False not ( True && undefined ) *** Exception: Prelude.undefined
33 Logische Operatoren Beispiele: Die Funktion fromenum gibt den ASCII-Code des Zeichens zurück. char2digit :: Char -> Int char2digit x = if (fromenum x) >= (fromenum '0') && (fromenum x) <= (fromenum '9') then (fromenum x) - (fromenum '0') else error "wrong argument value..."
34 Gibt es Funktionsnamen, die nicht erlaubt sind? Schlüsselwörter sind reserviert und können nicht als Funktionsnamen bzw. Namen für Funktionsargumente verwendet werden. Beispiel: if where usw. then else case of let error not undefined NaN infinity
35 Lokale Funktionsdefinitionen f :: Float -> Float -> Float f x y = (a+1)*(b+2) where a = (x+y)/2 b = (x+y)/3
36 Guards sign :: Int -> Int sign x x < 0 = -1 x == 0 = 0 x > 0 = 1 sign :: Int -> Int sign x x > 0 = 1 x == 0 = 0 otherwise = -1 otherwise :: bool otherwise = True
37 Guards Allgemeine Syntax: <Funktionsname> a1 a2 an <guard1> = <expression1> <guard2> = <expression2>... <guardm> = <expressionm>
38 Struktur eines Haskell-Programms Ein Haskell-Programm besteht aus einem oder mehreren Modulen. Ein Modul besteht aus Funktionsdefinitionen und Typ-Deklarationen. Beispiel: haelfte:: Int -> Int haelfte x = x `div` 2 -- Typ-Deklaration -- Funktionsdefinition
39 Programmausführung Compiler Die Programme werden direkt in die Maschinensprache des jeweiligen Rechners übersetzt. Das übersetzte Programm wird dann direkt von der Hardware interpretiert. Drei Wege bis zur Programmausführung Interpreter Die Programme werden nicht übersetzt, sondern direkt von einem Interpreter-Programm ausgeführt. Compiler + Interpreter (virtuelle Maschine) Die Programme werden in eine Zwischensprache übersetzt und von einer so genannten virtuellen Maschine (vereinfachter Interpreter) ausgeführt.
40 Programmausführung Programm in einer höheren Programmiersprache Compiler Übersetzer Programm in Maschinensprache Beispiele: C, C++, Das Programm kann direkt von der Hardware ausgeführt werden
41 Programm in einer höheren Programmiersprache Programmausführung Interpreter Quellprogramm read (a); read (b); if (a<b) then a = a*a; else a = a+b; print a; Interpreter Das Programm wird hier interpretiert Der Interpreter wird direkt von der Hardware ausgeführt Beispiel: Skriptsprachen: JavaScript, JScript, Python, Tcl/Tk, VBA usw.
42 Programmausführung Programm in einer höheren Programmiersprache Compiler + Interpreter Programm in einer Zwischensprache read (a); read (b); if (a<b) then a = a*a; else a = a+b; print a; Übersetzer LOAD #1 C LOAD #2 B MULT #1 #2 #3 LOAD #4 A ADD #3 #4 #1 STORE #1 C LOAD #4 A ADD #3 #4 #1 Beispiele: Java Der Zwischencode wird hier interpretiert Interpreter Virtuelle Maschine Der Interpreter wird direkt von der Hardware ausgeführt.
43 Programmausführung in Haskell Compiler Haskell (GHC) Glasgow Haskell Compiler hello.hs Interpreter GHCI Haskell (WinHugs) HUGS main = putstrln "Welcome to FU!" Haskell User's Gofer System $ ghc --make -o hello hello.hs $./hello Welcome to FU!
Basiskonstrukte von Haskell
Basiskonstrukte von Haskell PD Dr. David Sabel Goethe-Universität Frankfurt am Main 29. September 2015 Basistypen und Operationen Ganzzahlen: Int = Ganzzahlen beschränkter Länge Integer = Ganzzahlen beliebiger
Grundlagen der Programmierung 2 (1.A)
Grundlagen der Programmierung 2 (1.A) Prof. Dr. Manfred Schmidt-Schauÿ Künstliche Intelligenz und Softwaretechnologie 18. April 2007 Grundlagen der Programmierung 2: Geplanter Inhalt der ersten Hälfte
Gliederung. n Teil I: Einleitung und Grundbegriffe. n Teil II: Imperative und objektorientierte Programmierung
Gliederung n Teil I: Einleitung und Grundbegriffe l 1. Organisatorisches l 2. Grundlagen von Programmiersprachen n Teil II: Imperative und objektorientierte Programmierung l 1. Grundelemente der Programmierung
Institut für Programmierung und Reaktive Systeme. Java 2. Markus Reschke
Java 2 Markus Reschke 07.10.2014 Datentypen Was wird gespeichert? Wie wird es gespeichert? Was kann man mit Werten eines Datentyps machen (Operationen, Methoden)? Welche Werte gehören zum Datentyp? Wie
Vorkurs Informatik WiSe 16/17
Java Ausdrücke und Variablen Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe, 05.10.2016 Technische Universität Braunschweig, IPS Überblick Ausdrücke, Datentypen und Variablen Kontrollstrukturen 05.10.2016
Vorkurs Informatik WiSe 17/18
Java Ausdrücke und Variablen Dr. Werner Struckmann / Stephan Mielke, Nicole Naczk, 05.10.2017 Technische Universität Braunschweig, IPS Überblick Ausdrücke, Datentypen und Variablen Kontrollstrukturen 05.10.2017
Crashkurs: Haskell. Mentoring FU Berlin Felix Droop
Crashkurs: Haskell Mentoring FU Berlin 7.11.2018 Felix Droop Crashkurs Haskell 1. GHCi Umgebung
Hallo Haskell. Funktionale Programmierung. Prof. Dr. Oliver Braun Letzte Änderung: :06. Hallo Haskell 1/23
Hallo Haskell Funktionale Programmierung Prof. Dr. Oliver Braun Letzte Änderung: 15.10.2018 07:06 Hallo Haskell 1/23 Glasgow Haskell Compiler (GHC) der Haskell-Compiler ist der GHC Sie installieren ihn
Grundlegende Datentypen
Funktionale Programmierung Grundlegende Datentypen Fakultät für Informatik und Mathematik Hochschule München Letzte Änderung: 14.11.2017 15:37 Inhaltsverzeichnis Typen........................................
Funktionale Programmierung Grundlegende Datentypen
Grundlegende Datentypen Prof. Dr. Oliver Braun Fakultät für Informatik und Mathematik Hochschule München Letzte Änderung: 06.11.2017 16:45 Inhaltsverzeichnis Typen........................................
Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 12/13. Kapitel 3. Grunddatentypen, Ausdrücke und Variable
1 Kapitel 3 Grunddatentypen, Ausdrücke und Variable 2 Eine Datenstruktur besteht aus Grunddatentypen in Java einer Menge von Daten (Werten) charakteristischen Operationen Datenstrukturen werden mit einem
Einführung in die Programmierung mit VBA
Einführung in die Programmierung mit VBA Vorlesung vom 07. November 2016 Birger Krägelin Inhalt Vom Algorithmus zum Programm Programmiersprachen Programmieren mit VBA in Excel Datentypen und Variablen
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
Programmieren in Haskell Einführung
Programmieren in Haskell Einführung Peter Steffen Universität Bielefeld Technische Fakultät 17.10.2008 1 Programmieren in Haskell Veranstalter Dr. Peter Steffen Raum: M3-124 Tel.: 0521/106-2906 Email:
JAVA-Datentypen und deren Wertebereich
Folge 8 Variablen & Operatoren JAVA 8.1 Variablen JAVA nutzt zum Ablegen (Zwischenspeichern) von Daten Variablen. (Dies funktioniert wie beim Taschenrechner. Dort können Sie mit der Taste eine Zahl zwischenspeichern).
1 Bedingte Anweisungen. 2 Vergleiche und logische Operatoren. 3 Fallunterscheidungen. 4 Zeichen und Zeichenketten. 5 Schleifen.
Themen der Übung Kontrollstrukturen, Pseudocode und Modulo-Rechnung CoMa-Übung III TU Berlin 9.10.01 1 Bedingte Anweisungen Vergleiche und logische Operatoren 3 Fallunterscheidungen 4 Zeichen und Zeichenketten
Kapitel 3. Grunddatentypen, Ausdrücke und Variable
Kapitel 3 Grunddatentypen, Ausdrücke und Variable Grunddatentypen, Ausdrücke und Variable 1 Eine Datenstruktur besteht aus Grunddatentypen in Java einer Menge von Daten (Werten) charakteristischen Operationen
Hello World! Eine Einführung in das Programmieren Variablen
Hello World! Eine Einführung in das Programmieren Variablen Görschwin Fey Institute of Embedded Systems Hamburg University of Technology Slide 2 Wie werden Daten in Programmen gespeichert und manipuliert?
Einführung Datentypen Verzweigung Schleifen. Java Crashkurs. Kim-Manuel Klein May 4, 2015
Java Crashkurs Kim-Manuel Klein ([email protected]) May 4, 2015 Quellen und Editoren Internet Tutorial: z.b. http://www.java-tutorial.org Editoren Normaler Texteditor (Gedit, Scite oder ähnliche)
float: Fließkommazahl nach IEEE 754 Standard mit 32 bit
Primitive Datentypen Fließkommazahlen float: Fließkommazahl nach IEEE 754 Standard mit 32 bit Vorzeichen Exponent 8 bit Mantisse 23 bit double: Fließkommazahl nach IEEE 754 Standard mit 64 bit Vorzeichen
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
Programmiervorkurs Einführung in Java Tag 1
Programmiervorkurs Einführung in Java Tag 1 Sebastian Glutsch SS 2018 namen Inhaltsübersicht Vorkurs Tag 1:,, en,, Einführung Tag 2: Boolesche Ausdrücke,, If-Abfragen, Switch-Case Tag 3: Arrays, (Do-)While-Schleife,
Die Definition eines Typen kann rekursiv sein, d.h. Typ-Konstruktoren dürfen Elemente des zu definierenden Typ erhalten.
4.5.5 Rekursive Typen Die Definition eines Typen kann rekursiv sein, d.h. Typ-Konstruktoren dürfen Elemente des zu definierenden Typ erhalten. datatype IntList = Nil Cons o f ( i n t IntList ) ; Damit
Praktische Informatik 3: Funktionale Programmierung Vorlesung 2 vom : Funktionen und Datentypen
Rev. 1843 1 [35] Praktische Informatik 3: Funktionale Programmierung Vorlesung 2 vom 23.10.2012: Funktionen und Datentypen Christoph Lüth Universität Bremen Wintersemester 2012/13 2 [35] Fahrplan Teil
Grundlagen der Programmierung 2. Operationale Semantik
Grundlagen der Programmierung 2 Operationale Semantik Prof. Dr. Manfred Schmidt-Schauÿ Künstliche Intelligenz und Softwaretechnologie 29. April 2009 Semantik von Programmiersprachen Semantik = Bedeutung
Kapitel 4. Programmierkurs. Datentypen. Arten von Datentypen. Wiederholung Kapitel 4. Birgit Engels, Anna Schulze WS 07/08
Kapitel 4 Programmierkurs Birgit Engels, Anna Schulze Wiederholung Kapitel 4 ZAIK Universität zu Köln WS 07/08 1 / 23 2 Datentypen Arten von Datentypen Bei der Deklaration einer Variablen(=Behälter für
Algorithmen & Programmierung. Ausdrücke & Operatoren (1)
Algorithmen & Programmierung Ausdrücke & Operatoren (1) Ausdrücke Was ist ein Ausdruck? Literal Variable Funktionsaufruf Ausdruck, der durch Anwendung eines einstelligen (unären) Operators auf einen Ausdruck
Funktionale Programmiersprachen
Funktionale Programmiersprachen An den Beispielen Haskell und Erlang Übersicht Programmiersprachen λ-kalkül Syntax, Definitionen Besonderheiten von funktionalen Programmiersprache, bzw. Haskell Objektorientierte
Funktionale Programmierung ALP I. Funktionen höherer Ordnung SS Prof. Dr. Margarita Esponda. Prof. Dr. Margarita Esponda
ALP I SS 2011 Funktionstypen Funktionen haben einen Datentyp, der folgende allgemeine Form hat: functionname :: T 1 -> T 2, wobei T 1, T 2 wiederum beliebige Datentypen sind Beispiel: T 1 T 2 Der Datentyp
5.3 Auswertung von Ausdrücken
5.3 Auswertung von Ausdrücken Funktionen in Java bekommen Parameter/Argumente als Input, und liefern als Output den Wert eines vorbestimmten Typs. Zum Beispiel könnte man eine Funktion i n t min ( i n
Gedächtnis. Während der Abarbeitung eines Algorithmus müssen sich Dinge gemerkt werden bzw. auf Dingen wird gerechnet. Zugriff.
Gedächtnis Während der Abarbeitung eines Algorithmus müssen sich Dinge gemerkt werden bzw. auf Dingen wird gerechnet Hauptspeicher 38265 Telefon CPU Gedächtnis Vorlesender Zugriff Verarbeitungseinheit
Grundlagen der Programmierung 2 (1.A)
Grundlagen der Programmierung 2 (1.A) Einführung Prof. Dr. Manfred Schmidt-Schauß Sommersemester 2015 Grundlagen der Programmierung 2 Geplanter Inhalt der ersten Hälfte: Programmieren in Haskell Definitionen;
Einfache Rechenstrukturen und Kontrollfluss
Einfache Rechenstrukturen und Kontrollfluss Christian Böhm WS 07/08 in Zusammenarbeit mit Gefei Zhang http://www.dbs.informatik.uni-muenchen.de/lehre/nfinfosw 2 Ziele Verstehen der Grunddatentypen von
Informatik I: Einführung in die Programmierung 3. Werte, Typen, Variablen und Ausdrücke
Informatik I: Einführung in die Programmierung 3. Werte,, n und Albert-Ludwigs-Universität Freiburg Peter Thiemann 30. Oktober 2018 1 30. Oktober 2018 P. Thiemann Info I 3 / 39 Bits Der Computer repräsentiert
Abschnitt 11: Korrektheit von imperativen Programmen
Abschnitt 11: Korrektheit von imperativen Programmen 11. Korrektheit von imperativen Programmen 11.1 11.2Testen der Korrektheit in Java Peer Kröger (LMU München) in die Programmierung WS 16/17 931 / 961
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
Programmieren in Haskell Einstieg in Haskell
Programmieren in Haskell Einstieg in Haskell Peter Steffen Universität Bielefeld Technische Fakultät 24.10.2008 1 Programmieren in Haskell Was wir heute machen Umfrage: Wer hat den Hugs ausprobiert? Ausdrücke
Javaprogrammierung mit NetBeans. Variablen, Datentypen, Methoden
Javaprogrammierung mit NetBeans Variablen, Datentypen, Methoden Programmieren 2 Java Bezeichner Bezeichner: Buchstabe _ $ Buchstabe _ $ Ziffer Groß- und Kleinbuchstaben werden strikt unterschieden. Schlüsselwörter
Operatoren und Ausdrücke
Operatoren und Ausdrücke Zuweisungsoperator Arithmetische Operatoren Vergleichsoperatoren Logische Operatoren und Ausdrücke Implizite Typ-Umwandlung Rangordnung der Operatoren / Reihenfolge der Auswertung
Angewandte Mathematik und Programmierung
Angewandte Mathematik und Programmierung Einführung in das Konzept der objektorientierten Anwendungen zu mathematischen Rechnens WS 2013/14 Operatoren Operatoren führen Aktionen mit Operanden aus. Der
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
Grunddatentypen, Ausdrücke und Variablen Typkonversion, Überprüfen und Auswerten von Ausdrücken
Typkonversion, Überprüfen und Auswerten von Ausdrücken Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-12-13/infoeinf WS12/13 Grunddatentypen
HASKELL KAPITEL 2.1. Notationen: Currying und das Lambda-Kalkül
HASKELL KAPITEL 2.1 Notationen: Currying und das Lambda-Kalkül Bisheriges (Ende VL-Teil 1) weite :: (Float,Float) ->Float weite (v0, phi) = (square(v0)/9.81) * sin(2 * phi) (10, 30 ) smaller ::(Integer,
Grundlagen der Programmierung 2 (1.A)
Grundlagen der Programmierung 2 (1.A) Einführung Prof. Dr. Manfred Schmidt-Schauß Sommersemester 2017 Grundlagen der Programmierung 2 Geplanter Inhalt der ersten Hälfte: Programmieren in Haskell Definitionen;
Grundlagen der Programmierung 2 (1.A)
Grundlagen der Programmierung 2 (1.A) Einführung Prof. Dr. Manfred Schmidt-Schauß Sommersemester 2018 Grundlagen der Programmierung 2 Geplanter Inhalt der ersten Hälfte: Programmieren in Haskell Definitionen;
Java Übung. Übung 2. Werner Gaulke. 19. April Universität Duisburg-Essen Kommedia, Übung EinPro SS06, Einführung in Java - Übung.
Java Übung Übung 2 Universität Duisburg-Essen Kommedia, Übung EinPro SS06, 19. April 2006 (UniDUE) 19. April 2006 1 / 13 Java Programme Java Programme bestehen aus (meist mehreren) Klassen. In den Klassen
Ausdrücke (1) Grundlegende Eigenschaften
Ausdrücke () Grundlegende Eigenschaften bestehen aus Literalen, Konstanten, Variablen und Operatoren einfachster Ausdruck ist das Semikolon, es bewirkt nichts. Ausdrücke werden mit einem Semikolon abgeschlossen.
Java I Vorlesung Imperatives Programmieren
Java I Vorlesung 2 Imperatives Programmieren 3.5.2004 Variablen -- Datentypen -- Werte Operatoren und Ausdrücke Kontrollstrukturen: if Imperatives Programmieren Im Kern ist Java eine imperative Programmiersprache.
Algorithmen und Programmieren II Einführung in Python (Teil 2)
Einführung in Python Algorithmen und Programmieren II Einführung in Python (Teil 2) SS 2012 Prof. Dr. Margarita Esponda ALP II: Margarita Esponda, 2. Vorlesung, 17.4.2012 1 Variablen in Python Variablen
Grundlagen der Programmierung 3 A
Grundlagen der Programmierung 3 A Typen, Typberechnung und Typcheck Prof. Dr. Manfred Schmidt-Schauß Sommersemester 2017 Haskell, Typen, und Typberechnung Ziele: Haskells Typisierung Typisierungs-Regeln
Grunddatentypen, Ausdrücke und Variablen Typkonversion, Überprüfen und Auswerten von Ausdrücken
1 Typkonversion, Überprüfen und Auswerten von Ausdrücken Dr. Philipp Wendler Zentralübung zur Vorlesung Einführung in die Informatik: Programmierung und Softwareentwicklung WS18/19 https://www.sosy-lab.org/teaching/2018-ws-infoeinf/
Algorithmen und ihre Programmierung
Veranstaltung Pr.-Nr.: 101023 Algorithmen und ihre Programmierung Veronika Waue WS 07/08 Einführung Definition: Algorithmus Ein Algorithmus ist eine genau definierte Folge von Anweisungen zur Lösung eines
Boolean Wertemenge: Wahrheitswerte {FALSE,TRUE}, auch {0,1} Deklaration:
Boolean Wertemenge: Wahrheitswerte {,}, auch {,} Deklaration: VAR present,billig,laut,gefunden : BOOLEAN; Ein-/Ausgabe: keine! Operatoren: Negation, Verneinung NOT ~ Konjunktion, logisches UND AND & Disjunktion,
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
Intensivübung zu Algorithmen und Datenstrukturen
Intensivübung zu Algorithmen und Datenstrukturen Silvia Schreier Informatik 2 Programmiersysteme Martensstraße 3 91058 Erlangen Übersicht Programmierung Fallunterscheidung Flussdiagramm Bedingungen Boolesche
Schwerpunkte. 8. Ausdrücke, Operatoren (einfache Typen) Beispiel: Schaltjahr Test. Einführendes Beispiel: Grundprobleme
Schwerpunkte Vollständige und unvollständige Auswertung 8. Ausdrücke, Operatoren (einfache Typen) Teil 1 Seiteneffekte Overloading: Überladung von Operatoren Implizite und explizite (cast) Typumwandlung
Einstieg in die Informatik mit Java
Vorlesung vom 5.11.07, Weitere Ausdrücke Übersicht 1 Vergleichsoperatoren 2 Kombinierte Zuweisungsoperatoren 3 Logische Operatoren 4 Weitere Operatoren 5 Klassifizierung von Operatoren 6 Typumwandlungen
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 =
Martin Unold INFORMATIK. Geoinformatik und Vermessung
Wiederholung So sieht ein leeres Java-Programm aus public class Programmname { public static void main (String[] args) { // Hier stehen die Anweisungen } } Beispiele für Anweisungen Wiederholung Ausgabe
Kapitel 2: Python: Ausdrücke und Typen. Grundlagen der Programmierung 1. Holger Karl. Wintersemester 2018/2018. Inhaltsverzeichnis 1
Kapitel 2: Python: Ausdrücke und Typen Grundlagen der Programmierung 1 Holger Karl Wintersemester 2018/2018 Inhaltsverzeichnis Inhaltsverzeichnis 1 Abbildungsverzeichnis 2 Liste von Definitionen u.ä. 2
Modul 122 VBA Scribt.docx
Modul 122 VBA-Scribt 1/5 1 Entwicklungsumgebung - ALT + F11 VBA-Entwicklungsumgebung öffnen 2 Prozeduren (Sub-Prozeduren) Eine Prozedur besteht aus folgenden Bestandteilen: [Private Public] Sub subname([byval
Programmieren 1 C Überblick
Programmieren C Überblick. Einleitung 2. Graphische Darstellung von Algorithmen 3. Syntax und Semantik 4. Einstieg in C: Einfache Sprachkonstrukte und allgemeiner Programmaufbau 5. Skalare Standarddatentypen
Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik Operatoren, Kommentare, Ein-/Ausgabe
Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer Programmiertechnik Operatoren, Kommentare, Ein-/Ausgabe Was sind Operatoren Ein Operator ist eine in die Programmiersprache eingebaute Funktion, die
Haskell und Python. pures Programmieren, Auswerten von Ausdrücken rekursives Programmieren, Typsystem. Python: Eine prozedurale Programmiersprache
Haskell und Python Haskell: Eine funktionale Programmiersprache funktional, nicht-strikt, hat ein polymorphes und starkes Typsystem, flexible Datenstrukturen, gute Abstraktionseigenschaften, Ziele: pures
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 s Wochenende Programmieren
III.1 Prinzipien der funktionalen Programmierung - 1 -
1. Prinzipien der funktionalen Programmierung 2. Deklarationen 3. Ausdrücke 4. Muster (Patterns) 5. Typen und Datenstrukturen 6. Funktionale Programmiertechniken III.1 Prinzipien der funktionalen Programmierung
Haskell, Typen, und Typberechnung. Grundlagen der Programmierung 3 A. Überladung und Konversion in Haskell. 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 Sommersemester
