SPL-Sprachkonvertierung im Rahmen einer BS2000-Migration. pro et con
|
|
- Rainer Lange
- vor 5 Jahren
- Abrufe
Transkript
1 8. Workshop Software-Reengineering 3./5. Mai 2006, Bad Honnef SPL-Sprachkonvertierung im Rahmen einer BS2000-Migration Uwe Erdmenger pro et con Innovative Informatikanwendungen GmbH 1
2 Die Firma pro et con Gründung 1994, 11 Mitarbeiter Softwaremigration/Reverse Engineering: Flow Graph Manipulator FGM (Cobol, TAL, PL/I, JAVA, Natural, SPL) Migrationsprojekte: Heidelberger Druckmaschinen: TAL nach C/C++ MAN München: HP NonStop Migration Cosmos Versicherung: PL/I nach C++ Amadeus Germany: BS2000 Migration 2
3 Definition Translator Translator deutsch: "Übersetzer" Hier: Softwarewerkzeug zum Konvertieren von Programmen aus einer Programmier- Hochsprache in eine andere. Wesentliches Ziel: Wartung/Weiterentwicklung der Programme in der neuen Sprache Gemeinsamkeiten/Unterschiede zu Compilern Beispiel: STC SPL to C++-Translator 3
4 Das Translatormodell P(A 1 ) P(A n ) Präprozessor P(A ges ) Scanner Konfigurationsfile Token n Token n+1 Token n+2 Parser Syntaxbaum P(A ges ) Konvertierer Symboltabelle Syntaxbaum P(B ges ) Postprozessor Syntaxbäume P(B 1 ) P(B n ) Generierung P(B 1 ) P(B n ) 4
5 Wesentliche Unterschiede zu Compilern Frontend: Erhaltung von Kommentaren Erhaltung von Informationen zu Präprozessoranweisungen Generierung: Wiedereinbau der Kommentare Wiederaufteilung auf verschiedene Files Wiedereinfügen von Makros Formatierung einstellbar Interne Darstellung: Grundsätzlich alle Informationen aufheben Zwei vollständige Syntaxbäume 5
6 Interne Darstellung: Tokenliste Alle Informationen zu Token müssen erhalten bleiben: Tokentyp und -text Positionsinformationen (File, Zeile, Spalte) Flags ("Präprozessortoken", "Kommentartoken",...) Informationen zur Makroersetzung Speicherung in einer Liste entsprechend der Reihenfolge ihres Auftretens 6
7 Interne Darstellung: Syntaxbaum Entscheidung: Klassenhierarchie oder einheitlicher Knotentyp? Lösung: Klassenhierarchie, aber Informationen zu Kindknoten sowie Knotenart alle in der Basisklasse Definition der Knotenarten in Metasprache Übersetzung mittels Perl-Programm in C++- Code CLASS SPL_PLUS_NODE EXTENDS SPL_EXPR_NODE CHILD summand1 TYPE SPL_EXPR_SET CHILD summand2 TYPE SPL_EXPR_SET SPECIAL END-CLASS SPL_PLUS_NODE 7
8 Beispiel: Syntaxbaum CLASS SPL_IDENT_NODE EXTENDS SPL_PRIMARY_NODE SPECIAL // speziell fuer diese Knotenart: class SPL_Symbol *sym; // Symboltabelle class Spl_base_node *model; // MODEL-Deklaration INIT sym = 0; model = 0; END-CLASS SPL_IDENT_NODE 8
9 Postprozessor Nach Konvertierung (s. Translatormodell) liegt ein C++-Syntaxbaum vor Notwendig sind: Zerlegung in mehrere Bäume (einer für jedes File) Substitution von Teilbäumen durch andere, die z.b. Makroaufrufe repräsentieren Zuordnung der Kommentare zu einzelnen Teilbäumen Ergebnis: interne Syntaxbäume, die ohne weitere Manipulation in die einzelnen Files ausgegeben werden 9
10 Aufteilung des generierten Codes Teilbäume, die aus einem Includefile stammen, aus dem "main-baum" herausschneiden Ersetzen durch Bäume, die für eine Include- Anweisung stehen Informationen zur Herkunft der Statements müssen bei der Konvertierung mit übertragen werden Beschränkung auf komplette Anweisungen bzw. Definitionen/Deklarationen Problem: "Auseinanderreißen" ursprünglich zusammenstehender Statements 10
11 Beispiel SPL-Main-File DCL 1 PERSON, struct { %INCLUDE BSP; # define BSP_SECT1 # include "bsp.hpp" # undef BSP_SECT1 } person = { TFixString<10>( # define BSP_SECT2 # include "bsp.hpp" # undef BSP_SECT2 ) }; SPL-Includefile C++-Main-File C++-Includefile 2 NAME CHAR(10) #ifdef BSP_SECT1 INIT('FRITZ'); TFixString<10> name; #endif #ifdef BSP_SECT2 "FRITZ"; #endif 11
12 Erhaltung von Kommentaren (1) Kommentare werden in die Tokenliste aufgenommen Parser überliest diese Kommentartoken Kommentar wird einem Teilbaum als "Vorkommentar" zugeordnet, wenn er direkt vor dem ersten, zum Teilbaum gehörenden Token steht (ohne syntaktisch relevante Token dazwischen) "Nachkommentar" analog 12
13 Erhaltung von Kommentaren (2) Entscheidung: Ist es Nachkommentar zum vorherigen Statement oder Vorkommentar zum folgenden Heuristik Nur für bestimmte Teilbäume (komplette Statements) Übertragung an C++-Bäume bei der Konvertierung Ausgabe bei der Generierung 13
14 Wiedereinfügen von Makros (1) Besonderheit bei SPL: Parameter zu Includefiles Formale Include-Parameter werden im File durch aktuelle ersetzt (Präprozessor s. Translatormodell) Include-Anweisung: %INCLUDE INC10(NAME='WILLI', ZAHL='100'); Include-File: %INC10(%NAME='ABC', %ZAHL='32');... DCL 1 %NAME BIN FIXED INIT(%ZAHL) 14
15 Wiedereinfügen von Makros (2) Ohne Rücktransformation entstehen viele Varianten des Includefiles nicht mehr wartbar Wiedereinfügung von Makros im Postprozessor: #define NAME WILLI #define ZAHL 100 #include "inc10.hpp" #undef NAME #undef ZAHL 15
16 Wiedereinfügen von Makros (3) Parameternamen bei verschachtelten Includes müssen eindeutig sein ggf. Umbenennung durch den Translator Im Includefileinc10.hpp steht dann: long NAME = ZAHL; Problem: bei mehrfachem Vorkommen des Parameters im Includefile sicherstellen, daß es immer zum gleichen C++-Code wird 16
17 Konvertierung von Strings In SPL gibt es den Datentyp CHAR(n) Naheliegende Konvertierung als char[] funktioniert nicht (0-Zeichen) Verlängern des Speicherplatzes um ein Byte ist nicht möglich (Überlagerungen) Lösung: Template-KlasseTFixString<n> n als Template-Parameter braucht keinen Speicherplatz Methoden bzw. Template-Funktionen für die gängigen Stringoperationen 17
18 Überlagerungen in Strukturen DCL 1 STRUKTUR1, 2 A AREA(32), 2 OV_A CHAR(32) DEFINED STRUKTUR1.A; Naheliegende Übersetzung als C-Union nicht möglich, da diese keine Objekte mit Konstruktor bzw. Zuweisungsoperator zulassen Lösung: Umsetzung als Methoden, die Referenzen zurückgeben 18
19 Konvertierte Überlagerung struct { TArea<32> a; TFixString<32> &ov_a () { return (reinterpret_cast<tfixstring<32>&>( a )); } } struktur1; Bezugnahme darauf: struktur1.ov_a() = "Willi"; 19
20 Fazit Translatoren sind vom Grundaufbau Compilern ähnlich Wesentliche Erweiterungen in der Funktionalität Besondere Aufwendungen sind für die Wartbarkeit des Zielcodes zu betreiben Grundregel für die internen Strukturen: alles aufheben Manche Konvertierungen erfordern ungewöhnliche Lösungen (s. Überlagerungen) Zeitraum: 1,5 Jahre, Aufwand: 3 Mannjahre 20
21 Kontakt pro et con Innovative Informatikanwendungen GmbH Annaberger Str Chemnitz Tel Fax proetcon@proetcon.de 21
Ein Translator ist kein Compiler: Unterschiede zwischen Compilierung und Sprachkonvertierung am Beispiel von TAL
Ein Translator ist kein Compiler: Unterschiede zwischen Compilierung und Sprachkonvertierung am Beispiel von TAL Uwe Erdmenger Innovative Informatikanwendungen GmbH 1 Gründung 1994, z.z. 11 Mitarbeiter,
MehrEngineering-Werkzeug komplexe Softwaresysteme
Flow Graph Manipulator (FGM) 3.0 Reverse-Engineering Engineering-Werkzeug für komplexe Softwaresysteme Anja Beier pro et con Innovative Informatikanwendungen GmbH 11. Workshop Software-Reengineering 04.-06.
MehrAutomatisch kreativ. Vor- und Nachteile toolgestützter Sprachmigrationen pro et con GmbH, Uwe Erdmenger 1
Automatisch kreativ Vor- und Nachteile toolgestützter Sprachmigrationen 28.11.2000 pro et con GmbH, Uwe Erdmenger 1 Anliegen des Vortrags Automatisch kreativ Automatisch versus kreativ? Automatisch und
Mehrpro et con Innovative
Der pro et con Migration Manager - ein Werkzeug für die Migration von Host-Anwendungen auf Unix-Plattformen Vortrag zum 6. Workshop Software-Reengineering 3./5. Mai 2004, Bad Honnef Uwe Erdmenger pro et
MehrFACHHOCHSCHULE MANNHEIM
für Java-Programmierer Der Präprozessor Prof. Dr. Wolfgang Schramm FACHHOCHSCHULE MANNHEIM Hochschule für Technik und Gestaltung Präprozessor Ist dem Compiler vorgeschaltet ( Prä -). Spezielle Anweisungen
Mehrpro et con Innovative
Workshop "Reengineering Prozesse" $XWRPDWLVFKH0LJUDWLRQYRQ+RVW'DWHLHQ LQUHODWLRQDOH'DWHQEDQNHQ (LQ3UD[LV%HLVSLHO Andreas Loos pro et con Innovative Informatikanwendungen GmbH, Chemnitz Gliederung ½ Das
MehrBeispiel. Problem: mehrteilige Nachnamen (von Goethe, Mac Donald, Di Caprio)
Beispiel Beispiel: Namensliste konvertieren (Karl Egon Meier Meier, Karl Egon). s/(.*) (.*)/$2, $1/; Problem: mehrteilige Nachnamen (von Goethe, Mac Donald, Di Caprio) s/(.*) (.*)/$2, $1/; s/(.*) ([a-z]+
MehrProseminar. C-Programmierung Grundlagen und Konzepte. Der Präprozessor. von: Svenja Neef
Proseminar C-Programmierung Grundlagen und Konzepte Der Präprozessor von: Svenja Neef Inhaltsverzeichnis 1Der C-Präprozessor...2 1.1Was ist der C-Präprozessor...2 1.2Präprozessor-Befehle...2 1.2.1Zusammenführen
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
MehrAbend 4 Übung : Erweitern von Klassen durch Vererbung
Abend 4 Übung : Erweitern von Klassen durch Vererbung Ziel, Inhalt Wir erweitern die Klassen, die wir zum Zeichnen mit TsuZeichnen verwenden. Dabei wenden wir die Vererbung an um die Klassen zu spezialisieren
MehrMethoden und Wrapperklassen
Methoden und Wrapperklassen CoMa-Übung IV TU Berlin 06.11.2012 CoMa-Übung IV (TU Berlin) Methoden und Wrapperklassen 06.11.2012 1 / 24 Themen der Übung 1 Methoden 2 Wrapper-Klassen CoMa-Übung IV (TU Berlin)
MehrC - PRÄPROZESSOR. Seminar effiziente C Programmierung WS 2012/13. Von Christian Peter
C - PRÄPROZESSOR Seminar effiziente C Programmierung WS 2012/13 Von Christian Peter Themen Was sind Präprozessoren? Beispiele für Präprozessoren Funktionsweisen Der C - Präprozessor Der # Präfix #include
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
MehrProgrammieren in C++ Templates
Programmieren in C++ Templates Inhalt Templates Funktions- und Klassen-Templates Spezialisierung von Templates Generische Klassen Einbinden von Templates Instantiierung (implizit und explizit) Templates
MehrThema heute: Vererbung und Klassenhierarchien. Abgeleitete Klassen. Vererbung von Daten und Funktionen. Virtuelle Funktionen
1 Thema heute: Vererbung und Klassenhierarchien Abgeleitete Klassen Vererbung von Daten und Funktionen Virtuelle Funktionen 2 Vererbung oft besitzen verschiedene Datentypen einen gemeinsamen Kern Beispiel:
MehrEinführung in C. EDV1-04C-Einführung 1
Einführung in C 1 Helmut Erlenkötter C Programmieren von Anfang an Rowohlt Taschenbuch Verlag ISBN 3-4993 499-60074-9 19,90 DM http://www.erlenkoetter.de Walter Herglotz Das Einsteigerseminar C++ bhv Verlags
MehrÜberblick. R.Grossmann / P. Sobe 1
Überblick 1. Einführung C++ / Entwicklung/ Sprachfamilie 2. Nicht objektorientierte Erweiterungen von C 3. Grundlagen des Typkonzepts von C++ 4. Ziele der Objektorientierung 5. Objekt und Klasse, Elementfunktionen
MehrEinstieg in die Informatik mit Java
1 / 22 Einstieg in die Informatik mit Java Generics Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 22 1 Überblick Generics 2 Generische Klassen 3 Generische Methoden 4
MehrC++ - Einführung in die Programmiersprache Header-Dateien und Funktionen. Leibniz Universität IT Services Anja Aue
C++ - Einführung in die Programmiersprache Header-Dateien und Funktionen Leibniz Universität IT Services Anja Aue Modularisierung Logische Gliederung von Programmteilen mit Hilfe von Namensräumen. Aufteilung
MehrFunktionen: Rückgabewert
Funktionen: Rückgabewert Jede Funktion in C++ (außer Konstruktoren und Destruktoren siehe später) MUSS einen Rückgabewert-Typ vereinbaren. Gibt sie nichts zurück, muss der Rückgabetyp void sein. Jede return-anweisung
MehrMethoden und Werkzeuge für die Software Migration
Methoden und Werkzeuge für die Software Migration U. Erdmenger,, U. Kaiser, A. Loos, D. Uhlig pro et con Innovative Informatikanwendungen GmbH 10. Workshop Software-Reengineering 06. Mai 2008, Bad Honnef
Mehr7. Übung Informatik II - Objektorientierte Programmierung
7. Übung Informatik II - Objektorientierte Programmierung 29. Mai 2015 Inhalt 1 2 3 Übersicht 1 2 3 Idee Menschen nehmen die Welt in Form von Objekten wahr manche Objekte haben gleiche Eigenschaften, hierüber
MehrCompilerbau für die Common Language Run-Time
Compilerbau für die Common Language Run-Time Syntax und Semantik von Programmiersprachen 2 Compilerbau Sprachbeschreibung vs. Implementierung Beschreibung: formale oder informale (engl.) Lexik, Syntax,
Mehr1.2. Datentypen (Konstantentypen)
1.2. Datentypen (Konstantentypen) Referenzen (selbst) sind implizit const, es gibt jedoch Referenzen auf Konstantentypen Wichtigste Anwendung: call by reference in-parameter T t; void foo(t& pt) { pt.change();
MehrÜberblick. Überblick. Abstrakte Klassen - rein virtuelle Funktionen Beispiele
Überblick 1. Einführung C++ / Entwicklung/ Sprachfamilie 2. Nicht objektorientierte Erweiterungen von C 2.1 Das Ein-/Ausgabekonzept von C++ 2.2 Referenzen in C++ 2.3 Heap-Allokatoren in C++ 3. Grundlagen
MehrThemen der Übung. Methoden und Wrapperklassen. Vorteile von Methoden. Methoden. Grundlagen
Themen der Übung 1 Organisatorisches Methoden und Wrapperklassen 2 Methoden 3 Wrapper-Klassen CoMa-Übung IV TU Berlin 07.11.2012 Organisatorisches: Im Pool nur auf die Abgabeliste setzen, wenn ihr wirklich
MehrLive-Demo: Automatische COBOL-Java-Migration mit CoJaC
Live-Demo: Automatische COBOL-Java-Migration mit CoJaC Christian Becker pro et con Innovative Informatikanwendungen GmbH Fachtagung "SOFTWARE-MIGRATION aktuell" 03.-04. April 2014, Chemnitz Agenda 1 Überblick
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
MehrÜberblick. 5. Objekt und Klasse, Elementfunktionen
Überblick 1. Einführung C++ / Entwicklung/ Sprachfamilie 2. Nicht objektorientierte Erweiterungen von C 2.1 Das Ein-/Ausgabekonzept von C++ 2.2 Referenzen in C++ 2.3 Heap-Allokatoren in C++ 3. Grundlagen
Mehr6 ZEIGER UND REFERENZEN - ALLGEMEINES
6 ZEIGER UND REFERENZEN - ALLGEMEINES Leitideen: Zeiger sind Adressen mit zusätzlicher Typinformation über das dort gespeicherte Objekt. Die Vereinbarungssyntax soll der Ausdruckssyntax entsprechen und
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
Mehr4 PROGRAMMSTRUKTUR - WERKZEUGE
4 PROGRAMMSTRUKTUR - WERKZEUGE Leitideen: Getrenntes Übersetzen und nachfolgendes Linken wird meistens mit Hilfe von Werkzeugen (z.b. make) durchgeführt. Bei Änderungen werden nicht alle Dateien neu übersetzt
MehrDer Parsergenerator BTRACC2
Der Parsergenerator BTRACC2 Uwe Erdmenger pro et con Innovative Informatikanwendungen GmbH 11. Workshop Software-Reengineering 04.-06. 06. Mai 2009, Bad Honnef Eigenschaften von Legacy-Quellcode Sprachen
MehrInnovator 11. Einlagern von Header- Dateien. Karl Straußberger. HowTo.
Innovator 11 Einlagern von Header- Dateien Karl Straußberger HowTo www.mid.de Inhaltsverzeichnis Vorbemerkung... 2 Theoretischer Hintergrund... 2 Arbeitsweise der Aktualisierung... 2 Untersuchung der Dateien...2
MehrProgrammieren Vorkurs
Programmieren Vorkurs Input/Output, If, Bedingungen Thole Goesmann, 10.10.2018 Über mich Thole Goesmann Studiere Mathematik und Informatik HiWi am Institut für Anwendungssicherheit gewähltes Mitglied im
MehrProgrammieren II Abstrakte Klassen / Virtuelle Methoden. Programmieren II Abstrakte Klassen / Virtuelle Methoden
Einleitende Bemerkungen Einleitende Bemerkungen Aspekte Aufbau von sinnvollen Klassenhierarchien Verwaltung von Objekten unterschiedlichen Typs Mitarbeiter Besonderheiten der Anwendung jeder Angehörige
MehrJava Einführung Objekt-Datentypen und Strings. Kapitel 8 und 9
Java Einführung Objekt-Datentypen und Strings Kapitel 8 und 9 Inhalt Was sind Objekt-Datentypen Sonderheiten bei Zuweisung und Vergleich Zeichenketten (Strings) Zeichencodes Char, Char-Arrays und Strings
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
MehrKapitel 13. Definition von Klassen. OOP Thomas Klinker 1
Kapitel 13 Definition von Klassen OOP Thomas Klinker 1 OOP Thomas Klinker 2 Datenabstraktion Der Mensch abstrahiert, um komplexe Sachverhalte darzustellen. Dinge und Vorgänge werden auf das wesentliche
MehrGrundlagen der Informatik 12. Strukturen
12. Strukturen Strukturen und deren Komponenten Strukturen im Projekt Dynamisch erstellte Strukturen Strukturen und Operatoren Strukturen und Funktionen Einfach verkettete Liste Grundlagen der Informatik
MehrHSR Rapperswil 2001 Markus Rigling. Programmieren: Templates Auflage
HSR Rapperswil 2001 Markus Rigling Programmieren: Templates 1 1. Auflage Inhaltsverzeichnis: Templates.1 1. Verwendung 3 2. Erstellen einer Templateklasse. 3 3. Faustregel zum Erstellen eines Klassentemplates..
MehrBerichte aus der Informatik. Dieter Pawelczak. Start in die C-Programmierung
Berichte aus der Informatik Dieter Pawelczak Start in die C-Programmierung Shaker Verlag Aachen 2012 Inhaltsverzeichnis Inhaltsverzeichnis i 1 Einleitung 1 1.1 Umfeld und Aufbau des Buches 1 Die Programmiersprache
MehrJava-Applikationen (Java-Programme)
Java-Applikationen (Java-Programme) Eine erste Applikation: 1 2 3 4 5 6 7 8 9 10 // Quelltext HalloWelt.java // Programm gibt den Text Hallo Welt aus public class HalloWelt public static void main(string[]
MehrCompiler Präprozessor Header Files
Freitagsrunde C-Kurs 2012 Compiler Präprozessor Header Files Tutorium 3 ThisworkislicensedunderaCreativeCommonsAttribution NonCommercial ShareAlike3.0License Gliederung Compiler Präprozessor Header Files
Mehrmagnum C++ WALTER SAUMWEBER kompakt komplett kompetent
magnum C++ WALTER SAUMWEBER kompakt komplett kompetent Quickview... 5 Liebe Leserin, lieber Leser... 13 Teil 1 Grundlagen... 15 1 Was ist Programmieren?... 17 1.1 Was ist eigentlich ein Computerprogramm?...
MehrProgrammierung in C/C++
Programmierung in C/C++ Mit einer grundlegenden Einführung in die Objektorientierung Univ.-Prof. Hon.-Prof. Dr. Dieter Roller Mit 134 Bildern Kontakt & Studium Band 682 Herausgeber: Prof. Dr. Birgit Baum
MehrInterpreter - Gliederung
Institut für Informatik Ludwig-Maximilian Universität Interpreter - Gliederung Programmiersprache Syntax Konkrete Syntax Abstrakter Syntax Baum (Abstrakte Syntax) Parser Syntaktische Struktur einer Sprache
MehrSourcecode generieren? Ja, aber wie?
Sourcecode generieren? Ja, aber wie? Vor der Aufgabe Sourcecode zu generieren steht man zum Beispiel immer dann, wenn Variationen eines bestehenden Sourcecode erstellt werden müssen. Abhängig davon, wie
MehrVererbung I. Kfz Eigenschaften und Methoden der Klasse Kfz Lkw. Pkw. Eigenschaften und Methoden der Klasse Kfz
Einführung in C++ Vererbung I Durch Vererbung können aus bereits bestehenden Klassen neue Klassen konstruiert werden. Die neue abgeleitete Klasse erbt dabei die Daten und Methoden der sog. Basisklasse.
MehrPraxis der Programmierung
Arrays, Pointerarithmetik, Konstanten, Makros Institut für Informatik und Computational Science Henning Bordihn Einige Folien gehen auf A. Terzibaschian zurück. 1 Arrays (Felder/Vektoren) 2 Arrays: Motivation
MehrInhaltsverzeichnis. Vorwort
Inhaltsverzeichnis Vorwort XI 1 C/C++-Grundlagen 1 1.1 Einführung................................ 1 1.1.1 Entwicklungsgeschichte: Von K&R-C nach C++........ 1 1.1.2 Beispielprogramme.......................
MehrName: Klausur Informatik III WS 2003/04
1 : Methodenimplementierung ca. 42 Punkte Gegeben ist die Klasse Mitarbeiter. Listing 1: (./Code1/Mitarbeiter.h) using namespace std; // globale Variable fuer Ausgabedatei // kann entsprechend
MehrAlgorithmen zur Datenanalyse in C++
Algorithmen zur Datenanalyse in C++ Hartmut Stadie 16.04.2012 Algorithmen zur Datenanalyse in C++ Hartmut Stadie 1/ 39 Einführung Datentypen Operatoren Anweisungssyntax Algorithmen zur Datenanalyse in
MehrUnterlagen. CPP-Uebungen-08/
Unterlagen http://projects.eml.org/bcb/people/ralph/ CPP-Uebungen-08/ http://www.katjawegner.de/lectures.html Kommentare in C++ #include /* Dies ist ein langer Kommentar, der über zwei Zeilen
Mehr7.2 Dynamischer Speicher in Objekten/Kopierkonstruktor
7.2 Dynamischer Speicher in Objekten/Kopierkonstruktor Das Programmbeispiel aus dem letzten Abschnitt läßt sich bisher nicht zufriedenstellend zu Ende bringen. Unerklärliche Abstürze und Fehlverhalten
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
MehrCompiler Präprozessor Header Files
Freitagsrunde C-Kurs 2013 Compiler Präprozessor Header Files Tutorium 3 This work is licensed under a Creative Commons Attribution NonCommercial ShareAlike 3.0 License Gliederung Compiler Präprozessor
MehrGrundelemente objektorientierter Sprachen (1)
Grundelemente objektorientierter Sprachen (1) Objekt Repräsentation eines Objektes der realen Welt in der Terminologie objektorientierter Programmiersprachen besitzen Attribute (Eigenschaften), deren Werte
Mehr4. Objektorientierte Programmierung mit C++
4. Objektorientierte Programmierung mit C++ Einführung C++ / Entwicklung der Sprachfamilie Erweiterungen der Sprache C: Ein- und Ausgabe, Referenzen, Speicherallokation und Freigabe Grundlagen des Typkonzepts
MehrMapra: C++ Teil 4. Felix Gruber. 6. Mai IGPM, RWTH Aachen. Felix Gruber (IGPM, RWTH Aachen) Mapra: C++ Teil 4 6.
Mapra: C++ Teil 4 Felix Gruber IGPM, RWTH Aachen 6. Mai 2015 Felix Gruber (IGPM, RWTH Aachen) Mapra: C++ Teil 4 6. Mai 2015 1 / 22 Themen vom letzten Mal Kompilieren mit Makefiles Ein-/Ausgabe über Dateien
MehrAngewandte Mathematik und Programmierung
Angewandte Mathematik und Programmierung Einführung in das Konzept der objektorientierten Anwendungen zu mathematischen Rechnens WS 2013/14 Operatoren Operatoren führen Aktionen mit Operanden aus. Der
MehrProgrammiersprachen Einführung in C
Programmiersprachen Einführung in C 14 Vertiefung einiger Themen Prof. Dr. Gliederung Programmiersprachen 1. Von der Maschinensprache zu C 2. Die Struktur von C-Programmen 3. Variable und Datentypen in
MehrKlausur. 2. Aufgabe (3 Punkte) Ergänzen Sie die leeren Zellen derart, dass sich in einer Zeile die selben Zahlenwerte ergeben.
Programmieren bei Dr. Robert Heß TM&M1, IST1 und ET1 Anfang SS 2003 Klausur 1. Aufgabe (2 Punkte) Kodieren Sie folgende Dezimalzahlen in Binärzahlen um. Zeigen Sie den Rechenweg, die negative Zahl soll
MehrC++ Notnagel. Ziel, Inhalt. Programmieren in C++
C++ Notnagel Ziel, Inhalt Ich versuche in diesem Dokument noch einmal die Dinge zu erwähnen, die mir als absolut notwendig für den C++ Unterricht und die Prüfungen erscheinen. C++ Notnagel 1 Ziel, Inhalt
Mehr2. Programmierung in C
2. Programmierung in C Inhalt: Überblick über Programmiersprachen, Allgemeines zur Sprache C C: Basisdatentypen, Variablen, Konstanten, Operatoren und Ausdrücke Anweisungen und Kontrollstrukturen (Steuerfluss)
Mehr1 Einleitung Generizität Syntax... 2
Inhaltsverzeichnis Inhaltsverzeichnis 1 Einleitung 1 1.1 Generizität................................ 1 1.2 Syntax.................................. 2 2 Realisierung 2 2.1 Compilierung generischer Klassen...................
MehrKurzeinführung in C/C++ Informationsquellen: - Webseite zur Vorlesung, Abschnitt Informationen zu C und C++ Einleitung
Informationsquellen: - Webseite zur Vorlesung, Abschnitt Informationen zu C und C++ 1 Einleitung Vorteile von Java: gut strukturiert mit hohem Funktionsumfang (mächtige Standardbibliothek) weitestgehend
MehrC++ vs. Java. Hello world! Java C++ class HelloWorld { static public void main(string args) { System.out.println("Hello World!
Hello world! Java class HelloWorld { static public void main(string args) { System.out.println("Hello World!"); } } C #include main() { printf("hello World!\n"); } C++ #include using
MehrZusammenarbeit zwischen Forschung und Industrie
Zusammenarbeit zwischen Forschung und Industrie am Beispiel Software-Migration und Evolution Andreas Winter Carl von Ossietzky Universität Oldenburg Softwaretechnik Softwaretechnik gilt als Methodenlehre
MehrVorwort zur zweiten Auflage 1. Vorwort zur ersten Auflage 2
Vorwort zur zweiten Auflage 1 Vorwort zur ersten Auflage 2 1 Über dieses Buch 3 1.1 WarumdiesesBuch?... 3 1.2 Voraussetzungen...... 4 1.3 Systematik... 4 1.4 WieliestmandiesesBuch?... 6 1.5 ZugriffaufdieQuellenzudenBeispielen...
MehrGrundlagen der Programmierung 3 A
Grundlagen der Programmierung 3 A Compiler A: Phasen Lexikalische Analyse; Scanner Prof. Dr. Manfred Schmidt-Schauß Sommersemester 2018 Compiler; Übersetzungsprogramme Ein Übersetzer (Compiler) ist ein
MehrGI Vektoren
Vektoren Problem: Beispiel: viele Variablen vom gleichen Typ abspeichern Text ( = viele char-variablen), Ergebnisse einer Meßreihe ( = viele int-variablen) hierfür: Vektoren ( = Arrays = Feld ) = Ansammlung
MehrEinleitung. Informationsquellen: - Webseite zur Vorlesung, Abschnitt Informationen zu C und C++ Kurzeinführung in C/C++
Informationsquellen: - Webseite zur Vorlesung, Abschnitt Informationen zu C und C++ 1 Einleitung Vorteile von Java: gut strukturiert mit hohem Funktionsumfang (mächtige Standardbibliothek) weitestgehend
MehrProgrammierkurs. Steffen Müthing. January 18, Interdisciplinary Center for Scientific Computing, Heidelberg University
Programmierkurs Steffen Müthing Interdisciplinary Center for Scientific Computing, Heidelberg University January 18, 2019 Konzepte Standard-Konzepte für Code Reuse: Polymorphie/Vererbung Funktionalität
MehrC/C++ Programmierung
1 C/C++ Programmierung Grundlagen: Der Präprozessor Sebastian Hack Christoph Mallon (hack mallon)@cs.uni-sb.de Fachbereich Informatik Universität des Saarlandes Wintersemester 2009/2010 2 Der Präprozessor
MehrObjektorientiert in C++
Dirk Louis Objektorientiert in C++ Einstieg und professioneller Einsatz intwickier.pres: Vorwort 11 1 Schnellkurs C++ 13 1.1 ANSI-C++ und die Compiler 13 Compiler und Programmerstellung 13 ANSI und die
MehrSeminar Ausgewählte Komponenten von Betriebssystemen. IDL4 Compiler
Seminar Ausgewählte Komponenten von Betriebssystemen IDL4 Compiler IDL4 Compiler Hristo Pentchev Überblick CORBA IDL Allgemein IDL4 Compiler Beispiele CORBA Common Objekt Request Broker Architecture Gemeinsame
MehrObjektorientierte Programmierung mit C Datentypen (Strukturtypen)! p.name = "Willibald Wusel";
1.2. Datentypen (Strukturtypen) p.name = "Willibald Wusel"; Kombination mit Zeigern (dynamische Strukturobjekte) Person* anewperson = new Person; anewperson->age = 32; // short hand for: (* anewperson).age
MehrÜbersetzerbau Cluj-Napoca, Rumänien 2007
Übersetzerbau Cluj-Napoca, Rumänien 2007 Markus Löberbauer Institut für Systemsoftware Johannes Kepler Universität, 4040 Linz, Österreich Loeberbauer@ssw.jku.at 2007-02-01 Zusammenfassung In dieser Übung
Mehr2. Programmierung in C
2. Programmierung in C Inhalt: Überblick über Programmiersprachen, Allgemeines zur Sprache C C: Basisdatentypen, Variablen, Konstanten, Operatoren und Ausdrücke Anweisungen und Kontrollstrukturen (Steuerfluss)
MehrProgrammierung in C: Vermischtes (Teil 1)
Programmierung in C: Vermischtes (Teil 1) Gültigkeitsbereiche für Variablen C-Präprozessor (#define EPS 0.00001) Inkremtieren und Dekrementieren ( jahr++; restzeit--;) Speicherklassen (static) Typecasts
MehrEinführung in die Programmierung I. 2.0 Einfache Java Programme. Thomas R. Gross. Department Informatik ETH Zürich
252-0027 Einführung in die Programmierung I 2.0 Einfache Java Programme Thomas R. Gross Department Informatik ETH Zürich Uebersicht 2.0 Einfache Java Programme Struktur Namen Output 2 Graphische Darstellung
MehrProgrammierung mit C Modularisierung von Programmen. Präprozessor-Anweisungen nutzen.
Programmierung mit C Modularisierung von Programmen. Präprozessor-Anweisungen nutzen. Modularisierung Zerlegung eines Programms in überschaubare Einheiten Die einzelnen Einheiten werden als Modul bezeichnet.
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
MehrGrundlagen der Programmierung in C Klassen
Grundlagen der Programmierung in C Klassen Wintersemester 2005/2006 G. Zachmann Clausthal University, Germany zach@in.tu-clausthal.de Das C++ Typsystem simple address pointer reference structured integral
MehrEinstieg in die Informatik mit Java
1 / 16 Einstieg in die Informatik mit Java Ausnahmen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 16 1 Übersicht Ausnahmen 2 Klassenhierarchie 3 Try-Catch-Blöcke 4 Definition
MehrÜbungspaket 17 Der gcc Compiler
Übungspaket 17 Der gcc Compiler Übungsziele: Skript: 1. Sicherer Umgang mit gemischten Ausdrücken 2. Herleiten der unterschiedlichen Datentypen in gemischten Ausdrücken 3. Kenntnis über die implizite Durchführung
MehrObjektorientierte Programmierung
C++ Objektorientierte Programmierung Erweiterung von selbstdefinierten Datentypen (struct) zu Klasse. Eine Klasse besteht dann aus - Attributen (Untertypen wie struct) und zusätzlich - aus Methoden (Funktionen
MehrSyntax und Kontrollstrukturen
Syntax und Kontrollstrukturen Praktikum C-Programmierung Eugen Betke, Nathanael Hübbe, Michael Kuhn, Jakob Lüttgau, Jannek Squar Wissenschaftliches Rechnen Fachbereich Informatik Universität Hamburg 2018-10-29
MehrIII.1 Prinzipien der funktionalen Programmierung - 1 -
1. Prinzipien der funktionalen Programmierung 2. Deklarationen 3. Ausdrücke 4. Muster (Patterns) 5. Typen und Datenstrukturen 6. Funktionale Programmiertechniken III.1 Prinzipien der funktionalen Programmierung
MehrThema heute: Vererbung und Klassenhierarchien. Abgeleitete Klassen. Vererbung von Daten und Funktionen. Virtuelle Funktionen
1 Thema heute: Vererbung und Klassenhierarchien Abgeleitete Klassen Vererbung von Daten und Funktionen Virtuelle Funktionen 2 Vererbung oft besitzen verschiedene Datentypen einen gemeinsamen Kern Beispiel:
MehrBereits behandelt: Einfache Datentypen, Felder, Zeiger, Referenzen. Kontrollstrukturen. Funktionen. Heute: Datentypen: Structs, Unions
Kompaktkurs C++ Themen D 1 Bereits behandelt: Einfache Datentypen, Felder, Zeiger, Referenzen Kontrollstrukturen Funktionen Heute: Datentypen: Structs, Unions Datentypen: typedef, sizeof, Typkonvertierung
MehrParsing SystemVerilog 2012
Parsing Julian Nagel Lehrstuhl für Rechnerarchitektur Universität Heidelberg 06.07.2016 1 2 3 Inhaltsverzeichnis 4 5 6 Viele Ideen dazu wie effektiv Hardware entwickelt werden kann, aber keine IDE welche
MehrRechnungen, wo kein sinnvoller Wert rauskommt Bsp.: 1/0, *0, sqrt(-1.0) Beispiel: Quadratische Gleichungen
Float-Arithmetik Implementiert IEEE 754-1985 Standard Überlauf ("overflow"): Zahl wird zu groß / zu klein Beispiel: max.float * 2 Resultat = + bzw. - Underflow: Zahlen liegen zu dicht an der 0 Resultat
MehrGrundlagen der Informatik
Grundlagen der Informatik Polymorphie, Abstrakte Klassen, Mehrfachvererbung Prof. Dr.-Ing. Thomas Wiedemann Prof. Dr. rer.nat. Ralph Großmann Fachgebiet Informatik / Mathematik Überblick zum Inhalt Klassen-3
MehrProbeklausur Name: (c)
Einführung in die Praktische Informatik 30.1.2013 Probeklausur Name: Teil I: Datentypen (20 Punkte) Lösen sie die Probleme, indem sie die korrekten Lösungen ankreuzen bzw. in die vorgesehenen Freiräume
MehrProf. Dr. Uwe Schmidt. 17. August Aufgaben zur Klausur C und Objektorientierte Programmierung im SS 2010 (WI h103, II h105, MI h353)
Prof. Dr. Uwe Schmidt 17. August 2010 Aufgaben zur Klausur C und Objektorientierte Programmierung im SS 2010 (WI h103, II h105, MI h353) Zeit: 150 Minuten erlaubte Hilfsmittel: keine Bitte tragen Sie Ihre
MehrEinführung in Java. Ausgewählte Quellen zu Java
Einführung in Java Wesentliche Eigenschaften und Merkmale der Programmiersprache Java Prof. Dr. Stefan Böttcher Universität Paderborn im Rahmen der Vorlesung: Webbasierte Informationssysteme SS 2004 Einführung
Mehr