Compilerbau II Skript

Größe: px
Ab Seite anzeigen:

Download "Compilerbau II Skript"

Transkript

1 Universität Siegen Fachbereich 12, Angewandte Informatik und Elektrotechnik Dozent: Dr. Kurt Sieber; Compilerbau II Skript Christian Uhrhan 18. März 2011

2 Inhaltsverzeichnis 1 Syntaxgerichtete Übersetzung Semantische Regeln Auswertungsreihenfolge Topologische Sortierung Auswertungsreihenfolge für S-Attributierte Grammatiken Attrebutauswertung bei L-Attributierten Grammatiken 7 3 Syntaxgerichtete Übersetzungsschemata (ÜS) Semantik eines SDT Übersetzung von S- bzw. L-attributierten Grammatiken in SDT s Generierung von Zwischencode Übersetzung arithmetischer Ausdrücke in 3-Adress-Code Übersetzung boolscher Ausdrücke Jumpcode für boolsche Ausdrücke Backpatching Boolsche Ausdrücke Anweisungen Laufzeitumgebungen Speicherorganisation Aufteilung zwischen Stack und Heap Zugriff auf globale Daten Bestimmung des Access Links Prozeduren auf Parameterposition Alternative zu Access Links: Displays calling sequences und return sequences Design-Prinzipien Aufteilung der calling sequence Codeerzeugung für Programme mit Prozeduren (Pascal-artige Sprache) Vorgehensweise bei der Übersetzung Übersetzung einer Prozedurdeklaration Übersetzung eines Prozeduraufrufs Codegenerierung (Drachenbuch Kpt. 8) Befehlssatz der Zielmaschine (RISC-Architektur) Basisblöcke und Flussgraphen Optimierung der Basisblöcke Vom (optimierten) DAG zurück zum Zwischencode Ein einfacher Codegenerator Globale Register Vergabe i

3 7 Instruction Selection (Drachenbuch Kpt. 8.9) Generierung von optimalem Code für Ausdrücke Algorithmus zur Berechnung der Ershov-Zahl ii

4 1 Syntaxgerichtete Übersetzung Bisherige Sicht: Aus einer KFG G wird ein Parser erzeugt, also ein deterministischer Kellerautomat, der die Sprache L(G) akzeptiert. D.h.: Der Parser antwortet nur mit Ja oder Nein je nachdem, ob das Eingabewort w L(G) oder w / L(G). In der Praxis: Der Parser sollte eine Antwort zurückliefern, z. B.: (a) einen abstrakten Syntaxbaum für das Eingabewort w (mit dem man anschließend weiterarbeitet, z. B. Typüberprüfung in der semantischen Analyse oder Generierung von Zwischencode). (b) oder schon eine Übersetzung des Eingabewortes w in Zwischencode (c) oder in einfachen Fällen (z. B. wenn w Eingabe für einen Taschenrechner) schon ein Ergebnis. Deshalb als Eingabe für Parser-Generatoren (JavaCup, yacc, SML-Yacc, O Caml- Yacc) nicht nur eine KFG, sondern man ergänzt die Produktionen der KFG durch sogenannte semantische Regeln oder semantische Aktionen. Beispiel: 1. Yacc-Eingabe: Spezifikation eines Taschenrechners (siehe AB01). expr : exp + term {$$ = $1 + $3; } Zugehörige Theorie: Attributierte Grammatiken (Verallgemeinerung von AG: syntaxgerichtete Definitionen (engl. SDD) Verwandter Mechanismus: syntaxgerichtete Übersetzungen (engl. SDT)) Beispiel: 2. für attributierte Grammatiken: Arithmetische Ausdrücke für Taschenrechner Nonterminals: L, E, T, F Terminalzeichen: n, +,, (, ), digit Jedem Nonterminal wird ein einziges Attribut zugeordnet, nämlich val (= value). Dem Terminalzeichen digit ist ein Attribut lexval zugeordnet (wird vom Scanner geliefert). Die Produktionen und sematische Regeln lauten: 1

5 Produktion semantische Regel (1) L En L.val = E.val (2) E E 1 + T E.val = E 1.val + T.val (3) E T E.val = T.val (4) T T 1 F T.val = T 1.val F.val (5) T F T.val = F.val (6) F (E) F.val = E.val (7) F digit F.val = digit.lexval Mit den semantischen Regeln werden die Attributwerte für jeden Syntaxbaum berechnet, z. B. attributierter Syntaxbaum für n L val = 19 E val = 19 n E val = 15 + T val = 4 T val = 15 F val = 4 T val = 3 F val = 5 digit lexval = 4 F val = 3 digit lexval = 5 digit lexval = 3 Definition 1 (Attributierte Grammatik). Sei G = (N, T, P, S) eine KFG, V = N T Eine attributierte Grammatik über G besteht aus einer endlichen Menge A von Attributen (oder Attributnamen) einem Wertebereich D a a A zwei Abbildungen: syn : V P(A) inh : V P(A) mit inh(s) = inh(x) = x T 2

6 Sprechweise: a syn(x) heißt synthetisches Attribut von X a inh(x) heißt geerbtes Attribut von X Es gilt: Attr(X) = syn(x) inh(x) einer Menge sem(p) von semantischen Regeln für jede Produktion p P. 1.1 Semantische Regeln Wie sehen die semantischen Regeln aus? Sei p eine Produktion der Form X 0 X 1... X m (wobei aus jedem X i die Position i ablesbar ist). Dann ist jede semantische Regel für p von der Form: mit X i0.a 0 = f(x i1.a 1,..., X ik.a k ) i 0,..., i k {0,..., m} (d.h. i 0,..., i k sind Positionen in p) a j Attr(X ij ) (d.h. a j ist ein zu X ij f : D a1 D ak D a0 passendes Attribut) (d.h. f hat passenden Typ ) X i0.a 0 kommt nicht in den Argumenten von f vor Weiter muss gelten: Für jedes a syn(x 0 ) enthält sem(p) genau eine Regel mit linker Seite X 0.a Für jedes a inh(x i ) mit i {1,..., m} enthält sem(p) genau eine Regel mit linker Seite X i.a. Im ersten Fall dürfen als Attribute von f nur Attribute von X 1,..., X m oder geerbte Attribute von X 0 auftreten. Weitere Regeln dürfen in sem(p) nicht vorkommen. Beispiel: 3. Aus vorhergehendem Beispiel val ist synthetisches Attribut für die Nonterminals L, E, T, F lexval ist synthetisches Attribut für digit Keine geerbten Attribute Weiteres Beispiel: Nicht linksrekursive KFG für arithmetische Ausdrücke. Hier: nur ein Teil davon: Attributierter Syntaxbaum für 3 5: T val = 15 F val = 3 inh = 3 T syn = 15 digit lexval = 3 F val = 5 inh = 15 T syn = 15 digit lexval=5 ɛ 3

7 (1) T F T T.inh = T.val T.val = T.syn (2) T F T 1 T 1.inh = T.inh F.val T.syn = T 1.syn (3) T ɛ T.syn = T.inh (4) F digit F.val = digit.lexval 1.2 Auswertungsreihenfolge Gibt es überhaupt eine Reihenfolge, in der die Attribute ausgewertet werden? Wenn ja, welche? Dazu: Betrachte den sogenannten Abhängigkeitsgraphen zu einem attributierten Syntaxbaum (dependency graph). Der Abhängigkeitsgraph ist ein gerichteter Graph und ist wie folgt definiert: (a) Die Knoten des Abhängigkeitsgraphen sind alle Attributvorkommen im attributierten Syntaxbaum, d.h. für jeden mit X markierten Knoten des Syntaxbaums und jedes a Attr(X) gibt es einen Knoten X.a im Abhängigkeitsgraphen. (b) Die Kanten des Abhängigkeitsgraphen geben die Abhängigkeit zwischen den Attributvorkommen wieder, d.h. für jede semantische Regel X.a = f(..., Y.b,... ) gibt es eine Kante vom passenden Y.b zum passenden X.a. Beachte: Die Kante für ein synthetisches Attribut X.a verläuft vom Kind- zum Vaterknoten oder von X.b nach X.a, wobei b geerbtes Attribut. Die Kante für ein geerbtes Attribut X.a verläuft vom Vater- zum Kindknoten oder zwischen Geschwisterknoten. Beispiel: 4. Nicht linksrekursive Grammatik für arithmetische Ausdrücke, Syntaxbaum für 3 5 z. B. wegen T 1.inh = T.inh F.val gibt es Kanten von 5 nach 6 und von 4 nach 6. Am Abhängigkeitsgraphen kann man erkennen, ob es eine Auswertungsreihenfolge gibt (und kann sie dann auch finden). 1.3 Topologische Sortierung Definition 2. Eine topologische Sortierung eines gerichteten Graphen ist eine lineare Anordnung N 1,..., N k aller Knoten des Graphen, so dass gilt: Wenn eine Kante von N i nach N j verläuft, dann ist i < j. 4

