Praktikum Funktionale Programmierung Teil 1: Lexen und Parsen

Save this PDF as:
 WORD  PNG  TXT  JPG

Größe: px
Ab Seite anzeigen:

Download "Praktikum Funktionale Programmierung Teil 1: Lexen und Parsen"

Transkript

1 Praktikum Funktionale Programmierung Teil 1: Lexen und Parsen Professur für Künstliche Intelligenz und Softwaretechnologie Sommersemester 2009

2 Überblick Teil 1: Lexen und Parsen Die Sprache LFP +C Professur KIST, SoSe 2009, 20. April Praktikum Funktionale Programmierung, Teil 1

3 Die Sprache LFP +C Überblick Die Sprache LFP +C Ausdrücke Expr ::=Var Int True False [] (Expr 1 :Expr 2 ) (Expr 1,Expr 2 ) (\Var -> Expr ) (Expr 1 Expr 2 ) (case Expr of {Alt 1... Alt n }) (letrec Var 1 = Expr 1,..., Var n = Expr n in Expr n+1 ) (seq Expr 1 Expr 2 ) (amb Expr 1 Expr 2 ) (por Expr 1 Expr 2 ) (Expr 1 + Expr 2 ) (Expr 1 - Expr 2 ) (Expr 1 * Expr 2 ) (null? Expr ) case-alternativen und Pattern Alt ::=Pat -> Expr Pat ::=True False [] (Var 1 :Var 2 ) (Var 1,Var 2 ) Professur KIST, SoSe 2009, 20. April Praktikum Funktionale Programmierung, Teil 1

4 Überblick Ziel Überführe Quelltext in Tokenstrom Token = Eine syntaktische Einheit Dabei: Fasse syntaktische Einheiten wie Zahlen, Variablennamen, Schlüsselworter zusammen Entferne Whitespaces, \n, \r, \t Generiere Fehlermeldung bei unbekannter Syntax Es trat ein Fehler auf. hilft nicht. Besser: Warum und wo tritt der Fehler auf? Deshalb: Beim Lexen die Zeilen und Spalten-Information für die Token mitführen. Fehlermeldung gibt das unbekannte Zeichen aus Professur KIST, SoSe 2009, 20. April Praktikum Funktionale Programmierung, Teil 1

5 Überblick Der Datentyp LFPCTok > type CodeMark = (Int,Int) -- (Row, Column) > data LFPCTok = TokInt CodeMark Integer -- Ganzzahl > TokVar CodeMark Var -- Variable > TokTrue CodeMark -- True > TokFalse CodeMark -- False > TokNil CodeMark -- [] > TokCons CodeMark -- : > TokPlus CodeMark -- + > TokMinus CodeMark -- - > TokMult CodeMark -- * > TokIsNull CodeMark -- null? > TokLet CodeMark -- letrec > TokIn CodeMark -- in > TokCase CodeMark -- case > TokOf CodeMark -- of > TokComma CodeMark --, > TokCBOpen CodeMark -- { > TokCBClose CodeMark -- } > TokArrow CodeMark -- -> > TokLam CodeMark -- \ > TokBOpen CodeMark -- ( > TokBClose CodeMark -- ) > TokEq CodeMark -- = > TokSeq CodeMark -- seq > TokAmb CodeMark -- amb > TokPor CodeMark -- por Professur KIST, SoSe 2009, 20. April Praktikum Funktionale Programmierung, Teil 1

6 Überblick Anmerkungen zum Lexer Minuszeichen könnte als [TokInt (1,1) 20, TokInt (1,4) -10] oder als [TokInt (1,1) 20, TokMinus (1,4), TokInt (1,5) 10] erkannt werden. Konvention: Das Minus wird nur dann als negative Zahl erkannt, wenn direkt nach dem Zeichen eine Ziffer folgt, sonst wird es stets als Operator erkannt. Beachte: ergibt [TokInt (1,1) 20, TokInt (1,4) -10] Professur KIST, SoSe 2009, 20. April Praktikum Funktionale Programmierung, Teil 1

7 Aufgabe 1 Überblick Implementieren Sie die folgenden Funktionen im Modul LFPC.Parse.Lex getcodemark :: LFPCTok -> CodeMark, die die Positionsmarkierung eines Tokens zurück gibt. printlfpctok :: LFPCTok -> String, die ein Token in den ursprünglichen Quelltext des Tokens konvertiert. lexlfpc :: String -> [LFPCTok], die aus einem LFP +C -Quelltext eine Liste von Token erstellt und dabei Kommentare entfernt und für jedes Token dessen Position im Quelltext (Zeile, Spalte) mit abspeichert. Sollte ein Fehler bei der lexikalischen Analyse auftreten, so generieren Sie mit der error-funktion eine Fehlermeldung, die zumindest die Zeile und Spalte des nicht lexbaren Symbols und das Symbol selbst ausgibt. Professur KIST, SoSe 2009, 20. April Praktikum Funktionale Programmierung, Teil 1

