Einführung in die GNU-Toolchain

Größe: px
Ab Seite anzeigen:

Download "Einführung in die GNU-Toolchain"

Transkript

1 Einführung in die GNU-Toolchain Michael Schiefer, Christoph Steup Eingebettete Systeme und Betriebssysteme (EOS) Otto-von-Guericke-Universität Magdeburg Sommersemester 2013 Schiefer, Steup OvGU Magdeburg IVS-EOS Einführung in die GNU-Toolchain SS13 1 / 35

2 Überblick diese Woche GNU-Toolchain GDB QEMU C/C++-Einführung nächste Woche Organisatorisches OOStuBS Programmierung danach meist Abgaben Theorie und Praxis im Wechsel mehr dazu nächste Woche Schiefer, Steup OvGU Magdeburg IVS-EOS Einführung in die GNU-Toolchain SS13 2 / 35

3 GNU-Toolchain I GNU-Toolchain Ziele Erzeugung lauffähiger Programme/Bibliotheken aus Quellcode Architekturunabhängigkeit Abarbeitung aller Schritte autonom ohne Benutzereingriff Tools GNU Make (make) gcc Präprozessor (gcc) gcc Compiler (gcc/g++) GNU Assembler (gas) GNU Linker (ld) Schiefer, Steup OvGU Magdeburg IVS-EOS Einführung in die GNU-Toolchain SS13 3 / 35

4 GNU-Toolchain II GNU-Toolchain *.h Präprozessor *.o C/C++ Compiler *.o Linker prog *.c[c] Assembler GNU Make *.o Makefile Schiefer, Steup OvGU Magdeburg IVS-EOS Einführung in die GNU-Toolchain SS13 4 / 35

5 GNU Make (make) GNU-Toolchain GNU Make allgemeiner Aufruf: make <Ziel> Steuerung durch Datei "Makefile" regelbasierte Syntax Ablauf einer Regel 1 Auflösen der Abhängigkeiten 2 Überprüfung auf Aktualität 3 Ausführen der Befehle Beispiel - einfache Makefile TARGET=example SOURCES=example. cc a s s e m b l e r. S ${TARGET} : ${SOURCES} ${CXX} ${CFLAGS} $^ o $@ Schiefer, Steup OvGU Magdeburg IVS-EOS Einführung in die GNU-Toolchain SS13 5 / 35

6 GNU-Toolchain GNU Compiler Collection GNU Compiler Collection (gcc/g++) Übersetzung in ausführbaren Maschinencode (Programme/Bibliotheken) Aufruf für C: gcc <datei.c> Aufruf für C++: g++ <datei.cc> -Wall Ausgabe von allen Warnungen -o <datei> Name der zu erzeugenden Datei, sonst a.out -g Einbinden von Debug-Informationen für GDB -O[ s] Optimierungsstufen Wenn nur Teilschritte ausgeführt werden sollen: -c nur Objekt-Code erzeugen -S nur Assembler-Code erzeugen -E nur Präprozessor ausführen Schiefer, Steup OvGU Magdeburg IVS-EOS Einführung in die GNU-Toolchain SS13 6 / 35

7 GNU-Toolchain Präprozessor (gcc/g++) Präprozessor Textuelle Ersetzung zur Vorverarbeitung Einsatzzwecke Bedingte Übersetzung (z.b. systemspezifische Teile) Auflösen von Makros (für C++ kaum von Bedeutung) Definition von Konstanten (unter C++ unschön) Häufige Präprozessor Direktiven #include <Datei> Einbinden von Header-Dateien #define <Name> <Wert> Definition von Konstanten und Makros Bedingte Übersetzung des folgenden Codeblocks: #if <Bedingung> Test auf Bedingung #ifdef <Name> Test ob Name bereits definiert #ifndef <Name> Gegenteil zu #ifdef <Name> #else Alternative #endif Ende eines bedingt Codeblocks Schiefer, Steup OvGU Magdeburg IVS-EOS Einführung in die GNU-Toolchain SS13 7 / 35

8 GNU Assembler (gas) GNU-Toolchain GNU Assembler Aufruf über gcc: gcc <Datei.S> direkter Aufruf: as <Datei.S> Beispiel - einfache Assembler-Datei. d a t a / Begin d e r D a t e n d e f i n i t i o n / base : / L a b e l / z e r o :. l o n g 0 / r e s e r v i e r e n von v o r b e l e g t e m S p e i c h e r / one :. l o n g 1. t e x t / Begin d e s Codes /. g l o b a l r e t u r n 1 / E x t e r n v e r f u e g b a r e Symbole / r e t u r n 1 : / Begin e i n e r F u n k t i o n / mov $base, %ecx movl 4(% e c x ), %eax r e t / R uecksprung / Schiefer, Steup OvGU Magdeburg IVS-EOS Einführung in die GNU-Toolchain SS13 8 / 35

9 GNU Linker (ld) GNU-Toolchain GNU Linker Syntax Aufruf über gcc: gcc < Datei1.o Datei2.o.. > -o <output> direkter Aufruf: ld < Datei1.o Datei2.o.. > -o <output> Aufgabe: Auflösen von unbekannten Symbolen zwischen Objektdateien kann über Skriptdatei gesteuert werden, für Betriebssystem nötig Bei Aufruf über gcc zusätzliche interne Schritte zur Erzeugung von Programmen Schiefer, Steup OvGU Magdeburg IVS-EOS Einführung in die GNU-Toolchain SS13 9 / 35

10 GNU Debugger: gdb GNU-Toolchain GNU Debugger Aufruf: gdb <Programm> Mächtiges Werkzeug zur Analyse vom Programmverhalten Graphische Oberflächen für gdb: ddd (Data Display Debugger) insight Wichtige Befehle help [<Parameter>] Hilfstext ausgeben break <Funktion> Programm gezielt unterbrechen run <Parameter> Programm starten continue Programm fortsetzen kill Programm abbrechen print <Ausdruck> Programmvariablen ausgeben Schiefer, Steup OvGU Magdeburg IVS-EOS Einführung in die GNU-Toolchain SS13 10 / 35

11 GNU Debugger II GNU-Toolchain GNU Debugger meist existieren Kurzformen für Befehle (continue, cont, c) Weitere Befehle backtrace Aufrufhierarchie verfolgen list Quellcodezeilen auflisten next [Anzahl] geht Anzahl (default 1) Schritte weiter step [Anzahl] wie next, nur geht es auch in Unterfunktionen disass Disassemblieren x/[format] [Adresse] Bytes an Adresse im Format ausgeben info locals lokale Variablen ausgeben info r Werte der Register ausgeben set [Name] = [Wert] Variable Name auf Wert setzen Schiefer, Steup OvGU Magdeburg IVS-EOS Einführung in die GNU-Toolchain SS13 11 / 35