8 Beispiel: 5. (1),...,(9) ist eine mögliche topologische Sortierung im Beispiel. Eine andere: (1),(3),(5),(2),(4),(6),...,(9) Bemerkung 1. Eine topologische Sortierung existiert genau dann, wenn der Graph keine Zyklen besitzt. ist klar Wenn kein Zykel existiert, dann existiert ein Knoten ohne Vorgänger. Diesen nimmt man als ersten der Sortierung. Dann induktiv weiter mit Restgraph. Problem: Topologische Sortierung ist zwar effizient möglich. Aber: Man will es nicht für jeden Syntaxbaum wieder neu durchführen. Frage: Kann man für eine attributierte Grammatik an Hand der semantischen Regeln eine Auswertungsstrategie für alle Syntaxbäume festlegen (oder wenigstens überprüfen, ob alle Abhängigkeitsgraphen zu attributierten Syntaxbaum zyklenfrei sind)? Das Problem ist entscheidbar, aber nur in exponentialer Laufzeit (in Abhängigkeit von der Größe der attributierten Grammatik) nicht in der Praxis durchführbar. Deshalb: Man schränkt sich auf spezielle einfache attributierte Grammatiken ein, die eine einfache Auswertungsstrategie ermöglichen. Definition 3 (S- und L-Attributierte Grammatik). 1. Eine attributierte Grammatik heißt S-Attributiert, wenn sie nur synthetische Attribute hat. 2. Eine attributierte Grammatik heißt L-Attributiert, wenn für alle geerbten Attribute folgendes gilt: Wenn X i.a geerbtes Attribut zur Produktion A X 1... X n, dann darf X i.a nur abhängen von Beispiel: 6. a) geerbten Attributen von A b) beliebigen Attributen von X 1,..., X i 1 (die links von X i stehen) c) beliebigen Attributen von X i selbst, wobei unter den Attributen von X i keine Zyklen entstehen dürfen. 1. linksrekursive attributierte Grammatik für arithmetische Ausdrücke (mit einzigem Attribut val ) ist S-Attributiert 5

9 2. nicht linksrekursive attributierte Grammatik für arithmetische Ausdrücke (mit val, syn, inh) ist L-Attributiert, denn die sematischen Regeln für das einzige geerbte Attribut inh lauten: T F T T.inh = F.val ist korrekt (da F links von T ) T F T 1 T 1.inh = T.inh F.val ist korrekt (da T Kopf der Prod. und F links von T 1 ) 1.4 Auswertungsreihenfolge für S-Attributierte Grammatiken Da es nur synthetische Attribute gibt, ist jeder Attributwert nur von den Attributwerten der Söhne abhängig (alle Kanten des Abhängigkeitsgraphen verlaufen von unten nach oben). Der Abhängigkeitsgraph ist sogar ein Baum. Jede bottom up -Auswertung ist möglich, insbesondere die postorder-reihenfolge. postorder ist dadurch charakterisiert, dass jeder Knoten hinter seinen Kindern und hinter seinen linken Geschwistern liegt. Auswertung in postorder-reihenfolge lässt sich rekursiv definieren: Algorithmus 1. postorder-eval(n) führe postorder-eval(c) für alle Kinder C von N in der Reihenfolge von links nach rechts durch, berechne alle Attribute von N aus den Attributen der Kinder (wenn N keine Kinder hat, also mit Terminalzeichen markiert, erhält man den Attributwert vom Scanner) Die Prozedur postorder-eval setzt voraus, dass der Syntaxbaum schon vorliegt. Es geht aber auch ohne explizite Konstruktion des Syntaxbaums. Die postorder-reihenfolge passt zum LR-Parser: Die zeitliche Reihenfolge, in der die Zeichen im Keller auftauchen (durch shift oder reduce) entspricht der postorder-reihenfolge im Syntaxbaum. Die Attributwerte lassen sich während des Parsens berechnen, nämlich wie folgt: Zusätzlich zum Zustands und/oder Zeichenkeller führt man einen Keller für die Attributwerte ein: Bei jeder shift-aktion, legt man das Tupel der Attributwerte oben auf den Attributkeller Bei jeder reduce-aktion A X 1... X n berechnet man die Attributwerte für A aus denen von X 1,..., X n (die im Keller oben liegen) und ersetzt letztere durch das Attributtupel für A. L-Attributierte Grammatiken sind (vermutlich) nicht immer mit LR-Parsern verträglich. Da die gängigen Parser-Generatoren LR-Parser generieren, lassen sie nur synthetische Attribute in den semantischen Regeln zu. Mit Tricks kann man geerbte Attribute vermeiden. Beispiel: 7. Attribute inh, syn, val für nicht linksrekursive Grammatik. Man ersetzt inh, syn durch ein synthetisches Attribut fct : int int, das syn in Abhängigkeit von inh berechnet (d.h. inh ist der Parameter von fct, syn ist das Ergebnis von fct). 6

10 T F T T F T 1 T ɛ T.val = T.fct(F.val) T.fct = λx : int.t 1.fct(x F.val) T.fct = λx : int.x 2 Attrebutauswertung bei L-Attributierten Grammatiken Für jeden Syntaxbaum einer L-Attributierten Grammatik gilt: Aus den geerbten Attributen eines Knotens n lassen sich alle Attribute seiner Kinder und die synthetischen Attribute von n berechnen Beweis. Induktion über die Höhe des Knotens h h = 0 d. h. n ist ein Blatt Die synthetischen Attribute kommen von außen, geerbte sind nicht vorhanden h > 0 d. h. n ist mit Nonterminal X markiert und die Kinder mit X 1,..., X n, wobei X X 1... X n eine Produktion ist. Aus den geerbten von X lassen sich die geerbten von X 1 berechnen (Def. L-Attr.). X X 1... X n Nach Induktionsannahme erhält man daraus die synthetischen von X 1. Daraus erhält man die geerbten Attribute von X 2 (per Def. L-Attr.), bis man alle Attribute von X 1,..., X n kennt. Daraus lassen sich die synthetischen Attribute von X berechnen. Aus dem Beweis ist erkennbar, wie man die Attribute rekursiv berechnen kann und in welcher Reihenfolge sie bei der Rekursion berechnet werden. Sei eval die Auswertungsfunktion zu einer L-Attributierten Grammatik. Die Argumente von eval sind: ein Knoten des Syntaxbaums das Tupel der geerbten Attribute dieses Knotens Das Ergebnis von eval ist das Tupel der synthetischen Attribute des Knotens eval kann wie folgt rekursiv definiert werden: Wenn n ein Blatt mit Terminalzeichen a ist, dann existieren keine geerbten Attribute und eval(n) liefert das Tupel der synthetischen Attribute. 7

11 Wenn n ein innerer Knoten mit geerbten Attributen inh ist und wenn n i (i = 1,..., k) sind, die Kinder von n mit geerbten Attributen inh i, dann lässt sich eval(n, inh) rekursiv berechnen durch: Algorithmus 2. (1) for i = 1 to k do * berechne inh i mit den semantischen Regeln aus inh und den zuvor berechneten syn j, inh j (j < i) * berechne syn i durch rekursiven Aufruf eval(n i, inh i ) (2) berechne syn (die synthetischen Attribute von n) mit den semantischen Regeln aus den in (1) berechneten Attributen Durch die rekursive Definition von eval ist die Auswertungsreihenfolge definiert. Wenn die geerbten links und die synthetischen rechts stehen, lässt sie sich wie folgt veranschaulichen: Intuition: Man startet mit den geerbten Attributen der Wurzel und geht am Baum entlang bis man bei den synthetischen Attributen der Wurzel ankommt. Umsetzung in ein Programm: Im Aufruf eval(n, inh) hängen Anzahl und Typ der geerbten Attribute, im Tupel inh hängen von der Markierung des Knotens n ab. Man muss eval aufteilen in Funktionen eval X (für jedes Nonterminal X), die sich gegenseitig rekursiv aufrufen. eval X ist zuständig für alle Knoten mit Markierung X. Speziell: Da das Startzeichen S keine geerbten Attribute besitzt, erhält man die synthetischen Attribute der Wurzel n durch den Aufruf eval(n). Beachte: 1. Die rekursive Struktur (Aufrufstruktur) der Funktionen eval X gleiche wie beim Recursive Descent Parser (RDP). ist die Deshalb gilt: Wenn für die KFG ein RDP existiert (z. B. wenn sie LL(1) ist), dann lässt sich die Attributauswertung] (für eine L-Attributierung) in den RDP einbauen. Idee: Die parameterlose Prozeduren A() aus dem RDP ersetzt durch Prozeduren A(inh), die die geerbten Attribute als Parameter haben und die synthetischen Attribute als Ergebnis liefern. Die neuen Prozeduren arbeiten gleichzeitig das Eingabewort ab und berechnen die Attribute. 8

