Manuel M. T. Chakravarty Gabriele C. Keller Einführung in die Programmierung mit Haskell

Größe: px
Ab Seite anzeigen:

Download "Manuel M. T. Chakravarty Gabriele C. Keller Einführung in die Programmierung mit Haskell"

Transkript

1 Manuel M. T. Chakravarty Gabriele C. Keller Einführung in die Programmierung mit Haskell ein Imprint von Pearson Education München Boston San Francisco Harlow, England Don Mills, Ontario Sydney Mexico City Madrid Amsterdam

2 Kapitel 3 Grundlegende Kontrollstrukturen und Typen»Man findet stets, dass sich ein funktionierendes komplexes System aus einem funktionierenden einfachen System entwickelt hat.«anonym Die Funktionen, die wir bislang definiert haben, waren auf Grundoperationen beschränkt, z. B. die Inkrementierung einer gegebenen Zahl. In diesem Kapitel werden etwas kompliziertere Funktionen besprochen und grundlegende Listenoperationen kurz dargestellt. 3.1 Programme werden aus Modulen gebildet Für gewöhnlich besteht ein Programm aus einer Vielzahl von Funktions- und Typdefinitionen. Offensichtlich ist es nicht ratsam, all dies in einer einzigen Datei zu speichern. Moderne Programmiersprachen bieten daher Möglichkeiten zur Strukturierung von Programmen, indem sie zulassen, dass verwandte Definitionen in logischen Einheiten zusammengefasst und in getrennten Dateien gespeichert werden. In Haskell werden diese Einheiten Module genannt. Sehen wir uns die folgende Definition eines Haskell-Moduls namens Simple an: Beispielmodul Manuel M. T. Chakravarty, Juli 2000 Dies ist ein einfaches Beispiel für eine Moduldefinition module Sample where Quadratwurzel einer gegebenen Zahl berechnen square :: Int -> Int square x = x * x Überprüfen, ob alle drei gegebenen Zahlen gleich sind threeequal :: Int -> Int -> Int -> Bool threeequal a b c = (a == b) && (b == c)

3 26 Kapitel 3 Grundlegende Kontrollstrukturen und Typen Das Modul beginnt mit dem Kopf, d. h. einem Kommentar, der eine einzeilige Beschreibung des Moduls, den Autor und das Erstellungsdatum enthält und den Zweck des Moduls kurz beschreibt. Die erste Quelltextzeile beginnt mit dem Schlüsselwort module, dem der Name des Moduls, das Schlüsselwort where und die zum Modul gehörigen Definitionen folgen. Beachten Sie, dass Modulnamen im Gegensatz zu Funktions- oder Variablennamen mit einem Großbuchstaben beginnen müssen. In Haskell gibt es ein spezielles Modul namens Prelude.hs, das beim Start von GHCi automatisch geladen wird. Das Modul Prelude enthält alle Funktionen, die in Haskell vordefiniert sind, z. B. +, length usw. Da wir mit einfachen, kurzen Programmen beginnen, fügen wir fürs Erste alle Funktionsdefinitionen eines Programms in ein einziges Modul ein. Später erklären wir, wie man komplexere Programme mithilfe von Modulen strukturieren kann. Dies ist ein zentrales Thema in der Softwareentwicklung, und Module spielen bei der Strukturierung umfangreicher Softwaresysteme eine wichtige Rolle. Wir kommen auf dieses Thema später zurück. 3.2 Verzweigungen im Programmablauf Bislang haben alle unsere Programme bedingungslos dieselben Berechnungen durchgeführt Wahlmöglichkeiten werden durch bedingte Anweisungen umgesetzt Wie können wir eine Funktion mit der Definition max :: Int -> Int -> Int implementieren, die das größere ihrer beiden Argumente zurückgibt; d. h. sowohl für den Ausdruck max 5 2 als auch für den Ausdruck max 2 5 soll das Ergebnis 5 berechnet werden, für max 1 7 das Ergebnis 7 etc.? Für zwei zufällig gewählte Zahlen x und y soll maxxy das Ergebnis x liefern, wenn x >= y, andernfalls soll y zurückgegeben werden. Dies kann in Haskell durch einen so genannten Bedingungsausdruck oder If-then-else- Ausdruck repräsentiert werden: if (Bedingung) then (Wert, wenn die Bedingung wahr ist) else (Wert, wenn die Bedingung falsch ist)

4 3.2 Verzweigungen im Programmablauf 27 Nun können wir max folgendermaßen implementieren: max :: Int -> Int -> Int max x y = if x >= y then x else y Sehen wir uns jetzt die Berechnung von max 5 2 an max 5 2 if 5 >= 2 then 5 else 2 if True then 5 else 2 5 Bedingte Anweisungen sind ein wichtiger Bestandteil der Programmierung, weil sie es uns ermöglichen, abhängig von verschiedenen Eingabewerten unterschiedliche Berechnungen durchzuführen. Es folgt ein weiteres Beispiel: signum :: Int -> Int signum x = if x < 0 then -1 else if x == 0 then 0 else Funktionsdefinitionen mit Seitenbedingungen Das Verschachteln von bedingten Anweisungen führt, wie wir in der obigen Definition von signum sehen, zu schlecht lesbaren Programmen. Daher ermöglichen manche Programiersprachen als alternative Syntax die Verwendung von Funktionsdefinitionen mit Seitenbedingungen. signum :: Int -> Int signum x x < 0 = -1 x == 0 = 0 x > 0 = 1 signum 7 (1) 1 Hier sind drei Zwischenschritte zu berechnen: 7 < 0 False 7 == 0 False 7 > 0 True Schließlich können wir die Definition von max wie folgt mithilfe von Funktionen mit Seitenbedingungen neu formulieren: max :: Int -> Int -> Int max x y x >= y = x otherwise = y Die Wahl der Schreibweise ist dem persönlichen Geschmack des Programmierers überlassen.

5 28 Kapitel 3 Grundlegende Kontrollstrukturen und Typen 3.3 Zuweisungen Mit einer Zuweisung wird einem Wert ein Name zugewiesen. Nachfolgend kann über diesen Namen auf den Wert Bezug genommen werden. Beispielsweise können wir nach der Zuweisung pi = einfach pi statt angeben Zuordnung von Namen und Werten Wir können den neu eingeführten Namen in einer anderen Funktionsdefinition verwenden: pi :: Float pi = circlearea :: Float -> Float circlearea radius = pi * radius * radius Gelegentlich müssen wir einen Namen definieren, der nur in innerhalb einer Funktion verwendet wird. In diesem Fall sollten wir eine lokale Variablenzuweisung benutzen. Beispiel: pi :: Float pi = circlearea' :: Float -> Float circlearea' diameter = pi * radius * radius where radius = diameter / 2.0 Diese Funktion wird folgendermaßen berechnet: circlearea' 6.0 pi * radius * radius where radius = 6.0 / 2.0 pi * radius * radius where radius =3.0 pi*3.0*3.0 pi * *