12 Emulator QEMU GNU-Toolchain QEMU Emulator Multi-Architektur Emulator Emulation von x86-cpu sowie Peripherie: Chipsatz (Intel i440fx) Grafikkarte (Standard VGA oder Cirrus CLGD 5446) Eingabegeräte (PS/2 Tastatur und Maus) Netzwerkkarten (e1000) Soundkarten (AC97, ES1370 oder Creative Soundblaster 16) verschiedene Ports (USB, Seriell, Parallel) Besondere Features: direktes Laden von Betriebssystemkernen (QEMU > 0.10) Debugging mithilfe von GDB Skriptfähig, da Konsolenanwendung Schiefer, Steup OvGU Magdeburg IVS-EOS Einführung in die GNU-Toolchain SS13 12 / 35

13 Programmiersprache C / C++ Programmiersprache C / C++ C ist meist verwendeten Sprachen obwohl relativ alt (erste Version ab 1971) Fast alle gängigen Betriebssysteme in C/C++ geschrieben Sehr maschinennahe Sprache, deshalb gut für Systemprogrammierung geeignet C++ syntaktisch zu C kompatibel aber mächtiger Schiefer, Steup OvGU Magdeburg IVS-EOS Einführung in die GNU-Toolchain SS13 13 / 35

14 Programmiersprache C / C++ Programmiersprache C / C++ C ist meist verwendeten Sprachen obwohl relativ alt (erste Version ab 1971) Fast alle gängigen Betriebssysteme in C/C++ geschrieben Sehr maschinennahe Sprache, deshalb gut für Systemprogrammierung geeignet C++ syntaktisch zu C kompatibel aber mächtiger Fazit: Wer sich mit Systemprogrammierung beschäftigt, kommt um C/C++ nicht herum! Schiefer, Steup OvGU Magdeburg IVS-EOS Einführung in die GNU-Toolchain SS13 13 / 35

15 Programmiersprache C / C++ Typisierung und Deklaration Datentypen Jede Variable hat eindeutigen Typ der mögliche Anweisungen/Befehle bestimmt Trennung von Deklaration und Definition Compiler überwacht korrekte Typisierung Bei inkompatiblen Datentypen Umwandlung nötig: implizite/explizite casts Syntax: [Spezifizierer] Basistyp[Modifikator] Objektname[Modifikator]; Spezifizierer Veränderung der internen Repräsentation (const, extern, static, volatile) Modifikator Veränderung des Typs (Zeiger *, Referenz &, Array [], Funktion ()) Beispiel Deklaration und Definition s t r i n g o u t p u t ; o u t p u t = " Test1 " ; Schiefer, Steup OvGU Magdeburg IVS-EOS Einführung in die GNU-Toolchain SS13 14 / 35

16 Programmiersprache C / C++ Basisdatentypen in C Datentypen C kennt folgende Datentypen, Größen für x86-architektur c h a r c ; / 8 Bit, Achtung : standardmaessig s i g n e d / s h o r t s ; / 16 B i t / i n t i ; / 32 B i t / l o n g l ; / 32 B i t / l o n g l o n g l l ; / 64 B i t / f l o a t f ; / 32 Bit, Achtung : i n OOStuBs n i c h t verwenden / d o u b l e d ; / 64 Bit, Achtung : i n OOStuBs n i c h t verwenden / l o n g d o u b l e l d ; / 128 Bit, Achtung : i n OOStuBs n i c h t verwenden / Unsigned und Signed Variante für jeden ganzzahligen Typ Größe der Datentypen systemabhängig, wobei gilt: int ist natürliche Größe der Plattform short int long Tatsächliche Größe eines Datentyps mit Operator sizeof (Datentyp Variable) in Bytes Schiefer, Steup OvGU Magdeburg IVS-EOS Einführung in die GNU-Toolchain SS13 15 / 35

17 Datentyp bool Programmiersprache C / C++ Datentypen Kein expliziter Datentyp bool in ANSI-C Als Erweiterung in C definiert, in C++ Standard implizite Konvertierung (0 = false und 0 true) Beispiel bool i n t t =1; i n t f =0; i n t main ( ) { i f ( t ) p r i n t f ( " t r u e \n" ) ; i f (! f ) p r i n t f ( " f a l s e \n" ) ; } Schiefer, Steup OvGU Magdeburg IVS-EOS Einführung in die GNU-Toolchain SS13 16 / 35

18 Enumerationen Programmiersprache C / C++ Datentypen Deklaration von Aufzählungen Alternativ auch zur Konstantendefinition mit sprechenden Namen ist Menge von Integer-Konstanten Verwendung äquivalent zu int Definierte Enumerationen sind jeweils eigener Typ Beispiel - enum enum T e x t I n d i c e s { Object, I n t e r f a c e, Test1, Test2 } ; c o n s t v o i d g e t T e x t ( enum T e x t I n d i c e s i n d e x ) ; Schiefer, Steup OvGU Magdeburg IVS-EOS Einführung in die GNU-Toolchain SS13 17 / 35

19 Funktionen in C Programmiersprache C / C++ Funktionen Definition syntaktisch wie Methodendefinition in Java Auch hier Trennung von Deklaration und Definition möglich Es können nur bereits deklarierte Funktionen verwendet werden! Trennung von Interface und Implementierung: Definitionen in Header-Dateien, beschreibt Interface Definition in C-Dateien, beschreibt Implementierung Funktionsdeklaration c o n s t v o i d g e t T e x t ( enum T e x t I n d i c e s i n d e x ) ; Funktionsdefinition c o n s t v o i d g e t T e x t ( enum T e x t I n d i c e s i n d e x ){ r e t u r n Text [ i n d e x ] ; } Schiefer, Steup OvGU Magdeburg IVS-EOS Einführung in die GNU-Toolchain SS13 18 / 35

20 Programmiersprache C / C++ Funktionen Gültigkeitsbereich und Allokation I Definition Ein Codeblock ist ein von { und } eingeschlossener Bereich des C/C++-Codes Gültigkeitsbereiche lokal, innerhalb eines Codeblocks global, außerhalb von allen Codeblöcken Zugriff auf Variablen nur auf gleicher oder in weiteren Verschachtlungsebene Umdeklaration von Variablen in verschachtelten Blöcken ist möglich, jedoch schlechter Stil Schiefer, Steup OvGU Magdeburg IVS-EOS Einführung in die GNU-Toolchain SS13 19 / 35

21 Programmiersprache C / C++ Funktionen Gültigkeitsbereich und Allokation II Allokation lokale Variablen werden auf dem Stack alloziert globale Variablen liegen im Datensegment der ausführbaren Datei Modifikation des Standardverhaltens extern deklarierte Variablen, werden nicht erzeugt, ihre Existenz wird vorausgesetzt static deklarierte lokale Variablen behalten ihren Wert auch bei Verlassen der Gültigkeit static deklarierte globale Variablen gelten nur in der Datei in der sie definiert wurden Schiefer, Steup OvGU Magdeburg IVS-EOS Einführung in die GNU-Toolchain SS13 20 / 35