12 Beispiel: 8. Nicht linksrekursive KFG für arithmetische Ausdrücke mit L-Attributierung (1) T F T T.inh = F.val T.val = T.syn (2) T T T 1 T 1.inh = T.inh F.val T.syn = T 1.syn (3) T ɛ T.syn = T.inh (4) F digit F.val = digit.lexval Laut Parsing-Tabelle: (1) bei Eingabe digit (2) bei Eingabe (3) bei Eingabe $ (4) bei Eingabe digit Prozeduren T (), F () und T (inh) Algorithmus 3. T(): if input digits then T (F()) (denn F () liefert F.val = T.inh Argument für T else error Resultat T.syn = T.val) T (inh): if input = * then move(); T (inh F ()) else if input = $ then inh else error else error F(): let a = input in if a digits then move(); a (F () liefert F.val und T.inh F.val = T 1.inh ist Argument T 1 Resultat T 1.syn = T.syn (wegen T.syn = T.inh) 9

13 3 Syntaxgerichtete Übersetzungsschemata (ÜS) Englische Bezeichnung: syntax directed translation scheme (SDT) Eine SDT ist eine KFG, bei der Programmstücke in die rechten Seiten von Produktionen eingebetet sind. Die Programmstücke heißen semantische Aktionen. Sie können an jeder Stelle der rechten Seite zwischen {... } auftreten. Beispiel: 9. Umwandlung von Infix- in Präfix-Notation (1) L En (2) E { print + } E 1 + T (3) E T (4) T { print } T 1 F (5) T F (6) F (E) (7) F number { print(number.val)} 3.1 Semantik eines SDT Die Aktionen sind in der Reihenfolge auszuführen, in der sie im Blattwort des Ableitungsbaums auftauchen. Beispiel: 10. Ableitungsbaum für n Also mögliche Implementierung: preorder-reihenfolge ausführen. Ableitungsbaum aufbauen, dann die Aktionen in Frage: Kann man SDT s ausführen, ohne den Syntaxbaum aufzubauen, z. B. während LL- oder LR-parsing? Antwort: Im Allgemeinen nicht, siehe Beispiel. 3.2 Übersetzung von S- bzw. L-attributierten Grammatiken in SDT s Eine S-attributierte Grammatik kann in eine sogenannte Postfix-SDT übersetzt werden, bei der alle Aktionen am Ende der Produktion stehen. Beispiel: 11. KFG für arithmetische Ausdrücke: E E 1 + T {E.val = E 1.val + T.val} E T {E.val = T.val}. 10

14 Postfix-SDT s können (analog zu S-attributierten Grammatiken) während des bottomup-parsing ausgeführt werden: Die semantischen Aktionen, die hinter einer Regel steht, wird gleichzeitig mit den entsprechenden reduce-schritt ausgeführt. Attributwerte werden dabei auf einem Stack verwaltet, der stehts die gleiche Höhe hat, wie der Zeichen- oder Zustandskeller. Eine L-attributierte Grammatik kann in eine SDT übersetzt werden, indem man für jede Produktion folgendes durchführt: 1. Die Aktionen zur Berechnung der geerbten Attribute eines Nonterminals auf der rechten Seite schreibt man unmittelbar vor dieses Nonterminal (wobei man noch auf die Reihenfolge der verschiedenen Attribute dieses Nonterminals achten muss). 2. Die Aktionen zur Berechnung der synthetischen Attribute (zur linken Seite der Produktion) schreibt man ans rechte Ende der Produktion. Beispiel: 12. Nicht linksrekursive KFG für arithmetische Ausdrücke Ableitungsbaum für 3 5: (1) T F {T.inh = F.val} T {T.val = T.syn} (2) T F {T 1.inh = T.inh F.val} T 1 {T.syn = T 1.syn} (3) T ɛ {T.syn = T.inh} (4) F digit {F.val = digit.lexval} 4 Generierung von Zwischencode Hier: Als Zwischencode wird 3-Adresscode verwendet. Befehle dürfen folgende Form haben: 1. Zuweisungen der Form x = y op z wobei op binärer Operator, x,y,z Adressen 2. Zuweisungen der Form wobei op unärer Operator 3. Kopier-Befehl x = op y x = y 4. Unbedingte Sprünge wobei L eine Marke im Programm ist goto L 11

15 5. Bedingte Sprünge if x goto L if F alse x goto L 6. Bedingte Sprünge mit Vergleich if x relop y goto L wobei relop ein Vergleichsoperator ist (<,,... ) 7. Kopierbefehl mit Indices x = y[i] y[i] = x Dabei ist y[i] der Speicherplatz, der i Einheiten hinter y steht 8. Kopierbefehl mit Adressrechnung x = &y x = y y = x Dabei steht &y für die Adresse y selbst (statt für den Inhalt von y) und y steht für die Adresse, die durch den Inhalt von y gegeben ist. 12

16 4.1 Übersetzung arithmetischer Ausdrücke in 3-Adress-Code Idee: Bei der Übersetzung eines geschachtelten Ausdrucks müssen genügend temporäre Adressen generiert werden, in denen man Zwischenergebnisse speichert. Befehl new T emp() liefert stehts eine neue temporäre Adresse. Man benutzt 2 Attribute für das Nonterminal E, nämlich: { E.code beide synthetisch E.addr E.code ist der 3-Adress-Code für E. E.addr ist die Adresse, in der E.code das Ergebnis E abliefert. S-Attributierte Grammatik Produktion semantische Regel (1) S id = E S.code = E.code top.get(id.lexem) = E.addr } {{ } aktuelle Adresse für Token id (2) E E 1 + E 2 E.addr = new T emp() E.code = E 1.code E 2.code E.addr = E 1.addr + E 2.addr (3) E E 1 E.addr = new T emp() E.code = E 1.code E.addr = minus E 1.addr (4) E (E 1 ) E.addr = E 1.addr E.code = E 1.code (5) E id E.addr = top.get(id.lexem) E.code = Besser: Anstelle eines Attributs vom Typ string semantische Aktionen benutzen, die den Code ausgeben, d. h. in den Programmspeicher schreiben. 4.2 Übersetzung boolscher Ausdrücke Boolsche Ausdrücke treten in zwei Rollen auf: 1. zur Berechnung boolscher Werte (analog zu arithmetischen Ausdrücken) 2. Zur Steuerung des Kontrollflusses, d. h. als Bedingung in if-then-else, while,... Im Fall 1 übersetzt man sie wie arithmetische Ausdrücke, im Fall 2 generiert man besser sogenannten Jump Code. Jeder boolsche Ausdruck B hat 3 Attribute: 13

17 B.code synthetisch { B.true geerbt B.f alse B.code ist der 3-Adress-Code für B. B.true ist die Marke, zu der B.code springt, wenn B true liefert. B.false ist die Marke, zu der B.code springt, wenn B false liefert. 4.3 Jumpcode für boolsche Ausdrücke Produktion B B 1 B 2 B B 1 && B 2 B!B 1 B E 1 rel E 2 B true B false semantische Regel B 1.true = B.true B 1.false = newlabel() B 2.true = B.true B 2.false = B.false B.code = B 1.code label(b 1.false) B 2.code B 1.true = newlabel() B 1.false = B.false B 2.true = B.true B 2.false = B.false B.code = B 1.code label(b 1.true) B 2.code B 1.true = B.false B 1.false = B.true B.code = B 1.code B.code = E 1.code E 2.code gen( if E 1.addr rel.op E 2.addr goto B.true) gen( goto B.true) B.code = gen( goto B.true) B.code = gen( goto B.f alse) Erläuterung: B B 1 B 2 : Wenn B 1 = true, dann B = true (ohne dass B 2 ausgewertet wird), also B 1.true = B.true (d. h. beide haben in diesem Fall das gleiche Sprungziel). Wenn B 1 = false, muss B 2 noch ausgewertet werden, also muss man an den Anfang von B 2 springen, also B 2.false = newlabel() wird in B.code verwendet. Wenn B 2 = true bzw B 2 = false, dann ist auch B = true bzw B = false (weil 14

18 man B 2 nur auswertet, wenn B 1 = false), also werden beide Sprungziele einfach vererbt: B 2.true = B.true, B 2.false = B.false. B!B 1 : B hat gleichen Code wie B 1. Nur die Sprungziele sind vertauscht. B E 1 rel E 2 : E 1.code und E 2.code liefern ihre Resultate in E 1.addr und E 2.addr ab. Also muss man anschließend die Inhalte der beiden Adressen vergleichen (mit rel.op) und in Abhängigkeit vom Ergebnis des Vergleichs zu B.true bzw. B.f alse springen. Wo kommen B.true und B.false her? Entweder von einem größeren boolschen Ausdruck, in dem B enthalten ist oder von der Anweisung, in der B als Bedingung enthalten ist. Anweisungen S haben 2 Attribute, nämlich: S.code S.next synthetisch geerbt vom Typ Label S.next ist die Marke, bei der es nach der Ausführung von S.code weitergeht. Genauer: Die Ausführung von S.code endet entweder mit einem Sprung zu S.next oder sie endet ohne Sprung (so dass es hinter S.code weitergeht). Produktion P S S assign S if( B ) S 1 S if( B ) S 1 else S 2 semantische Regel S.next = newlabel() P.code = S.code label(s.next) S.code = assign.code B.true = newlabel() B.false = S 1.next = S.next S.code = B.code label(b.true) S 1.code B.true = newlabel() B.f alse = newlabel() S 1.next = S 2.next = S.next S.code = B.code label(b.true) S 1.code gen( goto S.next) label(b.false) S 2.code 15

19 Produktion S while( B ) S 1 S S 1 S 2 semantische Regel begin = newlabel() B.true = newlabel() B.false = S.next S 1.next = begin S.code = label(begin) B.code label(b.true) S 1.code gen( goto begin) S 1.next = newlabel() S 2.next = S.next S.code = S 1.code label(s 1.next) S 2.code Erläuterungen: P S: Mit newlabel() wird das Programmende markiert S.next = Programmende. S assign: Code ist vorgegeben. 16

20 4.4 Backpatching Boolsche Ausdrücke Anweisungen 5 Laufzeitumgebungen 5.1 Speicherorganisation 5.2 Aufteilung zwischen Stack und Heap 5.3 Zugriff auf globale Daten 5.4 Bestimmung des Access Links 5.5 Prozeduren auf Parameterposition 5.6 Alternative zu Access Links: Displays 5.7 calling sequences und return sequences Design-Prinzipien Aufteilung der calling sequence Codeerzeugung für Programme mit Prozeduren (Pascal-artige Sprache) Vorgehensweise bei der Übersetzung Übersetzung einer Prozedurdeklaration Übersetzung eines Prozeduraufrufs 6 Codegenerierung (Drachenbuch Kpt. 8) 6.1 Befehlssatz der Zielmaschine (RISC-Architektur) 6.2 Basisblöcke und Flussgraphen 6.3 Optimierung der Basisblöcke 6.4 Vom (optimierten) DAG zurück zum Zwischencode 6.5 Ein einfacher Codegenerator 6.6 Globale Register Vergabe 7 Instruction Selection (Drachenbuch Kpt. 8.9) 7.1 Generierung von optimalem Code für Ausdrücke Algorithmus zur Berechnung der Ershov-Zahl 17

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

4. Lernen von Entscheidungsbäumen. Klassifikation mit Entscheidungsbäumen. Entscheidungsbaum

4. Lernen von Entscheidungsbäumen. Klassifikation mit Entscheidungsbäumen. Entscheidungsbaum 4. Lernen von Entscheidungsbäumen Klassifikation mit Entscheidungsbäumen Gegeben sei eine Menge von Objekten, die durch /Wert- Paare beschrieben sind. Jedes Objekt kann einer Klasse zugeordnet werden.

Mehr

Grundbegriffe der Informatik

Grundbegriffe der Informatik Grundbegriffe der Informatik Einheit 15: Reguläre Ausdrücke und rechtslineare Grammatiken Thomas Worsch Universität Karlsruhe, Fakultät für Informatik Wintersemester 2008/2009 1/25 Was kann man mit endlichen

Mehr

50. Mathematik-Olympiade 2. Stufe (Regionalrunde) Klasse 11 13. 501322 Lösung 10 Punkte

50. Mathematik-Olympiade 2. Stufe (Regionalrunde) Klasse 11 13. 501322 Lösung 10 Punkte 50. Mathematik-Olympiade. Stufe (Regionalrunde) Klasse 3 Lösungen c 00 Aufgabenausschuss des Mathematik-Olympiaden e.v. www.mathematik-olympiaden.de. Alle Rechte vorbehalten. 503 Lösung 0 Punkte Es seien

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

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen Binäre Bäume 1. Allgemeines Binäre Bäume werden grundsätzlich verwendet, um Zahlen der Größe nach, oder Wörter dem Alphabet nach zu sortieren. Dem einfacheren Verständnis zu Liebe werde ich mich hier besonders

Mehr

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren Lineargleichungssysteme: Additions-/ Subtraktionsverfahren W. Kippels 22. Februar 2014 Inhaltsverzeichnis 1 Einleitung 2 2 Lineargleichungssysteme zweiten Grades 2 3 Lineargleichungssysteme höheren als

Mehr

1 topologisches Sortieren

1 topologisches Sortieren Wolfgang Hönig / Andreas Ecke WS 09/0 topologisches Sortieren. Überblick. Solange noch Knoten vorhanden: a) Suche Knoten v, zu dem keine Kante führt (Falls nicht vorhanden keine topologische Sortierung

Mehr

Programmierung 2. Übersetzer: Code-Erzeugung. Sebastian Hack. Klaas Boesche. Sommersemester 2012. hack@cs.uni-saarland.de. boesche@cs.uni-saarland.

Programmierung 2. Übersetzer: Code-Erzeugung. Sebastian Hack. Klaas Boesche. Sommersemester 2012. hack@cs.uni-saarland.de. boesche@cs.uni-saarland. 1 Programmierung 2 Übersetzer: Code-Erzeugung Sebastian Hack hack@cs.uni-saarland.de Klaas Boesche boesche@cs.uni-saarland.de Sommersemester 2012 Bytecodes Der Java Übersetzer erzeugt keine Maschinensprache

Mehr

Programmiersprachen und Übersetzer

Programmiersprachen und Übersetzer Programmiersprachen und Übersetzer Sommersemester 2010 19. April 2010 Theoretische Grundlagen Problem Wie kann man eine unendliche Menge von (syntaktisch) korrekten Programmen definieren? Lösung Wie auch

Mehr

Motivation. Formale Grundlagen der Informatik 1 Kapitel 5 Kontextfreie Sprachen. Informales Beispiel. Informales Beispiel.

Motivation. Formale Grundlagen der Informatik 1 Kapitel 5 Kontextfreie Sprachen. Informales Beispiel. Informales Beispiel. Kontextfreie Kontextfreie Motivation Formale rundlagen der Informatik 1 Kapitel 5 Kontextfreie Sprachen Bisher hatten wir Automaten, die Wörter akzeptieren Frank Heitmann heitmann@informatik.uni-hamburg.de

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

Grundlagen der Theoretischen Informatik, SoSe 2008

Grundlagen der Theoretischen Informatik, SoSe 2008 1. Aufgabenblatt zur Vorlesung Grundlagen der Theoretischen Informatik, SoSe 2008 (Dr. Frank Hoffmann) Lösung von Manuel Jain und Benjamin Bortfeldt Aufgabe 2 Zustandsdiagramme (6 Punkte, wird korrigiert)

Mehr

OECD Programme for International Student Assessment PISA 2000. Lösungen der Beispielaufgaben aus dem Mathematiktest. Deutschland

OECD Programme for International Student Assessment PISA 2000. Lösungen der Beispielaufgaben aus dem Mathematiktest. Deutschland OECD Programme for International Student Assessment Deutschland PISA 2000 Lösungen der Beispielaufgaben aus dem Mathematiktest Beispielaufgaben PISA-Hauptstudie 2000 Seite 3 UNIT ÄPFEL Beispielaufgaben

Mehr

Künstliche Intelligenz Maschinelles Lernen

Künstliche Intelligenz Maschinelles Lernen Künstliche Intelligenz Maschinelles Lernen Stephan Schwiebert Sommersemester 2009 Sprachliche Informationsverarbeitung Institut für Linguistik Universität zu Köln Maschinelles Lernen Überwachtes Lernen

Mehr

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang sysplus.ch outlook - mail-grundlagen Seite 1/8 Outlook Mail-Grundlagen Posteingang Es gibt verschiedene Möglichkeiten, um zum Posteingang zu gelangen. Man kann links im Outlook-Fenster auf die Schaltfläche

Mehr

Das Briefträgerproblem

Das Briefträgerproblem Das Briefträgerproblem Paul Tabatabai 30. Dezember 2011 Inhaltsverzeichnis 1 Problemstellung und Modellierung 2 1.1 Problem................................ 2 1.2 Modellierung.............................

Mehr

Vorlesung Diskrete Strukturen Graphen: Wieviele Bäume?

Vorlesung Diskrete Strukturen Graphen: Wieviele Bäume? Vorlesung Diskrete Strukturen Graphen: Wieviele Bäume? Bernhard Ganter Institut für Algebra TU Dresden D-01062 Dresden bernhard.ganter@tu-dresden.de WS 2013/14 Isomorphie Zwei Graphen (V 1, E 1 ) und (V

Mehr

Einführung in die Programmierung

Einführung in die Programmierung : Inhalt Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund - mit / ohne Parameter - mit / ohne Rückgabewerte

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

Mächtigkeit von WHILE-Programmen

Mächtigkeit von WHILE-Programmen Mächtigkeit von WHILE-Programmen Prof. Dr. Berthold Vöcking Lehrstuhl Informatik 1 Algorithmen und Komplexität RWTH Aachen 26. November 2009 Berthold Vöcking, Informatik 1 () Vorlesung Berechenbarkeit

Mehr

Lineare Gleichungssysteme

Lineare Gleichungssysteme Brückenkurs Mathematik TU Dresden 2015 Lineare Gleichungssysteme Schwerpunkte: Modellbildung geometrische Interpretation Lösungsmethoden Prof. Dr. F. Schuricht TU Dresden, Fachbereich Mathematik auf der

Mehr

Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!.

Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!. 040304 Übung 9a Analysis, Abschnitt 4, Folie 8 Die Wahrscheinlichkeit, dass bei n - maliger Durchführung eines Zufallexperiments ein Ereignis A ( mit Wahrscheinlichkeit p p ( A ) ) für eine beliebige Anzahl

Mehr

Systeme 1. Kapitel 6. Nebenläufigkeit und wechselseitiger Ausschluss

Systeme 1. Kapitel 6. Nebenläufigkeit und wechselseitiger Ausschluss Systeme 1 Kapitel 6 Nebenläufigkeit und wechselseitiger Ausschluss Threads Die Adressräume verschiedener Prozesse sind getrennt und geschützt gegen den Zugriff anderer Prozesse. Threads sind leichtgewichtige

Mehr

2.11 Kontextfreie Grammatiken und Parsebäume

2.11 Kontextfreie Grammatiken und Parsebäume 2.11 Kontextfreie Grammatiken und Parsebäume Beispiel: Beispiel (Teil 3): Beweis für L(G) L: Alle Strings aus L der Länge 0 und 2 sind auch in L(G). Als Induktionsannahme gehen wir davon aus, dass alle

Mehr

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag Ludwig-Maximilians-Universität München WS 2015/16 Institut für Informatik Übungsblatt 9 Prof. Dr. R. Hennicker, A. Klarl Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung:

Mehr

Informationsblatt Induktionsbeweis

Informationsblatt Induktionsbeweis Sommer 015 Informationsblatt Induktionsbeweis 31. März 015 Motivation Die vollständige Induktion ist ein wichtiges Beweisverfahren in der Informatik. Sie wird häufig dazu gebraucht, um mathematische Formeln

Mehr

Anmerkungen zur Übergangsprüfung

Anmerkungen zur Übergangsprüfung DM11 Slide 1 Anmerkungen zur Übergangsprüfung Aufgabeneingrenzung Aufgaben des folgenden Typs werden wegen ihres Schwierigkeitsgrads oder wegen eines ungeeigneten fachlichen Schwerpunkts in der Übergangsprüfung

Mehr

Suchmaschinen. Universität Augsburg, Institut für Informatik SS 2014 Prof. Dr. W. Kießling 23. Mai 2014 Dr. M. Endres, F. Wenzel Lösungsblatt 6

Suchmaschinen. Universität Augsburg, Institut für Informatik SS 2014 Prof. Dr. W. Kießling 23. Mai 2014 Dr. M. Endres, F. Wenzel Lösungsblatt 6 Universität Augsburg, Institut für Informatik SS 2014 Prof. Dr. W. Kießling 23. Mai 2014 Dr. M. Endres, F. Wenzel Lösungsblatt 6 Aufgabe 1: Pareto mit SV-Semantik Suchmaschinen Pareto Definition: x < P

Mehr

Kapitel MK:IV. IV. Modellieren mit Constraints

Kapitel MK:IV. IV. Modellieren mit Constraints Kapitel MK:IV IV. Modellieren mit Constraints Einführung und frühe Systeme Konsistenz I Binarization Generate-and-Test Backtracking-basierte Verfahren Konsistenz II Konsistenzanalyse Weitere Analyseverfahren

Mehr

Übung Theoretische Grundlagen Nachtrag zur Vorlesung Dirk Achenbach 21.11.2013

Übung Theoretische Grundlagen Nachtrag zur Vorlesung Dirk Achenbach 21.11.2013 Übung Theoretische Grundlagen Nachtrag zur Vorlesung Dirk Achenbach 21.11.2013 INSTITUT FÜR KRYPTOGRAPHIE UND SICHERHEIT KIT University of the State of Baden-Wuerttemberg and National Laboratory of the

Mehr

Erstellen von x-y-diagrammen in OpenOffice.calc

Erstellen von x-y-diagrammen in OpenOffice.calc Erstellen von x-y-diagrammen in OpenOffice.calc In dieser kleinen Anleitung geht es nur darum, aus einer bestehenden Tabelle ein x-y-diagramm zu erzeugen. D.h. es müssen in der Tabelle mindestens zwei

Mehr

Grundlagen der Programmierung Prof. H. Mössenböck. 3. Verzweigungen

Grundlagen der Programmierung Prof. H. Mössenböck. 3. Verzweigungen Grundlagen der Programmierung Prof. H. Mössenböck 3. Verzweigungen If-Anweisung n > 0? j n if (n > 0) x = x / n; ohne else-zweig x x / n j max x x > y? n max y if (x > y) max = x; else max = y; mit else-zweig

Mehr

Manager. von Peter Pfeifer, Waltraud Pfeifer, Burkhard Münchhagen. Spielanleitung

Manager. von Peter Pfeifer, Waltraud Pfeifer, Burkhard Münchhagen. Spielanleitung Manager von Peter Pfeifer, Waltraud Pfeifer, Burkhard Münchhagen Spielanleitung Manager Ein rasantes Wirtschaftsspiel für 3 bis 6 Spieler. Das Glück Ihrer Firma liegt in Ihren Händen! Bestehen Sie gegen

Mehr

Theoretische Informatik 2 (WS 2006/07) Automatentheorie und Formale Sprachen 19

Theoretische Informatik 2 (WS 2006/07) Automatentheorie und Formale Sprachen 19 Inhalt 1 inführung 2 Automatentheorie und ormale prachen Grammatiken Reguläre prachen und endliche Automaten Kontextfreie prachen und Kellerautomaten Kontextsensitive und yp 0-prachen 3 Berechenbarkeitstheorie

Mehr

Kapitel 2: Formale Sprachen Kontextfreie Sprachen. reguläre Grammatiken/Sprachen. kontextfreie Grammatiken/Sprachen

Kapitel 2: Formale Sprachen Kontextfreie Sprachen. reguläre Grammatiken/Sprachen. kontextfreie Grammatiken/Sprachen reguläre Grammatiken/prachen Beschreibung für Bezeichner in Programmiersprachen Beschreibung für wild cards in kriptsprachen (/* reguläre Ausdrücke */)?; [a-z]; * kontextfreie Grammatiken/prachen Beschreibung

Mehr

Binäre Bäume Darstellung und Traversierung

Binäre Bäume Darstellung und Traversierung Binäre Bäume Darstellung und Traversierung Name Frank Bollwig Matrikel-Nr. 2770085 E-Mail fb641378@inf.tu-dresden.de Datum 15. November 2001 0. Vorbemerkungen... 3 1. Terminologie binärer Bäume... 4 2.

Mehr

1 Vom Problem zum Programm

1 Vom Problem zum Programm Hintergrundinformationen zur Vorlesung GRUNDLAGEN DER INFORMATIK I Studiengang Elektrotechnik WS 02/03 AG Betriebssysteme FB3 Kirsten Berkenkötter 1 Vom Problem zum Programm Aufgabenstellung analysieren

Mehr

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

Einfache Arrays. 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

368 4 Algorithmen und Datenstrukturen

368 4 Algorithmen und Datenstrukturen Kap04.fm Seite 368 Dienstag, 7. September 2010 1:51 13 368 4 Algorithmen und Datenstrukturen Java-Klassen Die ist die Klasse Object, ein Pfeil von Klasse A nach Klasse B bedeutet Bextends A, d.h. B ist

Mehr

Kapitel 4 Die Datenbank Kuchenbestellung Seite 1

Kapitel 4 Die Datenbank Kuchenbestellung Seite 1 Kapitel 4 Die Datenbank Kuchenbestellung Seite 1 4 Die Datenbank Kuchenbestellung In diesem Kapitel werde ich die Theorie aus Kapitel 2 Die Datenbank Buchausleihe an Hand einer weiteren Datenbank Kuchenbestellung

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Objektorientierte Programmierung 1 Geschichte Dahl, Nygaard: Simula 67 (Algol 60 + Objektorientierung) Kay et al.: Smalltalk (erste rein-objektorientierte Sprache) Object Pascal, Objective C, C++ (wiederum

Mehr

8 Diskrete Optimierung

8 Diskrete Optimierung 8 Diskrete Optimierung Definition 8.1. Ein Graph G ist ein Paar (V (G), E(G)) besteh aus einer lichen Menge V (G) von Knoten (oder Ecken) und einer Menge E(G) ( ) V (G) 2 von Kanten. Die Ordnung n(g) von

Mehr

4. Jeder Knoten hat höchstens zwei Kinder, ein linkes und ein rechtes.

4. Jeder Knoten hat höchstens zwei Kinder, ein linkes und ein rechtes. Binäre Bäume Definition: Ein binärer Baum T besteht aus einer Menge von Knoten, die durch eine Vater-Kind-Beziehung wie folgt strukturiert ist: 1. Es gibt genau einen hervorgehobenen Knoten r T, die Wurzel

Mehr

Primzahlen und RSA-Verschlüsselung

Primzahlen und RSA-Verschlüsselung Primzahlen und RSA-Verschlüsselung Michael Fütterer und Jonathan Zachhuber 1 Einiges zu Primzahlen Ein paar Definitionen: Wir bezeichnen mit Z die Menge der positiven und negativen ganzen Zahlen, also

Mehr

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen: VBA Programmierung mit Excel Schleifen 1/6 Erweiterung der Aufgabe Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen: Es müssen also 11 (B L) x 35 = 385 Zellen berücksichtigt

Mehr

1 Mathematische Grundlagen

1 Mathematische Grundlagen Mathematische Grundlagen - 1-1 Mathematische Grundlagen Der Begriff der Menge ist einer der grundlegenden Begriffe in der Mathematik. Mengen dienen dazu, Dinge oder Objekte zu einer Einheit zusammenzufassen.

Mehr

WS 2009/10. Diskrete Strukturen

WS 2009/10. Diskrete Strukturen WS 2009/10 Diskrete Strukturen Prof. Dr. J. Esparza Lehrstuhl für Grundlagen der Softwarezuverlässigkeit und theoretische Informatik Fakultät für Informatik Technische Universität München http://www7.in.tum.de/um/courses/ds/ws0910

Mehr

Lineare Funktionen. 1 Proportionale Funktionen 3 1.1 Definition... 3 1.2 Eigenschaften... 3. 2 Steigungsdreieck 3

Lineare Funktionen. 1 Proportionale Funktionen 3 1.1 Definition... 3 1.2 Eigenschaften... 3. 2 Steigungsdreieck 3 Lineare Funktionen Inhaltsverzeichnis 1 Proportionale Funktionen 3 1.1 Definition............................... 3 1.2 Eigenschaften............................. 3 2 Steigungsdreieck 3 3 Lineare Funktionen

Mehr

Mathematischer Vorbereitungskurs für Ökonomen

Mathematischer Vorbereitungskurs für Ökonomen Mathematischer Vorbereitungskurs für Ökonomen Dr. Thomas Zehrt Wirtschaftswissenschaftliches Zentrum Universität Basel Gleichungen Inhalt: 1. Grundlegendes 2. Lineare Gleichungen 3. Gleichungen mit Brüchen

Mehr

Scala kann auch faul sein

Scala kann auch faul sein Scala kann auch faul sein Kapitel 19 des Buches 1 Faulheit Faulheit ( lazy evaluation ) ist auch in C oder Java nicht unbekannt int x=0; if(x!=0 && 10/x>3){ System.out.println("In if"); } Nutzen der Faulheit?

Mehr

ecaros2 - Accountmanager

ecaros2 - Accountmanager ecaros2 - Accountmanager procar informatik AG 1 Stand: FS 09/2012 Inhaltsverzeichnis 1 Aufruf des ecaros2-accountmanager...3 2 Bedienung Accountmanager...4 procar informatik AG 2 Stand: FS 09/2012 1 Aufruf

Mehr

Algorithmen II Vorlesung am 15.11.2012

Algorithmen II Vorlesung am 15.11.2012 Algorithmen II Vorlesung am 15.11.2012 Kreisbasen, Matroide & Algorithmen INSTITUT FÜR THEORETISCHE INFORMATIK PROF. DR. DOROTHEA WAGNER KIT Universität des Landes Baden-Württemberg und Algorithmen nationales

Mehr

Professionelle Seminare im Bereich MS-Office

Professionelle Seminare im Bereich MS-Office Der Name BEREICH.VERSCHIEBEN() ist etwas unglücklich gewählt. Man kann mit der Funktion Bereiche zwar verschieben, man kann Bereiche aber auch verkleinern oder vergrößern. Besser wäre es, die Funktion

Mehr

Formale Systeme, WS 2012/2013 Lösungen zu Übungsblatt 4

Formale Systeme, WS 2012/2013 Lösungen zu Übungsblatt 4 Karlsruher Institut für Technologie Institut für Theoretische Informatik Prof. Dr. Peter H. Schmitt David Farago, Christoph Scheben, Mattias Ulbrich Formale Systeme, WS 2012/2013 Lösungen zu Übungsblatt

Mehr

Grundbegriffe der Informatik

Grundbegriffe der Informatik Grundbegriffe der Informatik Kapitel 6: Induktives Vorgehen Thomas Worsch KIT, Institut für Theoretische Informatik Wintersemester 2015/2016 GBI Grundbegriffe der Informatik KIT, Institut für Theoretische

Mehr

3 Wie bekommen Sie Passwortlevel 3 und einen Installateurscode?

3 Wie bekommen Sie Passwortlevel 3 und einen Installateurscode? Kurzanleitung Passwortlevel 3, Erhalt und Handhabung Inhaltsverzeichnis 1 Warum Passwortlevel 3...1 2 Gültigkeitsbereich...1 3 Wie bekommen Sie Passwortlevel 3 und einen Installateurscode?...1 4 Eingabe

Mehr

MORE Profile. Pass- und Lizenzverwaltungssystem. Stand: 19.02.2014 MORE Projects GmbH

MORE Profile. Pass- und Lizenzverwaltungssystem. Stand: 19.02.2014 MORE Projects GmbH MORE Profile Pass- und Lizenzverwaltungssystem erstellt von: Thorsten Schumann erreichbar unter: thorsten.schumann@more-projects.de Stand: MORE Projects GmbH Einführung Die in More Profile integrierte

Mehr

1 Attributierte Grammatiken. 2 Zyklische AG. 3 Codeerzeugung mit AGs. Zusatzfolien Semantische Analyse Wintersemester 2008/09 1 / 28

1 Attributierte Grammatiken. 2 Zyklische AG. 3 Codeerzeugung mit AGs. Zusatzfolien Semantische Analyse Wintersemester 2008/09 1 / 28 1 Attributierte Grammatiken 2 Zyklische AG 3 Codeerzeugung mit AGs Zusatzfolien Semantische Analyse Wintersemester 2008/09 1 / 28 Beispiel: Taschenrechner mit Attributierter Grammatik Produktion Semantische

Mehr

Grundlagen der höheren Mathematik Einige Hinweise zum Lösen von Gleichungen

Grundlagen der höheren Mathematik Einige Hinweise zum Lösen von Gleichungen Grundlagen der höheren Mathematik Einige Hinweise zum Lösen von Gleichungen 1. Quadratische Gleichungen Quadratische Gleichungen lassen sich immer auf die sog. normierte Form x 2 + px + = 0 bringen, in

Mehr

Äquivalente Grammatiken / attributierte Grammatik

Äquivalente Grammatiken / attributierte Grammatik Äquivalente Grammatiken / attributierte Grammatik Linksfaktorisierung Elimination von Linksrekursion Umwandlung von EBNF in BNF Attributierte Grammatik Semantikfunktionen und Übersetzungsschema Synthetisierte,

Mehr

Repetitionsaufgaben Wurzelgleichungen

Repetitionsaufgaben Wurzelgleichungen Repetitionsaufgaben Wurzelgleichungen Inhaltsverzeichnis A) Vorbemerkungen B) Lernziele C) Theorie mit Aufgaben D) Aufgaben mit Musterlösungen 4 A) Vorbemerkungen Bitte beachten Sie: Bei Wurzelgleichungen