6 3.4 Tupel: Kombinationen verschiedener Datenelemente Tupel: Kombinationen verschiedener Datenelemente Wir haben gesehen, dass einer Funktion mehrere Werte übergeben werden, aber noch nicht, dass eine Funktion mehrere Werte zurückgeben kann. Dies lässt sich mithilfe von Tupeln erreichen: addmul :: Int -> Int -> (Int, Int) addmul xy = (x + y, x * y) Mit einem Tupel werden mehrere Komponenten (im obigen Beispiel zwei Werte vom Typ Int, also ganze Zahlen) zu einem Wert zusammengefasst. Dieser zusammengesetzte Wert kann wie eine Einheit bearbeitet und als Wert von einer Funktion zurückgegeben werden. Die Bildung eines zusammengesetzten Werts ist jedoch nur die eine Seite der Medaille. Wir brauchen auch eine Methode zum Zerlegen dieser Werte. Hierzu verwenden wir eine Notation, die ein Gegenstück zur Notation der Tupelbildung darstellt: fstfromintpair :: (Int, Int) -> Int fstfromintpair (x, y) = x sndfromintpair :: (Int, Int) -> Int sndfromintpair (x, y) = y Im Argument von fstfromlntpair nehmen wir nicht über eine Variable auf das zusammengesetzte Argument als Ganzes Bezug. Stattdessen zerlegen wir das Wertepaar in seine Komponenten x und y. Wenn wir addmul und fstfromlntpair kombinieren, erhalten wir: fstfromintpair (addmul 56) fstfromintpair (5 + 6, 5 * 6) fstfromintpair (11, 30) Beispiel: Punkte Tupel können nicht nur zur Rückgabe mehrerer Ergebniswerte eingesetzt werden, sondern auch zur Darstellung von Datenelementen, die sich nicht durch einen Wert eines grundlegenden Datentyps repräsentiert lassen. Ein schönes Beispiel hierfür sind die Punkte in einem zweidimensionalen kartesischen Koordinatensystem, die durch ein Paar ganzzahliger Werte beschrieben werden können. Damit wir nicht jedes Mal, wenn wir den Typ eines Punkts angeben, die wenig informative Angabe (Int, Int) wiederholen müssen, können wir den neuen Typnamen Point einführen (dies ähnelt der Einführung von Namen für häufig verwendete Werte, die weiter oben erläutert wurde): type Point = (Int, Int)

7 30 Kapitel 3 Grundlegende Kontrollstrukturen und Typen Mit dieser Definition können wir einige einfache Operationen mit Punkten definieren: Ursprung des Koordinatensystems origin :: Point origin = (0, 0) Einen gegebenen Punkt nach rechts verschieben moveright :: Point -> Int -> Point moveright (x, y) distance = (x + distance, y) Einen gegebenen Punkt nach oben verschieben moveup :: Point -> Int -> Point moveup (x, y) distance = (x, y + distance) Beispiel: Farbpunkte Wenn wir die Punkte um das Merkmal Colour (Farbe) erweitern, tritt eine weitere wichtige Eigenschaft der Tupel zu Tage: Die Komponenten von Tupeln können unterschiedlichen Typs sein. Wenn wir die Farbwerte in Worten beschreiben, also jeweils durch eine Zeichenfolge (String) repräsentieren, erhalten wir folgende Definition: Farben werden durch Zeichenfolgen beschrieben type Colour = String Neuer Name für den Typ, der Farbpunkte repräsentiert type ColourPoint = (Int, Int, Colour) Diese Definition lässt folgende Operationen mit Farbpunkten zu: Ursprung des Koordinatensystems in einer gegebenen Farbe origin :: Colour -> ColourPoint origin colour = (0, 0, colour) Einen Farbpunkt vertikal und horizontal verschieben move :: ColourPoint -> Int -> Int -> ColourPoint move (x, y, colour) xdistance ydistance = (x + xdistance, y + ydistance, colour) Abstand zwischen zwei Farbpunkten berechnen distance :: ColourPoint -> ColourPoint -> Float

8 3.4 Tupel: Kombinationen verschiedener Datenelemente 31 distance (xl, yl, colourl) (x2, y2, colour2) = sqrt (inttofloat (dx * dx + dy * dy)) where dx = x2 xl dy = y2 - yl Beachten Sie, dass wir in der letzten Definition eine where-klausel verwenden, um die Ausdrücke x2 - xl und y2 yl nicht wiederholen zu müssen. Die Hilfsfunktion intto Float ist wie folgt definiert: inttofloat :: Int -> Float inttofloat x = frominteger (tointeger x) Die beiden Funktionen frominteger und tointeger sind in Prelude vordefiniert und erleichtern Umwandlungen zwischen verschiedenen Typen numerischer Werte Wichtige Symmetrien in Haskell Wenn wir die Syntax der Werte und Typen von Tupel vergleichen, stellen wir fest, dass sie einander entsprechen. Betrachten Sie folgendes Beispiel: (10, 15, "green") :: (Int, Int, String) Wenn wir die Werte 10, 15 und "green" durch ihre jeweiligen Typen Int, Int und String ersetzen, erhalten wir den Typ des Tupels. Überdies gibt es eine Parallele zwischen der Bildung eines Terms und der Zerlegung des Terms. Betrachten Sie folgendes Beispiel: startpoint = (0, 0, "black") colourofpoint (x, y, colour) = colour Wenn wir die Komponenten der Tupelkonstruktion (0, 0, "black") durch Variablennamen (hier x, y, colour) ersetzen, erhalten wir das Muster, das zur Zerlegung des entsprechenden Tupels eingesetzt werden kann Einige Tupel mit speziellen Namen In der folgenden Tabelle sind einige Tupeltypen und ihre Namen aufgeführt: # Ausdruck Name 0 () Unit 1 nicht definiert nicht definiert 2 (x 1, x 2 ) Paar

9 32 Kapitel 3 Grundlegende Kontrollstrukturen und Typen 3.5 Listen: Viele Werte desselben Typs Tupel bieten die Möglichkeit, eine feste Anzahl von Werten unterschiedlichen Typs zu kombinieren. In vielen Anwendungen muss man jedoch in der Lage sein, zusammengesetzte Typen zu bearbeiten, die eine unterschiedliche Anzahl von Elementen eines einzigen Typs enthalten können. Zu diesem Zweck gibt es Listen. oddnumbers :: Int -> [Int] oddnumbers maxnumber = [1, 3..maxNumber] Die Anzahl der von dieser Funktion zurückgegebenen Werte hängt vom Argument ab, im Gegensatz zur weiter vorn vorgestellten Funktion addmul, bei der nur der Rückgabewert, aber nicht die Anzahl der Rückgabewerte von der Eingabe abhing. Betrachten Sie folgendes Beispiel: oddnumbers 10 [1, 3, 5, 7, 9] oddnumbers 15 [1, 3, 5, 7, 9, 11, 13, 15] Der Unterschied zwischen Tupel und Listen wird deutlich, wenn man ihre Typdefinitionen vergleicht, beispielsweise und # Ausdruck Name 3 (x 1, x 2, x 3 ) Tripel 4 (x 1, x 2, x 3, x 4 ) Quadrupel 5 (x 1, x 2, x 3, x 4, x 5 ) Quintupel n (x 1,, x n ) n-tupel (1, 2, "green") :: (Int, Int, String) [1, 2, 3, 4] :: [Int] Die Anzahl der Komponenten wird in der Typdefinition eines Tupels explizit angegeben, in der Typdefinition einer Liste dagegen nicht. Folglich können die Elemente von Tupeln heterogen sein, während die Elemente von Listen homogen sein müssen Nützliche Listenfunktionen Werte werden in eckige Klammern eingeschlossen: [4, 2, 6, 7, 2] ["red", "green", "blue"] [x, y, z]