22 Klassendeklaration Programmiersprache C / C++ Klassen und Objekte Klassendeklaration ist eine C++ Typdeklaration (Wichtig: Semikolon am Ende) Nahezu identisch zu Java, jedoch : statt extends oder implements Zugriffskontrolle durch public, protected, private (Standard: private) Beispiel Klassendeklaration c l a s s D a t a P r i n t e r : p u b l i c D a t a P r i n t e r I n t e r f a c e { p r i v a t e : ostream& out ; p u b l i c : v o i d p r i n t O n e ( ) ; } ; Schiefer, Steup OvGU Magdeburg IVS-EOS Einführung in die GNU-Toolchain SS13 21 / 35

23 Programmiersprache C / C++ Zugriff auf Felder und Methoden Klassen und Objekte Objekte verwenden den Operator. (Punkt) Objektzeiger verwenden den Operator -> (Pfeil) Aktuelles Objekt spricht Felder/Methoden direkt an Alternativer Zugriff mit this-zeiger Beispiel - Zugriff ostream& DataPrinter : : o p e r a t o r <<(Data &d ){ out << d. s << e n d l ; } v o i d D a t a P r i n t e r : : p r i n t O n e ( ) { t h i s >out << " one : " << r e t u r n 1 ( ) << e n d l ; } Schiefer, Steup OvGU Magdeburg IVS-EOS Einführung in die GNU-Toolchain SS13 22 / 35

24 Programmiersprache C / C++ Strukturen und Unions Klassen und Objekte struct union Strukturdeklaration durch struct, abwärtskompatibel zu C In C++ entspricht Klasse mit Standardzugriff public Reihenfolge der Elemente wird vom Compiler nicht verändert Compiler kann freie Speicherstellen zwischen den Elementen einfügen Eine union vereint mehrere Interpretationen eines Stück Speichers in einem Typ Syntaktisch äquivalent zu Strukturen die Gesamtgröße entspricht der Größe des größten Elements Jedes Element entspricht einer Interpretation des darunter liegenden Speichers Schiefer, Steup OvGU Magdeburg IVS-EOS Einführung in die GNU-Toolchain SS13 23 / 35

25 Programmiersprache C / C++ Beispiel: Strukturen und Unions Klassen und Objekte Beispiel - struct s t r u c t Data { s t r i n g s ; } ; Beispiel - union u n i o n DataUnion { Data data ; c o n s t v o i d p t r ; } ; Schiefer, Steup OvGU Magdeburg IVS-EOS Einführung in die GNU-Toolchain SS13 24 / 35

26 Programmiersprache C / C++ Überladen von Operatoren Objekt-Orientierung Operatoren sind in C++ Methodenaufrufe Überladen wie in Java Nur bestehende Operatoren überladbar Priorität und Assoziativität von Operanden nicht veränderbar Beispiel - Überladung von «c l a s s D a t a P r i n t e r : p u b l i c D a t a P r i n t e r I n t e r f a c e { p u b l i c : v i r t u a l o s t r e a m& o p e r a t o r <<( c o n s t v o i d a d d r e s s ) ; } ; Schiefer, Steup OvGU Magdeburg IVS-EOS Einführung in die GNU-Toolchain SS13 25 / 35

27 typedef Programmiersprache C / C++ Operationen auf Typen Verwendung: typedef <Definition> <Typenname> Umbenennen von Datentype Definition eigener Datentypen Beispiel - typedef t y p e d e f c o n s t c h a r s t r i n g ; Schiefer, Steup OvGU Magdeburg IVS-EOS Einführung in die GNU-Toolchain SS13 26 / 35

28 Casts Programmiersprache C / C++ Operationen auf Typen implizite: führt der Compiler automatisch durch explizite: werden vom Programmierer angefordert: C-Cast: (<neuer Typ>)<variable> unsicher nicht verwenden C++-Casts: spezielle Checks, daher error bei invaliden Casts (<> gehören zur Syntax) : const_cast<neuer Typ>(Variable) Cast von const Objekt zu nicht const Objekt static_cast<neuer Typ>(Variable) Cast die Vererbungskette hinab, Check zur Compile-Zeit dynamic_cast<neuer Typ>(Variable) Cast die Vererbungskette hinab, Check zur Laufzeit reinterpret_cast<neuer Typ>(Variable) für alles andere Beispiel - cast s t r i n g o u t p u t ; c o n s t v o i d p t r=r e i n t e r p r e t _ c a s t <c o n s t v o i d >( o u t p u t ) ; Schiefer, Steup OvGU Magdeburg IVS-EOS Einführung in die GNU-Toolchain SS13 27 / 35

29 Programmiersprache C / C++ Zeiger und Referenzen Zeiger und Referenzen Achtung Grund: Eine der wichtigsten Fehlerquellen in C/C++ sind Zeiger! Unkontrollierter Zugriff auf beliebige Speicherstellen Programmabbruch durch das Betriebssystem (gut!) Überschreiben beliebiger Daten (schlecht!) Fehler durch falsche Zeiger sind oft sehr schwer zu finden Schiefer, Steup OvGU Magdeburg IVS-EOS Einführung in die GNU-Toolchain SS13 28 / 35

30 Beispiele Programmiersprache C / C++ Zeiger und Referenzen int *p 255 int **p 255 char name[] H a l l o int argc 4 r m char **argv - r f Schiefer, Steup OvGU Magdeburg IVS-EOS Einführung in die GNU-Toolchain SS13 29 / 35

31 Literatur I Literatur Kyle Loudan and Matthias Kalle Dalheimer. C++ kurz und gut. O Reilly, Scott Meyers. Effective C++. Addison-Wesley, Bjarne Stroustrup. Die C++ Programmiersprache. Addison-Wesley, Jürgen Wolf. C von A bis Z. Galileo Press, 2 edition, Schiefer, Steup OvGU Magdeburg IVS-EOS Einführung in die GNU-Toolchain SS13 30 / 35

32 Anhang Beispiel Projekt: Makefile und Assembler-Code Makefile TARGET=example SOURCES=example. cc a s s e m b l e r. S ${TARGET} : ${SOURCES} ${CXX} ${CFLAGS} $^ o $@ Assembler Code (assembler.s). d a t a / Begin d e r D a t e n d e f i n i t i o n / base : / L a b e l / z e r o :. l o n g 0 / r e s e r v i e r e n von v o r b e l e g t e m S p e i c h e r / one :. l o n g 1. t e x t / Begin d e s Codes /. g l o b a l r e t u r n 1 / E x t e r n v e r f u e g b a r e Symbole / r e t u r n 1 : / Begin e i n e r F u n k t i o n / mov $base, %ecx movl 4(% e c x ), %eax r e t / R uecksprung / Schiefer, Steup OvGU Magdeburg IVS-EOS Einführung in die GNU-Toolchain SS13 31 / 35