Mehr

Gleichungen Lösen. Ein graphischer Blick auf Gleichungen

Gleichungen Lösen. Ein graphischer Blick auf Gleichungen Gleichungen Lösen Was bedeutet es, eine Gleichung zu lösen? Was ist überhaupt eine Gleichung? Eine Gleichung ist, grundsätzlich eine Aussage über zwei mathematische Terme, dass sie gleich sind. Ein Term

Mehr

Übungsaufgaben Tilgungsrechnung

Übungsaufgaben Tilgungsrechnung 1 Zusatzmaterialien zu Finanz- und Wirtschaftsmathematik im Unterricht, Band 1 Übungsaufgaben Tilgungsrechnung Überarbeitungsstand: 1.März 2016 Die grundlegenden Ideen der folgenden Aufgaben beruhen auf

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

Mit dem Tool Stundenverwaltung von Hanno Kniebel erhalten Sie die Möglichkeit zur effizienten Verwaltung von Montagezeiten Ihrer Mitarbeiter.

Mit dem Tool Stundenverwaltung von Hanno Kniebel erhalten Sie die Möglichkeit zur effizienten Verwaltung von Montagezeiten Ihrer Mitarbeiter. Stundenverwaltung Mit dem Tool Stundenverwaltung von Hanno Kniebel erhalten Sie die Möglichkeit zur effizienten Verwaltung von Montagezeiten Ihrer Mitarbeiter. Dieses Programm zeichnet sich aus durch einfachste