10 3.5 Listen: Viele Werte desselben Typs 33 Wir können einer gegebenen Liste am Anfang ein weiteres Element hinzufügen: "yellow" : ["red", "green", "blue"] ["yellow", "red", "green", "blue"] Mit dem Operator : können nur Elemente am Listenanfang hinzugefügt werden. Daher gilt: ["red", "green", "blue"] : "yellow" Fehler! Mit dem Operator ++ können zwei Listen zusammengefügt werden: [4, 2, 3] ++ [3, 1, 2, 7] [4, 2, 3, 3, 1, 2, 7] Mit dem Operator!! können wir ein beliebiges Element ausgeben, das an einer bestimmten Position der Liste steht. [0, 1, 2, 3]!! 2 2 (Die Zählung des Listenindex beginnt bei 0!) Mit den beiden Funktionen head und tail kann eine Liste in das erste Element bzw. die übrigen Elemente unterteilt werden: head [0, 1, 2, 3] 0 tail [0, 1, 2, 3] [1, 2, 3] Die Länge einer Liste ermitteln wir mit length: length [0, 1, 2, 3] 4 Mit sum und product können wir die Elemente einer Liste addieren bzw. multiplizieren: sum [0, 1, 2, 3] 6 product [1, 2, 3, 4] 24 Wie können wir "yellow" mithilfe dieser Funktionen am Ende der Liste ["red", "green", "blue"] einfügen? Den Operator : können wir hierzu nicht verwenden. Wir müssen ++ folgendermaßen benutzen: ["red", "green", "blue"] ++ ["yellow"] Beachten Sie die eckigen Klammern um "yellow", mit denen eine Liste gebildet wird. Wir packen "yellow" also in eine aus einem Element bestehende Liste, die wir dann an die Liste ["red", "green", "blue"] anhängen.

11 34 Kapitel 3 Grundlegende Kontrollstrukturen und Typen Unterschiede zwischen Listen und Tupeln Da Listen und Tupel häufig verwechselt werden, geben wir im Folgenden einen Überblick über die Unterschiede zwischen Listen und Tupeln. Tupel haben die folgenden Eigenschaften: Feste Größe, d. h. feste Anzahl von Komponenten: (1, 2) :: (Int, Int)und (l, 2, 3) :: (Int, Int, Int) sind unterschiedlichen Typs. Die Komponenten können unterschiedlichen Typs sein: (5, "Hallo") ist völlig korrekt. Im Gegensatz dazu haben Listen die folgenden Eigenschaften: Variable Größe, d. h. die Anzahl von Komponenten kann variieren. Daher sind [1, 2] :: [Int] und [1, 2, 3] :: [Int] Listen desselben Typs. Die Komponenten müssen vom gleichen Typ sein. [5, "Hello"] ist unzulässig! Zeichenfolgen als Listen In Haskell sind Zeichenfolgen, also Werte vom Typ String, eigentlich eine spezielle Form von Listen. Der Typ String ist in Haskell folgendermaßen definiert: type String = [Char] Dies bedeutet insbesondere, dass mit Zeichenfolgen Listenoperationen durchgeführt werden können. "Hello"!! 1 'e' In Haskell gelten "Hello" und ['H', 'e', 'l', 'l', 'o'] als identische Ausdrücke. Dies ist sehr praktisch, weil es, wie wir später sehen werden, viele mächtige Listenbearbeitungsoperationen gibt und diese zur Bearbeitung von Zeichenfolgen sofort einsetzbar sind. 3.6 Layout Im Gegensatz zu vielen anderen Programmiersprachen berücksichtigt der Haskell-Interpreter oder -Compiler die Formatierung des Quelltexts. Mit anderen Worten, die Verwendung von Einrückungen und Zeilenumbrüchen ist mit einigen Einschränkungen verbunden. Auf diese Weise kann sich die Sprache einiger Konstruktionen entledigen, die in anderen Sprachen eingeführt wurden, um Doppeldeutigkeiten der Eingabe auszuräumen.

12 3.6 Layout 35 Vergleichen Sie mit foo x = a + b where a = 1 + x b = 2 foo x = a + b where a = 1 + x b = 2 Beides sind zulässige Programme. Im ersten Programm ist b lokal innerhalb von foo definiert, während im zweiten Programm die Verwendung von b nicht auf foo beschränkt ist. Als Beispiel für ein korrektes Layout wird hier die Funktion distance angeführt, die wir weiter oben besprochen haben: distance :: ColourPoint -> ColourPoint -> Float distance (x1, y1, colour1) (x2, y2, colour2) = sqrt (fromint (dx * dx + dy * dy)) where dx = x2 x1 dy = y2 - y1 Es gibt drei Layoutregeln, die Sie befolgen müssen, um syntaktisch korrekte Programme zu erhalten: 1. Der gesamte zu einer Funktionsdefinition gehörige Programmcode muss sich weiter rechts als das erste Zeichen der betreffenden Definition befinden (also rechts vom ersten Zeichen des Funktionsnamens stehen). Im Fall der Funktion distance muss sich der gesamte Quelltext rechts von der Spalte befinden, die den Buchstaben d des Funktionsnamens distance enthält. 2. Analog hierzu muss sich der gesamte Quelltext einer lokalen Definition in einer where-klausel rechts vom ersten Zeichen des Namens der definierten Variablen befinden. 3. Alle Definitionen innerhalb einer where-klausel müssen bündig untereinander ausgerichtet werden, beispielsweise beginnen die Definitionen von dx und dy im obigen Beispiel in derselben Spalte.

13 36 Kapitel 3 Grundlegende Kontrollstrukturen und Typen 3.7 Übungen 1. Schreiben Sie eine Funktion sort2 :: Int -> Int -> (Int, Int), die zwei Werte vom Typ Int als Argumente akzeptiert und diese als sortiertes Paar zurückgibt, so dass sort2 5 3 gleich (3, 5) ist. Wie definieren Sie diese Funktion mit einem Bedingungsausdruck, wie lösen Sie die Funktion unter Verwendung von Funktionen mit Seitenbedingungen? 2. Betrachten Sie die Funktion almostequal :: (Int, Int) -> (Int, Int) -> Bool, welche die Werte von zwei Wertepaaren des Typs Int miteinander vergleicht. Sie liefert das Ergebnis True, wenn beide Paare dieselben Werte enthalten, wobei deren Reihenfolge nicht von Belang ist. Beispielsweise gilt, almostequal (3,4) (4,3) ist True, aber almostequal (3,4) (3,5) ist False. Welche der folgenden Definitionen geben den korrekten Wert zurück? Welche Definition halten Sie für guten Programmierstil? Warum? Fügen Sie den korrekten Definitionen Kommentare hinzu, damit diese verständlicher und leichter lesbar werden. ((&&) :: Bool -> Bool -> Bool entspricht dem logischen 'Und', ( ) :: Bool -> Bool -> Bool entspricht dem logischen 'Oder', und (==) prüft, ob zwei Werte gleich sind.) almostequal (xl, yl) (x2, y2) (xl == x2) && (yl == y2) = True (xl == y2) && (yl == x2) = True otherwise = False almostequal (xl, yl) (x2, y2) (xl == x2) = (yl == y2) (xl == y2) = (yl == x2) otherwise = False almostequal pairl pair2 = (pairl == pair2) (swap pairl == pair2) where swap (x,y) = (y,x) almostequal pairl pair2 = (pairl == pair2) (swap pairl == swap pair2) where swap (x,y) = (y,x) almostequal (xl, yl) (x2, y2) = if (xl == x2) then then if (yl == y2) then True else False else if (xl == y2) then if (x2 == yl) then True else False else False

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2 Java Einführung VARIABLEN und DATENTYPEN Kapitel 2 Inhalt dieser Einheit Variablen (Sinn und Aufgabe) Bezeichner Datentypen, Deklaration und Operationen Typenumwandlung (implizit/explizit) 2 Variablen

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