33 Anhang Beispiel Projekt: example.h I #i f n d e f example_header #d e f i n e example_header #i n c l u d e <i o s t r e a m > u s i n g s t d : : c o u t ; u s i n g s t d : : hex ; u s i n g s t d : : e n d l ; u s i n g s t d : : o s t r e a m ; t y p e d e f c o n s t c h a r s t r i n g ; enum T e x t I n d i c e s { Object, I n t e r f a c e, Test1, Test2 } ; c o n s t v o i d g e t T e x t ( enum T e x t I n d i c e s i n d e x ) ; s t r u c t Data { s t r i n g s ; } ; Schiefer, Steup OvGU Magdeburg IVS-EOS Einführung in die GNU-Toolchain SS13 32 / 35

34 Anhang Beispiel Projekt: example.h II u n i o n DataUnion { Data data ; c o n s t v o i d p t r ; } ; c l a s s D a t a P r i n t e r I n t e r f a c e { p u b l i c : v i r t u a l ~ D a t a P r i n t e r I n t e r f a c e ( ) ; v i r t u a l o s t r e a m& o p e r a t o r <<(Data &d ) = 0 ; v i r t u a l o s t r e a m& o p e r a t o r <<( c o n s t v o i d a d d r e s s ) = 0 ; } ; c l a s s D a t a P r i n t e r : p u b l i c D a t a P r i n t e r I n t e r f a c e { p r i v a t e : ostream& out ; p u b l i c : D a t a P r i n t e r ( ) ; v i r t u a l ~ D a t a P r i n t e r ( ) ; v o i d p r i n t O n e ( ) ; v i r t u a l o s t r e a m& o p e r a t o r <<(Data &d ) ; v i r t u a l o s t r e a m& o p e r a t o r <<( c o n s t v o i d a d d r e s s ) ; } ; e x t e r n "C" u n s i g n e d i n t r e t u r n 1 ( ) ; #e n d i f Schiefer, Steup OvGU Magdeburg IVS-EOS Einführung in die GNU-Toolchain SS13 33 / 35

35 Anhang Beispiel Projekt: example.cc I #i n c l u d e " example. h" s t a t i c c o n s t c h a r Text [ ]={ "Tod d e s O b j e c t s ", "Tod d e s I n t e r f a c e s ", " Test1 ", " Test2 " } ; c o n s t v o i d g e t T e x t ( enum T e x t I n d i c e s i n d e x ){ r e t u r n Text [ i n d e x ] ; } D a t a P r i n t e r : : D a t a P r i n t e r ( ) : D a t a P r i n t e r I n t e r f a c e ( ), out ( c o u t ){ } D a t a P r i n t e r : : ~ D a t a P r i n t e r ( ) { const char t e x t = ( const char ) gettext ( Object ) ; c o u t << t e x t << e n d l ; } D a t a P r i n t e r I n t e r f a c e : : ~ D a t a P r i n t e r I n t e r f a c e ( ) { c o u t << ( Text+I n t e r f a c e ) << e n d l ; } ostream& DataPrinter : : o p e r a t o r <<(Data &d ){ out << d. s << e n d l ; } ostream& D a t a P r i n t e r : : operator <<( const v o i d a d d r e s s ){ out << hex << address << endl ; } Schiefer, Steup OvGU Magdeburg IVS-EOS Einführung in die GNU-Toolchain SS13 34 / 35

36 Anhang Beispiel Projekt: example.cc II v o i d D a t a P r i n t e r : : p r i n t O n e ( ) { t h i s >out << " one : " << r e t u r n 1 ( ) << e n d l ; } s t r i n g o u t p u t ; c o n s t v o i d p t r=r e i n t e r p r e t _ c a s t <c o n s t v o i d >( o u t p u t ) ; DataUnion u ; i n t main ( ) { D a t a P r i n t e r p r i n t ; o u t p u t = " Test1 " ; u. p t r = Text [ Test1 ] ; p r i n t << u. d a t a ; c o u t << "&(" << o u t p u t << " ) : " << p t r << e n d l ; o u t p u t = r e i n t e r p r e t _ c a s t <c o n s t c h a r >( g e t T e x t ( Test2 ) ) ; c o u t << "&(" << o u t p u t << " ) : " << p t r << e n d l ; } r e t u r n 0 ; Schiefer, Steup OvGU Magdeburg IVS-EOS Einführung in die GNU-Toolchain SS13 35 / 35

Einführung in die GNU-Toolchain

Einführung in die GNU-Toolchain Einführung in die GNU-Toolchain Thomas Kiebel Eingebettete Systeme und Betriebssysteme (EOS) Otto-von-Guericke-Universität Magdeburg Wintersemester 2011/2012 Motivation und Ziele Motivation Ziele der Übung

Mehr

Einführung in die C-Programmierung

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

Mehr

Propädeutikum. Dipl.-Inf. Frank Güttler

Propädeutikum. Dipl.-Inf. Frank Güttler Propädeutikum 2015 Vorbereitungskurs Informatikstudium Erfolgreich Studieren Programmieren (C-Kurs) guettler@informatik.uni-leipzig.de Universität Leipzig Institut für Informatik Technische Informatik

Mehr

Tutorium Rechnerorganisation

Tutorium 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

Mehr

Deklarationen in C. Prof. Dr. Margarita Esponda

Deklarationen in C. Prof. Dr. Margarita Esponda Deklarationen in C 1 Deklarationen Deklarationen spielen eine zentrale Rolle in der C-Programmiersprache. Deklarationen Variablen Funktionen Die Deklarationen von Variablen und Funktionen haben viele Gemeinsamkeiten.

Mehr

Objektbasierte Entwicklung

Objektbasierte Entwicklung Embedded Software Objektbasierte Entwicklung Objektorientierung in C? Prof. Dr. Nikolaus Wulff Objektbasiert entwickeln Ohne C++ wird meist C im alten Stil programmiert. => Ein endlose while-schleife mit

Mehr

Die Programmiersprache C99: Zusammenfassung

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

Mehr

Datentypen: Enum, Array, Struct, Union

Datentypen: Enum, Array, Struct, Union Datentypen: Enum, Array, Struct, Union C-Kurs 2013, 2. Tutorium Freitagsrunde http://wiki.freitagsrunde.org 10. September 2013 This work is licensed under the Creative Commons Attribution-ShareAlike 3.0

Mehr

Zählen von Objekten einer bestimmten Klasse

