Zwischencode-Erzeugung. 2. Juni 2009
|
|
- Gitta Schulz
- vor 6 Jahren
- Abrufe
Transkript
1 Zwischencode-Erzeugung im Rahmen des Seminars "Übersetzung von künstlichen Sprachen" Sebastian Hanneken 2. Juni / 32
2 1 Einleitung Einordnung Funktion von Zwischencode 3-Adresscode (3AC) 2 Erzeugung von 3AC Deklarationen Ausdrücke Arrayzugriffe Boolesche Ausdrücke If-Else - Anweisung Switchanweisung 3 Java Bytecode 4 Zusammenfassung 2 / 32
3 Einleitung 1 Einleitung Einordnung Funktion von Zwischencode 3-Adresscode (3AC) 2 Erzeugung von 3AC Deklarationen Ausdrücke Arrayzugriffe Boolesche Ausdrücke If-Else - Anweisung Switchanweisung 3 Java Bytecode 4 Zusammenfassung 3 / 32
4 C++ Itanium C++ Itanium Einleitung Einordnung Einordnung in den Compile-Prozess Quell- Programm Lexer (Lexikalische Analyse) Parser (Syntaktische Anlayse) Statische Überprüfung Zwischencode Zwischencodeerzeugung Codeerzeugung front end back end Explizite Zwischendarstellung (= Zwischencode) am Ende des "front end" Eigenschaften des Zwischencodes: Bezeichner Typ Offset arr array(2, integer) 0 rechteck record 12 höhe float 20 Spiegelt das Quellprogramm exakt wieder Bezeichner Typ Offset Effiziente Erstellung aus dem Quellprogramm länge integer muss möglich 0 sein breite integer 4 Einfache Transformation in Maschinencode If - Schleife If-Else - Schleife While - Schleife 4 / 32
5 Einleitung Funktion von Zwischencode Reduktion der benötigten Beziehungen n n m m n n m m * * + + Quellsprache Quellsprache 1 1 HW-Plattform HW-Plattform 1 1Quellsprache Quellsprache 1 1 HW-Plattform HW-Plattform 1 1 Quellsprache Quellsprache 2 2 Quellsprache Quellsprache 3 3 HW-Plattform HW-Plattform 2 2Quellsprache Quellsprache 2 2 ZC HW-Plattform HW-Plattform 3 3Quellsprache Quellsprache 3 3 HW-Plattform HW-Plattform 2 2 ZC HW-Plattform HW-Plattform 3 3 Quellsprache Quellsprache 4 4 HW-Plattform HW-Plattform 4 4Quellsprache Quellsprache 4 4 HW-Plattform HW-Plattform 4 4 Um jede Quellsprache (n) in jeden Maschinencode (m) übersetzen zu können, benötigt man n m Compiler Zwischencode als Schaltwerk zwischen "front end" und "back end"! Reduktion der benötigten Compiler auf n + m 5 / 32
6 Einleitung 3-Adresscode (3AC) Bausteine des 3AC Linearisierte Form eines Syntaxbaumes Besteht aus den beiden Konzepten Adressen und Instruktionen Adressen: Bezeichner des Quellprogramms Konstanten Compiler generierte temporäre Bezeichner Nur ein arithmetischer/logischer Operator (op) bzw. relationaler Operator (relop) pro Instruktion! Welche Instruktionen stehen beim 3AC zur Verfügung? 6 / 32
7 Einleitung 3-Adresscode (3AC) Instruktionen des 3AC x = y op z x = op y x = y goto L if x goto L bzw. iffalse x goto L if x relop y goto L x = y[i] bzw. x[i] = y Zuweisungsinstruktionen (x, y und z sind Adressen) Zuweisung (op ist unär) Kopierinstruktionen Unbedingter Sprung. Instruktion mit der Marke L wird als Nächstes ausgeführt Bedingte Sprünge, die in Abhängigkeit von der Bedingung x zur Instruktion L springen Bedingte Sprünge (in Abhängigkeit der Bedingung x relop y) Indizierte Kopierinstruktionen 7 / 32
8 1 Einleitung Einordnung Funktion von Zwischencode 3-Adresscode (3AC) 2 Erzeugung von 3AC Deklarationen Ausdrücke Arrayzugriffe Boolesche Ausdrücke If-Else - Anweisung Switchanweisung 3 Java Bytecode 4 Zusammenfassung 8 / 32
9 Deklarationen 1 Einleitung Einordnung Funktion von Zwischencode 3-Adresscode (3AC) 2 Erzeugung von 3AC Deklarationen Ausdrücke Arrayzugriffe Boolesche Ausdrücke If-Else - Anweisung Switchanweisung 3 Java Bytecode 4 Zusammenfassung 9 / 32
10 Deklarationen Handhabung von Deklarationen Zuweisung des Speicherplatzes für Deklarationen erfolgt zur Laufzeit. ABER: Vorbereitung mithilfe relativer Adressen Speicherung des Bezeichners, des Typs und der relativen Adresse in der Symboltabelle Behandlung von: Basistypen! fixe Größe (z. B. Integer = 4) Arrays! Größe eines Elementes Anzahl Elemente Records (bilden komplexe Strukturen ab) Enthält Deklarationen Eigene Symboltabelle Deklarationen werden analysiert. Informationen werden für nachgelagerte Prozesse in der Symboltabelle gespeichert. 10 / 32
11 Deklarationen Deklarationen - Beispiel int[3] arr; record { int länge; int breite;} rechteck; float höhe; Symboltabellen: Bezeichner Typ Offset arr array(3, integer) 0 rechteck record 12 höhe float 20 Bezeichner Typ Offset länge integer 0 breite integer 4 Problematisch: Feste Größen der Basiswerte Lösung: Symbolische Typgrößen, welche im "back end" ersetzt werden 11 / 32
12 Ausdrücke 1 Einleitung Einordnung Funktion von Zwischencode 3-Adresscode (3AC) 2 Erzeugung von 3AC Deklarationen Ausdrücke Arrayzugriffe Boolesche Ausdrücke If-Else - Anweisung Switchanweisung 3 Java Bytecode 4 Zusammenfassung 12 / 32
13 Ausdrücke Arrayzugriffe Elemente des Arrays werden zeilenweise in aufeinander folgenden Speicherbereichen hinterlegt (A[0; 0] A[0; 1] A[n; m]) Adresse eines Elementes A[i 1 ][i 2 ] [i k ] wird berechnet durch base + i 1 w 1 + i 2 w i k w k Übersetzung in indizierte Kopierinstruktionen x = y[i] y ist die Adresse des ersten Elements (vgl. relative Adresse) i ist die Position des Elements im Speicherbereich des Arrays 13 / 32
14 Ausdrücke Arrayzugriffe - Beispiel Array: Zugriff auf. arr[i][j] w 1 = 16 w 2 = 4 3AC =) t 1 = i 16 t 2 = j 4 t 3 = t 1 + t 2 t 4 = arr[t 3 ] 14 / 32
15 Ausdrücke Übersetzung von booleschen Ausdrücken Anwendung von booleschen Operatoren (&& (UND), k (ODER),! (NICHT)) auf boolesche Variablen oder relationale Ausdrücke der Form "E 1 rel E 2 "! rel ist Vergleichsoperator (<; ; =;!=; ; >) Funktionen: Ermittlung eines expliziten Wertes Steuerung des Kontrollflusses In vielen Fällen muss nicht der gesamte boolesche Ausdruck ausgewertet werden (vgl. B 1 && B 2 ) Wie kann 3AC zur Steuerung des Kontrollflusses erzeugt werden? 15 / 32
16 Ausdrücke Boolesches UND - Umsetzung Boolescher Ausdruck (B) true false true false B.true B.false Nächste Instruktion wird in Abhängigkeit des Wahrheitsgehalts bestimmt (Sprungmarken B.true bzw. B.false) Zwischencode wird erzeugt durch B 1.code k label(b 1.true) k B 2.code 16 / 32
17 1 Einleitung Einordnung Funktion von Zwischencode 3-Adresscode (3AC) 2 Erzeugung von 3AC Deklarationen Ausdrücke Arrayzugriffe Boolesche Ausdrücke If-Else - Anweisung Switchanweisung 3 Java Bytecode 4 Zusammenfassung 17 / 32
18 If-Else - Anweisung if(länge > 5 && breite < 3) höhe = 6 else höhe = 3 If-Else While if länge > 5 goto L 1 goto L 3 L 1 : if breite < 3 goto L 2... goto L 3 L 2 : höhe = 6... goto L 4 L 3 : höhe = 3 L 4 : Reduktion von goto-instruktionen? 18 / 32
19 Reduktion von goto-instruktionen Instruktionen des 3AC werden sequenziell abgearbeitet Einsparung von Instruktionen möglich, dieses führt zu: Reduktion des benötigten Speicherplatzes Optimierung des Laufzeitverhaltens if länge > 5 goto L 1 goto L 3 L 1 : if breite < 3 goto L 2 goto L 3 L 2 : höhe = 6 goto L 4 L 3 : höhe = 3 L 4 : iffalse länge > 5 goto L 2 iffalse breite < 3 goto L 2 höhe = 6 goto L 1 L 2 : höhe = 3 L 1 : 19 / 32
20 Reduktion von goto-instruktionen - Umsetzung Umsetzung erfolgt in 2 Schritten 1. Sprungmarke fall einfügen! erzeugt keinen Sprung 2. Auswahl der Instruktion anhand dieser Sprungmarken if B.true 6= fall and B.false 6= fall then gen( if test goto B.true) k gen( goto B.false) else if B.true 6= fall then gen( if test goto B.true) else if B.false 6= fall then gen( iffalse test goto B.false) 20 / 32
21 Backpatching - Notwendigkeit Ziel: Übersetzung in einem Durchgang (Bsp.: B! B 1 && B 2 )! Sprünge müssen generiert werden, wenn deren Ziele noch unbekannt sind?... Zwischencode kann nicht in einem Durchgang erstellt werden Aber: Lösungsansatz durch Backpatching 21 / 32
22 Backpatching - Umsetzung Sprungmarken B.true und B.false werden durch synthetisierte Listen B.truelist bzw. B.falselist ersetzt Listen enthalten Indizes der goto-instruktionen bei denen B.true bzw. B.false eingetragen werden muss Erzeugung von unvollständigen Sprüngen Namensgebende Funktion backpatch(l 1, x) fügt x als Sprungziel der goto-instruktionen aus l 1 ein Marker-Nichtterminale speichern die Indizes der benötigten Instruktionen B! B 1 && MB 2 22 / 32
23 Backpatching - Beispiel B! B 1 && MB 2 länge > 5 && breite < 3 00 : if laenge > 5 goto _ 01 : goto _ 02 : if breite < 3 goto _ 03 : goto _ M = 02 B 1.truelist = {00} backpatch({00}, 02) =) 00 : if laenge > 5 goto : goto _ 02 : if breite < 3 goto _ 03 : goto _ 23 / 32
24 Übersetzung einer Switchanweisung t 1 = länge switch (länge) { case 5: höhe = 4 case 7: höhe = 8 default: höhe = 6 } 3AC =) goto test L 1 : höhe = 4 goto next L 2 : höhe = 8 goto next L 3 : höhe = 6 goto next test : if t 1 = 5 goto L 1 if t 1 = 7 goto L 2 next : goto L 3 24 / 32
25 Switchanweisung - Variationen Überprüfungen der Fälle zu Beginn! Nachteil, dass Sprungziele noch nicht bekannt sind Ersetzung von if t = V i goto L i durch case t V i L i! Gesonderte Behandlung während der Codeerzeugung einfacher Optimierung, wenn Fälle in kleinem Intervall [min; max]! Dynamische Ermittlung der Sprungziele! Intervall muss komplett gefüllt sein min = 5 max = 7 L 1 L 2 25 / 32
26 Java Bytecode 1 Einleitung Einordnung Funktion von Zwischencode 3-Adresscode (3AC) 2 Erzeugung von 3AC Deklarationen Ausdrücke Arrayzugriffe Boolesche Ausdrücke If-Else - Anweisung Switchanweisung 3 Java Bytecode 4 Zusammenfassung 26 / 32
27 Java Bytecode Java Bytecode Compile-Zeit Quellcode Compiler Bytecodes Laufzeitumgebung (Java Runtime Enviroment) Hybrider Compiler! Compiler + Interpreter Bytecode hat die Form <index>: <opcode> [<operand1> [<operand2> ]] Jeder opcode wird durch 1 Byte repräsentiert (theoretisch 256 Befehle möglich) Bytecode ist stackorientiert (Operanden werden auf dem Stack erwartet - Ergebnisse werden hierhin zurückgeschrieben) 27 / 32
28 Java Bytecode Java Bytecode - Beispiel public static void bestimmehöhe(int länge, int breite)f int höhe; if (länge > 5 && breite < 3) höhe = 6; else höhe = 3; return höhe;g 0 : iload_0 1 : iconst_5 2 : if_icmple 16 5 : iload_1 6 : iconst_3 7 : if_icmpge : bipush 6 12 : istore_2 13 : goto : iconst_3 17 : istore_2 18 : iload_2 19 : ireturn 28 / 32
29 Java Bytecode Vergleich 3AC - Bytecode Bytecodes ist eine komprimierte Form des 3AC, bei der Operanden implizit auf dem Stack erwartet werden ABER: Umfang des Zwischencodes ist erheblich größer: Beispiel Switch: Befehle für die fallgerichtete Übersetzung (lookupswitch) bzw. die dynamische Berechnung (tableswitch) Abbildung von objektorientierten Features Fazit: Die Programmiersprache Java, inkl. des Bytecodes setzt die beschriebene Funktion zur Reduzierung der Anzahl der benötigten Compiler gut um. 29 / 32
30 Zusammenfassung 1 Einleitung Einordnung Funktion von Zwischencode 3-Adresscode (3AC) 2 Erzeugung von 3AC Deklarationen Ausdrücke Arrayzugriffe Boolesche Ausdrücke If-Else - Anweisung Switchanweisung 3 Java Bytecode 4 Zusammenfassung 30 / 32
31 Zusammenfassung Zusammenfassung Zwischencode ist eine wichtige Phase der Compilierung Ziel: Reduktion der Anzahl der benötigten Compiler Umsetzung wichtiger Konstrukte einer Programmiersprache möglich Java Bytecode ist ein Beispiel für eine gelungene Umsetzung der Anforderungen an einen Zwischencode Zwischencode eignet sich für Optimierungen und als Ausgangspunkt für die Codeerzeugung 31 / 32
32 Zusammenfassung Vielen Dank! Vielen Dank für die Aufmerksamkeit! Noch Fragen? 32 / 32
Zwischencodeerzeugung Compiler II
Zwishenodeerzeugung Compiler II Prof. Dr. Ursula Goltz 14.09.2012 Einleitung Front-End... Parser Sem. Analys Zwishenodegenerator Bak-End Codegenerator... Zwishendarstellung (Zwishenode) evtl. mashinennunabh.
MehrInstitut für Programmierung und Reaktive Systeme. Java 2. Markus Reschke
Java 2 Markus Reschke 07.10.2014 Datentypen Was wird gespeichert? Wie wird es gespeichert? Was kann man mit Werten eines Datentyps machen (Operationen, Methoden)? Welche Werte gehören zum Datentyp? Wie
MehrFachseminar. Semantische Analyse
Fachseminar Vortragender: Arton Berisha Thema : Semantische Analyse Kursleiter: Prof. Dr. Helmut Weber Agenda 1. Einleitung 1.1 Phasen eines Compilers 1.2 Symboltabelle 2. Semantische Analyse 2.1 Was ist
MehrDefinition Compiler. Bekannte Compiler
Compiler Inhalt: Definition Compiler / bekannte Compiler Klassifikationen von Compilern Analyse-Synthese-Modell der Kompilierung Analyse des Quellprogramms Synthesephase Die Phasen eines Compilers Symboltabellenverwaltung
MehrProgrammieren I. Kapitel 5. Kontrollfluss
Programmieren I Kapitel 5. Kontrollfluss Kapitel 5: Kontrollfluss Ziel: Komplexere Berechnungen im Methodenrumpf Ausdrücke und Anweisungen Fallunterscheidungen (if, switch) Wiederholte Ausführung (for,
MehrPraktikum Compilerbau Sitzung 9 Java Bytecode
Praktikum Compilerbau Sitzung 9 Java Bytecode Prof. Dr.-Ing. Gregor Snelting Matthias Braun und Sebastian Buchwald IPD Snelting, Lehrstuhl für Programmierparadigmen KIT Universität des Landes Baden-Württemberg
MehrCompiler und Codegenerierung. Hw-Sw-Co-Design
Compiler und Codegenerierung Hw-Sw-Co-Design Wo sind wir? System Verhalten Modul Architektur Block SW HW Logik Struktur Compiler und Codegenerierung Compiler - Aufbau Codegenerierung Codeoptimierung Codegenerierung
MehrWerkzeuge zur Programmentwicklung
Werkzeuge zur Programmentwicklung B-15 Bibliothek Modulschnittstellen vorübersetzte Module Eingabe Editor Übersetzer (Compiler) Binder (Linker) Rechner mit Systemsoftware Quellmodul (Source) Zielmodul
MehrBeispiel einer Übersetzung
Beispiel einer Übersetzung Ausdruck in C aktuelle_zeit = Startzeit + vergangene_minuten*60 + vergangene_sekunden; Ausdruck im Instruktionssatz des R10000 LW r1,minuten LW r1,sekunden ADDI r2,r0,60 ADD
MehrDie Programmiersprache C Eine Einführung
Die Programmiersprache C Eine Einführung Christian Gentsch Fakutltät IV Technische Universität Berlin Projektlabor 2. Mai 2014 Inhaltsverzeichnis 1 Einführung Entstehungsgeschichte Verwendung 2 Objektorientiert
MehrÜbersetzung von Datenstrukturen
Übersetzung von Datenstrukturen bisher: Übersetzung von Mini-Java-Exp: Datenkeller zur Auswertung arithm. Ausdrücke Mini-Java: Sprünge zur Simulation von Kontrollstrukturen Mini-Java-FunProc: rekursive
MehrWelche Informatik-Kenntnisse bringen Sie mit?
Welche Informatik-Kenntnisse bringen Sie mit? So gehen Sie vor! Lösen Sie die Aufgaben der Reihe nach von 1 bis 20, ohne das Lösungsblatt zur Hilfe zu nehmen. Der Schwierigkeitsgrad der Aufgaben nimmt
MehrJ.5 Die Java Virtual Machine
Java Virtual Machine Die Java Virtual Machine 22 Prof. Dr. Rainer Manthey Informatik II Java-Compiler und Java Virtual Machine Quellcode-Datei class C... javac D.java Java-Compiler - Dateien class class
MehrInformatik 1 ( ) D-MAVT F2010. Schleifen, Felder. Yves Brise Übungsstunde 5
Informatik 1 (251-0832-00) D-MAVT F2010 Schleifen, Felder Nachbesprechung Blatt 3 Aufgabe 1 ASCII... A > a Vorsicht: Lösen Sie sich von intuitiven Schlussfolgerungen. A ist nicht grösser als a, denn in
MehrObjektorientierte Programmierung
Objektorientierte Programmierung Eine Einführung mit anschaulichen Beispielen aus der Java-Welt apl. Prof. Dr. Achim Ebert Inhalt Kapitel 3: Kontrollstrukturen Einfache Anweisungen Anweisungsblöcke Steuerung
MehrBeispiele für Ausdrücke. Der imperative Kern. Der imperative Kern. Imperativer Kern - Kontrollstrukturen. Deklarationen mit Initialisierung
Beispiele für Ausdrücke Der imperative Kern Deklarationen mit Initialisierung Variablendeklarationen int i = 10; int j = 15; Beispiele für Ausdrücke i+j i++ i & j i j [] [static]
Mehr3.2 Datentypen und Methoden
Kap03.fm Seite 217 Dienstag, 7. September 2010 1:48 13 3.2 Datentypen und Methoden 217 3.2 Datentypen und Methoden Wie bei vielen höheren Programmiersprachen gibt es auch in Java einfache und strukturierte
Mehr1. Referenzdatentypen: Felder und Strings. Referenz- vs. einfache Datentypen. Rückblick: Einfache Datentypen (1) 4711 r
1. Felder und Strings Eigenschaften von Referenzdatentypen 1. Referenzdatentypen: Felder und Strings Referenzdatentypen sind Konstrukte, mit deren Hilfe wir aus einfachen Datentypen neue eigene Typen erzeugen
Mehr1. Referenzdatentypen: Felder und Strings
1. Felder und Strings Eigenschaften von Referenzdatentypen 1. Referenzdatentypen: Felder und Strings Referenzdatentypen sind Konstrukte, mit deren Hilfe wir aus einfachen Datentypen neue eigene Typen erzeugen
MehrElementare Konzepte von
Elementare Konzepte von Programmiersprachen Teil 2: Anweisungen (Statements) Kapitel 6.3 bis 6.7 in Küchlin/Weber: Einführung in die Informatik Anweisungen (statements) in Java Berechnung (expression statement)
MehrRO-Tutorien 3 / 6 / 12
RO-Tutorien 3 / 6 / 12 Tutorien zur Vorlesung Rechnerorganisation Christian A. Mandery WOCHE 2 AM 06./07.05.2013 KIT Universität des Landes Baden-Württemberg und nationales Forschungszentrum in der Helmholtz-Gemeinschaft
MehrRO-Tutorien 15 und 16
Tutorien zur Vorlesung Rechnerorganisation Tutorienwoche 2 am 04.05.2011 1 Christian A. Mandery: KIT Universität des Landes Baden-Württemberg und nationales Grossforschungszentrum in der Helmholtz-Gemeinschaft
MehrInformatik II, SS 2014
Informatik II SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 7 (21.5.2014) Binäre Suche, Hashtabellen I Algorithmen und Komplexität Abstrakte Datentypen : Dictionary Dictionary: (auch: Maps, assoziative
Mehr4.2 Gleitkommazahlen. Der Speicherbedarf (in Bits) ist üblicherweise. In vielen Anwendungen benötigt man gebrochene Werte. Physikalische Größen
. Gleitkommazahlen In vielen Anwendungen benötigt man gebrochene Werte. Physikalische Größen Umrechnen von Einheiten und Währungen Jede Zahl x Q mit x 0 lässt sich folgendermaßen schreiben: x = s m e mit
MehrProgrammiersprachen und Übersetzer
Programmiersprachen und Übersetzer Sommersemester 2009 5. April 2009 Vorteile bei der Verwendung höherer Programmiersprachen Vorteile bei der Verwendung höherer Programmiersprachen 1. Einfache Notation
MehrJava I Vorlesung Imperatives Programmieren
Java I Vorlesung 2 Imperatives Programmieren 3.5.2004 Variablen -- Datentypen -- Werte Operatoren und Ausdrücke Kontrollstrukturen: if Imperatives Programmieren Im Kern ist Java eine imperative Programmiersprache.
MehrÜbungs- und Praktikumsaufgaben zur Systemprogrammierung Dipl.-Ing. H. Büchter (Lehrbeauftragter) FH-Dortmund WS 2001/2002 / SS 2002
1. Stellen Sie die schrittweise Verbesserung eines Compilers durch das Bootstrap- Verfahren mit Hilfe von T-Diagrammen dar. Gegeben ist ein auf der Maschine M lauffähiger Compiler C 1, der in S geschrieben
MehrInteger Integer Integer (Voreinstellung) Integer Gleitkomma Gleitkomma leer/unbestimmt Integer ohne Vorzeichen Integer (explizit) mit Vorzeichen
1 C-Schlüsselwörter Schlüsselwörter sind in allen Programmiersprachen reservierte Wörter. In C sind auch alle Namen _[A-Z]... und... reserviert, auch _... bereichsweise. Weiterhin durch die Standard-
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Dynamische Datenobjekte Pointer/Zeiger, Verkettete Liste Eigene Typdefinitionen 1 Zeigeroperatoren & und * Ein Zeiger ist die Speicheradresse irgendeines Objektes. Eine
MehrGrundlagen der Programmierung Teil1 Einheit III Okt. 2010
Grundlagen der Programmierung Teil1 Einheit III - 22. Okt. 2010 GDP DDr. Karl D. Fritscher basierend auf der Vorlesung Grundlagen der Programmierung von DI Dr. Bernhard Pfeifer Einschub Bevor wir mit den
MehrJava: Eine kurze Einführung an Beispielen
Java: Eine kurze Einführung an Beispielen Quellcode, javac und die JVM Der Quellcode eines einfachen Java-Programms besteht aus einer Datei mit dem Suffix.java. In einer solchen Datei wird eine Klasse
MehrDie Syntax von Java. Ursprünge. Konsequenzen. Das Wichtigste in Kürze. Weiteres Vorgehen. Rund um Java. Sun Microsystems. Borland Software Corp
Ursprünge Die Syntax von Java Borland Software Corp 1995 Syntax: Pascal Objektorientierte Prorammierung optional Plattformen: Windows (Linux, Mac OS X) Sun Microsystems 1995 Syntax: C/C++ Objektorientiert
MehrDas diesem Dokument zugrundeliegende Vorhaben wurde mit Mitteln des Bundesministeriums für Bildung und Forschung unter dem Förderkennzeichen
Das diesem Dokument zugrundeliegende Vorhaben wurde mit Mitteln des Bundesministeriums für Bildung und Forschung unter dem Förderkennzeichen 16OH21005 gefördert. Die Verantwortung für den Inhalt dieser
Mehr1. Erste Schritte 2. Einfache Datentypen 3. Anweisungen und Kontrollstrukturen 4. Verifikation 5. Reihungen (Arrays)
1. Erste Schritte 2. Einfache Datentypen 3. Anweisungen und Kontrollstrukturen 4. Verifikation 5. Reihungen (Arrays) II.1.3. Anweisungen und Kontrollstrukturen - 1 - Anweisung Anweisung Zuweisung Methodenaufruf
Mehr3. Anweisungen und Kontrollstrukturen
3. Kontrollstrukturen Anweisungen und Blöcke 3. Anweisungen und Kontrollstrukturen Mit Kontrollstrukturen können wir den Ablauf eines Programmes beeinflussen, z.b. ob oder in welcher Reihenfolge Anweisungen
MehrWintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 29
Kapitel 2 Einführung in C++ Seite 1 von 29 C++ Zeichensatz - Buchstaben: a bis z und A bis Z. - Ziffern: 0 bis 9 - Sonderzeichen: ; :,. # + - * / % _ \! < > & ^ ~ ( ) { } [ ]? Seite 2 von 29 Höhere Elemente
MehrJavakurs FSS Lehrstuhl Stuckenschmidt. Tag 1 - Variablen und Kontrollstrukturen
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt Tag 1 - Variablen und Kontrollstrukturen main Methode Startpunkt jeder Java Anwendung String[] args ist ein Array aus Parametern, die beim Aufruf über die Kommandozeile
MehrAnweisungen zur Ablaufsteuerung
Anweisungen zur Ablaufsteuerung if-else switch while do-while for Ausdrücke Ein Ausdruck ist eine Folge von Variablen, Operatoren und Methodenaufrufen, der zu einem einzelnen Wert ausgewertet wird. Operanden
MehrJavakurs für Anfänger
Javakurs für Anfänger Einheit 04: Einführung in Kontrollstrukturen Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil: Einführung in Kontrollstrukturen 3 Grundstrukturen von
MehrUrsprünge. Die Syntax von Java. Das Wichtigste in Kürze. Konsequenzen. Weiteres Vorgehen. Rund um Java
Ursprünge Die Syntax von Java Borland Software Corp 1995 Syntax: Pascal Objektorientierte Prorammierung optional Plattformen: Windows (Linux, Mac OS X) Sun Microsystems 1995 Syntax: C/C++ Objektorientiert
MehrAuD-Tafelübung T-B5b
6. Übung Sichtbarkeiten, Rekursion, Javadoc Di, 29.11.2011 1 Blatt 5 2 OOP Klassen Static vs. Instanzen Sichtbarkeit 3 Stack und Heap Stack Heap 4 Blatt 6 1 Blatt 5 2 OOP Klassen Static vs. Instanzen Sichtbarkeit
MehrArbeitsblätter für die Lehrveranstaltung OOP JAVA 1
Fachhochschule Stralsund Fachbereich Maschinenbau Lehrgebiet Informatik Prof. Dr.-Ing. Ch.Wahmkow Arbeitsblätter für die Lehrveranstaltung OOP I. Aufbau eines Java-Programmes JAVA 1 Escape-Sequenzen zur
MehrEinführung in die Programmierung für NF MI. Übung 04
Einführung in die Programmierung für NF MI Übung 04 Inhalt Arrays Einführung in Objekte Einführung in die Programmierung für NF Übung 04 2 Arrays Arrays repräsentieren Reihungen von Objekten, z.b. Variablen
MehrS. d. I.: Programieren in C Folie 4-1. im Gegensatz zu Pascal gibt es in C kein Schlüsselwort "then"
S. d. I.: Programieren in C Folie 4-1 4 Anweisungen 4.1 if-anweisung 1) if (Ausdruck) 2) if (Ausdruck) } else im Gegensatz zu Pascal gibt es in C kein Schlüsselwort "then" es wird nur der numerische Wert
MehrArrays. Theorieteil. Inhaltsverzeichnis. Begriffe. Programmieren mit Java Modul 3. 1 Modulübersicht 3
Programmieren mit Java Modul 3 Arrays Theorieteil Inhaltsverzeichnis 1 Modulübersicht 3 2 Eindimensionale Arrays 3 2.1 Arrays deklarieren.............................. 3 2.2 Arrays erzeugen................................
MehrEinleitung Entwicklung in C Hello-World! Konstrukte in C Zusammenfassung Literatur. Grundlagen von C. Jonas Gresens
Grundlagen von C Jonas Gresens Proseminar C Grundlagen und Konzepte Arbeitsbereich Wissenschaftliches Rechnen Fachbereich Informatik Fakultät für Mathematik, Informatik und Naturwissenschaften Universität
MehrJAVA-Datentypen und deren Wertebereich
Folge 8 Variablen & Operatoren JAVA 8.1 Variablen JAVA nutzt zum Ablegen (Zwischenspeichern) von Daten Variablen. (Dies funktioniert wie beim Taschenrechner. Dort können Sie mit der Taste eine Zahl zwischenspeichern).
MehrTechnische Universität Braunschweig Institut für Programmierung und Reaktive Systeme
Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme Programmieren I Dr. Werner Struckmann 17. Februar 2018 Name: Vorname: Matrikelnummer: Kennnummer: Anrede: Frau Herr
MehrDie for -Schleife HEUTE. Schleifen. Arrays. Schleifen in JAVA. while, do reichen aus, um alle iterativen Algorithmen zu beschreiben
18.11.5 1 HEUTE 18.11.5 3 Schleifen Arrays while, do reichen aus, um alle iterativen Algorithmen zu beschreiben Nachteil: Steuermechanismus ist verteilt Übersicht nicht immer leicht dazu gibt es for (
MehrSchachtelung der 2. Variante (Bedingungs-Kaskade): if (B1) A1 else if (B2) A2 else if (B3) A3 else if (B4) A4 else A
2.4.6. Kontrollstrukturen if-anweisung: Bedingte Ausführung (Verzweigung) 2 Varianten: if (Bedingung) Anweisung (Anweisung = einzelne Anweisung oder Block) Bedeutung: die Anweisung wird nur ausgeführt,
Mehrfloat: Fließkommazahl nach IEEE 754 Standard mit 32 bit
Primitive Datentypen Fließkommazahlen float: Fließkommazahl nach IEEE 754 Standard mit 32 bit Vorzeichen Exponent 8 bit Mantisse 23 bit double: Fließkommazahl nach IEEE 754 Standard mit 64 bit Vorzeichen
Mehr1. Erste Schritte 2. Einfache Datentypen 3. Anweisungen und Kontrollstrukturen 4. Verifikation 5. Reihungen (Arrays)
1. Erste Schritte 2. Einfache Datentypen 3. Anweisungen und Kontrollstrukturen 4. Verifikation 5. Reihungen (Arrays) II.1.3. Anweisungen und Kontrollsttukturen - 1 - 3. Anweisungen und Kontrollstrukturen
MehrSprachkonstrukte Verzweigungen und Array-Strukturen
Sprachkonstrukte Verzweigungen und Array-Strukturen Dr. Beatrice Amrhein Überblick Verzweigungen o if/else o switch/case Array-Strukturen o Vektoren und Matrizen 2 Verzweigungen 3 Verzweigungen: if/else
MehrTag 4 Repetitorium Informatik (Java)
Tag 4 Repetitorium Informatik (Java) Dozent: Michael Baer Lehrstuhl für Informatik 2 (Programmiersysteme) Friedrich-Alexander-Universität Erlangen-Nürnberg Wintersemester 2017/2018 Übersicht Arrays (Reihungen)
Mehr2.7 Anweisungen. x+2; // Java-Fehler, korrekt in C oder C++
2.7 Anweisungen Anweisungen (Statements) sind in Java die elementaren Einheiten des Kontrollflusses. Eine Anweisung stellt eine Aktivität dar, sie bewirkt etwas. Ausdrücke sind in Java keine Anweisungen
MehrComputeranwendung und Programmierung (CuP)
Computeranwendung und Programmierung (CuP) ArrayList 0 1 2 Obj0 Obj1 size() - 1 15.12.2014 CuP - VO 2 Auer 1 ArrayList import java.util.arraylist; ArrayList buchliste; buchliste = new ArrayList();
MehrModellierung und Programmierung 1
Modellierung und Programmierung 1 Prof. Dr. Sonja Prohaska Computational EvoDevo Group Institut für Informatik Universität Leipzig 4. November 2015 Administratives Zur Abgabe von Übungsaufgaben Nein, wir
MehrÜbersetzungsschema MMS -> 3AC
Übersetzungsschema MMS -> 3AC Vorbereitungen - Tabellen TypeTab Index Type nof_items itemsize basetype fields name 1 integer 2 float 3 bool 4 array 30 4 1 a 5 pointer 4 aref...... Vorbereitungen - Tabellen
MehrProgrammiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny
Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny 5. Kontrollstrukturen Allgemein Kontrollstrukturen dienen zur Steuerung des Programmablaufs. (Bemerkung: C und C++ besitzen die selben Kontrollstrukturen.)
MehrCrashkurs C++ - Teil 1
Crashkurs C++ - Teil 1 Intro Speicherverwaltung Variablen, Pointer, Referenzen Felder statische & dynamische Allozierung Birgit Möller & Denis Williams AG Bioinformatik & Mustererkennung Institut für Informatik
MehrC++ - Objektorientierte Programmierung Konstante und statische Elemente
C++ - Objektorientierte Programmierung Konstante und statische Elemente hat eine Kantenlänge hat eine Füllfarbe Kantenlänge setzen Füllfarbe lesen Volumen berechnen Leibniz Universität IT Services Anja
MehrWertebereich und Genauigkeit der Zahlendarstellung
Wertebereich und Genauigkeit der Zahlendarstellung Sowohl F als auch C kennen bei ganzen und Floating Point-Zahlen Datentypen verschiedener Genauigkeit. Bei ganzen Zahlen, die stets exakt dargestellt werden
MehrMartin Unold INFORMATIK. Geoinformatik und Vermessung
Wiederholung So sieht ein leeres Java-Programm aus public class Programmname { public static void main (String[] args) { // Hier stehen die Anweisungen Wiederholung Anweisungen durch Methodenaufrufe Ausgabe
MehrFragenkatalog ESOP WS 16/17
Fragenkatalog ESOP WS 16/17 1. Einleitung 1.1 Was ist Programmieren? 1.2 Was ist ein Programm? 1.3 Welche Schritte werden bei der Programmerstellung benötigt? 1.4 Was ist ein Algorithmus? 1.5 Was sind
Mehr3.8 Objekttypen und Arrays. Wir werden uns in diesem Kapitel näher mit den Objekttypen in Java beschäftigen.
3.8 Objekttypen und Arrays Wir werden uns in diesem Kapitel näher mit den Objekttypen in Java beschäftigen. Praktische Informatik I Wolfgang Effelsberg 3. Die Programmiersprache Java 3.8-1 Primitive Datentypen
MehrGrundlagen der OO- Programmierung in C#
Grundlagen der OO- Programmierung in C# Technische Grundlagen 1 Dr. Beatrice Amrhein Überblick Visual Studio: Editor und Debugging Die Datentypen Methoden in C# Die Speicherverwaltung 2 Visual Studio 3
MehrDie Sprache C# Datentypen, Speicherverwaltung Grundelemente der Sprache. Dr. Beatrice Amrhein
Die Sprache C# Datentypen, Speicherverwaltung Grundelemente der Sprache Dr. Beatrice Amrhein Überblick Speicherverwaltung: Stack und Heap Ein- und Ausgabe über die Console Variablen und Operatoren Parameter
Mehr3. Java - Sprachkonstrukte I
Namen und Bezeichner Ein Programm (also Klasse) braucht einen Namen 3. Java - Sprachkonstrukte I Namen und Bezeichner, Variablen, Zuweisungen, Konstanten, Datentypen, Operationen, Auswerten von Ausdrücken,
MehrÜbung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 1. Teil
MÜNSTER Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++ 1. Teil 11. April 2012 Organisatorisches MÜNSTER Übung zur Vorlesung Wissenschaftliches
MehrIntensivübung zu Algorithmen und Datenstrukturen
Intensivübung zu Algorithmen und Datenstrukturen Silvia Schreier Informatik 2 Programmiersysteme Martensstraße 3 91058 Erlangen Übersicht Programmierung Fallunterscheidung Flussdiagramm Bedingungen Boolesche
MehrTutorium Rechnerorganisation
Woche 2 Tutorien 3 und 4 zur Vorlesung Rechnerorganisation 1 Christian A. Mandery: KIT Universität des Landes Baden-Württemberg und nationales Grossforschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu
MehrEinführung in die Programmierung für NF. Algorithmen, Datentypen und Syntax
Einführung in die Programmierung für NF Algorithmen, Datentypen und Syntax Ziele Begriffsbildungen: InformaCk, Algorithmus, Programm, Compiler und andere Einordnung von Java Ein einfaches Java- Programm
MehrProgrammierung mit Java
JUSTUS-LIEBIG-UNIVERSITÄT GIESSEN ALLG. BWL UND WIRTSCHAFTSINFORMATIK UNIV.-PROF. DR. AXEL C. SCHWICKERT Übungsaufgaben zur Lehrveranstaltung Programmierung mit Java Übung im Master-Modul Systems Engineering
MehrFH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Referenzen. Referenzen
5 Objektorientierte Programmierung in Java Prof. Dr. Ing. André Stuhlsatz Referenzen Beispiel an der einfachen Klasse Walze: public class Walze { int id; public Walze(int id) { this.id = id; Verwenden
MehrGrundlagen der Programmierung Teil1 Einheit III Okt. 2009
Grundlagen der Programmierung Teil1 Einheit III - 23. Okt. 2009 GDP DDr. Karl D. Fritscher basierend auf der Vorlesung Grundlagen der Programmierung von DI Dr. Bernhard Pfeifer Ausdrücke & Anweisungen
MehrJava 8. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Oktober 2014 JAV8
Java 8 Elmar Fuchs Grundlagen Programmierung 1. Ausgabe, Oktober 2014 JAV8 5 Java 8 - Grundlagen Programmierung 5 Kontrollstrukturen In diesem Kapitel erfahren Sie wie Sie die Ausführung von von Bedingungen
MehrInhalt. 1 Einstieg in die Welt von C Erste Schritte in C 31. Vorwort... 15
Vorwort... 15 1 Einstieg in die Welt von C 17 1.1 Die Sprache C... 17 1.2 Die C-Standardbibliothek... 18 1.3 Die nötigen Werkzeuge für C... 21 1.4 Übersetzen mit der Entwicklungsumgebung... 23 1.5 Übersetzen
MehrWie entwerfe ich ein Programm?
Wie entwerfe ich ein Programm? Welche Objekte brauche ich? Flussdiagramme für Programmablauf Vorcode Testcode Hauptcode Wir spielen Lotto! Borchers: Programmierung für Alle (Java), WS 06/07 Kapitel 5 +
MehrObjektorientierte Programmierung OOP Programmieren mit Java
Objektorientierte Programmierung OOP Programmieren mit Java 5.1 Elementare Anweisungen 5.1.1 Ausdrucksanweisung 5.1.2 Leere Anweisung 5.1.3 Blockanweisung 5.1.4 Variablendeklaration 5.2 Bedingungen 5.2.1
MehrProgrammierkurs C++ Variablen und Datentypen
Programmierkurs C++ Variablen und Datentypen Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer #2 Überblick Welche Datentypen gibt es in
MehrProgrammieren in Java -Eingangstest-
Programmieren in Java -Eingangstest- Nummer: 1. Studiengang: Informatik B.Sc. Informatik M.Sc. ESE B.Sc. ESE M.Sc. Sonstiges: Fachsemester: Bitte Fragen, die Sie nicht beantworten können unbedingt mit
MehrÜbungen zur Vorlesung Wissenschaftliches Rechnen I. Grundelemente von Java. Eine Anweisung. wird mit dem Wertzuweisungsoperator = geschrieben.
Eine Anweisung wird mit dem Wertzuweisungsoperator = geschrieben. Eine Anweisung wird mit dem Wertzuweisungsoperator = geschrieben. Daher ist y = x + 5.6; keine Gleichung, sondern die Anweisung den Wert
MehrPeter Prinz Ulla Kirch-Prinz C+ + Lernen und professionell anwenden. ffl mitp
Peter Prinz Ulla Kirch-Prinz C+ + Lernen und professionell anwenden ffl mitp Inhaltsverzeichnis Einleitung 19 1 Grundlagen 21 Entwicklung und Eigenschaften von C + + 22 Objektorientierte Programmierung
MehrModul 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
MehrProgrammierung 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
MehrEinfache Rechenstrukturen und Kontrollfluß
2 Ziele Einfache Rechenstrukturen und Kontrollfluß Verstehen der Grunddatentypen von Java Verstehen von Typkonversion in Java Lernen lokale Variablen und Konstanten zu initialisieren Verstehen der Speicherorganisation
MehrAlgorithmen & Programmierung. Steuerstrukturen im Detail Selektion und Iteration
Algorithmen & Programmierung Steuerstrukturen im Detail Selektion und Iteration Selektion Selektion Vollständige einfache Selektion Wir kennen schon eine Möglichkeit, Selektionen in C zu formulieren: if
MehrAlgorithmen und Datenstrukturen (für ET/IT) Wiederholung: Ziele der Vorlesung. Wintersemester 2012/13. Dr. Tobias Lasser
Algorithmen und Datenstrukturen (für ET/IT) Wintersemester 2012/13 Dr. Tobias Lasser Computer Aided Medical Procedures Technische Universität München Wiederholung: Ziele der Vorlesung Wissen: Algorithmische
MehrEinstieg in die Informatik mit Java
Vorlesung vom 25.4.07, Anweisungen Übersicht 1 Ausdrucksanweisung 2 Einfache Ausgabeanweisung 3 Einfache Eingabeanweisung, Vorbereitungen 4 Verbundanweisung 5 Bedingte Anweisung 6 Auswahlanweisung 7 for
MehrEinstieg in die Informatik mit Java
1 / 47 Einstieg in die Informatik mit Java Anweisungen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 47 1 Ausdrucksanweisung 2 Einfache Ausgabeanweisung 3 Einfache Eingabeanweisung,
MehrSchwerpunkte. 10. Felder (Arrays) Grundprinzip von Arrays. Klassifikation von Typen in Programmiersprachen
Schwerpunkte 10. Felder (Arrays) Teil 1 Java-Beispiele: Echo.java Primzahlen.java Monate.java Klassifikation von Typen in Programmiersprachen Array: einziger strukturierter Typ in Java Deklaration, Erzeugung
Mehr(Aufgaben zu Wertzuweisungen siehe Vorlesungsbeilage S. 49)
Anweisungen Eine Anweisung ist eine in einer beliebigen Programmiersprache abgefaßte Arbeitsvorschrift für einen Computer. Jedes Programm besteht aus einer bestimmten Anzahl von Anweisungen. Wir unterscheiden
MehrAlgorithmen implementieren. Implementieren von Algorithmen
Algorithmen implementieren Implementieren von Algorithmen Um Algorithmen ablaufen zu lassen, muss man sie als Programm darstellen (d.h. implementieren) Wie stellt man die algorithmischen Strukturelemente
MehrÜbersetzung in Zwischencode
Übersetzung in Zwischencode Compilerbau Übersetzung in Zwischencode 109 Übersetzung in Zwischencode Compilerbau Übersetzung in Zwischencode 110 Überblick Zwischencode Die abstrakte Syntax soll in Zwischencode
MehrModerne C-Programmierung
Xpert.press Moderne C-Programmierung Kompendium und Referenz Bearbeitet von Helmut Schellong 1. Auflage 2005. Buch. xii, 280 S. ISBN 978 3 540 23785 3 Format (B x L): 15,5 x 23,5 cm Weitere Fachgebiete
MehrAlgorithmen und Datenstrukturen (für ET/IT)
Algorithmen und Datenstrukturen (für ET/IT) Wintersemester 2012/13 Dr. Tobias Lasser Computer Aided Medical Procedures Technische Universität München Wiederholung: Ziele der Vorlesung Wissen: Algorithmische
MehrGrundlagen der Informatik 0
Technische Universität Darmstadt 01.07.2013 Grundlagen der Informatik 0 Vorlesung 0 Java ist eine Programmiersprache Ilkay Baytekin Douglas Crockford http://media.smashingmagazine.com/wp-content/uploads/2012/04/doug-crockford-image.jpg
Mehrzu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme
Bisher Datentypen: einfach Zahlen, Wahrheitswerte, Zeichenketten zusammengesetzt Arrays (Felder) zur Verwaltung mehrerer zusammengehörender Daten desselben Datentypes eindimensional, mehrdimensional, Array-Grenzen
MehrSchwerpunkte. Verkettete Listen. Verkettete Listen: 7. Verkettete Strukturen: Listen. Überblick und Grundprinzip. Vergleich: Arrays verkettete Listen
Schwerpunkte 7. Verkettete Strukturen: Listen Java-Beispiele: IntList.java List.java Stack1.java Vergleich: Arrays verkettete Listen Listenarten Implementation: - Pascal (C, C++): über Datenstrukturen
Mehr