Grundlagen. Kapitel 1

Grundlagen. Kapitel 1 Grundlagen Dieses Kapitel umfasst grundlegende Fragen und Aufgaben zur Erstellung von C++-Programmen. Hierzu zählen auch das Inkludieren von Header-Dateien Eine Header-Datei beinhaltet Informationen, die

Mehr

1. LPC - Lehmanns Programmier Contest - Lehmanns Logo

1. LPC - Lehmanns Programmier Contest - Lehmanns Logo Aufgabe ist die Entwicklung einer vereinfachten Variante der beliebten Programmiersprache Logo. Die Aufgabe ist in drei Stufen zu erledigen, von der wir zunächst nur die erste Stufe bekannt geben. Die

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

Arbeiten mit Arrays. 4.1 Eigenschaften. 4.1.1 Schlüssel und Element. Kapitel 4

Arbeiten mit Arrays. 4.1 Eigenschaften. 4.1.1 Schlüssel und Element. Kapitel 4 Arbeiten mit s Eine effiziente Programmierung mit PHP ohne seine s ist kaum vorstellbar. Diese Datenstruktur muss man verstanden haben, sonst brauchen wir mit weitergehenden Programmiertechniken wie der

Mehr

Informatik. Studiengang Chemische Technologie. Michael Roth WS 2012/2013. michael.roth@h-da.de. Hochschule Darmstadt -Fachbereich Informatik-

Informatik. Studiengang Chemische Technologie. Michael Roth WS 2012/2013. michael.roth@h-da.de. Hochschule Darmstadt -Fachbereich Informatik- Informatik Studiengang Chemische Technologie Michael Roth michael.roth@h-da.de Hochschule Darmstadt -Fachbereich Informatik- WS 2012/2013 Inhalt Teil VII Einstieg in Java I Michael Roth (h_da) Informatik

Mehr

PHP 5.4 ISBN 978-3-86249-327-2. Stephan Heller, Andreas Dittfurth 1. Ausgabe, September 2012. Grundlagen zur Erstellung dynamischer Webseiten GPHP54

PHP 5.4 ISBN 978-3-86249-327-2. Stephan Heller, Andreas Dittfurth 1. Ausgabe, September 2012. Grundlagen zur Erstellung dynamischer Webseiten GPHP54 PHP 5.4 Stephan Heller, Andreas Dittfurth 1. Ausgabe, September 2012 Grundlagen zur Erstellung dynamischer Webseiten ISBN 978-3-86249-327-2 GPHP54 5 PHP 5.4 - Grundlagen zur Erstellung dynamischer Webseiten

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

Übungspaket 19 Programmieren eigener Funktionen

Übungspaket 19 Programmieren eigener Funktionen Übungspaket 19 Programmieren eigener Funktionen Übungsziele: Skript: 1. Implementierung und Kodierung eigener Funktionen 2. Rekapitulation des Stack-Frames 3. Parameterübergabe mittels Stack und Stack-Frame

Mehr

Objektorientiertes Programmieren für Ingenieure

Objektorientiertes Programmieren für Ingenieure Uwe Probst Objektorientiertes Programmieren für Ingenieure Anwendungen und Beispiele in C++ 18 2 Von C zu C++ 2.2.2 Referenzen und Funktionen Referenzen als Funktionsparameter Liefert eine Funktion einen

Mehr

Erwin Grüner 15.12.2005

Erwin Grüner 15.12.2005 FB Psychologie Uni Marburg 15.12.2005 Themenübersicht Mit Hilfe der Funktionen runif(), rnorm() usw. kann man (Pseudo-) erzeugen. Darüber hinaus gibt es in R noch zwei weitere interessante Zufallsfunktionen:

Mehr

Programmierung in Python

Programmierung in Python Programmierung in Python imperativ, objekt-orientiert dynamische Typisierung rapid prototyping Script-Sprache Funktionales und rekursives Programmieren P raktische Informatik 1, W S 2004/05, F olien P

Mehr

Java Server Faces. Andy Bosch. Das Standard-Framework zum Aufbau webbasierter Anwendungen. An imprint of Pearson Education

Java Server Faces. Andy Bosch. Das Standard-Framework zum Aufbau webbasierter Anwendungen. An imprint of Pearson Education Andy Bosch Java Server Faces Das Standard-Framework zum Aufbau webbasierter Anwendungen An imprint of Pearson Education München Boston San Francisco Harlow, England Don Mills, Ontario Sydney Mexico City

Mehr

Prinzipien der Softwareentwicklung S. Strahringer

Prinzipien der Softwareentwicklung S. Strahringer Gliederung 1 Einführung Was ist ein Programm? Vorteile (und Nachteile) von PHP Erste PHP-Programme Ausführung von PHP-Programmen 2 Grundbegriffe der Programmierung Anweisungen, Variablen, Datentypen und

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

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

Excel Funktionen durch eigene Funktionen erweitern.

Excel Funktionen durch eigene Funktionen erweitern. Excel Funktionen durch eigene Funktionen erweitern. Excel bietet eine große Anzahl an Funktionen für viele Anwendungsbereiche an. Doch es kommt hin und wieder vor, dass man die eine oder andere Funktion

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

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

Funktionale Programmierung. der direkte Weg vom Modell zum Programm

Funktionale Programmierung. der direkte Weg vom Modell zum Programm 1 Funktionale Programmierung der direkte Weg vom Modell zum Programm Peter Padawitz, TU Dortmund 19. Juni 2010 2 Inhalt Modelle Bestandteile eines Modells Konstruktor- versus destruktorbasierte Modelle

Mehr

MCSE-Zertifizierungsupgrade auf Windows Server 2003

MCSE-Zertifizierungsupgrade auf Windows Server 2003 Stephan Hirsch, David Kube MCSE-Zertifizierungsupgrade auf Windows Server 2003 Für Examen Nr. 70 296 ADDISON-WESLEY An imprint of Pearson Education München Boston San Francisco Harlow, England Don Mills,

Mehr

Magento Theme-Design. professionelle Themes für Ihren Shop Y%ADDISON-WESLEY. Entwerfen Sie Schritt für Schritt. Richard Carter

Magento Theme-Design. professionelle Themes für Ihren Shop Y%ADDISON-WESLEY. Entwerfen Sie Schritt für Schritt. Richard Carter Richard Carter Magento Theme-Design Entwerfen Sie Schritt für Schritt professionelle Themes für Ihren Shop Y%ADDISON-WESLEY An imprint of Pearson Education München Boston San Francisco Harlow, England

Mehr

Übung 9. Quellcode Strukturieren Rekursive Datenstrukturen Uebung 9

Übung 9. Quellcode Strukturieren Rekursive Datenstrukturen Uebung 9 Informatik I 2 Übung 9 Quellcode Strukturieren Rekursive Datenstrukturen Uebung 9 Quellcode Strukturieren Wenn alle Funktionen in einer Datei zusammengefasst sind wird es schnell unübersichtlich Mehrere

Mehr

ARBEITSBLATT ZU FORMALEN SPRACHEN