Zählen von Objekten einer bestimmten Klasse Zählen von Objekten einer bestimmten Klasse Ziel, Inhalt Zur Übung versuchen wir eine Klasse zu schreiben, mit der es möglich ist Objekte einer bestimmten Klasse zu zählen. Wir werden den ++ und den --

Mehr

DAP2-Programmierpraktikum Einführung in C++ (Teil 1)

DAP2-Programmierpraktikum Einführung in C++ (Teil 1) DAP2-Programmierpraktikum Einführung in C++ (Teil 1) Carsten Gutwenger 11. April 2008 Lehrstuhl 11 Algorithm Engineering Fakultät für Informatik, TU Dortmund Überblick Mein erstes C++-Programm Namensräume

Mehr

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

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

Mehr

Grundlagen. Kapitel 1

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

Mehr

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

Programmieren in C. Macros, Funktionen und modulare Programmstruktur. Prof. Dr. Nikolaus Wulff

Programmieren in C. Macros, Funktionen und modulare Programmstruktur. Prof. Dr. Nikolaus Wulff Programmieren in C Macros, Funktionen und modulare Programmstruktur Prof. Dr. Nikolaus Wulff Der C Präprozessor Vor einem Compile Lauf werden alle Präprozessor Kommandos/Makros ausgewertet. Diese sind

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

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 18

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 18 Kapitel 3 Datentypen und Variablen Seite 1 von 18 Datentypen - Einführung - Für jede Variable muss ein Datentyp festgelegt werden. - Hierdurch werden die Wertemenge und die verwendbaren Operatoren festgelegt.

Mehr

Vorkurs C++ Programmierung

Vorkurs C++ Programmierung Vorkurs C++ Programmierung Klassen Letzte Stunde Speicherverwaltung automatische Speicherverwaltung auf dem Stack dynamische Speicherverwaltung auf dem Heap new/new[] und delete/delete[] Speicherklassen:

Mehr

Ein Blick voraus. des Autors von C++: Bjarne Stroustrup. 04.06.2005 Conrad Kobsch

Ein Blick voraus. des Autors von C++: Bjarne Stroustrup. 04.06.2005 Conrad Kobsch Ein Blick voraus des Autors von C++: Bjarne Stroustrup 04.06.2005 Conrad Kobsch Inhalt Einleitung Rückblick Nur eine Übergangslösung? Was würde C++ effektiver machen? Quelle 2 Einleitung Wo steht C++,

Mehr

Modellierung und Programmierung 1