8 Überblick Interne Darstellung Datentyp CoreLFPC data CoreLFPC = V CoreVar -- Variable App CoreLFPC CoreLFPC -- Applikation Lambda CoreVar CoreLFPC -- Abstraktion Let [Bind] CoreLFPC -- Letrec-Ausdruck Cons Int Int [CoreLFPC] -- Konstruktoranw. Case CoreLFPC [Alt] -- Case-Ausdruck Seq CoreLFPC CoreLFPC -- Seq-Ausdruck Amb CoreLFPC CoreLFPC -- Amb-Ausdruck Por CoreLFPC CoreLFPC -- Por-Ausdruck deriving (Eq,Show) data Alt = Alt Int Int [CoreVar] CoreLFPC deriving (Eq,Show) data Bind = CoreVar :=: CoreLFPC deriving (Eq,Show) type CoreVar = (CodeMark,Bool,Var,Var) Besonderheiten Einheitliche Darstellung der Konstruktoren mittels Cons i j argumente: i: Nummer des Konstruktors j: Stelligkeit Darstellung der case-alternativen analog Alt i j patternvars rhs Keine Konstrukte für Zahlen und +, -, *, null? Case-Alternativen für jeden Konstruktor Professur KIST, SoSe 2009, 20. April Praktikum Funktionale Programmierung, Teil 1

9 Überblick Aufgabe des Parsers Ziel Überführe Tokenstrom ([LFPCTok]) in Syntaxbaum (CoreLFPC) Syntax von CoreLFPC abstrakt Expr ::= Var (Expr 1 Expr 2 ) \Var -> Expr c i,k Expr 1... Expr k letrec Var 1 = Expr 1,... Var n = Expr n in Expr case Expr of { Pat 1 -> Expr 1,..., Pat n -> Expr n } seq Expr 1 Expr 2 amb Expr 1 Expr 2 por Expr 1 Expr 2 Pat ::= c i,k Var 1... Var k Erfordert (Parsen) Testen einiger nicht kontextfreier Eigenschaften Erstellen des CoreLFPC-Ausdrucks Professur KIST, SoSe 2009, 20. April Praktikum Funktionale Programmierung, Teil 1

10 Überblick Parsergenerator happy Automatisches Geniereren eines Shift-Reduce Parsers anhand einer kontextfreien Grammatik und Assoziativitäten und Präzedenzen Erwartet Tokendatentyp und Ausgabedatentyp Aufruf happy Parserbeschreibung Dateiendung der Parserbeschreibung:.y bzw..ly (für Haskell-Literate-Quellcode) Parser.ly schon zu einem großen Teil vorgegeben. Professur KIST, SoSe 2009, 20. April Praktikum Funktionale Programmierung, Teil 1

11 Syntax im Parser Überblick Anders als vorher um Klammern zu sparen CExpr ::= letrec Binds in CExpr Const ::= Var Int False True [] \Var -> CExpr AExpr AExpr ::= AExpr Expr Binds ::= Bind,Binds Bind Expr Bind ::= Var =CExpr Expr ::= amb Expr Expr Alts ::= Alt,Alts Alt por Expr Expr Alt ::= Pat -> CExpr seq Expr Expr null? Expr Pat ::= True False [] Expr :Expr Var :Var (Var,Var ) (CExpr,CExpr ) case Expr of { Alts } Expr *Expr Außerdem: Präzedenzen und Assoziativitäten Expr +Expr Expr -Expr \Var -> Expr (CExpr ) Const Professur KIST, SoSe 2009, 20. April Praktikum Funktionale Programmierung, Teil 1

12 Überblick Parserbeschreibung (Auszüge) > %name parse > %tokentype { LFPCTok } Token den Elementen der Grammatik zuordnen > %token > int { TokInt _ $$ } > var { TokVar } > + { TokPlus _ } > - { TokMinus _ } > * { TokMult _ } > False { TokFalse _ } > True { TokTrue _ } > [] { TokNil _ } > : { TokCons _ } > NULL { TokIsNull _ } > Let { TokLet _ } > In { TokIn _ } > Case { TokCase _ } > Of { TokOf _ } >, { TokComma _ } > { { TokCBOpen _ } > } { TokCBClose _ } > ( { TokBOpen _ } > ) { TokBClose _ } > -> { TokArrow _ } > \\ { TokLam _ }... Assoziativit"aten und Pr"azedenzen. Die Pr"azedenzen ergeben sich aus der Reihenfolge, der Direktiven, der am weitesten oben stehende Operator hat niedrigste Pr"azedenz. > %right -> > %right In > %right Of > %left NULL > %left seq > %left amb > %left por > %right : > %left + - > %left * > %nonassoc, > %left NEG > %% Professur KIST, SoSe 2009, 20. April Praktikum Funktionale Programmierung, Teil 1

13 Überblick Parserbeschreibung (Auszüge) CExpr :: {CoreLFPC} CExpr : Let Binds In CExpr { checkbinds $4 $2 $1 } \\ var -> CExpr { Lambda (mkvar $2) $4 } AExpr { $1 } AExpr : AExpr Expr { App $1 $2 } Expr { $1 } Expr : amb Expr Expr { Amb $2 $3 } por Expr Expr { Por $2 $3 } seq Expr Expr { Seq $2 $3 } NULL Expr { mknull $2} Expr : Expr { cons $1 $3 } ( CExpr, CExpr ) { pair $2 $4 } Case CExpr Of { Alts } { checkalts $2 $1 $5 } Expr * Expr { mkmult $1 $3 } Expr + Expr { mkplus $1 $3 } Expr - Expr { mkmin $1 $3 } ( CExpr ) { $2 } Const { $1 } Binds : Bind { [$1] } Bind, Binds { $1:$3 } Bind : var = CExpr { (mkvar $1) :=: $3 } Alts : Alt { [$1] } Alt, Alts { $1 : $3 } Alt : Pat -> CExpr { $1 $3 } Pat : True { alt_true } False { alt_false } var : var { chkaltcons $2 $1 $3 } [] { alt_nil } ( var, var ) { chkaltpair $3 $2 $4 } ( Pat ) { $2 } Const : var { V (mkvar $1) } int { mkint $1 } False { false } True { true } [] { nil } Professur KIST, SoSe 2009, 20. April Praktikum Funktionale Programmierung, Teil 1