ARBEITSBLATT ZU FORMALEN SPRACHEN ARBEITSBLATT ZU FORMALEN SPRACHEN Aufgabe 1: Gegeben ist die folgende Formale Sprache L(G) mit G = (T, N, P, S). Die Produktionen lauten ZUWEISUNG ::= name zuweisungsoperator AUSDRUCK semikolon AUSDRUCK

Mehr

Programmierkurs: Delphi: Einstieg

Programmierkurs: Delphi: Einstieg Seite 1 von 6 Programmierkurs: Delphi: Einstieg Aus Wikibooks Inhaltsverzeichnis 1 Einstieg Einstieg Was ist Delphi Borland Delphi ist eine RAD-Programmierumgebung von Borland. Sie basiert auf der Programmiersprache

Mehr

Definieren Sie eine Funktion circlearea zur Berechnung der Fläche eines Kreises mit gegebenen Radius (Float).

Definieren Sie eine Funktion circlearea zur Berechnung der Fläche eines Kreises mit gegebenen Radius (Float). Haskell Funktionen Definieren Sie eine Funktion circlearea zur Berechnung der Fläche eines Kreises mit gegebenen Radius (Float). circlearea :: Float -> Float circlearea radius = 2 * pi * radius^2 Definieren

Mehr

Arbeiten mit BlueJ. Objektorientiertes Programmieren in Java mit BlueJ

Arbeiten mit BlueJ. Objektorientiertes Programmieren in Java mit BlueJ Arbeiten mit BlueJ Compilieren, Editieren, Objekte erzeugen, Methoden aufrufen, Objekte inspizieren, vorhandene Klassen benutzen, eigene Klassen und Methoden erstellen In BlueJ geht es einfach BlueJ durch

Mehr

Einführung in die Programmiersprache C

Einführung in die Programmiersprache C Einführung in die Programmiersprache C Marcel Arndt arndt@ins.uni-bonn.de Institut für Numerische Simulation Universität Bonn Der Anfang Ein einfaches Programm, das Hello World! ausgibt: #include

Mehr

1. Der Einstieg in Java. Was heißt Programmieren?

1. Der Einstieg in Java. Was heißt Programmieren? 1. Der Einstieg in Java Lernziele: Am Ende dieses Kapitels sollen Sie wissen, aus welchen Bestandteilen ein Java-Programm besteht, Java-Programme übersetzen und ausführen können, Möglichkeiten der Kommentierung

Mehr

2 Einfache Rechnungen

2 Einfache Rechnungen 2 Einfache Rechnungen 2.1 Zahlen Computer, auch bekannt als Rechner, sind sinnvoller eingesetzt, wenn sie nicht nur feste Texte ausgeben, sondern eben auch rechnen. Um das Rechnen mit Zahlen zu verstehen,

Mehr

Grundlagen. Die Komponenten eines C Programms. Das erste Programm

Grundlagen. Die Komponenten eines C Programms. Das erste Programm Grundlagen 1. Die Komponenten eines C Programms 2. Ein Programm erzeugen und übersetzen 3. Variablen Deklarieren und Werte zuweisen 4. Zahlen eingeben mit der Tastatur 5. Arithmetische Ausdrücke und Berechnungen

Mehr

Linux Tutorium. 12. Shellprogrammierung. Version vom 02.07.2008 13:38:56

Linux Tutorium. 12. Shellprogrammierung. Version vom 02.07.2008 13:38:56 Linux Tutorium 12. Shellprogrammierung Version vom 02.07.2008 13:38:56 im Grunde ist ein Shell-Skript nichts anderes als eine Textdatei, welche Befehlsfolgen enthält Shell-Skripte werden im Wesentlichen

Mehr

Tutorium - Haskell in der Schule. Ralf Dorn - Dennis Buchmann - Felix Last - Carl Ambroselli

Tutorium - Haskell in der Schule. Ralf Dorn - Dennis Buchmann - Felix Last - Carl Ambroselli Tutorium - Haskell in der Schule Wer sind wir? Otto-Nagel-Gymnasium in Berlin-Biesdorf Hochbegabtenförderung und MacBook-Schule Leistungskurse seit 2005 Einführung Was ist funktionale Programmierung? Einführung

Mehr

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE16-Rekursion (Stand 09.12.2011) Aufgabe 1: Implementieren Sie in Java ein Programm, das solange einzelne Zeichen vom Terminal einliest, bis ein #-Zeichen

Mehr

Jasmin Blanchette, Mark Summerfield

Jasmin Blanchette, Mark Summerfield Jasmin Blanchette, Mark Summerfield Die offizielle Einführung 2., aktualisierte Auflage r,. t~. VV ADDISON-WESLEY An imprint of Pearson Education München Boston San Francisco Harlow, England Don Mills,

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

Algorithmische Kernsprache. Zuweisung, einfache und bedingte Anweisung, Blöcke, Schleifen, return, debugging.

Algorithmische Kernsprache. Zuweisung, einfache und bedingte Anweisung, Blöcke, Schleifen, return, debugging. Algorithmische Kernsprache Zuweisung, einfache und bedingte Anweisung, Blöcke, Schleifen, return, debugging. Ausdrücke Anweisungen Ausdrücke bezeichnen einen Wert Kontext stellt Werte von Variablen Werte

Mehr

Kontrollstrukturen, Pseudocode und Modulo-Rechnung

Kontrollstrukturen, Pseudocode und Modulo-Rechnung Kontrollstrukturen, Pseudocode und Modulo-Rechnung CoMa-Übung III TU Berlin 29.10.2012 CoMa-Übung III (TU Berlin) Kontrollstrukturen, Pseudocode und Modulo-Rechnung 29.10.2012 1 / 1 Themen der Übung 1

Mehr

Joomla! eigenen Joomla!-Website ^ADDISON-WESLEY. Die Schritt-für-Schritt-Anleitung zur. Stephen Bürge. An imprint of Pearson

Joomla! eigenen Joomla!-Website ^ADDISON-WESLEY. Die Schritt-für-Schritt-Anleitung zur. Stephen Bürge. An imprint of Pearson Stephen Bürge Joomla! Die Schritt-für-Schritt-Anleitung zur eigenen Joomla!-Website ^ADDISON-WESLEY An imprint of Pearson München Boston San Francisco Harlow, England Don Mills, Ontario Sydney Mexico City

Mehr

SQL objektorientiert

SQL objektorientiert Dušan Petković SQL objektorientiert An imprint of Pearson Education München Boston San Francisco Harlow, England Don Mills, Ontario Sydney Mexico City Madrid Amsterdam Vorwort 11 Teil 1: Einführung 15

Mehr

Programmiertechnik Operatoren, Kommentare, Ein-/Ausgabe

Programmiertechnik Operatoren, Kommentare, Ein-/Ausgabe Programmiertechnik Operatoren, Kommentare, Ein-/Ausgabe Prof. Dr. Oliver Haase Oliver Haase Hochschule Konstanz 1 Was sind Operatoren? Ein Operator ist eine in die Programmiersprache eingebaute Funktion,

Mehr

Grundlagen der Programmiersprache C++

Grundlagen der Programmiersprache C++ / TU Braunschweig Grundlagen der Programmiersprache C++ Um den Studierenden den Einstieg in die FE-Programmierung zu erleichtern werden die wesentlichen Elemente eines C-Programmes beschrieben, soweit

Mehr

SQL Server 2008 Der schnelle Einstieg

SQL Server 2008 Der schnelle Einstieg Klemens Konopasek SQL Server 2008 Der schnelle Einstieg Abfragen, Transact-SQL, Entwicklung und Verwaltung ADDISON-WESLEY An imprint of Pearson Education München Boston San Francisco Harlow, England Don