Mehr

Bundesverband Flachglas Großhandel Isolierglasherstellung Veredlung e.v. U g -Werte-Tabellen nach DIN EN 673. Flachglasbranche.

Bundesverband Flachglas Großhandel Isolierglasherstellung Veredlung e.v. U g -Werte-Tabellen nach DIN EN 673. Flachglasbranche. Bundesverband Flachglas Großhandel Isolierglasherstellung Veredlung e.v. U g -Werte-Tabellen nach DIN EN 673 Ug-Werte für die Flachglasbranche Einleitung Die vorliegende Broschüre enthält die Werte für

Mehr

Übersicht Programmablaufsteuerung

Übersicht Programmablaufsteuerung Übersicht Programmablaufsteuerung Konditionale Verzweigung: if - else switch-anweisung Schleifenkonstrukte: while, do - while for Schleife Sprung-Anweisungen: break, continue, goto, return Anweisungen

Mehr

Java Kurs für Anfänger Einheit 5 Methoden

Java Kurs für Anfänger Einheit 5 Methoden Java Kurs für Anfänger Einheit 5 Methoden Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 22. Juni 2009 Inhaltsverzeichnis Methoden

Mehr

1 C H R I S T O P H D R Ö S S E R D E R M A T H E M A T I K V E R F Ü H R E R