14 Überblick Notwendige z.t. nicht kontextfreie Tests letrec x 1 = e 1,..., x n = e n in e: Sind die Variablen x i alle verschieden? case-ausdrücke: Sind mehrere Alternativen für den gleichen Konstruktor enthalten? Z.B. falsch: case e of {(x: y) e; (a:y) e } case-alternativen: Sind die Pattern-Variablen verschieden? Z.B. falsch: case e of {(x: x) e;...} Professur KIST, SoSe 2009, 20. April Praktikum Funktionale Programmierung, Teil 1

15 Übersetzung Überblick Variablen x = CoreVar pos(x) flag origname newname, wobei 1 pos(x) = Position im Quelltext (vom Typ CodeMark). 2 f lag: True, wenn Variable im Quelltext vorkam, False wenn interne Variable 3 origname: Der Name der Variablen im Quelltext 4 newname: der aktuelle Name der Variablen (wg. Umbenennungen) Professur KIST, SoSe 2009, 20. April Praktikum Funktionale Programmierung, Teil 1

16 Übersetzung Überblick Konstruktoren [] = Cons 1 0 [] True = Cons 3 0 [] False = Cons 4 0 [] e 1 : e 2 = Cons 2 2 [ e 1, e 2 ] (e 1,e 2 ) = Cons 7 2 [ e 1, e 2 ] Zero = Cons 5 0 [] One = Cons 6 0 [] e 1,e 2 = Cons 8 2 [ e 1, e 2 ] Beachte: One, Zero und das spezielle Paar a,b gibt es im Quelltext nicht, wird aber für die Kodierung von Ganzzahlen verwendet. Professur KIST, SoSe 2009, 20. April Praktikum Funktionale Programmierung, Teil 1