Mehr

Zusammengesetzte Datentypen -- Arrays und Strukturen

Zusammengesetzte Datentypen -- Arrays und Strukturen Zusammengesetzte Datentypen -- und Strukturen Informatik für Elektrotechnik und Informationstechnik Benedict Reuschling benedict.reuschling@h-da.de Hochschule Darmstadt Fachbereich Informatik WS 2013/14

Mehr

Dr. Monika Meiler. Inhalt

Dr. Monika Meiler. Inhalt Inhalt 5 Referenzdatentypen - Felder... 5-2 5.1 Eindimensionale Felder - Vektoren... 5-3 5.1.1 Vereinbarung... 5-3 5.1.2 Referenzen sind keine Felder... 5-4 5.1.3 Kopieren eindimensionaler Felder... 5-6

Mehr

Autor: Michael Spahn Version: 1.0 1/10 Vertraulichkeit: öffentlich Status: Final Metaways Infosystems GmbH

Autor: Michael Spahn Version: 1.0 1/10 Vertraulichkeit: öffentlich Status: Final Metaways Infosystems GmbH Java Einleitung - Handout Kurzbeschreibung: Eine kleine Einführung in die Programmierung mit Java. Dokument: Autor: Michael Spahn Version 1.0 Status: Final Datum: 23.10.2012 Vertraulichkeit: öffentlich

Mehr

Einführung in die Informatik Grammars & Parsers

Einführung in die Informatik Grammars & Parsers Einführung in die Informatik Grammars & Parsers Grammatiken, Parsen von Texten Wolfram Burgard Cyrill Stachniss 12.1 Einleitung Wir haben in den vorangehenden Kapiteln meistens vollständige Java- Programme

Mehr

4 Codierung nach Viginere (Lösung)

4 Codierung nach Viginere (Lösung) Kapitel 4 Codierung nach Viginere (Lösung) Seite 1/14 4 Codierung nach Viginere (Lösung) 4.1 Einführung Blaise de Vigenère lebte von 1523 bis 1596 in Frankreich und war nach dem Studium bei verschiedenen

Mehr

Nachklausur Programmieren / Algorithmen und Datenstrukturen 1

Nachklausur Programmieren / Algorithmen und Datenstrukturen 1 Programmieren / Algorithmen und Datenstrukturen Autor: Prof. Dr. Bernhard Humm, FB Informatik, Hochschule Darmstadt Datum: 7. Oktober 200 Nachklausur Programmieren / Algorithmen und Datenstrukturen Spielregeln

Mehr

Tutoraufgabe 1 (Datenstrukturen in Haskell):

Tutoraufgabe 1 (Datenstrukturen in Haskell): Prof. aa Dr. J. Giesl Programmierung WS12/13 M. Brockschmidt, F. Emmes, C. Otto, T. Ströder Allgemeine Die Hausaufgaben sollen in Gruppen von je 2 Studierenden aus der gleichen Kleingruppenübung (Tutorium)

Mehr

SQL Server 2005 Der schnelle Einstieg

SQL Server 2005 Der schnelle Einstieg Klemens Konopasek Ernst Tiemeyer SQL Server 2005 Der schnelle Einstieg Abfragen, Transact-SQL, Entwicklung und Verwaltung An imprint of Pearson Education München Boston San Francisco Harlow, England Don

Mehr

Contao für Redakteure

Contao für Redakteure Nina Gerling Contao für Redakteure Inhalte editieren und verwalten mit dem Open-Source-CMS ADDISON-WESLEY An imprint of Pearson Education München Boston San Francisco Harlow, England Don Mills, Ontario

Mehr

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = 0.51129 Euro ergeben.

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = 0.51129 Euro ergeben. Aufgabe 1.30 : Schreibe ein Programm DM_in_Euro.java zur Umrechnung eines DM-Betrags in Euro unter Verwendung einer Konstanten für den Umrechnungsfaktor. Das Programm soll den DM-Betrag als Parameter verarbeiten.

Mehr

Einführung in die C-Programmierung

Einführung in die C-Programmierung Einführung in die C-Programmierung Warum C? Sehr stark verbreitet (Praxisnähe) Höhere Programmiersprache Objektorientierte Erweiterung: C++ Aber auch hardwarenahe Programmierung möglich (z.b. Mikrokontroller).

Mehr

Übung 4: Schreiben eines Shell-Skripts

Übung 4: Schreiben eines Shell-Skripts Aufgabenteil 1 Ziel der Übung Übung 4: Schreiben eines Shell-Skripts Anhand eines einfachen Linux-Skripts sollen die Grundlagen der Shell-Programmierung vermittelt werden. Das für die Bash-Shell zu erstellende

Mehr

TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK

TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK WS 11/12 Einführung in die Informatik II Übungsblatt 2 Univ.-Prof. Dr. Andrey Rybalchenko, M.Sc. Ruslán Ledesma Garza 8.11.2011 Dieses Blatt behandelt

Mehr

25 kann ohne Rest durch 5 geteilt werden! ist wahr

25 kann ohne Rest durch 5 geteilt werden! ist wahr Lehrbrief 2: Lektion 8 - C -Praxis 4-1 - 5.2 Einfache Entscheidungen mit if und die Vergleichsoperatoren Nun tauchen wir immer tiefer in die Geheimnisse von C ein und beschäftigen uns mit einem sehr wichtigen

Mehr

IT- Handbuch für Fachinformatiker, 7. Auflage: Text- Lösungen Sascha Kersken

IT- Handbuch für Fachinformatiker, 7. Auflage: Text- Lösungen Sascha Kersken IT- Handbuch für Fachinformatiker, 7. Auflage: Text- Lösungen Sascha Kersken Im Folgenden finden Sie jeweils die korrekte Antwort zu den im Buch abgedruckten Prüfungsfragen, soweit die Antworten in Textform

Mehr

Übungsblatt 2. Abgabe: Freitag, 7. November 2014, 18:00 Uhr

Übungsblatt 2. Abgabe: Freitag, 7. November 2014, 18:00 Uhr Informatik I: Einführung in die Programmierung Prof. Dr. Bernhard Nebel Dr. Christian Becker-Asano, Dr. Stefan Wölfl Wintersemester 2014/2015 Universität Freiburg Institut für Informatik Übungsblatt 2

Mehr

PHP Code Konventionen Um einen einheitlichen Code zu generieren, der von jedem gelesen werden kann, müssen folgende Konventionen eingehalten werden.

PHP Code Konventionen Um einen einheitlichen Code zu generieren, der von jedem gelesen werden kann, müssen folgende Konventionen eingehalten werden. PHP Code Konventionen Um einen einheitlichen Code zu generieren, der von jedem gelesen werden kann, müssen folgende Konventionen eingehalten werden. Allgemein Ein Einzug sollte aus 4 Leerzeichen bestehen.

Mehr

Kurzeinführung in C. Johannes J. Schneider 27.10.2004

Kurzeinführung in C. Johannes J. Schneider 27.10.2004 Kurzeinführung in C Johannes J. Schneider 27.10.2004 1 Einleitung C ist eine in vielen Bereichen sehr häufig verwendete Programmiersprache, die von der Betriebssystemprogrammierung bis hin zur Programmierung

Mehr

Objektorientierte Softwaretechnik