1 C H R I S T O P H D R Ö S S E R D E R M A T H E M A T I K V E R F Ü H R E R C H R I S T O P H D R Ö S S E R D E R M A T H E M A T I K V E R F Ü H R E R L Ö S U N G E N Seite 7 n Wenn vier Menschen auf einem Quadratmeter stehen, dann hat jeder eine Fläche von 50 mal 50 Zentimeter

Mehr

Fallbeispiel: Eintragen einer Behandlung

Fallbeispiel: Eintragen einer Behandlung Fallbeispiel: Eintragen einer Behandlung Im ersten Beispiel gelernt, wie man einen Patienten aus der Datenbank aussucht oder falls er noch nicht in der Datenbank ist neu anlegt. Im dritten Beispiel haben

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Dipl. Inform. Andreas Wilkens aw@awilkens.com Überblick Grundlagen Definitionen Elementare Datenstrukturen Rekursionen Bäume 2 1 Datenstruktur Baum Definition eines Baumes

Mehr

Lineare Gleichungssysteme

Lineare Gleichungssysteme Lineare Gleichungssysteme Eines der am häufigsten auftretenden Standardprobleme der angewandten Mathematik ist das Lösen linearer Gleichungssysteme, etwa zur Netzwerkberechnung in der Elektrotechnik oder