Modellierung und Programmierung 1 Modellierung und Programmierung 1 Prof. Dr. Sonja Prohaska Computational EvoDevo Group Institut für Informatik Universität Leipzig 19. November 2015 Gültigkeitsbereich (Scope) von Variablen { int m; {

Mehr

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {... PIWIN I Kap. 8 Objektorientierte Programmierung - Vererbung 31 Schlüsselwort: final Verhindert, dass eine Methode überschrieben wird public final int holekontostand() {... Erben von einer Klasse verbieten:

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

Programmentwicklung mit C++ (unter Unix/Linux)

Programmentwicklung mit C++ (unter Unix/Linux) Programmentwicklung mit C++ (unter Unix/Linux) Erste Schritte Der gcc - Compiler & Linker Organisation des Source-Codes & Libraries Automatische Programmgenerierung: Make Birgit Möller & Denis Williams

Mehr

Grundlagen von Python

Grundlagen von Python Einführung in Python Grundlagen von Python Felix Döring, Felix Wittwer November 17, 2015 Scriptcharakter Programmierparadigmen Imperatives Programmieren Das Scoping Problem Objektorientiertes Programmieren

Mehr

Unterprogramme. Funktionen. Bedeutung von Funktionen in C++ Definition einer Funktion. Definition einer Prozedur

Unterprogramme. Funktionen. Bedeutung von Funktionen in C++ Definition einer Funktion. Definition einer Prozedur Unterprogramme Unterprogramme sind abgekapselte Programmfragmente, welche es erlauben, bestimmte Aufgaben in wiederverwendbarer Art umzusetzen. Man unterscheidet zwischen Unterprogrammen mit Rückgabewert

Mehr

Proseminar C-Programmierung. Strukturen. Von Marcel Lebek

Proseminar C-Programmierung. Strukturen. Von Marcel Lebek Proseminar C-Programmierung Strukturen Von Marcel Lebek Index 1. Was sind Strukturen?...3 2. Padding 5 3. Vor- und Nachteile von Padding..8 4. Padding gering halten 9 5. Anwendungsgebiete von Strukturen.11

Mehr

Algorithmen mit Python

Algorithmen mit Python Algorithmen mit Python Vorbesprechung zum Proseminar im Sommersemester 2009 http://www.python.org 1 Sie lernen in DAP Java und C/C++: 80% Syntax, 20% Algorithmen-Design Idee Schon ein einfaches Hello World

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

Innere Klassen in Java

Innere Klassen in Java Innere Klassen in Java SS 2012 Prof. Dr. Margarita Esponda Innere Klassen Klassen- oder Interfacedefinitionen können zur besseren Strukturierung von Programmen verschachtelt werden Eine "Inner Class" wird

Mehr

Programmieren. 10. Tutorium 4./ 5. Übungsblatt Referenzen

Programmieren. 10. Tutorium 4./ 5. Übungsblatt Referenzen Programmieren 10. Tutorium 4./ 5. Übungsblatt Inhalt I. Übungsblatt 4 II. III. - Rückgabe und Besprechung - Vorbereitung auf Wiederholung/ Nachtrag - Operatorpräzedenzen IV. Übungsblatt 5 - Vorstellung

Mehr

Prinzipien Objektorientierter Programmierung

Prinzipien Objektorientierter Programmierung Prinzipien Objektorientierter Programmierung Valerian Wintner Inhaltsverzeichnis 1 Vorwort 1 2 Kapselung 1 3 Polymorphie 2 3.1 Dynamische Polymorphie...................... 2 3.2 Statische Polymorphie........................

Mehr

Praxisorientierte Einführung in C++ Lektion: "Die Compiler-Chain (Vom Quellcode zum ausführbaren Programm)"

Praxisorientierte Einführung in C++ Lektion: Die Compiler-Chain (Vom Quellcode zum ausführbaren Programm) Praxisorientierte Einführung in C++ Lektion: "Die Compiler-Chain (Vom Quellcode zum ausführbaren Programm)" Christof Elbrechter Neuroinformatics Group, CITEC April 24, 2014 Christof Elbrechter Praxisorientierte

Mehr

Einführung in Java. PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005

Einführung in Java. PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005 Einführung in Java PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005 Gliederung 1. Was ist Java / Geschichte von Java 2. Prinzip der Plattformunabhängigkeit 3. Wie kommt man vom Quellcode zum Programm

Mehr

Einführung in die Programmierung (EPR)

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

Mehr

Moderne C-Programmierung

Moderne 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

Mehr

C# im Vergleich zu Java

C# im Vergleich zu Java C# im Vergleich zu Java Serhad Ilgün Seminar Universität Dortmund SS 03 Gliederung Entstehung von C# und Java Überblick von C# und Java Unterschiede und Gemeinsamkeiten Zusammenfassung und Ausblick Entstehung

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

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

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

Mehr

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

Übungen zu C++ Kapitel 1

Übungen zu C++ Kapitel 1 Übungen zu C++ Kapitel 1 Aufgabe 1 Ergänze den Text. a) Die sechs logischen Einheiten eines Computers sind Eingabe-Einheit, Ausgabe-Einheit, RAM, ALU, CPU, Plattenspeicher. b) Die Programme, welche Hochsprachenprogramme

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

C++ Grundlagen. ++ bedeutet Erweiterung zum Ansi C Standard. Hier wird eine Funktion eingeleitet

C++ Grundlagen. ++ bedeutet Erweiterung zum Ansi C Standard. Hier wird eine Funktion eingeleitet C++ Grundlagen ++ bedeutet Erweiterung zum Ansi C Standard Hier wird eine Funktion eingeleitet Aufbau: In dieser Datei stehen die Befehle, die gestartet werden, wenn das Programm gestartet wird Int main()

Mehr

Methoden. von Objekten definiert werden, Methoden,, Zugriffsmethoden und Read-Only

Methoden. von Objekten definiert werden, Methoden,, Zugriffsmethoden und Read-Only Methoden Wie Konstruktoren und Destruktoren zum Auf- und Abbau von Objekten definiert werden, Wie inline-methoden Methoden,, Zugriffsmethoden und Read-Only Only- Methoden einzusetzen sind, Der this-pointer

Mehr

Fakultät Angewandte Informatik Lehrprofessur für Informatik 23.01.2012

Fakultät Angewandte Informatik Lehrprofessur für Informatik 23.01.2012 WS 2011/2012 Fakultät Angewandte Informatik Lehrprofessur für Informatik 23.01.2012 Prof. Dr. Robert Lorenz Musterlösung zur Vorlesung Informatik I, Extrablatt zu komplexen Datenstrukturen Aufgabe 45 **

Mehr

Programmierparadigmen

Programmierparadigmen Programmierparadigmen D. Rösner Institut für Wissens- und Sprachverarbeitung Fakultät für Informatik Otto-von-Guericke Universität Magdeburg Sommer 2011, 20. Juni 2011, c 2011 D.Rösner D. Rösner PGP 2011...

Mehr

Einführung in die C++ Programmierung für Ingenieure

Einführung in die C++ Programmierung für Ingenieure Einführung in die C++ Programmierung für Ingenieure MATTHIAS WALTER / JENS KLUNKER Universität Rostock, Lehrstuhl für Modellierung und Simulation 14. November 2012 c 2012 UNIVERSITÄT ROSTOCK FACULTY OF

Mehr

2. Programmierung in C

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

Mehr

Objektorientierte Programmierung. Kapitel 12: Interfaces

Objektorientierte Programmierung. Kapitel 12: Interfaces 12. Interfaces 1/14 Objektorientierte Programmierung Kapitel 12: Interfaces Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2012/13 http://www.informatik.uni-halle.de/ brass/oop12/

Mehr

Pass by Value Pass by Reference Defaults, Overloading, variable Parameteranzahl

Pass by Value Pass by Reference Defaults, Overloading, variable Parameteranzahl Funktionen Zusammenfassung von Befehlssequenzen als aufrufbare/wiederverwendbare Funktionen in einem Programmblock mit festgelegter Schnittstelle (Signatur) Derartige prozedurale Programmierung erlaubt

Mehr

Funktionen Häufig müssen bestimmte Operationen in einem Programm mehrmals ausgeführt werden. Schlechte Lösung: Gute Lösung:

Funktionen Häufig müssen bestimmte Operationen in einem Programm mehrmals ausgeführt werden. Schlechte Lösung: Gute Lösung: Funktionen Häufig müssen bestimmte Operationen in einem Programm mehrmals ausgeführt werden. Schlechte Lösung: Der Sourcecode wird an den entsprechenden Stellen im Programm wiederholt Programm wird lang

Mehr

Java Einführung Operatoren Kapitel 2 und 3

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

Mehr

Eine Einführung in C-Funktionen

Eine Einführung in C-Funktionen Eine Einführung in C-Funktionen CGK-Proseminar 2014 Philip Gawehn 04.07.2014, Hamburg Inhaltsverzeichnis 1 Einleitung 2 2 Grundlagen 2 2.1 Der Aufbau einer Funktion....................... 2 2.2 Schlüsselwörter.............................

Mehr

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java: Technische Informatik für Ingenieure (TIfI) WS 2005/2006, Vorlesung 9 II. Grundlagen der Programmierung Ekkart Kindler Funktionen und Prozeduren Datenstrukturen 9. Datenstrukturen Daten zusammenfassen

Mehr

1 Einleitung. Lernziele. Symbolleiste für den Schnellzugriff anpassen. Notizenseiten drucken. eine Präsentation abwärtskompatibel speichern

1 Einleitung. Lernziele. Symbolleiste für den Schnellzugriff anpassen. Notizenseiten drucken. eine Präsentation abwärtskompatibel speichern 1 Einleitung Lernziele Symbolleiste für den Schnellzugriff anpassen Notizenseiten drucken eine Präsentation abwärtskompatibel speichern eine Präsentation auf CD oder USB-Stick speichern Lerndauer 4 Minuten

Mehr

Softwarepraktikum: Einführung in gcc / g++

Softwarepraktikum: Einführung in gcc / g++ Softwarepraktikum: Einführung in gcc / g++ (Eingebettete Systeme und Robotik),, http://ai3.inf.uni-bayreuth.de /home/db_lehre/softwarepraktikum/einfuehrungsvortraege/gcc-vortrag.01.sxi Unterschied gcc

Mehr

Dr. Monika Meiler. Inhalt

Dr. Monika Meiler. Inhalt Inhalt 11 Dynamische Feldvereinbarung... 11-2 11.1 Dynamische Vereinbarung von Vektoren... 11-3 11.2 Dynamische Vereinbarung von Matrizen... 11-5 11.3 Die Kommandozeile... 11-8 Propädeutikum 11-1/8 11

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java objektorientierte Programmierung 2 2 Zusammenhang Klasse-Datei In jeder *.java Datei kann es genau eine public-klasse geben wobei Klassen- und Dateiname übereinstimmen. Es können

Mehr

Um ein solches Dokument zu erzeugen, muss eine Serienbriefvorlage in Word erstellt werden, das auf die von BüroWARE erstellte Datei zugreift.

Um ein solches Dokument zu erzeugen, muss eine Serienbriefvorlage in Word erstellt werden, das auf die von BüroWARE erstellte Datei zugreift. Briefe Schreiben - Arbeiten mit Word-Steuerformaten Ab der Version 5.1 stellt die BüroWARE über die Word-Steuerformate eine einfache Methode dar, Briefe sowie Serienbriefe mit Hilfe der Korrespondenzverwaltung

Mehr

Version 0.3. Installation von MinGW und Eclipse CDT

Version 0.3. Installation von MinGW und Eclipse CDT Version 0.3 Installation von MinGW und Eclipse CDT 1. Stellen Sie fest, ob Sie Windows in der 32 Bit Version oder in der 64 Bit Version installiert haben. 2. Prüfen Sie, welche Java Runtime vorhanden ist.

Mehr

Computeranwendung und Programmierung (CuP)

Computeranwendung und Programmierung (CuP) Computeranwendung und Programmierung (CuP) VO: Peter Auer (Informationstechnologie) UE: Norbert Seifter (Angewandet Mathematik) Organisatorisches (Vorlesung) Vorlesungszeiten Montag 11:15 12:45 Freitag

Mehr

Zum Abschluss wird gezeigt, wie aus einem C++ Quell-Programm ein ausführbares Programm erzeugt wird. 1. Installation von NetBeans...

Zum Abschluss wird gezeigt, wie aus einem C++ Quell-Programm ein ausführbares Programm erzeugt wird. 1. Installation von NetBeans... Erste Schritte Dieser Teil der Veranstaltung gibt einen ersten Eindruck der Programmierung mit C++. Es wird ein erstes Gefühl von Programmiersprachen vermittelt, ohne auf die gezeigten Bestandteile genau

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

Klausur in Programmieren

Klausur in Programmieren Studiengang Sensorik/Sensorsystemtechnik Note / normierte Punkte Klausur in Programmieren Wintersemester 2010/11, 17. Februar 2011 Dauer: 1,5h Hilfsmittel: Keine (Wörterbücher sind auf Nachfrage erlaubt)

Mehr

Nuetzlicher Kleinkram

Nuetzlicher Kleinkram Ein paar Hilfestellungen zur Arbeit unter Linux/Unix FB Physik Freie Universität Berlin Computerphysik WS 2007/2008 1 2 3 user@ host :~ > gcc -o programm quelltext. c macht gleich mehrere Dinge auf einmal

Mehr

Grundlagen. Die Komponenten eines C Programms. Das erste Programm

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

Mehr

Effiziente Java Programmierung

Effiziente Java Programmierung Effiziente Java Programmierung Seminar Implementierung moderner virtueller Maschinen am Beispiel von Java SS 2009 von Reinhard Klaus Losse 20. Mai 2009 Gliederung Definition Effizienz Werkzeuge zum Messen

Mehr

Klassenentwurf. Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? Objektorientierte Programmierung mit Java

Klassenentwurf. Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? Objektorientierte Programmierung mit Java Objektorientierte Programmierung mit Java Eine praxisnahe Einführung mit BlueJ Klassenentwurf Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? 1.0 Zentrale Konzepte

Mehr

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015 Software Engineering Zur Architektur der Applikation Data Repository Franz-Josef Elmer, Universität Basel, HS 2015 Software Engineering: Mit acht bewährten Praktiken zu gutem Code 2 Schichtarchitektur

Mehr

Client-Server-Beziehungen

Client-Server-Beziehungen Client-Server-Beziehungen Server bietet Dienste an, Client nutzt Dienste Objekt ist gleichzeitig Client und Server Vertrag zwischen Client und Server: Client erfüllt Vorbedingungen eines Dienstes Server

Mehr

Objektorientierung: Klassen und Objekte

Objektorientierung: Klassen und Objekte Objektorientierung: Klassen und Objekte Klasse: Beschreibung für eine Menge von Objekten Schablone, Bauplan abstrakte Form Objekt: Instanz einer Klasse konkreter Inhalt (Werte) Klassen bestehen aus Attributen

Mehr

Prof. Dr. Uwe Schmidt. 21. August 2007. Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252)

Prof. Dr. Uwe Schmidt. 21. August 2007. Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252) Prof. Dr. Uwe Schmidt 21. August 2007 Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252) Zeit: 75 Minuten erlaubte Hilfsmittel: keine Bitte tragen Sie Ihre Antworten und fertigen