17 Übersetzung Überblick Zahlen i = s, b n (i):... :b 1 (i):[] wobei { True, wenn i 0 s = False, sonst { Zero, wenn die j-te Stelle von i in Binärdarstellung 0 ist, b j = One, sonst n die Anzahl der Stellen von i in Binärdarstellung ist. Achtung: Binärdarstellung beginnt mit dem niedrigsten Bit. Professur KIST, SoSe 2009, 20. April Praktikum Funktionale Programmierung, Teil 1

18 Übersetzung Überblick Abstraktion, Applikation, seq, amb por \x -> e = Lambda (pos(x),true,x,x) e e 1 e 2 = App e 1 e 2 seq e 1 e 2 = Seq e 1 e 2 amb e 1 e 2 = Amb e 1 e 2 por e 1 e 2 = Por e 1 e 2 letrec letrec bind 1,..., bind n in e = Let [ bind 1,,..., bind n ] e x = e = (pos(x),true,x,x) :=: e Professur KIST, SoSe 2009, 20. April Praktikum Funktionale Programmierung, Teil 1

19 Übersetzung Überblick case-ausdrücke case e of {alt 1,... alt n} = Case e (sort [ alt 1,..., alt n,alt n+1,...,alt m]) [] -> e = Alt 1 0 [] e True -> e = Alt 3 0 [] e False -> e = Alt 4 0 [] e Zero -> e = Alt 5 0 [] e One -> e = Alt 6 0 [] e (x:y) -> e = Alt 2 2 [(pos(x),true,x,x),(pos(y),true,y,y)] e (x,y) -> e = Alt 7 2 [(pos(x),true,x,x),(pos(y),true,y,y)] e x,y -> e = Alt 8 2 [(pos(x),true,x,x),(pos(y),true,y,y)] e wobei alt n+1,... alt m Alternativen für Pattern die nicht in den ersten n Vorkommen, wobei die rechte Seite solcher Alternative V ((0,0),False," bot"," bot") ist sort die Alternativen anhand der Konstruktornummern sortiert. Professur KIST, SoSe 2009, 20. April Praktikum Funktionale Programmierung, Teil 1

20 Übersetzung Überblick null?, +, -, * null?e = App ((0,0),False," isnull"," isnull") e e 1 +e 2 = App (App ((0,0),False," plus"," plus" e 1 ) e 2 e 1 -e 2 = e 1 +(-1*e 2 ) e 1 *e 2 = App (App ((0,0),False," mult"," mult") e 1 ) e 2 Code für die Funktionen mkouterlet im Modul LFPC.Parse.InternalOp Professur KIST, SoSe 2009, 20. April Praktikum Funktionale Programmierung, Teil 1

21 Aufgabe 2 Überblick Aufgabe 2 Implementieren Sie in der Parserdefinition Parser.ly (aus der dann das Modul LFPC.Parse.Parser generiert wird), die in den Aktionen verwendeten Funktionen mkint :: Integer -> CoreLFPC die entsprechend der Übersetzung eine Ganzzahl in die Darstellung innerhalb des Datentyps CoreLFPC konvertiert. checkbinds :: CoreLFPC -> [Bind] -> LFPCTok -> CoreLFPC, die den in-ausdruck, die Bindungen, das Token des letrec-ausdrucks erhält, und prüft, ob alle Bindungsvariablen verschieden sind. Ist dies nicht der Fall, so wird eine Fehlermeldung mithilfe der im übergebenen Token steckenden Informationen generiert. Andernfalls wird der letrec-ausdruck in der Darstellung des Datentyps CoreLFPC zurück gegeben. checkalts :: CoreLFPC -> LFPCTok -> [Alt] -> CoreLFPC, die das erste Argument eines case-ausdrucks, das Token für den case-ausdruck und eine Liste von case-alternativen erhält und einen case-ausdruck im Datentyp CoreLFPC erstellt, wobei geprüft werden muss, ob doppelte case-alternativen enthalten sind. Ist dies der Fall, so wird anhand des Tokens eine Fehlermeldung generiert. Man beachte, das die Grammatik case-ausdrücke ohne Alternativen bereits verbietet, und somit in diesem Fall eine Fehlermeldung generiert wird. fehlende Alternativen entsprechend der Übersetzung hinzufügt werden, die Liste der Alternativen anhand der Konstruktornummern sortiert wird. chkaltpair und chkaltcons, die jeweils die Signatur LFPCTok -> LFPCTok -> LFPCTok -> CoreLFPC -> Alt haben, wobei das erste Token das Token für, oder : eines case-patterns ist, das zweite Argument die erste Patternvariable, das dritte Argument die zweite Patternvariable und das vierte Argument die rechte Seite der Alternativen ist. Beide Funktionen prüfen ob die Patternvariablen verschieden sind (andernfalls wird ein Fehler generiert), und liefern anschließend eine Alternative. Professur KIST, SoSe 2009, 20. April Praktikum Funktionale Programmierung, Teil 1

22 Aufgabe 3 Überblick Aufgabe 3 Geniereren Sie mittels happy den Parser aus der (vervollständigten) Parserspezifikation Parser.ly und testen Sie anschließend den Parser ausgiebig. Professur KIST, SoSe 2009, 20. April Praktikum Funktionale Programmierung, Teil 1

Adressen. Praktikum Funktionale Programmierung Organisation und Überblick. Termine. Studienleistung

Adressen. Praktikum Funktionale Programmierung Organisation und Überblick. Termine. Studienleistung Adressen Adressen, Termine Studienleistung Praktikum Funktionale Programmierung Organisation und Überblick Dr. David Sabel Büro und Email Raum 216, Robert-Mayer-Str. 11-15 sabel@ki.informatik.uni-frankfurt.de

Mehr

Inhalte der Vorlesung. 4. Der Scanner-Generator lex. 4. Der Scanner-Generator lex. 4.1 lex: Grundlagen

Inhalte der Vorlesung. 4. Der Scanner-Generator lex. 4. Der Scanner-Generator lex. 4.1 lex: Grundlagen Inhalte der Vorlesung 4. Der Scanner-Generator lex 1.Einführung 2.Lexikalische Analyse 3.Der Textstrom-Editor sed 4.Der Scanner-Generator lex (2 Termine) 5.Syntaxanalyse und der Parser-Generator yacc (3

Mehr

Was ist ein Compiler?

Was ist ein Compiler? Was ist ein Compiler? Was ist ein Compiler und worum geht es? Wie ist ein Compiler aufgebaut? Warum beschäftigen wir uns mit Compilerbau? Wie ist die Veranstaltung organisiert? Was interessiert Sie besonders?

Mehr

Java Einführung Operatoren Kapitel 2 und 3

Java Einführung Operatoren Kapitel 2 und 3 Java Einführung Operatoren Kapitel 2 und 3 Inhalt dieser Einheit Operatoren (unär, binär, ternär) Rangfolge der Operatoren Zuweisungsoperatoren Vergleichsoperatoren Logische Operatoren 2 Operatoren Abhängig

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

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

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

1 Syntax von Programmiersprachen

1 Syntax von Programmiersprachen 1 Syntax von Programmiersprachen Syntax ( Lehre vom Satzbau ): formale Beschreibung des Aufbaus der Worte und Sätze, die zu einer Sprache gehören; im Falle einer Programmier-Sprache Festlegung, wie Programme

Mehr

Visual Basic Basisbefehle Hinweis: Der Text in eckigen Klammern [ ] ist variabel, z.b. [var] => 5.3. Eckige Klammern sind stets wegzulassen!

Visual Basic Basisbefehle Hinweis: Der Text in eckigen Klammern [ ] ist variabel, z.b. [var] => 5.3. Eckige Klammern sind stets wegzulassen! Visual Basic Basisbefehle Hinweis: Der Text in eckigen Klammern [ ] ist variabel, z.b. [var] => 5.3. Eckige Klammern sind stets wegzulassen! Grundstrukturen: Sub [name]([übergabe]) End Sub [Übergabe] ist

Mehr

Programmierung und Modellierung

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

Mehr

Funktionale Programmierung. ALP I Lambda-Kalkül. Teil IVb WS 2012/2013. Prof. Dr. Margarita Esponda. Prof. Dr. Margarita Esponda

Funktionale Programmierung. ALP I Lambda-Kalkül. Teil IVb WS 2012/2013. Prof. Dr. Margarita Esponda. Prof. Dr. Margarita Esponda ALP I Lambda-Kalkül Teil IVb WS 2012/2013 λ-kalkül-parser Hilfsfunktionen: Die break-funktion ist eine Funktion höherer Ordnung, die eine Liste beim ersten Vorkommen einer Bedingung in zwei Listen spaltet.

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

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

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

Mehr

5.4 Klassen und Objekte

5.4 Klassen und Objekte 5.4 Klassen und Objekte Zusammenfassung: Projekt Figuren und Zeichner Figuren stellt Basisklassen für geometrische Figuren zur Verfügung Zeichner bietet eine übergeordnete Klasse Zeichner, welche die Dienstleistungen

Mehr

Java Kurs für Anfänger Einheit 2 Datentypen und Operationen

Java Kurs für Anfänger Einheit 2 Datentypen und Operationen Java Kurs für Anfänger Einheit 2 Datentypen und Operationen Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 16. Mai 2009 Inhaltsverzeichnis

Mehr

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

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

Mehr

5 DATEN. 5.1. Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu

5 DATEN. 5.1. Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu Daten Makro + VBA effektiv 5 DATEN 5.1. Variablen Variablen können beliebige Werte zugewiesen und im Gegensatz zu Konstanten jederzeit im Programm verändert werden. Als Variablen können beliebige Zeichenketten

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

Kapitel 9: Parsing mit Kombinatoren und Generatoren

Kapitel 9: Parsing mit Kombinatoren und Generatoren Funktionale Programmierung (WS2005/2006) 9/1 Kapitel 9: Parsing mit Kombinatoren und Generatoren Lernziele dieses Kapitels 1. Manuelle Konstruktion eines einfachen Scanners 2. Parsing mit Kombinatoren

Mehr

Ausarbeitung des Interpreter Referats

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

Mehr

Inhalte der Vorlesung. 6. Syntaxgesteuerte Übersetzung. 6. Syntaxgesteuerte Übersetzung. Attributierter Syntaxbaum

Inhalte der Vorlesung. 6. Syntaxgesteuerte Übersetzung. 6. Syntaxgesteuerte Übersetzung. Attributierter Syntaxbaum Inhalte der Vorlesung 6. Syntaxgesteuerte Übersetzung 1.Einführung 2.Lexikalische Analyse 3.Der Textstrom-Editor sed 4.Der Scanner-Generator lex (2 Termine) 5.Syntaxanalyse und der Parser-Generator yacc

Mehr

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

Kapitel 4. Einführung in den Scannergenerator Flex. Einführung in den Scannergenerator Flex Wintersemester 2008/09 1 / 9 Kapitel 4 Einführung in den Scannergenerator Flex Einführung in den Scannergenerator Flex Wintersemester 2008/09 1 / 9 Generatoren für die lexikalische Analyse Scannergeneratoren werden eingesetzt um die

Mehr

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

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

Workshop: ASURO-Programmieren in C

Workshop: ASURO-Programmieren in C Workshop: ASURO-Programmieren in C / Teil 1: Theorie Workshop: ASURO-Programmieren in C Teil 1: Theorie Markus Becker http://mbecker-tech.de Bürgernetz Ingolstadt e. V. / ByteWerk Stand: 1. Mai 2010 Copyright:

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

Quelltextähnlichkeit

Quelltextähnlichkeit Quelltextähnlichkeit String autor = Tobias Jamin ; String projekt = Arte-Fakt ; String seminar = Transformationen ; Date termin = new Date(3, // Tag 2, // Monat 2006); Presentation praesentation = new

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

Modellierung und Programmierung

Modellierung und Programmierung Modellierung und Programmierung Dr. Martin Riplinger 19.12.2012 IAM Institut für Angewandte Mathematik Funktionszeiger: Vorüberlegungen Funktionsaufrufe sind bis jetzt im Code mit Name explizit angegeben

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

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

Statistisches Programmieren

Statistisches Programmieren Statistisches Programmieren Session 1 1 Was ist R R ist eine interaktive, flexible Software-Umgebung in der statistische Analysen durchgeführt werden können. Zahlreiche statistische Funktionen und Prozeduren

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

Definition von domänenspezifischen Sprachen mit Xtext: Einführung. 19. November 2014

Definition von domänenspezifischen Sprachen mit Xtext: Einführung. 19. November 2014 Definition von domänenspezifischen Sprachen mit Xtext: Einführung 19. November 2014 Überblick Was ist zu tun, wenn wir selbst einen Ansatz für modellgetriebenen Entwicklung definieren wollen? Anforderungserfassung

Mehr

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

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

Mehr

Linux Prinzipien und Programmierung

Linux Prinzipien und Programmierung Linux Prinzipien und Programmierung Dr. Klaus Höppner Hochschule Darmstadt Sommersemester 2014 1 / 25 2 / 25 Pipes Die Bash kennt drei Standard-Dateideskriptoren: Standard In (stdin) Standard-Eingabe,

Mehr

Einführung in VisualBasic for Applications. Stefan Mahlitz

Einführung in VisualBasic for Applications. Stefan Mahlitz Einführung in VisualBasic for Applications Stefan Mahlitz Stefan Mahlitz Einführung in VBA 27.08.00 Inhaltsverzeichnis 1. Grundlagen der VisualBasic for Applications (VBA) Programmierung...2 1.1 Variablen,

Mehr

Programmierung 1 (Wintersemester 2012/13) Lösungsblatt 11 (Kapitel 12)

Programmierung 1 (Wintersemester 2012/13) Lösungsblatt 11 (Kapitel 12) Fachrichtung 6.2 Informatik Universität des Saarlandes Tutorenteam der Vorlesung Programmierung 1 Programmierung 1 (Wintersemester 2012/13) Lösungsblatt 11 (Kapitel 12) Hinweis: Dieses Übungsblatt enthält

Mehr

Klassenbeziehungen & Vererbung

Klassenbeziehungen & Vererbung Klassenbeziehungen & Vererbung VL Objektorientierte Programmierung Raimund Kirner teilweise nach Folien von Franz Puntigam, TU Wien Überblick Arten von Klassenbeziehungen Untertypen versus Vererbung in

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

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

Grundlagen der Programmierung 2 (1.C)

Grundlagen der Programmierung 2 (1.C) Grundlagen der Programmierung 2 (1.C) Prof. Dr. Manfred Schmidt-Schauÿ Künstliche Intelligenz und Softwaretechnologie 3. Mai 2006 Funktionen auf Listen: map map :: (a -> b) -> [a] -> [b] map f [] = []

Mehr

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen. I.2. I.2. Grundlagen von von Programmiersprachen.

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen. I.2. I.2. Grundlagen von von Programmiersprachen. 1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen I.2. I.2. Grundlagen von von Programmiersprachen. - 1 - 1. Der Begriff Informatik "Informatik" = Kunstwort aus Information und Mathematik

Mehr

Klausurteilnehmer. Wichtige Hinweise. Note: Klausur Informatik Programmierung, 17.09.2012 Seite 1 von 8 HS OWL, FB 7, Malte Wattenberg.

Klausurteilnehmer. Wichtige Hinweise. Note: Klausur Informatik Programmierung, 17.09.2012 Seite 1 von 8 HS OWL, FB 7, Malte Wattenberg. Klausur Informatik Programmierung, 17.09.2012 Seite 1 von 8 Klausurteilnehmer Name: Matrikelnummer: Wichtige Hinweise Es sind keinerlei Hilfsmittel zugelassen auch keine Taschenrechner! Die Klausur dauert

Mehr

Ruby-Einarbeitungsaufgaben

Ruby-Einarbeitungsaufgaben Ruby-Einarbeitungsaufgaben 1) Thema Warshall-Algorithmus (4 Personen) Zweck: Zweistellige Relationen auf einer Menge M (von Strings?) modellieren und nützlichen Operationen darauf bereitstellen, mit denen

Mehr

Hello world. Sebastian Dyroff. 21. September 2009

Hello world. Sebastian Dyroff. 21. September 2009 Hello world Sebastian Dyroff 21. September 2009 1 / 35 Inhaltsverzeichnis Organisatorisches Hello World Typen und Operatoren Programmfluss Weitere Konstrukte Nützliche Tipps 2 / 35 Inhalte dieser Veranstaltung

Mehr

Übersetzergenerierung mit lex und yacc

Übersetzergenerierung mit lex und yacc Übersetzergenerierung mit lex und yacc 0. Überblick und Organisatorisches Jan Bredereke SoSe 2004, Universität Bremen otivation Übersetzer: Grundlegende Werkzeuge welche Fehler kann er finden? Konstrukt

Mehr

Lua - Erste Schritte in der Programmierung

Lua - Erste Schritte in der Programmierung Lua - Erste Schritte in der Programmierung Knut Lickert 7. März 2007 Dieser Text zeigt einige einfache Lua-Anweisungen und welchen Effekt sie haben. Weitere Informationen oder eine aktuelle Version dieses

Mehr

12. ArcView-Anwendertreffen 2010. Workshop Programmierung in ArcGIS. Daniel Fuchs. Wo kann eigene Programmierung in ArcGIS verwendet werden?

12. ArcView-Anwendertreffen 2010. Workshop Programmierung in ArcGIS. Daniel Fuchs. Wo kann eigene Programmierung in ArcGIS verwendet werden? Wo kann eigene Programmierung in ArcGIS verwendet werden? 12. ArcView-Anwendertreffen 2010 Workshop Programmierung in ArcGIS Daniel Fuchs 1) Makros für die Automatisierung einzelner Arbeitsschritte im

Mehr

4 Lexikalische Analyse und Parsing

4 Lexikalische Analyse und Parsing 4 Lexikalische Analyse und Parsing Lexikalische Analyse und Parsing sind die wichtigsten Bereiche des Compilerbaus. Prinzipien und Techniken des Compilerbaus beschränken sich nicht auf die Erstellung von

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

Programmierung des Lego NXT in C. Hochschule Mannheim Fakultät für Informatik

Programmierung des Lego NXT in C. Hochschule Mannheim Fakultät für Informatik Programmierung des Lego NXT in C Hochschule Mannheim Fakultät für Informatik Der NXT Stein Technische Daten 32-bit ARM7 Microcontroller 256 Kbytes FLASH, 64 Kbytes RAM 8-bit AVR microcontroller 4 Kbytes

Mehr

2. Programmierung in C

2. Programmierung in C 2. Programmierung in C Inhalt: Überblick über Programmiersprachen, Allgemeines zur Sprache C C: Basisdatentypen, Variablen, Konstanten Operatoren, Ausdrücke und Anweisungen Kontrollstrukturen (Steuerfluss)

Mehr

Dieser Artikel wurde manuell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen.

Dieser Artikel wurde manuell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. Dieser Artikel wurde manuell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. LIKE (Transact-SQL) SQL Server 2012 Dieser Artikel wurde noch nicht bewertet

Mehr

Theoretische Grundlagen der Informatik

Theoretische Grundlagen der Informatik Theoretische Grundlagen der Informatik Vorlesung am 12.01.2012 INSTITUT FÜR THEORETISCHE 0 KIT 12.01.2012 Universität des Dorothea Landes Baden-Württemberg Wagner - Theoretische und Grundlagen der Informatik

Mehr

Hochschule Darmstadt Informatik-Praktikum (INF 1) WS 2015/2016 Wirtschaftsingenieur Bachelor 5. Aufgabe Datenstruktur, Dateieingabe und -ausgabe

Hochschule Darmstadt Informatik-Praktikum (INF 1) WS 2015/2016 Wirtschaftsingenieur Bachelor 5. Aufgabe Datenstruktur, Dateieingabe und -ausgabe Aufgabenstellung Für eine Hausverwaltung sollen für maximal 500 Wohnungen Informationen gespeichert werden, die alle nach der gleichen Weise wie folgt strukturiert sind: Art Baujahr Wohnung Whnginfo Nebenkosten

Mehr

1.2 Attribute und Methoden Aufbau einer Java-Klasse:

1.2 Attribute und Methoden Aufbau einer Java-Klasse: Aufbau einer Java-Klasse: public class Quadrat { int groesse; int xposition; String farbe; boolean istsichtbar; public void sichtbarmachen() { istsichtbar = true; public void horizontalbewegen(int distance){

Mehr

4. Datentypen. Einleitung Eingebaute Datentypen. Konversion / Type-Cast. Operatoren. Übersicht Die Datentypen char, float und double Standardwerte

4. Datentypen. Einleitung Eingebaute Datentypen. Konversion / Type-Cast. Operatoren. Übersicht Die Datentypen char, float und double Standardwerte 4. Datentypen Einleitung Eingebaute Datentypen Übersicht Die Datentypen char, float und double Standardwerte Konversion / Type-Cast Datentyp von Literalen Operatoren Ausdrücke Allgemeine Informatik 2 SS09

Mehr

Einführung in die Programmierung (EPR)

Einführung in die Programmierung (EPR) Goethe-Center for Scientific Computing (G-CSC) Goethe-Universität Frankfurt am Main Einführung in die Programmierung (EPR) (Übung, Wintersemester 2014/2015) Dr. S. Reiter, M. Rupp, Dr. A. Vogel, Dr. K.

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

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

Funktionale Programmierung mit Haskell

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

Mehr

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

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

Mehr

Monaden in anderen Programmiersprachen

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

Mehr

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

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

Die Programmiersprache C99: Zusammenfassung

Die Programmiersprache C99: Zusammenfassung Die Programmiersprache C99: Zusammenfassung Jörn Loviscach Versionsstand: 7. Dezember 2010, 19:30 Die nummerierten Felder sind absichtlich leer, zum Ausfüllen in der Vorlesung. Videos dazu: http://www.youtube.com/joernloviscach

Mehr

5 Logische Programmierung

5 Logische Programmierung 5 Logische Programmierung Logik wird als Programmiersprache benutzt Der logische Ansatz zu Programmierung ist (sowie der funktionale) deklarativ; Programme können mit Hilfe zweier abstrakten, maschinen-unabhängigen

Mehr

Syntaktische Analyse (Parsen)

Syntaktische Analyse (Parsen) Syntaktische Analyse (Parsen) Gegeben: eine kontextfreie Grammatik G und ein String w. Fragen: Vorgehen: gehört w zu L(G)? Welche Bedeutung hat w? Konstruiere Herleitungsbaum zu w P raktische Informatik

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

1. Zeilenendkommentare: //... 2. geklammerte Kommentare: /*... */ 3. Dokumentationskommentare: /**... */

1. Zeilenendkommentare: //... 2. geklammerte Kommentare: /*... */ 3. Dokumentationskommentare: /**... */ 1 Kommentare im Source-Code Kommentare werden im Source-Code überlesen und wirken wie "white Space" (Leerzeichen, Tabulator, Zeilenvorschub). Mit Ausnahme des @deprecated-tag in Dokumentationskommentaren

Mehr

Grundlagen der Informatik 2

Grundlagen der Informatik 2 Grundlagen der Informatik 2 Dipl.-Inf., Dipl.-Ing. (FH) Michael Wilhelm Hochschule Harz FB Automatisierung und Informatik mwilhelm@hs-harz.de Raum 2.202 Tel. 03943 / 659 338 1 Gliederung 1. Einführung

Mehr

Behandeln Sie»undefined«als»nicht vorhanden«thema 54

Behandeln Sie»undefined«als»nicht vorhanden«thema 54 Behandeln Sie»undefined«als»nicht vorhanden«151 heitliche Schreibweisen erlauben es den Benutzern, zu erraten, welche Eigenschaften und Methoden zur Verfügung stehen, ohne dass sie sie nachschlagen müssen,

Mehr

DSLs mit Xtext entwerfen. 17.08.2012, A. Arnold

DSLs mit Xtext entwerfen. 17.08.2012, A. Arnold DSLs mit Xtext entwerfen 17.08.2012, A. Arnold Copyright 2012 anderscore GmbH Inhalt 1. Was sind DSLs? 2. Xtext Konzepte 3. Einführung ins Sprachdesign 4. Hands On! 3 4 8 20 2 Was sind DSLs? Domain Specific

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

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

OO Programmierung in Java

OO Programmierung in Java OO Programmierung in Java Einführung WS 212/213 Prof. Dr. Margarita Esponda M. Esponda-Argüero 1 Homepage Homepage http://www.esponda.de/ws_12_13/jbk Vorlesungsfolien Literaturliste Übungen Zusätzliches

Mehr

Sprachbeschreibung und Erweiterung

Sprachbeschreibung und Erweiterung Sprachbeschreibung und Erweiterung Worte, Sprachen, reguläre Ausdrücke, Automaten, BNF, Grammatik, Syntax- Diagramme, Spracherweiterungen do, for, break, switch Formale Beschreibung von Programmiersprachen

Mehr

SUDOKU - Strategien zur Lösung

SUDOKU - Strategien zur Lösung SUDOKU Strategien v. /00 SUDOKU - Strategien zur Lösung. Naked Single (Eindeutiger Wert)? "Es gibt nur einen einzigen Wert, der hier stehen kann". Sind alle anderen Werte bis auf einen für eine Zelle unmöglich,

Mehr

Entwicklung eines korrekten Übersetzers

Entwicklung eines korrekten Übersetzers Entwicklung eines korrekten Übersetzers für eine funktionale Programmiersprache im Theorembeweiser Coq Thomas Strathmann 14.01.2011 Gliederung 1 Einleitung

Mehr

3. Grundregeln für die Java-Programmierung

3. Grundregeln für die Java-Programmierung 3. Grundregeln für die Java-Programmierung Sprachaufbau von Java Programmen Stilistische Konventionen JavaDoc Allgemeine Informatik 2 SS09 Folie 2.1 Allgemeine Vorbemerkung Bei Programmiersprachen sind

Mehr

Jürgen Bayer. Anonyme Methoden, Lambda-Ausdrücke und Ausdrucksbäume in.net

Jürgen Bayer. Anonyme Methoden, Lambda-Ausdrücke und Ausdrucksbäume in.net Jürgen Bayer Anonyme Methoden, Lambda-Ausdrücke und Ausdrucksbäume in.net Inhaltsverzeichnis 1 Einleitung 1 2 Anonyme Methoden 2 3 Lambda-Ausdrücke 4 4 Ausdrucksbäume 6 4.1 Was sind Ausdrucksbäume? 6 4.2

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

Programmierung mit C Zeiger

Programmierung mit C Zeiger Programmierung mit C Zeiger Zeiger (Pointer)... ist eine Variable, die die Adresse eines Speicherbereichs enthält. Der Speicherbereich kann... kann den Wert einer Variablen enthalten oder... dynamisch

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

Javakurs zu Informatik I. Henning Heitkötter

Javakurs zu Informatik I. Henning Heitkötter Javakurs zu Informatik I Arrays vergleichen Implementieren Sie folgende Methode, die prüft, ob die Elemente der beiden Arrays an jeder Position übereinstimmen: public static boolean identisch(int[] a,

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

Objektorientierte Programmierung. Kapitel 3: Syntaxdiagramme und Grammatikregeln

Objektorientierte Programmierung. Kapitel 3: Syntaxdiagramme und Grammatikregeln Stefan Brass: OOP (Java), 3. Syntaxdiagramme und Grammatikregeln 1/32 Objektorientierte Programmierung Kapitel 3: Syntaxdiagramme und Grammatikregeln Stefan Brass Martin-Luther-Universität Halle-Wittenberg

Mehr

Kurze Einführung in die Programmiersprache C++ und in Root

Kurze Einführung in die Programmiersprache C++ und in Root Kurze Einführung in die Programmiersprache C++ und in Root Statistik, Datenanalyse und Simulation; 31.10.2006 Inhalt 1 Einführung in die Programmiersprache C++ Allgemeines Variablen Funktionen 2 1 Einführung

Mehr

Prinzipielle Ausführungsvarianten I

Prinzipielle Ausführungsvarianten I Software Entwicklung 1 Annette Bieniusa / Arnd Poetzsch-Heffter Unser erstes Java Programm AG Softech FB Informatik TU Kaiserslautern Bieniusa/Poetzsch-Heffter Software Entwicklung 1 2/ 39 Hello World!

Mehr

Hochschule Darmstadt Informatik-Praktikum (INF 1) WS 2014/2015 Wirtschaftsingenieur Bachelor 4. Aufgabe Datenstruktur, Dateieingabe und -ausgabe

Hochschule Darmstadt Informatik-Praktikum (INF 1) WS 2014/2015 Wirtschaftsingenieur Bachelor 4. Aufgabe Datenstruktur, Dateieingabe und -ausgabe Aufgabenstellung Für ein Baumkataster sollen für maximal 500 Bäume Informationen gespeichert werden, die alle nach der gleichen Weise wie folgt strukturiert sind: Nummer Bauminfo Baumart Hoehe Baum Umfang

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

Modul 122 VBA Scribt.docx

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

Mehr

Arrays von Objekten. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Arrays von Objekten. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-13-14/infoeinf WS13/14 Action required now 1. Smartphone: installiere die App "socrative student"

Mehr

C/C++ Programmierung

C/C++ Programmierung 1 C/C++ Programmierung Verbunde, Reihungen, Zeiger Sebastian Hack Christoph Mallon (hack mallon)@cs.uni-sb.de Fachbereich Informatik Universität des Saarlandes Wintersemester 2009/2010 2 Typen 6.2.5 Primitive

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

Neben dem Symbol Entwurfsmodus ist das Symbol Befehlschaltfläche zu sehen.

Neben dem Symbol Entwurfsmodus ist das Symbol Befehlschaltfläche zu sehen. Visual Basic / EXCEL Unterrichtsreihe von Herrn Selbach / Makro Programmierung 1. Die Steuerelemente Toolbox Durch Ansicht Symbolleisten Steuerelemente-Toolbox kann man Befehlschaltflächen (CommandButton),

Mehr

Einführung in die Programmierung

Einführung in die Programmierung Einführung in die Programmierung - Google Apps Script & JavaScript - Claudia Scheffler 11. September 2013 Claudia Scheffler Einführung in die Programmierung 1/54 Inhaltsverzeichnis 1 Organisatorisches

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

Rainer Stropek cubido. Baumschule Expression Trees in C#, CLR und DLR

Rainer Stropek cubido. Baumschule Expression Trees in C#, CLR und DLR Rainer Stropek cubido Baumschule Expression Trees in C#, CLR und DLR Inhalt Als Anwendungsentwickler kommt man selten mit Expression Trees in Berührung. Sie sind ein Implementierungsdetail von LINQ. Ihre

Mehr