Objektorientierte Softwaretechnik Bernd Brügge, Allen H. Dutoit Objektorientierte Softwaretechnik mit UML, Entwurfsmustern und Java ein Imprint von Pearson Education München Boston San Francisco Harlow, England Don Mills, Ontario Sydney

Mehr

Windows Scripting lernen

Windows Scripting lernen Holger Schwichtenberg, Sven Conrad, Thomas Gartner, Oliver Scheer Windows Scripting lernen Anfangen, anwenden, verstehen An imprint of Pearson Education München Boston San Francisco Harlow, England Don

Mehr

Institut für Informatik

Institut für Informatik Technische Universität München Institut für Informatik Lehrstuhl für Computer Graphik & Visualisierung WS 2010 Praktikum: Grundlagen der Programmierung Aufgabenblatt 1 Prof. R. Westermann, A. Lehmann,

Mehr

PIWIN 1 Übung Blatt 5

PIWIN 1 Übung Blatt 5 Fakultät für Informatik Wintersemester 2008 André Gronemeier, LS 2, OH 14 Raum 307, andre.gronemeier@cs.uni-dortmund.de PIWIN 1 Übung Blatt 5 Ausgabedatum: 19.12.2008 Übungen: 12.1.2009-22.1.2009 Abgabe:

Mehr

SS 2010. Björn Berezowski B.Sc. Marco Münch B.Sc. Michael Roth B.Sc. Repetitorium PG 1. Übungsblatt. 1 Übung - Probeklausur SS 2010 Typ Prof.

SS 2010. Björn Berezowski B.Sc. Marco Münch B.Sc. Michael Roth B.Sc. Repetitorium PG 1. Übungsblatt. 1 Übung - Probeklausur SS 2010 Typ Prof. SS 2010 Björn Berezowski B.Sc. Marco Münch B.Sc. Michael Roth B.Sc. Repetitorium PG 1 Übungsblatt 1 Übung - Probeklausur SS 2010 Typ Prof.Humm Aufgabe : Bank-Verwaltungs-System In dieser Klausur werden

Mehr

Java 7. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Dezember 2011 JAV7

Java 7. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Dezember 2011 JAV7 Java 7 Elmar Fuchs Grundlagen Programmierung 1. Ausgabe, Dezember 2011 JAV7 5 Java 7 - Grundlagen Programmierung 5 Kontrollstrukturen In diesem Kapitel erfahren Sie wie Sie die Ausführung von von Bedingungen

Mehr

Einführung in Python Übung 1

Einführung in Python Übung 1 Einführung in Python Übung 1 Rebecca Breu, Bastian Tweddell Oktober 2007 Login: XXXloginXXX Passwort: XXXpasswortXXX Bitte das Passwort ändern (passwd)! Datentypen I Aufgabe 1 (Erste Schritte, Zahlen)

Mehr

SQL Server 2008 Performance-Optimierung

SQL Server 2008 Performance-Optimierung Holger Schmeling SQL Server 2008 Performance-Optimierung Das Praxisbuch für Entwickler und Administratoren ^ ADDISON-WESLEY An imprint of Pearson Education München Boston San Francisco Harlow, England

Mehr

M. Graefenhan 2000-12-07. Übungen zu C. Blatt 3. Musterlösung

M. Graefenhan 2000-12-07. Übungen zu C. Blatt 3. Musterlösung M. Graefenhan 2000-12-07 Aufgabe Lösungsweg Übungen zu C Blatt 3 Musterlösung Schreiben Sie ein Programm, das die Häufigkeit von Zeichen in einem eingelesenen String feststellt. Benutzen Sie dazu ein zweidimensionales

Mehr

Einführung in die Java- Programmierung

Einführung in die Java- Programmierung Einführung in die Java- Programmierung Dr. Volker Riediger Der hat die früher handschriftlichen Folien lesbar gemacht. Tassilo Horn riediger horn@uni-koblenz.de WiSe 2012/13 1 Heutige Themen Hello World!

Mehr

Erstellen bedingter Formeln

Erstellen bedingter Formeln Microsoft Office Excel Erstellen bedingter Formeln Alle ausblenden Bei vielen Aufgaben wird häufig getestet, ob Bedingungen wahr oder falsch sind. Außerdem werden häufig logische Vergleiche zwischen Ausdrücken

Mehr

Inhaltsverzeichnis. Grundbegriffe der C-Programmierung Für den HI-TECH C-Compiler

Inhaltsverzeichnis. Grundbegriffe der C-Programmierung Für den HI-TECH C-Compiler Inhaltsverzeichnis Grundbegriffe der C-Programmierung 1. Grundsätzliches... 2 1.1 Darstellung von Werten... 2 1.1.1 Dezimale Zahlendarstellung... 2 1.1.2 Binäre Zahlendarstellung... 3 1.1.3 Hexadezimale

Mehr

Es gibt zwei verschiedene Arten, wie Programme auf dem Rechner ausgeführt werden:

Es gibt zwei verschiedene Arten, wie Programme auf dem Rechner ausgeführt werden: 3 Grundlagen 3.1 Starten eines C++ Programms Es gibt zwei verschiedene Arten, wie Programme auf dem Rechner ausgeführt werden: 1. Programme, die vom Interpreter der Programmiersprache Zeile für Zeile interpretiert

Mehr

C++ - Funktionen und mehr. Kerstin Gößner und Ralf Wondratschek

C++ - Funktionen und mehr. Kerstin Gößner und Ralf Wondratschek C++ - Funktionen und mehr Kerstin Gößner und Ralf Wondratschek Übersicht Deklaration, Definition und Initialisierung Variablen- und Konstantendeklaration Funktionsaufrufe und rückgabewerte Technische Grundlage

Mehr

Übungsblatt 3: Algorithmen in Java & Grammatiken

Übungsblatt 3: Algorithmen in Java & Grammatiken Humboldt-Universität zu Berlin Grundlagen der Programmierung (Vorlesung von Prof. Bothe) Institut für Informatik WS 15/16 Übungsblatt 3: Algorithmen in Java & Grammatiken Abgabe: bis 9:00 Uhr am 30.11.2015

Mehr

1. Der Einstieg in Java

1. Der Einstieg in Java 1. Der Einstieg in Java Was heißt Programmieren? 1. Der Einstieg in Java Lernziele: Am Ende dieses Kapitels sollen Sie wissen, aus welchen Bestandteilen ein Java-Programm besteht, Java-Programme übersetzen

Mehr

Gliederung. Tutorium zur Vorlesung. Gliederung. Gliederung. 1. Gliederung der Informatik. 1. Gliederung der Informatik. 1. Gliederung der Informatik

Gliederung. Tutorium zur Vorlesung. Gliederung. Gliederung. 1. Gliederung der Informatik. 1. Gliederung der Informatik. 1. Gliederung der Informatik Informatik I WS 2012/13 Tutorium zur Vorlesung 1. Alexander Zietlow zietlow@informatik.uni-tuebingen.de Wilhelm-Schickard-Institut für Informatik Eberhard Karls Universität Tübingen 11.02.2013 1. 2. 1.

Mehr

Erwin Grüner 09.02.2006

Erwin Grüner 09.02.2006 FB Psychologie Uni Marburg 09.02.2006 Themenübersicht Folgende Befehle stehen in R zur Verfügung: {}: Anweisungsblock if: Bedingte Anweisung switch: Fallunterscheidung repeat-schleife while-schleife for-schleife

Mehr

Programmieren in C. Operatoren, Variablen und deren Sichtbarkeit. Prof. Dr. Nikolaus Wulff