Mehr

Java Virtual Machine (JVM) Bytecode

Java Virtual Machine (JVM) Bytecode Java Virtual Machine (JVM) durch Java-Interpreter (java) realisiert abstrakte Maschine = Softwareschicht zwischen Anwendung und Betriebssystem verantwortlich für Laden von Klassen, Ausführen des Bytecodes,

Mehr

Das Typsystem von Scala. L. Piepmeyer: Funktionale Programmierung - Das Typsystem von Scala

Das Typsystem von Scala. L. Piepmeyer: Funktionale Programmierung - Das Typsystem von Scala Das Typsystem von Scala 1 Eigenschaften Das Typsystem von Scala ist statisch, implizit und sicher 2 Nichts Primitives Alles ist ein Objekt, es gibt keine primitiven Datentypen scala> 42.hashCode() res0:

Mehr

C A R L V O N O S S I E T Z K Y. Boost C++ Libraries. Johannes Diemke. Department of Computer Science Learning and Cognitive Systems

C A R L V O N O S S I E T Z K Y. Boost C++ Libraries. Johannes Diemke. Department of Computer Science Learning and Cognitive Systems C A R L V O N O S S I E T Z K Y Boost C++ Libraries Johannes Diemke Department of Computer Science Learning and Cognitive Systems Grundlagen Freie von Experten begutachtete, portable C++ Bibliothek Nützlich,

Mehr

FB Informatik. Fehler. Testplan

FB Informatik. Fehler. Testplan Fehler #include int i,n,summe; int summe (int); cout 0) cin>n; i=summme(n); cout

Mehr

Java: Vererbung. Teil 3: super() www.informatikzentrale.de

Java: Vererbung. Teil 3: super() www.informatikzentrale.de Java: Vererbung Teil 3: super() Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und IMMER zuerst den Konstruktor der Elternklasse auf! Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und

Mehr

The ToolChain.com. Grafisches Debugging mit der QtCreator Entwicklungsumgebung

The ToolChain.com. Grafisches Debugging mit der QtCreator Entwicklungsumgebung The ToolChain Grafisches Debugging mit der QtCreator Entwicklungsumgebung geschrieben von Gregor Rebel 2014-2015 Hintergrund Neben dem textuellen Debuggen in der Textkonsole bieten moderene Entwicklungsumgebungen