Mehr

Lösungsvorschlag für die Probeklausuren und Klausuren zu Algebra für Informations- und Kommunikationstechniker bei Prof. Dr.

Lösungsvorschlag für die Probeklausuren und Klausuren zu Algebra für Informations- und Kommunikationstechniker bei Prof. Dr. Lösungsvorschlag für die Probeklausuren und Klausuren zu Algebra für Informations- und Kommunikationstechniker bei Prof. Dr. Kurzweil Florian Franzmann André Diehl Kompiliert am 10. April 2006 um 18:33

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

7 Rechnen mit Polynomen

7 Rechnen mit Polynomen 7 Rechnen mit Polynomen Zu Polynomfunktionen Satz. Zwei Polynomfunktionen und f : R R, x a n x n + a n 1 x n 1 + a 1 x + a 0 g : R R, x b n x n + b n 1 x n 1 + b 1 x + b 0 sind genau dann gleich, wenn

Mehr

Einführung in die Programmierung

Einführung in die Programmierung Technische Universität München WS 2003/2004 Institut für Informatik Prof. Dr. Christoph Zenger Testklausur Einführung in die Programmierung Probeklausur Java (Lösungsvorschlag) 1 Die Klasse ArrayList In

Mehr

Anleitung über den Umgang mit Schildern

Anleitung über den Umgang mit Schildern Anleitung über den Umgang mit Schildern -Vorwort -Wo bekommt man Schilder? -Wo und wie speichert man die Schilder? -Wie füge ich die Schilder in meinen Track ein? -Welche Bauteile kann man noch für Schilder

Mehr

Zeichen bei Zahlen entschlüsseln

Zeichen bei Zahlen entschlüsseln Zeichen bei Zahlen entschlüsseln In diesem Kapitel... Verwendung des Zahlenstrahls Absolut richtige Bestimmung von absoluten Werten Operationen bei Zahlen mit Vorzeichen: Addieren, Subtrahieren, Multiplizieren

Mehr

Kapiteltests zum Leitprogramm Binäre Suchbäume

Kapiteltests zum Leitprogramm Binäre Suchbäume Kapiteltests zum Leitprogramm Binäre Suchbäume Björn Steffen Timur Erdag überarbeitet von Christina Class Binäre Suchbäume Kapiteltests für das ETH-Leitprogramm Adressaten und Institutionen Das Leitprogramm

Mehr

Alle Schlüssel-Karten (blaue Rückseite) werden den Schlüssel-Farben nach sortiert und in vier getrennte Stapel mit der Bildseite nach oben gelegt.