Programmieren in C. Operatoren, Variablen und deren Sichtbarkeit. Prof. Dr. Nikolaus Wulff Programmieren in C Operatoren, Variablen und deren Sichtbarkeit Prof. Dr. Nikolaus Wulff Auswertung von Ausdrücken Was passiert wenn ein Ausdruck wie z. B. int y,x=2; y = ++x * x++; im Computer abgearbeitet

Mehr

Windows Scripting lernen

Windows Scripting lernen Holger Schwichtenberg, Sven Conrad, Thomas Gärtner, Oliver Scheer Windows Scripting lernen Anfangen, anwenden, verstehen ADDISON-WESLEY An imprint of Pearson Education München Boston San Francisco Harlow,

Mehr

Übungen 19.01.2012 Programmieren 1 Felix Rohrer. Übungen

Übungen 19.01.2012 Programmieren 1 Felix Rohrer. Übungen Übungen if / else / else if... 2... 2 Aufgabe 2:... 2 Aufgabe 3:... 2 Aufgabe 4:... 2 Aufgabe 5:... 2 Aufgabe 6:... 2 Aufgabe 7:... 3 Aufgabe 8:... 3 Aufgabe 9:... 3 Aufgabe 10:... 3 switch... 4... 4 Aufgabe

Mehr

Grundwissen Informatik JS 10 24. September 2015

Grundwissen Informatik JS 10 24. September 2015 Grundwissen Informatik JS 10 24. September 2015 Grundlagen der Objektorientierung 1. Erkläre die Begriffe Klasse, Attribut, Attributwert, Objekt, Methode und Dienst. Beispiel! Allgemein Eine Klasse ist

Mehr

Python Programmieren. Variablen, Ausdrücke und Anweisungen

Python Programmieren. Variablen, Ausdrücke und Anweisungen Python Programmieren Funktionen Module und Namensräume Datentypen in Python Was noch zu sagen bleibt... richard rascher-friesenhausen Programmierung SS 12 Daten: Wert und Typ Variablen Variablennamen und

Mehr

Fachseminar WS 2008/09

Fachseminar WS 2008/09 Fachseminar WS 2008/09 Fachgebiet: Compilerbau Thema: Lexikalische Analyse (Scanner) Referent: Ali Sediq Betreuer: Prof. Dr. Helmut Weber 1 Inhaltsverzeichnis Lexikalische Analyse 1.0 Grundprobleme der

Mehr

Aufgabenstellung und Zielsetzung

Aufgabenstellung und Zielsetzung Aufgabenstellung und Zielsetzung In diesem Szenario werden Sie eine Bestellung, vorliegend im XML-Format, über einen Web-Client per HTTP zum XI- System senden. Dort wird die XML-Datei mittels eines HTTP-Interfaces

Mehr

Funktionale Programmierung mit Haskell

Funktionale Programmierung mit Haskell Funktionale Programmierung mit Haskell Prof. Dr. Hans J. Schneider Lehrstuhl für Programmiersprachen und Programmiermethodik Friedrich-Alexander-Universität Erlangen-Nürnberg Sommersemester 2011 I. Die

Mehr

Hello World. Javakurs 2014, 1. Vorlesung. Sebastian Schuck. basierend auf der Vorlage von Arne Kappen. wiki.freitagsrunde.org. 3.

Hello World. Javakurs 2014, 1. Vorlesung. Sebastian Schuck. basierend auf der Vorlage von Arne Kappen. wiki.freitagsrunde.org. 3. Hello World Javakurs 2014, 1. Vorlesung Sebastian Schuck basierend auf der Vorlage von Arne Kappen wiki.freitagsrunde.org 3. März 2014 This work is licensed under the Creative Commons Attribution-ShareAlike

Mehr

Lösungsvorschlag zur 9. Übung

Lösungsvorschlag zur 9. Übung Prof. Frederik Armknecht Sascha Müller Daniel Mäurer Grundlagen der Informatik 3 Wintersemester 09/10 Lösungsvorschlag zur 9. Übung 1 Präsenzübungen 1.1 Schnelltest a) Welche der folgenden Aussagen über

Mehr

Institut für Informatik

Institut für Informatik Technische Universität München Institut für Informatik Lehrstuhl für Computer Graphik & Visualisierung WS 2010 Praktikum: Grundlagen der Programmierung Lösungsblatt 7 Prof. R. Westermann, A. Lehmann, R.

Mehr

Reihungen. Martin Wirsing. in Zusammenarbeit mit Matthias Hölzl und Nora Koch 11/03

Reihungen. Martin Wirsing. in Zusammenarbeit mit Matthias Hölzl und Nora Koch 11/03 Reihungen Martin Wirsing in Zusammenarbeit mit Matthias Hölzl und Nora Koch 11/03 2 Ziele Die Datenstruktur der Reihungen verstehen: mathematisch und im Speicher Grundlegende Algorithmen auf Reihungen

Mehr

Programmieren in C/C++ und MATLAB

Programmieren in C/C++ und MATLAB Programmieren in C/C++ und MATLAB Sven Willert Christian-Albrechts-Universität zu Kiel CAU 2-1 Datentypen und Formate Mit der Festlegung des Datentyps wird die Art bestimmt, mit der der Computer die Informationen

Mehr

Andre Willms. Spielend C++ lernen. oder wie man Käfern Beine macht. Galileo Press

Andre Willms. Spielend C++ lernen. oder wie man Käfern Beine macht. Galileo Press Andre Willms Spielend C++ lernen oder wie man Käfern Beine macht Galileo Press Vorwort 11 1 Das Abenteuer beginnt 13 1.1 Die Programmierumgebung installieren 15 1.2 Der erste Start 20 1.2.1 Visual C++registrieren

Mehr

Luis Kornblueh. May 22, 2014

Luis Kornblueh. May 22, 2014 Einführung in die Bash Luis Kornblueh KlosterCluster Team 2013/2014, Klosterschule May 22, 2014 1 / 17 Inhaltsverzeichnis Einführung in das Scripting Einfache Beispiele Kommandos ersetzen Bedingungen Tests

Mehr

Felder, Rückblick Mehrdimensionale Felder. Programmieren in C

Felder, Rückblick Mehrdimensionale Felder. Programmieren in C Übersicht Felder, Rückblick Mehrdimensionale Felder Rückblick Vereinbarung von Feldern: typ name [anzahl]; typ name = {e1, e2, e3,..., en} Die Adressierung von Feldelementen beginnt bei 0 Die korrekte

Mehr

CGI Programmierung mit Ha. Markus Schwarz

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

Mehr

Funktionale Programmierung

Funktionale Programmierung Schleifen 1 Funktionale Programmierung Jörg Kreiker Uni Kassel und SMA Solar Technology AG Wintersemester 2011/2012 3 Teil I Jedem Anfang wohnt ein Zauber inne 4 Über mich Diplom in Informatik in Saarbrücken

Mehr

Filterregeln... 1. Einführung... 1. Migration der bestehenden Filterregeln...1. Alle eingehenden Nachrichten weiterleiten...2

Filterregeln... 1. Einführung... 1. Migration der bestehenden Filterregeln...1. Alle eingehenden Nachrichten weiterleiten...2 Jörg Kapelle 15:19:08 Filterregeln Inhaltsverzeichnis Filterregeln... 1 Einführung... 1 Migration der bestehenden Filterregeln...1 Alle eingehenden Nachrichten weiterleiten...2 Abwesenheitsbenachrichtigung...2

Mehr