Mehr

Übung 9 - Lösungsvorschlag

Übung 9 - Lösungsvorschlag Universität Innsbruck - Institut für Informatik Datenbanken und Informationssysteme Prof. Günther Specht, Eva Zangerle Besprechung: 15.12.2008 Einführung in die Informatik Übung 9 - Lösungsvorschlag Aufgabe

Mehr

Kurzeinführung LABTALK

Kurzeinführung LABTALK Kurzeinführung LABTALK Mit der Interpreter-Sprache LabTalk, die von ORIGIN zur Verfügung gestellt wird, können bequem Datenmanipulationen sowie Zugriffe direkt auf das Programm (Veränderungen der Oberfläche,

Mehr

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten In dem Virtuellen Seminarordner werden für die Teilnehmerinnen und Teilnehmer des Seminars alle für das Seminar wichtigen Informationen,

Mehr

TIMI: Technische Informatik für Medieninformatiker

TIMI: Technische Informatik für Medieninformatiker TIMI: Technische Informatik für Medieninformatiker Bachelor-Studiengang Digitale Medien Medieninformatik SS 2004 Niels Pollem Arbeitsgruppe Rechnernetze (Prof. Dr.-Ing. Ute Bormann) Scheduling:

Mehr

PROGRAMMIEREN MIT UNIX/LINUX-SYSTEMAUFRUFEN

PROGRAMMIEREN MIT UNIX/LINUX-SYSTEMAUFRUFEN PROGRAMMIEREN MIT UNIX/LINUX-SYSTEMAUFRUFEN 2. UNIX/Linux-Prozessverwaltung und zugehörige Systemaufrufe Wintersemester 2015/16 2. Die UNIX/LINUX-Prozessverwaltung Aufgaben: 1. Erzeugen neuer Prozesse

Mehr

Programmiersprachen Einführung in C. Unser erstes C-Programm. Unser erstes C-Programm. Unser erstes C-Programm. Unser erstes C-Programm

Programmiersprachen Einführung in C. Unser erstes C-Programm. Unser erstes C-Programm. Unser erstes C-Programm. Unser erstes C-Programm Programmiersprachen Einführung in C Teil 2: Prof. Dr. int main (int argc, char *argv[]) int sum = 0; for (i = 0; i

Mehr

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck Javadoc Programmiermethodik Eva Zangerle Universität Innsbruck Überblick Einführung Java Ein erster Überblick Objektorientierung Vererbung und Polymorphismus Ausnahmebehandlung Pakete und Javadoc Spezielle

Mehr

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein.

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein. Schritt 1: Installation des Javacompilers JDK. Der erste Start mit Eclipse Bevor Sie den Java-Compiler installieren sollten Sie sich vergewissern, ob er eventuell schon installiert ist. Gehen sie wie folgt

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

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

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

Mehr

Installationsanleitung

Installationsanleitung Installationsanleitung zu @Schule.rlp (2015) Inhaltsverzeichnis Inhaltsverzeichnis... 1 Voraussetzungen... 2 vorbereitende Aufgaben... 3 Installation @Schule.rlp (2015):... 3 Installation Java SE Runtime

Mehr

Excel Funktionen durch eigene Funktionen erweitern.

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

Mehr

Applet Firewall und Freigabe der Objekte

Applet Firewall und Freigabe der Objekte Hauptseminar Applet Firewall und Freigabe der Objekte Nachweis von Sicherheitseigenschaften für JavaCard Jin Zhou Ein Überblick über diesen Vortrag Applet Firewall Kontext JCRE Entry Point Objekt Shareable

Mehr

Ergänzungen zum Manual OS V 2.05/2.06

Ergänzungen zum Manual OS V 2.05/2.06 Ergänzungen zum Manual OS V 2.05/2.06 SYSTEMRESOURCEN - PROGRAMM DOWNLOAD - Ab der Betriebssystemversion 2.05 haben die C-Control Units M-2.0 und Station 2.0 die Möglichkeit das Anwenderprogramm von einem

Mehr

Handbuch. timecard Connector 1.0.0. Version: 1.0.0. REINER SCT Kartengeräte GmbH & Co. KG Goethestr. 14 78120 Furtwangen

Handbuch. timecard Connector 1.0.0. Version: 1.0.0. REINER SCT Kartengeräte GmbH & Co. KG Goethestr. 14 78120 Furtwangen Handbuch timecard Connector 1.0.0 Version: 1.0.0 REINER SCT Kartengeräte GmbH & Co. KG Goethestr. 14 78120 Furtwangen Furtwangen, den 18.11.2011 Inhaltsverzeichnis Seite 1 Einführung... 3 2 Systemvoraussetzungen...

Mehr

J.5 Die Java Virtual Machine

J.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

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

Gliederung. Programmierparadigmen. Sprachmittel in SCHEME. Objekte: Motivation. Objekte in Scheme

Gliederung. Programmierparadigmen. Sprachmittel in SCHEME. Objekte: Motivation. Objekte in Scheme Gliederung Programmierparadigmen D. Rösner Institut für Wissens- und Sprachverarbeitung Fakultät für Informatik Otto-von-Guericke Universität Magdeburg 1 Einführung Sprachmittel Sommer 2011, 20. Juni 2011,

Mehr

Die Programmiersprache C

Die Programmiersprache C Die Programmiersprache C höhere Programmiersprache (mit einigen Assembler-ähnlichen Konstrukten) gut verständliche Kommandos muss von Compiler in maschinenlesbaren Code (Binärdatei) übersetzt werden universell,

Mehr

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden.

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden. Grundwissen Informatik Objekt Attribut Methoden Als Objekte bezeichnet man alle Gegenstände, Dinge, Lebewesen, Begriffe oder Strukturen unserer Welt ( Autos, Räume, Bakterien, Lehrer, Schüler, Kunden,

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

Code wiederverwenden: Objektorientierte Programmierung (OOP) sinnvoll nutzen Roland Wagner Automatisierungstreff IT & Automation 2015

Code wiederverwenden: Objektorientierte Programmierung (OOP) sinnvoll nutzen Roland Wagner Automatisierungstreff IT & Automation 2015 Code wiederverwenden: Objektorientierte Programmierung (OOP) sinnvoll nutzen Roland Wagner Automatisierungstreff IT & Automation 2015 CODESYS a trademark of 3S-Smart Software Solutions GmbH Agenda 1 Warum

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

Modul 122 VBA Scribt.docx

Modul 122 VBA Scribt.docx Modul 122 VBA-Scribt 1/5 1 Entwicklungsumgebung - ALT + F11 VBA-Entwicklungsumgebung öffnen 2 Prozeduren (Sub-Prozeduren) Eine Prozedur besteht aus folgenden Bestandteilen: [Private Public] Sub subname([byval

Mehr