Alle Schlüssel-Karten (blaue Rückseite) werden den Schlüssel-Farben nach sortiert und in vier getrennte Stapel mit der Bildseite nach oben gelegt. Gentlemen", bitte zur Kasse! Ravensburger Spiele Nr. 01 264 0 Autoren: Wolfgang Kramer und Jürgen P. K. Grunau Grafik: Erhard Dietl Ein Gaunerspiel für 3-6 Gentlemen" ab 10 Jahren Inhalt: 35 Tresor-Karten

Mehr

Informatik Grundlagen, WS04, Seminar 13

Informatik Grundlagen, WS04, Seminar 13 Informatik Grundlagen, WS04, Seminar 13 Informatik Informatik Grundlagen, Seminar 13 WS04 1 Was wir heute besprechen Nachbesprechen von Übungsblatt 11 Rekursion Grundprinzipien Übung Besprechung Übungsblatt

Mehr

LU-Zerlegung. Zusätze zum Gelben Rechenbuch. Peter Furlan. Verlag Martina Furlan. Inhaltsverzeichnis. 1 Definitionen.

LU-Zerlegung. Zusätze zum Gelben Rechenbuch. Peter Furlan. Verlag Martina Furlan. Inhaltsverzeichnis. 1 Definitionen. Zusätze zum Gelben Rechenbuch LU-Zerlegung Peter Furlan Verlag Martina Furlan Inhaltsverzeichnis Definitionen 2 (Allgemeine) LU-Zerlegung 2 3 Vereinfachte LU-Zerlegung 3 4 Lösung eines linearen Gleichungssystems

Mehr

Wir arbeiten mit Zufallszahlen

Wir arbeiten mit Zufallszahlen Abb. 1: Bei Kartenspielen müssen zu Beginn die Karten zufällig ausgeteilt werden. Wir arbeiten mit Zufallszahlen Jedesmal wenn ein neues Patience-Spiel gestartet wird, muss das Computerprogramm die Karten

Mehr

Algorithmische Mathematik

Algorithmische Mathematik Algorithmische Mathematik Wintersemester 2013 Prof. Dr. Marc Alexander Schweitzer und Dr. Einar Smith Patrick Diehl und Daniel Wissel Übungsblatt 6. Abgabe am 02.12.2013. Aufgabe 1. (Netzwerke und Definitionen)

Mehr

Die Gleichung A x = a hat für A 0 die eindeutig bestimmte Lösung. Für A=0 und a 0 existiert keine Lösung.

Die Gleichung A x = a hat für A 0 die eindeutig bestimmte Lösung. Für A=0 und a 0 existiert keine Lösung. Lineare Gleichungen mit einer Unbekannten Die Grundform der linearen Gleichung mit einer Unbekannten x lautet A x = a Dabei sind A, a reelle Zahlen. Die Gleichung lösen heißt, alle reellen Zahlen anzugeben,

Mehr

2. Lernen von Entscheidungsbäumen

2. Lernen von Entscheidungsbäumen 2. Lernen von Entscheidungsbäumen Entscheidungsbäume 2. Lernen von Entscheidungsbäumen Gegeben sei eine Menge von Objekten, die durch Attribut/Wert- Paare beschrieben sind. Jedes Objekt kann einer Klasse

Mehr

3.2 Binäre Suche. Usr/local/www/ifi/fk/menschen/schmid/folien/infovk.ppt 1

3.2 Binäre Suche. Usr/local/www/ifi/fk/menschen/schmid/folien/infovk.ppt 1 3.2 Binäre Suche Beispiel 6.5.1: Intervallschachtelung (oder binäre Suche) (Hier ist n die Anzahl der Elemente im Feld!) Ein Feld A: array (1..n) of Integer sei gegeben. Das Feld sei sortiert, d.h.: A(i)

Mehr

Windows. Workshop Internet-Explorer: Arbeiten mit Favoriten, Teil 1

Windows. Workshop Internet-Explorer: Arbeiten mit Favoriten, Teil 1 Workshop Internet-Explorer: Arbeiten mit Favoriten, Teil 1 Wenn der Name nicht gerade www.buch.de oder www.bmw.de heißt, sind Internetadressen oft schwer zu merken Deshalb ist es sinnvoll, die Adressen

Mehr

Einführung. Vorlesungen zur Komplexitätstheorie: Reduktion und Vollständigkeit (3) Vorlesungen zur Komplexitätstheorie. K-Vollständigkeit (1/5)

Einführung. Vorlesungen zur Komplexitätstheorie: Reduktion und Vollständigkeit (3) Vorlesungen zur Komplexitätstheorie. K-Vollständigkeit (1/5) Einführung 3 Vorlesungen zur Komplexitätstheorie: Reduktion und Vollständigkeit (3) Univ.-Prof. Dr. Christoph Meinel Hasso-Plattner-Institut Universität Potsdam, Deutschland Hatten den Reduktionsbegriff

Mehr

Dieses Tutorial gibt eine Übersicht der Form Klassen von Struts, welche Besonderheiten und Unterschiede diese aufweisen.

Dieses Tutorial gibt eine Übersicht der Form Klassen von Struts, welche Besonderheiten und Unterschiede diese aufweisen. Übersicht Struts Forms Dieses Tutorial gibt eine Übersicht der Form Klassen von Struts, welche Besonderheiten und Unterschiede diese aufweisen. Allgemeines Autor: Sascha Wolski http://www.laliluna.de/tutorials.html

Mehr

!(0) + o 1("). Es ist damit möglich, dass mehrere Familien geschlossener Orbits gleichzeitig abzweigen.

!(0) + o 1(). Es ist damit möglich, dass mehrere Familien geschlossener Orbits gleichzeitig abzweigen. Bifurkationen an geschlossenen Orbits 5.4 167 der Schnittabbldung konstruiert. Die Periode T (") der zugehörigen periodischen Lösungen ergibt sich aus =! + o 1 (") beziehungsweise Es ist also t 0 = T (")

Mehr

Welche Bereiche gibt es auf der Internetseite vom Bundes-Aufsichtsamt für Flugsicherung?

Welche Bereiche gibt es auf der Internetseite vom Bundes-Aufsichtsamt für Flugsicherung? Welche Bereiche gibt es auf der Internetseite vom Bundes-Aufsichtsamt für Flugsicherung? BAF ist die Abkürzung von Bundes-Aufsichtsamt für Flugsicherung. Auf der Internetseite gibt es 4 Haupt-Bereiche:

Mehr

Elternzeit Was ist das?

Elternzeit Was ist das? Elternzeit Was ist das? Wenn Eltern sich nach der Geburt ihres Kindes ausschließlich um ihr Kind kümmern möchten, können sie bei ihrem Arbeitgeber Elternzeit beantragen. Während der Elternzeit ruht das

Mehr

Auf der linken Seite wählen Sie nun den Punkt Personen bearbeiten.

Auf der linken Seite wählen Sie nun den Punkt Personen bearbeiten. Personenverzeichnis Ab dem Wintersemester 2009/2010 wird das Personenverzeichnis für jeden Mitarbeiter / jede Mitarbeiterin mit einer Kennung zur Nutzung zentraler Dienste über das LSF-Portal druckbar

Mehr

Beweisbar sichere Verschlüsselung

Beweisbar sichere Verschlüsselung Beweisbar sichere Verschlüsselung ITS-Wahlpflichtvorlesung Dr. Bodo Möller Ruhr-Universität Bochum Horst-Görtz-Institut für IT-Sicherheit Lehrstuhl für Kommunikationssicherheit bmoeller@crypto.rub.de 6

Mehr

Java Kurs für Anfänger Einheit 4 Klassen und Objekte

Java Kurs für Anfänger Einheit 4 Klassen und Objekte Java Kurs für Anfänger Einheit 4 Klassen und Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 13. Juni 2009 Inhaltsverzeichnis klasse

Mehr

Grundlagen der Programmierung 2. Bäume

Grundlagen der Programmierung 2. Bäume Grundlagen der Programmierung 2 Bäume Prof. Dr. Manfred Schmidt-Schauÿ Künstliche Intelligenz und Softwaretechnologie 24. Mai 2006 Graphen Graph: Menge von Knoten undzugehörige (gerichtete oder ungerichtete)

Mehr

Inventur. Bemerkung. / Inventur

Inventur. Bemerkung. / Inventur Inventur Die beliebige Aufteilung des Artikelstamms nach Artikeln, Lieferanten, Warengruppen, Lagerorten, etc. ermöglicht es Ihnen, Ihre Inventur in mehreren Abschnitten durchzuführen. Bemerkung Zwischen

Mehr