Modul: Programmierung B-PRG Grundlagen der Programmierung 1 Teil 1 V3

Größe: px
Ab Seite anzeigen:

Download "Modul: Programmierung B-PRG Grundlagen der Programmierung 1 Teil 1 V3"

Transkript

1 Modul: Programmierung B-PRG Grundlagen der Programmierung 1 Teil 1 V3 Variablen Datentypen Objekte Professur für Graphische Datenverarbeitung Institut für Informatik Fachbereich Informatik und Mathematik (12) Rückblick Wir haben bisher 6 zentrale Grundbegriffe kennen gelernt: Daten Information Wissen Computer und ihre Leistungsfähigkeit; Algorithmen und erste Beschreibungsmöglichkeiten und schließlich der Unterschied zum Programm. 2 1

2 Unser heutiges Lernziel Daten und Informationen in Programmiersprachen Begriffe wie Variable, Konstante, Literale; Datentyp, abstrakter Datentyp, Objekte kennen lernen Zuweisung kennen lernen Typing und Typwandlung: casting und coercion 3 Übersicht Daten und Informationen in Programmiersprachen Variablen Datentypen Objekte Typisierung 4 2

3 Daten und Informationen in Programmiersprachen In einem Programm stehen Anweisungen, die auf Daten operieren. Wir benötigen in den Programmiersprachen also Sprachkonstrukte, die es uns erlauben, auf Daten zuzugreifen: sie festzulegen (zu definieren), sie zu lesen und wieder zu ändern. Ziele: für den Programmierer möglichst einfach und bequem sein, quasi so, wie wir es aus der Mathematik oder in der Schriftsprache gewöhnt sind. Fehler (insbesondere Tippfehler und manche Denkfehler) möglichst frühzeitig vom Compiler/Interpreter erkennen Diese Forderungen sind gegenläufig und können streng nicht beide gleichzeitig erfüllt werden. 5 Rückblick auf V1: Daten und Informationen Daten sind (maschinen-) lesbare und bearbeitbare Repräsentationen von Informationen D α I α 1 X α 2 88 D: Daten I: Information α: Zuordnung: Interpretationsvorschrift (muss keine Funktion/Relation sein) Buchstabe Dezimalzahl 6 3

4 Variablen Datentypen Objekte Bis in die fünfziger Jahre hinein, wurden Computer in Maschinensprache programmiert Befehle nahmen direkten Bezug auf Speicherstellen: Adressen Namen (Bezeichner, Symbole) für einzelne Speicherzellen Hierfür wurde alsbald der Begriff Variable üblich. In Programmiersprachen bezeichnet "Variable" also einen Bezug (Referenz) auf einen (Daten-)Behälter, also eine Speicherzelle. 7 Variable Achtung: In der Mathematik ist eine "Variable" eine Bezeichnung, die in einem Term oder einer Formel vorkommt, z.b. 3u + 2: Platzhalter für einen Wert, oder in einem funktionalen Zusammenhang der Art y = f(x) x als unabhängige und y als abhängige Variable. In der Physik bezeichnet man mit "Variable" eine Größe, deren Wert von der Zeit oder einer anderen Größe abhängt. 8 4

5 Ausdrücke und Zuweisung (Beispiel) Anweisungsfolge wie 1. Y = 5 2. X = 4 3. X = X/2 + 3*Y Diese Form (diesen Operator) nennt man Zuweisung (assignment). Das Gleichheitszeichen hat hier eine besondere Bedeutung Semantik in einer Programmiersprache: Führe die Anweisungen in der Reihenfolge 1. bis 3. aus, im Einzelnen 1. Weise der Variablen (also der Speicherzelle mit der Bezeichnung X) den Wert 4 zu. 2. Weise der Variablen (also der Speicherzelle mit der Bezeichnung Y) den Wert 5 zu. 3. Berechne den Term (Ausdruck) auf der Rechten Seite, also 4/2 + 3*5 gleich 17 und weise den errechneten Wert 17 der Variablen (also der Speicherzelle mit der Bezeichnung X) zu. 9 Beispiel (2) 1. Y = 5 2. X = 4 3. X = X/2 + 3*Y In der Mathematik: diese Schreibweisen als Gleichung auffassen Die 3. Anweisung als Gleichung aufgefasst würde man auflösen zu X = 6Y, mit Gleichung 2. also Y=1, als Gleichungssystem aufgefasst wäre widersprüchlich und die Lösungsmenge für X = {}, die leere Menge. 10 5

6 Zuweisungsoperator Um diese Verwechslungen zu vermeiden, werden in manchen Programmiersprachen als Zuweisungsoperator andere Symbole benutzt, z.b. = in Python, Java, C, C++ := in Pascal, Ada in APL 11 Typisierung Beispiel: X = ANTON Y = & Z = BERTA. U = X + Y + Z arithmetisch interpretiert macht das keinen Sinn, erst recht nicht dieses auf Datenebene plump zu errechnen. Vielmehr könnte der Operator + bei Zeichenketten eine Aneinanderreihung bedeuten, also etwa U = ANTON & BERTA 12 6

7 Datentypen Die Bedeutung von Operatoren in Ausdrücken hängt von der Art (=dem Typ, engl. type) der Daten ab Gleiche Operatorenzeichen (z.b, +) können abhängig vom Datentyp durchaus Verschiedenes bedeuten (In der OOP nennt man das Polymorphie) Ein Datentyp in der Informatik ist die Zusammenfassung von Objektmengen mit den darauf definierten Operationen. Dabei werden durch den Datentyp unter Verwendung einer so genannten Signatur ausschließlich die Namen dieser Objekt- und Operationsmengen spezifiziert. Ein so spezifizierter Datentyp besitzt jedoch noch keine Semantik. 13 Abstrakter Datentyp Ein Abstrakter Datentyp (ADT) ist im wesentlichen durch eine formale Beschreibung seiner Schnittstelle zur Umwelt charakterisiert. Ein ADT ist nur eine Erweiterung des Begriffs Datentyp : Die Defnition des ADT hält sich dabei an folgendes Muster: Typ/Wertebereich (welche Werte nimmt der ADT an bzw. mit welchen Datentypen geht er um) Methoden - die Syntax wie mit dem Datentyp gearbeitet wird Axiome - die die Semantik des Datentypen definieren Man kann auf diese Weise einen Datentyp beschreiben ohne sich um die Details der Implementierung zu kümmern, daher abstrakt. 14 7

8 Eigenschaften eines ADTs (1) Präzise Beschreibung (precise specification): Die Schnittstelle (Interface) muss eindeutig und vollständig beschrieben sein. Einfachheit (simplicity): Der Anwender muss sich nicht um die innere Realisation des ADT kümmern, da der ADT seine Repräsentation und Verwaltung im Speicher selbst übernimmt. Kapselung (encapsulation): Das Interface soll als eine hermetische Grenze aufgefasst werden. Der Anwender soll sehr genau wissen, was ein ADT tut, aber keinesfalls, wie er es tut. 15 Eigenschaften eines ADTs (2) Geschütztheit (integrity): Der Anwender kann in die interne Struktur der Daten nicht eingreifen. Die Gefahr, Daten ungewollt zu löschen bzw. zu verändern sowie Programmierfehler zu begehen, ist dadurch deutlich herabgesetzt. Modularität (modularity): Das modulare Prinzip erlaubt übersichtliches und damit sicheres Programmieren und leichten Austausch von Programmteilen. Bei der Fehlersuche können einzelne Module sehr isoliert betrachtet werden. Viele Verbesserungen können über ADTs nachträglich ohne die geringste Änderung in sämtlichen Umgebungsbzw. Anwendungsprogrammen übernommen werden. 16 8

9 Beispiel (1) Eine Signatur ist ein Paar (Sorten, Operationen), wobei Sorten Namen für Objektmengen und Operationen Namen für Operationen auf diesen Mengen repräsentieren. Eine vereinfachte Version des Datentyps Ganzzahl (Integer), der hier Simple Integer heiße: Simple Integer Sorten int Operationen empty: -> int + : int x int -> int - : int x int -> int End Simple Integer bisher keine Semantik 17 Beispiel (2) Was ein int ist, wird bisher nirgendwo definiert. Hierzu müsste noch eine Zuordnung des Sortennamens zu einer Menge erfolgen. zum Beispiel: die Menge der natürlichen Zahlen. Dann wären auch + und - definiert (semantisch) definiert. Derartige Zuordnungen fallen in den Bereich der Semantik. Diese Spezifikation würde man in der Mathematik als Algebra bezeichnen. In der Informatik als abstrakten Datebtyp. 18 9

10 Datentypen in Programmiersprachen Programmiersprachen bieten eine jeweils spezifische Menge an vordefinierten Datentypen an, wie Ganze Zahlen, Fließkommazahlen oder Zeichenketten Die Namen dieser Datentypen und die genauen Definitionen der Wertebereiche und der dazugehörigen Operationen unterscheiden sich jedoch zum Teil stark. Datentypen werden also in der Programmierung verwendet, um Speicherbereichen eine konkrete Syntax und (Teil-)Semantik zuzuweisen. 19 Variablen - Konstanten - Literale Wenn diese Speicherbereiche veränderlich (mutable) sein sollen nennt man sie Variablen oder die nicht veränderlich Konstanten (constants, unmutable). Direkt in der Programmiersprache angegebene Werte für Operatoren nennt man Literale, z.b. 42, 3.14, Anton, usw. Man unterscheidet zusätzlich elementare (nicht weiter zerlegbare) und zusammengesetzte (zerlegbar in elementare) Datentypen

11 Objekte Der Begriff Objekt im Kontext der Objektorientierten Programmierung (Abkürzung OOP). Aus der Blickrichtung der Datentypen ist OOP eine Variante, bei der zusammengehörige Daten (Attribute) und die darauf arbeitende Programmlogik (Metoden) zu Einheiten zusammengefasst werden, den so genannten Objekten. 21 Prozedurales Programmieren Objektorientiertes Programmieren 22 11

12 Die Konzeption der Objekte erfolgt auf Basis der folgender Paradigmen (1) Abstraktion: Jedes Objekt im System kann als ein abstraktes Modell eines Akteurs betrachtet werden, der Aufträge erledigen, seinen Zustand berichten und ändern und mit den anderen Objekten im System kommunizieren kann, ohne offen legen zu müssen, wie diese Fähigkeiten implementiert sind (vgl. abstrakter Datentyp (ADT)). Kapselung: Objekte können den internen Zustand anderer Objekte nicht in unerwarteter Weise lesen oder ändern. Ein Objekt hat eine Schnittstelle, die darüber bestimmt, auf welche Weise mit dem Objekt interagiert werden kann. Polymorphie: Verschiedene Objekte können auf die gleiche Nachricht unterschiedlich reagieren. Wird die Zuordnung einer Nachricht zur Reaktion auf die Nachricht erst zur Laufzeit aufgelöst, dann wird dies auch späte Bindung (oder dynamische Bindung) genannt. 23 Die Konzeption der Objekte erfolgt auf Basis der folgender Paradigmen (2) Vererbung: Neue Arten von Objekten können auf der Basis bereits vorhandener Objekt-Definitionen festgelegt werden. Es können neue Bestandteile hinzugenommen werden oder vorhandene überlagert werden. (ohne Vererbung objektbasierter Programmierung). Klassen: Klassen sind Vorlagen, aus denen Objekte (Instanzen) zur Laufzeit erzeugt werden. Im Programm werden dann nicht einzelne Objekte, sondern eine Klasse gleichartiger Objekte definiert

13 Klassen sind die Konstruktionspläne für Objekte. Die Klasse entspricht in etwa einem Datentyp wie in der prozeduralen Programmierung, geht aber darüber hinaus: sie definiert zudem die Algorithmen, die auf diesen Daten operieren. Ähnlich zum abstrakten Datentyp (aber realisiert, d.h. konkret!) Zur Laufzeit eines Programms interagieren einzelne Objekte miteinander: wird als Grundmuster durch die Definition der einzelnen Klassen festgelegt. 25 Die Konzeption der Objekte erfolgt auf Basis der folgender Paradigmen (3) Methoden: Die einer Klasse von Objekten zugeordneten Algorithmen bezeichnet man auch als Methoden. Häufig wird der Begriff Methode synonym zu Funktion oder Prozedur oder Routine gebraucht, obwohl eine Funktion, Routine oder Prozedur eher als Implementierung einer Methode zu betrachten ist. Im täglichen Sprachgebrauch sagt man "Objekt A ruft Methode m von Objekt B auf." Spezielle Methoden zur Erzeugung bzw. "Zerstörung" von Objekten heißen Konstruktoren und Destruktoren

14 Objektorientierte Programmiersprachen wie Smalltalk und auch in Python arbeiten nach dem Prinzip alles ist ein Objekt: auch elementare Typen wie Ganzzahlen (Integer) werden durch Objekte repräsentiert. Viele Sprachen, unter anderem C++ und Java folgen allerdings nicht der reinen Lehre der Objektorientierung; daher sind dort elementare Typen keine vollwertigen Objekte, sondern müssen auf Methoden und Struktur verzichten. So wie die prozeduralen Programmierung durch Verfahren wie die strukturierte Programmierung verfeinert wurden auch Verfeinerungen der objektorientierten Programmierung: Entwurfsmuster (englisch design patterns), Design by Contract (DBC) und grafische Modellierungssprachen wie UML Extreme Programming aspektorientierte Programmierung 27 Zusammenfassung der Ideen und Konzepte Daten Adressen Variablen Datentypen abstrakte Datentypen Konstanten (Theorie) Literale Objekte (Praxis) (Bezeichner Syntax Semantik Namen, Polymorphie Abstraktion Symbole) Kapselung Klassen Vererbung 28 14

15 Zusammenfassung der Ideen und Konzepte Kontrollstrukturen (Vorgriff) imperativ strukturiertes / modulares objektorientiertes prozedural Programmieren Programmieren (Sub-)Routinen kein goto (Sprung) Methoden Module Nachrichten 29 Typisierung (1) Eine Typisierung (engl. typing) dient dazu, dass die Elemente und Einheiten der Programmiersprachen, wie z.b. Variablen, Funktionen oder Objekte (im Sinne der objektorientierten Programmierung) nur korrekt verwendet werden können. Ziel ist es, Programmierfehler der Art 5 + Anna so früh wie möglich zu erkennen, z.b. schon beim Eintippen in einem Syntax-gesteuerten Editor oder im Compiler/Interpreter oder durch das Laufzeitsystem abzufangen, insbesondere um eine Verschleppung von Laufzeitfehlern zu vermeiden. Diese verschleppten Fehler sind oft sehr schwer zu finden. Ein umgangssprachliches Beispiel für die dahinter liegende Problematik ist, dass man nicht Äpfel mit Birnen vergleichen soll

16 Typisierung (2) Typen liefern Bedingungen, deren Einhaltung bzw. Verletzung bei der Übersetzung oder späteren Ausführung vom Typsystem kontrolliert werden kann und somit eine Maßnahme gegen Programmierfehler darstellt. Man unterscheidet: starke Typisierung - schwache Typisierung (strong typing) (weak typing) dynamische Typisierung - statische Typisierung (dynamic typing) (static typing) 31 Starke - schwache Typisierung (1) Bei der starken Typisierung (oder strengen Typisierung) bleibt eine einmal durchgeführte Bindung zwischen Variable und Datentyp bestehen, es wird auch (möglichst) keine implizite Typkonvertierung vorgenommen. Eine nicht stark typisierte Sprache bezeichnet man als schwach typisiert. Leider ist das Konzept des strong typing alles andere als eindeutig. In der Literatur finden sich diverse Regeln, die sich teilweise gar widersprechen

17 Regeln fürs strong typing Typüberprüfungen zur Compile-Zeit; Typkonvertierungen generell verboten; Typkonvertierungen müssen explizit durchgeführt werden; die Sprache hat keine Mechanismen, um das Typ-System zu entgehen, wie etwa type casts (Typumwandlungen) in C; ein komplexes, fein abgestuftes System an Typen mit Sub-Typen; das Typ-System muss das Laufzeitverhalten eines Programmes garantieren. Versucht man alle bisher in der Literatur aufgestellten Regeln für strong typing auf bekannte Programmiersprachen anzuwenden, hält keine Sprache dieser Überprüfung stand: 33 Vorteile - Nachteile der statischen Typisierung Vorteile : Der Compiler kennt zu jeder Zeit den Typ eines Wertes (Datums) im Speicher, d.h. (1) Typfehler können zur Compilezeit, spätestens beim Binden erkannt werden, (2) Compiler erzeugt performanteren Code, weil Typprüfungen zur Laufzeit nicht nötig sind! Nachteile: (1) Variablen müssen vom Programmierer vor der Benutzung deklariert werden (insbesondere auch die Größe eines zusammengesetzten Datentyps), (2) die Übersetzer sind aufwendiger, weil dort mehr Aufwand für die Analyse anfällt und (3) viele effiziente Programmiertricks auf Datenebene (z.b. ändere einen kleinen Buchstaben a in einen großen A, durch Subtraktion von 20 (16) sind nicht möglich

18 Dynamische - statische Typisierung Bei der dynamischen Typisierung (engl. dynamic typing) erfolgt die Typzuweisung der Variablen zur Laufzeit eines Programmes durch das Laufzeitsystem, z.b. einer virtuellen Maschine. Dies erspart es dem Entwickler, die Typisierung von Hand vorzunehmen, bringt aber gewisse Nachteile für die Performance und bei der Fehlersuche mit sich. Bei der statischen Typisierung muss zur Übersetzungszeit der Datentyp von Variablen bekannt sein. Dies erfolgt in der Regel (vor der Benutzung) durch : die Deklaration (Bekanntmachung) der Variable beim Compiler oder Interpreter: Es ist damit zulässig, diese an anderen Stellen im selben Quelltext zu verwenden. 35 Vorteile - Nachteile Dynamische Typisierung Vorteile der dynamischen Typisierung: (1) Auswahl des Operators wird zur Laufzeit entschieden, einfaches Operator overloading und einfacheres "Generic Programming", (2) Wesentlich kürzere Compile-Zeiten, weil viele Überprüfungen entfallen; (3) Variablen müssen nicht deklariert werden (4) Variable muss nicht an festen Speicherbereich gebunden werden Nachteile: (1) Typ von Variable/Wert wird zur Laufzeit (jedesmal) überprüft Werte im Speicher müssen (unveränderlichen) Type-Tag haben, also geringere Performance (langsamer!) und mehr Speicherplatz (2) Debugger benötigt wesentlich höhere Funktionalität 36 18

19 Zusammenfassung static vs. dynamic typing und strong vs. weak typing sind orthogonal zueinander 37 WARNUNG Leider findet man häufig einen falscher Sprachgebrauch oder vielleicht auch Unverständnis über diese Konzepte: FALSCH ist: "strong" = "static und strong", oder gar: "strong" = "static", "C = strongly typed"

20 Typkonvertierung Wir unterscheiden in Programmiersprachen grundsätzlich zwei Arten von Typkonvertierungen: (1) implizite Typkonvertierung oder coercion (engl. Nötigung, Zwang) (2) explizite Typkonvertierung oder cast(ing) (engl eingießen, formen, werfen, ) 39 Implizite Typkonvertierung (1) finden wir sehr häufig bei Zahlen, Dabei ist eine Regel unterlegt, dass wenn zwei nichtgleiche Zahlentypen miteinander verknüpft werden sollen, zunächst zum allgemeineren (höheren) Typ gewandelt wird, also z.b. eine natürliche Zahl ganze Zahl reelle Zahl komplexe Zahl Das kann implizit geschehen, weil Verwechslungen kaum möglich sind und auch keine Informationen verloren gehen 40 20

21 Implizite Typkonvertierung (2) Fraglich wäre dies aber ggf. in folgendem Fall a ist eine ganze Zahl (integer), z.b. 4 b ist eine Zeichenkette (string), z.b. 22 Welchen Typ hat dann a + b? für ganze Zahlen wäre a + b die Addition und das Ergebnis eine ganze Zahl für Zeichenketten wäre a + b die Konkatenation und das Ergebnis 422 In diesen Fällen ist die Typwandlung nicht mehr durch allgemein übliche Konventionen gedeckt und in der Regel auch in Programmiersprachen nicht realisiert. 41 Expliziten Typwandlungen (1) Man unterscheidet prinzipiell drei Arten: checked: es wird zur Laufzeit überprüft, ob der Zieltyp mächtiger ist als der Quelltyp unchecked: keine Typüberprüfung zur Laufzeit, ggf. generiert die Hardware eine Fehlermeldung bit pattern: Daten werden in keiner Weise überprüft, das Bitmuster wird uminterpretiert

22 Expliziten Typwandlungen (2) Jede Programmiersprache hat dabei ihren eigenen Regelsatz: In Ada: werden die drei o.g. Arten unterstützt In C/C++: Ein cast ist entweder unchecked oder bitpattern, Informationen gehen ggf. verloren 1,3 wird zu 1 Gerade C++ hat diesbezüglich mehrere verschiedene Cast Operatoren: static_cast<type>(value_to_cast) dynamic_cast<type>(value_to_cast) const_cast<type>(value_to_cast) reinterpret_cast<type>(value_to_cast) 43 Typwandlung Wir sehen hieraus, das Typkonvertierung ein mächtiges aber durchaus nicht unproblematische Verfahren ist. Wir werden das Problem der Typkonvertierung insbesondere an unserer Beispielsprache Python noch mehrfach diskutieren

23 Zusammenfassung Daten und Informationen in Programmiersprachen Begriffe wie Variable, Konstante, Literale; Datentyp, abstrakter Datentyp, Objekte kennen gelernt und ganz nebenbei Basiskonzepte des OO-Programmierens kennen gelernt Typing und Typwandlung: casting und coercion 45 Fragen und (hoffentlich) Antworten 46 23

24 Ausblick Numerische Datentypen: allgemein und in Python Zeichenketten allgemein und in Python Danke für Ihre Aufmerksamkeit 47 24

Variablen. Datentypen. Objekte. Vorlesung

Variablen. Datentypen. Objekte. Vorlesung Vorlesung 3 Inhalt 1 Variablen Datentypen Objekte 2 1.1 Variablen 2 1.2 Zuweisungen 2 1.3 Datentyp und Abstrakter Datentyp (ADT) 4 1.4 Objekte 7 2 Typisierung 10 2.1 Starke / schwache Typisierung und statische

Mehr

Einleitung Typsystem Typisierung Zusammenfassung Literatur. Typisierung. Effiziente Programmierung. Thomas Schnieders

Einleitung Typsystem Typisierung Zusammenfassung Literatur. Typisierung. Effiziente Programmierung. Thomas Schnieders Typisierung Effiziente Programmierung Thomas Schnieders Fachbereich Informatik Fakultät für Mathematik, Informatik und Naturwissenschaften Universität Hamburg 2018-04-26 Thomas Schnieders Typisierung 1

Mehr

Objektorientierte Programmierung (OOP)

Objektorientierte Programmierung (OOP) orientierte Programmierung (OOP) 1. Motivation Die objektorientierte Sichtweise der Welt Als Motivation für die OOP sieht man sich am besten die reale Welt an: Die reale Welt besteht aus "en", z. B.: Gegenstände,

Mehr

Gliederung der Folien

Gliederung der Folien 1 Gliederung der Folien 1. Einführung 1.1. Gliederung 1.2. Literatur 1.3. Einstieg in Java 1.3.1. Geschichte von Java 1.3.2. Hello World 1.3.3. Übersetzen eines Java-Programms 1.4. Die Entwicklungsumgebung

Mehr

n 1. Der Begriff Informatik n 2. Syntax und Semantik von Programmiersprachen - 1 -

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

Mehr

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen - 1 -

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

Mehr

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen - 1 -

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

Mehr

Programmiersprachen: Klassifizierung und Methoden. Programmier-Paradigmen. Grundlagen der Programmierung 2 (1.C) - 1 -

Programmiersprachen: Klassifizierung und Methoden. Programmier-Paradigmen. Grundlagen der Programmierung 2 (1.C) - 1 - Programmiersprachen: Klassifizierung und Methoden Programmier-Paradigmen Grundlagen der Programmierung 2 (1.C) - 1 - Programmiersprachen: Begriffe Syntax Beschreibung der Programme als Texte let xyz =

Mehr

Repetitorium Informatik (Java)

Repetitorium Informatik (Java) Repetitorium Informatik (Java) Tag 6 Lehrstuhl für Informatik 2 (Programmiersysteme) Übersicht 1 Klassen und Objekte Objektorientierung Begrifflichkeiten Deklaration von Klassen Instanzmethoden/-variablen

Mehr

Informatik I Das Typsystem (am Bsp. Python vs. C++)

Informatik I Das Typsystem (am Bsp. Python vs. C++) Wozu Typen? Informatik I Das Typsystem (am Bsp. Python vs. C++) Sicherheit der Software (Internet, Atomanlagen, etc.) Wird die Platte formatiert, wenn man sich eine Webseite mit einem JPEG-Bild im Browser

Mehr

Informatik I Das Typsystem (am Bsp. Python vs. C++)

Informatik I Das Typsystem (am Bsp. Python vs. C++) Informatik I Das Typsystem (am Bsp. Python vs. C++) G. Zachmann Clausthal University, Germany zach@in.tu-clausthal.de Wozu Typen? Sicherheit der Software (Internet, Atomanlagen, etc.) Wird die Platte formatiert,

Mehr

III.1 Prinzipien der funktionalen Programmierung - 1 -

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

Mehr

Gliederung. n Teil I: Einleitung und Grundbegriffe. n Teil II: Imperative und objektorientierte Programmierung

Gliederung. n Teil I: Einleitung und Grundbegriffe. n Teil II: Imperative und objektorientierte Programmierung Gliederung n Teil I: Einleitung und Grundbegriffe l 1. Organisatorisches l 2. Grundlagen von Programmiersprachen n Teil II: Imperative und objektorientierte Programmierung l 1. Grundelemente der Programmierung

Mehr

Programmierparadigmen

Programmierparadigmen Programmierparadigmen Paradigma = Denkweise oder Art der Weltanschauung klassische Einteilung: Programmiersprache imperativ deklarativ prozedural objektorientiert funktional logisch Zusammenhänge tatsächlich

Mehr

Programmierparadigmen A01 OOP. Programmierparadigmen

Programmierparadigmen A01 OOP. Programmierparadigmen 2013-10-09 Programmierparadigmen 1 185.A01 OOP Programmierparadigmen 2013-10-09 Programmierparadigmen 2 OOP Klassische Programmierparadigmen Paradigma = Denkweise oder Art der Weltanschauung klassische

Mehr

Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 2. Teil

Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 2. Teil MÜNSTER Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++ 2. Teil 18. April 2012 Organisatorisches MÜNSTER Übung zur Vorlesung Wissenschaftliches

Mehr

Definitionen/Vorarbeit zum Thema Java

Definitionen/Vorarbeit zum Thema Java Definitionen/Vorarbeit zum Thema Java Programmiersprachen: System von Wörtern und Symbolen, die zur Formulierung von Programmen für die elektronische Datenverarbeitung verwendet werden. Arten: z.b. Javascript

Mehr

Begleittext: Einführung in das Programmieren in Java für Nichtinformatiker

Begleittext: Einführung in das Programmieren in Java für Nichtinformatiker Begleittext: Einführung in das Programmieren in Java für Nichtinformatiker Andreas Keese Institut f. Wissenschaftliches Rechnen TU Braunschweig 8. September 2014 Der Text, die Abbildungen und Programme

Mehr

Projekt 3 Variablen und Operatoren

Projekt 3 Variablen und Operatoren Projekt 3 Variablen und Operatoren Praktisch jedes Programm verarbeitet Daten. Um mit Daten programmieren zu können, muss es Möglichkeiten geben, die Daten in einem Programm zu verwalten und zu manipulieren.

Mehr

Einführung in die Objektorientierung (OO)

Einführung in die Objektorientierung (OO) Einführung in die Objektorientierung (OO) I) Warum OO? II) Grundbegriffe der OO III) IV) Darstellung von Klassen und Objekten Kapselung I) Warum OO? 1) Früher: Prozedurale / strukturierte Programmierung

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Objektorientierte Programmierung Objektorientierte Programmierung Ronja Düffel WS2018/19 09. Oktober 2018 Objektorientierte Programmierung Überblick 1 Was ist das? 2 Wie geht das? 3 Warum gibt es das?

Mehr

Einführung in die Informatik I (autip)

Einführung in die Informatik I (autip) Einführung in die Informatik I (autip) Dr. Stefan Lewandowski Fakultät 5: Informatik, Elektrotechnik und Informationstechnik Abteilung Formale Konzepte Universität Stuttgart 24. Oktober 2007 Was Sie bis

Mehr

Kapitel 4. Programmierkurs. Datentypen. Arten von Datentypen. Wiederholung Kapitel 4. Birgit Engels, Anna Schulze WS 07/08

Kapitel 4. Programmierkurs. Datentypen. Arten von Datentypen. Wiederholung Kapitel 4. Birgit Engels, Anna Schulze WS 07/08 Kapitel 4 Programmierkurs Birgit Engels, Anna Schulze Wiederholung Kapitel 4 ZAIK Universität zu Köln WS 07/08 1 / 23 2 Datentypen Arten von Datentypen Bei der Deklaration einer Variablen(=Behälter für

Mehr

3. Java - Sprachkonstrukte I

3. Java - Sprachkonstrukte I Lernziele 3. Java - Sprachkonstrukte I Namen und Bezeichner, Variablen, Zuweisungen, Konstanten, Datentypen, Operationen, Auswerten von Ausdrücken, Typkonversionen Sie kennen die grundlegensten Bausteine

Mehr

Klassen als Objekte. Smalltalk vs. Objective-C. Self-Nachrichten an Klassen in Objective-C. Klassen als Objekte. Smalltalk: Everything is an object

Klassen als Objekte. Smalltalk vs. Objective-C. Self-Nachrichten an Klassen in Objective-C. Klassen als Objekte. Smalltalk: Everything is an object Smalltalk vs. Objective-C Klassen als Objekte Klassendeklarationen Selektoren als first-class values Objekt-Erzeugung Implementierung: Eigene VM vs. Einbettung in C Smalltalk: Everything is an object Klassen

Mehr

Einführung in die Programmierung

Einführung in die Programmierung Einführung in die Programmierung by André Karge Übung - Operatoren, Methoden, Primitives 25. Oktober 2018 Einführung in die Programmierung WS18/19 André Karge 1/29 Notizen Standard Linux Befehle: http://images.linoxide.com/linux-cheat-sheet.pdf

Mehr

1. Referenzdatentypen: Felder und Strings. Referenz- vs. einfache Datentypen. Rückblick: Einfache Datentypen (1) 4711 r

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

Mehr

1. Referenzdatentypen: Felder und Strings

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

Mehr

Kapitel 2: Python: Ausdrücke und Typen. Grundlagen der Programmierung 1. Holger Karl. Wintersemester 2016/2017. Inhaltsverzeichnis 1

Kapitel 2: Python: Ausdrücke und Typen. Grundlagen der Programmierung 1. Holger Karl. Wintersemester 2016/2017. Inhaltsverzeichnis 1 Kapitel 2: Python: Ausdrücke und Typen Grundlagen der Programmierung 1 Holger Karl Wintersemester 2016/2017 Inhaltsverzeichnis Inhaltsverzeichnis 1 Abbildungsverzeichnis 2 Liste von Definitionen u.ä. 2

Mehr

Praxisbuch Objektorientierung

Praxisbuch Objektorientierung Bernhard Lahres, Gregor Rayman Praxisbuch Objektorientierung Von den Grundlagen zur Umsetzung Galileo Press 1.1 Was ist Objektorientierung? 11 1.2 Hallo liebe Zielgruppe 12 1.3 Was bietet dieses Buch (und

Mehr

1 Bindung. 2 Typen. Prof. Dr. Dr. h.c. Gerhard Goos (IPD) Höhere Programmiersprachen Wintersemester 2005/ / 89

1 Bindung. 2 Typen. Prof. Dr. Dr. h.c. Gerhard Goos (IPD) Höhere Programmiersprachen Wintersemester 2005/ / 89 1 Bindung 2 Typen Prof. Dr. Dr. h.c. Gerhard Goos (IPD) Höhere Programmiersprachen Wintersemester 2005/2006 31 / 89 Bindung Zwei Formen der Bindung Bedeutung Zuordnung (freie) Variable (Bezeichner) zu

Mehr

Das 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 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

Mehr

13 Abstrakte Datentypen

13 Abstrakte Datentypen 13 Abstrakte Datentypen Bisher: Konkrete Datentypen Menge von Elementen Operationen auf den Elementen (Konstruktoren, Selektoren, Typprädikate) Eigenschaften abgeleitet Jetzt: Abstrakte Datentypen (ADT)

Mehr

Auf einen Blick. 1 Einleitung Die Basis der Objektorientierung Die Prinzipien des objektorientierten Entwurfs...

Auf einen Blick. 1 Einleitung Die Basis der Objektorientierung Die Prinzipien des objektorientierten Entwurfs... Auf einen Blick Auf einen Blick 1 Einleitung... 15 2 Die Basis der Objektorientierung... 29 3 Die Prinzipien des objektorientierten Entwurfs... 41 4 Die Struktur objektorientierter Software... 67 5 Vererbung

Mehr

Entwurfsmuster (Design Patterns)

Entwurfsmuster (Design Patterns) Entwurfsmuster (Design Patterns) SEP 303 Entwurfsmuster (Design Patterns) In der alltäglichen Programmierarbeit tauchen viele Probleme auf, die man schon einmal gelöst hat und die man in der Zukunft wieder

Mehr

Programmiersprachen und Übersetzer

Programmiersprachen 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

Objektorientierte Programmierung II

Objektorientierte Programmierung II Objektorientierte Programmierung II OOP I Erlaubt Entwicklers, im Problemraum zu denken und zu arbeiten. Das Problem wird in eine Menge von Objekten zerlegt. Objekte wirken aufeinander, um das Problem

Mehr

Objektorientierte Programmierung. Kapitel 22: Aufzählungstypen (Enumeration Types)

Objektorientierte Programmierung. Kapitel 22: Aufzählungstypen (Enumeration Types) Stefan Brass: OOP (Java), 22. Aufzählungstypen 1/20 Objektorientierte Programmierung Kapitel 22: Aufzählungstypen (Enumeration Types) Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester

Mehr

Kapitel 4. Programmierkurs. Datentypen. Arten von Datentypen. Datentypen und Operatoren Ganzzahlige Numerische Datentypen Logischer Datentyp

Kapitel 4. Programmierkurs. Datentypen. Arten von Datentypen. Datentypen und Operatoren Ganzzahlige Numerische Datentypen Logischer Datentyp Kapitel 4 Programmierkurs Birgit Engels, Anna Schulze Datentypen und Operatoren Ganzzahlige Numerische Datentypen Logischer Datentyp ZAIK Universität zu Köln WS 07/08 1 / 6 Datentypen Arten von Datentypen

Mehr

3. Java - Sprachkonstrukte I

3. Java - Sprachkonstrukte I 84 3. Java - Sprachkonstrukte I Namen und Bezeichner, Variablen, Zuweisungen, Konstanten, Datentypen, Operationen, Auswerten von Ausdrücken, Typkonversionen Namen und Bezeichner 85 Ein Programm (also Klasse)

Mehr

3. Java - Sprachkonstrukte I

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

Funktionale Programmiersprachen

Funktionale Programmiersprachen Funktionale Programmiersprachen An den Beispielen Haskell und Erlang Übersicht Programmiersprachen λ-kalkül Syntax, Definitionen Besonderheiten von funktionalen Programmiersprache, bzw. Haskell Objektorientierte

Mehr

C++ - Objektorientierte Programmierung Konstante und statische Elemente

C++ - 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

Mehr

Einführung in die Programmierung

Einführung in die Programmierung Einführung in die Programmierung Teil 3: Daten und Algorithmen Prof. Dr. Peer Kröger, Florian Richter, Michael Fromm Wintersemester 2018/2019 Übersicht 1. Datendarstellung durch Zeichenreihen 2. Syntaxdefinitionen

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 25 Einstieg in die Informatik mit Java Objektorientierte Programmierung und Klassen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 25 1 Die Philosophie 2 Definition

Mehr

Einführung in die Programmiersprache Java II

Einführung in die Programmiersprache Java II Einführung in die Programmiersprache Java II ??????????? UML OOP "Object oriented programming is bad" - professional retard 90s... UML Entwicklungsziele verschiedenen existierenden objektorienten Modellierungsmethoden

Mehr

Java I Vorlesung Imperatives Programmieren

Java 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

Java Datentypen und Variablen

Java Datentypen und Variablen Informatik 1 für Nebenfachstudierende Grundmodul Java Datentypen und Variablen Kai-Steffen Hielscher Folienversion: 24. Januar 2017 Informatik 7 Rechnernetze und Kommunikationssysteme Inhaltsübersicht

Mehr

Überblick. 6. Konstruktor und Destruktor - obligatorische Elementfunktionen einer Klasse

Überblick. 6. Konstruktor und Destruktor - obligatorische Elementfunktionen einer Klasse Ü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

Mehr

Operatoren in C/C++ und Java:

Operatoren in C/C++ und Java: Operatoren in C/C++ und Java: C/C++/Java hat eine riesige Anzahl von Operatoren (im Vergleich zu anderen Programmiersprachen). Außer den üblichen arithmetischen Operatoren +, -, *, / (und % für Ganzzahlen)

Mehr

PROCESSING EINE ZUSAMMENFASSUNG. Created by Michael Kirsch & Beat Rossmy

PROCESSING EINE ZUSAMMENFASSUNG. Created by Michael Kirsch & Beat Rossmy PROCESSING EINE ZUSAMMENFASSUNG Created by Michael Kirsch & Beat Rossmy INHALT 1. Typen und Operatoren 1. Datentypen 3. Klassen und Objekte 1. Klassen und Objekte 2. Operatoren 2. Konstruktor 3. Typkonversion

Mehr

Programmiersprache. Emily & rica

Programmiersprache. Emily & rica Programmiersprache Emily & rica inhaltsangabe Programmiersprache Def inition/funktion Arten Gängige Algorithmus/Syntax Compiler, Interpreter Def inition Unterscheidung Vor- und Nachteile Compiler/ Interpreter

Mehr

Spezifikation von Kommunikationssystemen

Spezifikation von Kommunikationssystemen 1 / 25 Spezifikation von Kommunikationssystemen 8. Abstrakte Datentypen und Objektorientiertes SDL Prof. Jochen Seitz Fachgebiet Kommunikationsnetze 23. Mai 2018 2 / 25 Übersicht 1 Abstrakte Datentypen

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Bernhard Lahres, Gregor Rayman Objektorientierte Programmierung Das umfassende Handbuch Galileo Press 1.1 Was ist Objektorientierung? 13 1.2 Hallo liebe Zielgruppe 14 1.3 Was bietet dieses Buch (und was

Mehr

OOP. Kapselung: Gruppierung von Daten und Funktionen als Objekte. Definieren eine Schnittstelle zu diesen Objekten.

OOP. Kapselung: Gruppierung von Daten und Funktionen als Objekte. Definieren eine Schnittstelle zu diesen Objekten. Polymorphismus OOP Kapselung: Gruppierung von Daten und Funktionen als Objekte. Definieren eine Schnittstelle zu diesen Objekten. Vererbung: Erlaubt Code zwischen verwandten Typen wiederverwendet sein.

Mehr

Objektorientierte Programmierung OOP

Objektorientierte Programmierung OOP Objektorientierte Programmierung OOP Objektorientierte Programmierung OOP Ronja Düffel Alina Stürck WS2016/17 11. Oktober 2016 Objektorientierte Programmierung OOP 1 Was ist das? 2 Wie geht das? 3 Warum

Mehr

ALGOL 68 im Aspekt einer modernen Programmiersprache???

ALGOL 68 im Aspekt einer modernen Programmiersprache??? ALGOL 68 im Aspekt einer modernen Programmiersprache??? General-purpose-Programmiersprache: Ein sehr wichtiges Kriterium ist die Möglichkeit, alle Algorithmen (=Lösungsverfahren) in einer Programmiersprache

Mehr

Datentypen. strukturierte. elementare. skalare reelle statische dynamische int. list. real float. set. record. inhomogen. homogen

Datentypen. strukturierte. elementare. skalare reelle statische dynamische int. list. real float. set. record. inhomogen. homogen Datentypen elementare strukturierte skalare reelle statische dynamische int real float list homogen set inhomogen record Der elementare Datentyp nat bestehend aus einer Objektmenge und den darauf definierten

Mehr

3. Klassen Statische Komponenten einer Klasse. Klassenvariablen

3. Klassen Statische Komponenten einer Klasse. Klassenvariablen Klassenvariablen Wir wollen die Zahl der instantiierten Studentenobjekte zählen. Dies ist jedoch keine Eigenschaft eines einzelnen Objektes. Vielmehr gehört die Eigenschaft zu der Gesamtheit aller Studentenobjekte.

Mehr

Übersicht. Vorstellung des OO-Paradigmas

Übersicht. Vorstellung des OO-Paradigmas Java, OO und UML Vorstellung des OO-Paradigmas Übersicht Umsetzung des OO-Paradigmas in Java Einführung (seeeeeehr rudimenter) in UML zur graphischen Darstellung von OO Grammatik und Semantik von Java

Mehr

Abstrakte Syntax von Prolog (1)

Abstrakte Syntax von Prolog (1) 3. Prolog Syntax 3-1 Abstrakte Syntax von Prolog (1) Abstrakte und konkrete Syntax: Abstrakte Syntax: Nur Datenstrukturen, die der Parser anlegt (z.b. Operatorbaum). Konkrete Syntax: Zeichenketten, die

Mehr

Inhaltsverzeichnis. 4.9 Aufgaben... 63

Inhaltsverzeichnis. 4.9 Aufgaben... 63 Inhaltsverzeichnis 1 Einleitung 1 1.1 Programmierung... 1 1.2 Objektorientierte Programmierung... 2 1.3 Voraussetzungen und Ziele dieses Buches... 3 1.4 Aufbau dieses Buches... 4 2 Das imperative Hamster-Modell

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 35 Einstieg in die Informatik mit Java Vererbung Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 35 1 Grundlagen 2 Verdeckte Variablen 3 Verdeckte Methoden 4 Konstruktoren

Mehr

Übungen zur Vorlesung Wissenschaftliches Rechnen I

Übungen zur Vorlesung Wissenschaftliches Rechnen I Übungen zur Vorlesung Wissenschaftliches Rechnen I Nicolas Gauger, René Lamour, Hella Rabus Wintersemester 2007/2008 Programmierung - Einführung Programmierung - Einführung Berechnung einer Formel y =

Mehr

Kapitel 2: Python: Ausdrücke und Typen. Grundlagen der Programmierung 1. Holger Karl. Wintersemester 2018/2018. Inhaltsverzeichnis 1

Kapitel 2: Python: Ausdrücke und Typen. Grundlagen der Programmierung 1. Holger Karl. Wintersemester 2018/2018. Inhaltsverzeichnis 1 Kapitel 2: Python: Ausdrücke und Typen Grundlagen der Programmierung 1 Holger Karl Wintersemester 2018/2018 Inhaltsverzeichnis Inhaltsverzeichnis 1 Abbildungsverzeichnis 2 Liste von Definitionen u.ä. 2

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 16 Einstieg in die Informatik mit Java Innere Klassen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 16 1 Einführung 2 Element-Klassen 3 Lokale Klassen 4 Anonyme Klassen

Mehr

Programmieren in Java

Programmieren in Java Einführung in die (imperative) Programmierung 2 Wiederholung: Allgemein Hohe Programmiersprache Compiler Interpreter Maschinensprache Zielsystem 3 Wiederholung: Java Java Compiler Bytecode JRE Just-In-Time

Mehr

Abschnitt 5: Grundlagen der funktionalen und imperativen Programmierung

Abschnitt 5: Grundlagen der funktionalen und imperativen Programmierung Abschnitt 5: Grundlagen der funktionalen und imperativen Programmierung 5. Grundlagen der funktionalen und imperativen Programmierung 5.1 Sorten und abstrakte Datentypen 5.2 5.3 in Java 5.4 EXKURS: Funktionale

Mehr

Abschnitt 2: Daten und Algorithmen

Abschnitt 2: Daten und Algorithmen Abschnitt 2: Daten und Algorithmen 2. Daten und Algorithmen 2.1 Zeichenreihen 2.2 Datendarstellung durch Zeichenreihen 2.3 Syntaxdefinitionen 2.4 Algorithmen 2 Daten und Algorithmen Einf. Progr. (WS 08/09)

Mehr

Programmiersprachen. Organisation und Einführung. Berthold Hoffmann. Studiengang Informatik Universität Bremen

Programmiersprachen. Organisation und Einführung. Berthold Hoffmann. Studiengang Informatik Universität Bremen Organisation und Einführung Studiengang Informatik Universität Bremen Sommersemester 2010 (Vorlesung am Montag, der 12. April 2010) (Montag, der 12. April 2008) 1 Vorstellung 2 Organisation 3 Einführung

Mehr

Objektorientierte Programmierung und Klassen

Objektorientierte Programmierung und Klassen Objektorientierte Programmierung und Klassen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 16.5.07 G. Bohlender (IANM UNI Karlsruhe) OOP

Mehr

8 Typwandlungen. 8.1 Automatische Typkonvertierungen

8 Typwandlungen. 8.1 Automatische Typkonvertierungen 8 Typwandlungen Hier geben wir Ihnen weitere Informationen zu Goto Java 2, die Sie ergänzend zu Hausaufgabe 3 lesen sollten. Sie sollten für die weiteren Ausführungen zunächst in Go To Java Kapitel 4.6

Mehr

1 Programmiersprachen 1.1 1

1 Programmiersprachen 1.1 1 1 Programmiersprachen 1.1 1 Meilensteine imperativer Programmiersprachen (teilweise objektorientiert) Fortran 1960 Cobol Algol 60 PL/I Algol W Simula 67 Algol 68 1970 Pascal C Smalltalk Modula 1980 Ada

Mehr

Einführung in die Programmierung mit VBA

Einführung in die Programmierung mit VBA Einführung in die Programmierung mit VBA Vorlesung vom 07. November 2016 Birger Krägelin Inhalt Vom Algorithmus zum Programm Programmiersprachen Programmieren mit VBA in Excel Datentypen und Variablen

Mehr

Compilerbau für die Common Language Run-Time

Compilerbau 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,

Mehr

Informatik I: Einführung in die Programmierung 3. Werte, Typen, Variablen und Ausdrücke

Informatik I: Einführung in die Programmierung 3. Werte, Typen, Variablen und Ausdrücke Informatik I: Einführung in die Programmierung 3. Werte,, n und Albert-Ludwigs-Universität Freiburg Peter Thiemann 30. Oktober 2018 1 30. Oktober 2018 P. Thiemann Info I 3 / 39 Bits Der Computer repräsentiert

Mehr

Abstrakte Datentypen. Daten und Operationen Mögliche Implementierungen Veränderbare Typen, Ergebnistypen

Abstrakte Datentypen. Daten und Operationen Mögliche Implementierungen Veränderbare Typen, Ergebnistypen Abstrakte Datentypen Daten und Operationen Mögliche Implementierungen Veränderbare Typen, Ergebnistypen Einheit von Daten und Operationen Daten und Operationen auf Daten gehören zusammen Konto: Daten:

Mehr

Das Interface-Konzept am Beispiel der Sprache Java

Das Interface-Konzept am Beispiel der Sprache Java Das Interface-Konzept am Beispiel der Sprache Java Klaus Kusche, November 2013 Inhalt Motivation: Wozu braucht man Interfaces? Interfaces in Java Was spricht gegen die große Lösung? Voraussetzungen Kenntnisse

Mehr

Abschnitt 5: Grundlagen der funktionalen Programmierung

Abschnitt 5: Grundlagen der funktionalen Programmierung Abschnitt 5: Grundlagen der funktionalen Programmierung 5. Grundlagen der funktionalen Programmierung 5.1 Sorten und abstrakte Datentypen 5.2 5.3 in Java 5.4 Funktionale Algorithmen Peer Kröger (LMU München)

Mehr

Überblick. R.Grossmann / P. Sobe 1

Ü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

Mehr

Schwerpunkte. 8. Ausdrücke, Operatoren (einfache Typen) Beispiel: Schaltjahr Test. Einführendes Beispiel: Grundprobleme

Schwerpunkte. 8. Ausdrücke, Operatoren (einfache Typen) Beispiel: Schaltjahr Test. Einführendes Beispiel: Grundprobleme Schwerpunkte Vollständige und unvollständige Auswertung 8. Ausdrücke, Operatoren (einfache Typen) Teil 1 Seiteneffekte Overloading: Überladung von Operatoren Implizite und explizite (cast) Typumwandlung

Mehr

Innere Klassen. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java

Innere Klassen. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java Innere Klassen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 13.06.07 G. Bohlender (IANM UNI Karlsruhe) Innere Klassen 13.06.07 1 / 11

Mehr

Inhaltsverzeichnis. Kurseinheit 1. Kurseinheit 2

Inhaltsverzeichnis. Kurseinheit 1. Kurseinheit 2 iii Inhaltsverzeichnis Kurseinheit 1 1 Von der Aufgabenstellung zum Programm... 1 1.1 Motivation... 1 1.2 Softwareentwicklung... 2 1.3 EXKURS: Unified Modeling Language (UML)... 4 2 Anforderungsanalyse...

Mehr

Einstieg in die Informatik mit Java

Einstieg 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

Mehr

Algorithmen und Datenstrukturen II

Algorithmen und Datenstrukturen II Algorithmen und Datenstrukturen II in JAVA D. Rösner Institut für Wissens- und Sprachverarbeitung Fakultät für Informatik Otto-von-Guericke Universität Magdeburg Sommer 2009, 4. Mai 2009, c 2009 D.Rösner

Mehr

Inhaltsverzeichnis. Vorwort

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

Mehr

EIGENSCHAFTEN VON SPRACHEN

EIGENSCHAFTEN VON SPRACHEN Vorlesung und Übung Universität Paderborn Wintersemester 2016/2017 Dr. Peter Pfahler EIGENSCHAFTEN VON SPRACHEN EWS, WS 2016/17, Pfahler C-1 Einführung Sprachen in der Informatik werden für bestimmte Zwecke

Mehr

Klassenmethoden. Klassenvariablen. Für das Auslesen des Studentenzählers definieren wir eine öffentliche Klassenmethode:

Klassenmethoden. Klassenvariablen. Für das Auslesen des Studentenzählers definieren wir eine öffentliche Klassenmethode: Klassenvariablen Klassenmethoden Wir wollen die Zahl der instantiierten Studentenobjekte zählen. Dies ist jedoch keine Eigenschaft eines einzelnen Objektes. Vielmehr gehört die Eigenschaft zu der Gesamtheit

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Dipl. Inform. Andreas Wilkens aw@awilkens.com Überblick Grundlagen Definitionen Eigene Entwicklungen Datenstrukturen Elementare Datentypen Abstrakte Datentypen Elementare

Mehr

Gliederung. Algorithmen und Datenstrukturen II. Java: Objektorientierung. Java: Objektorientierung. Objektorientierung in JAVA. D.

Gliederung. Algorithmen und Datenstrukturen II. Java: Objektorientierung. Java: Objektorientierung. Objektorientierung in JAVA. D. Gliederung Algorithmen und Datenstrukturen II in JAVA D. Rösner Institut für Wissens- und Sprachverarbeitung Fakultät für Informatik Otto-von-Guericke Universität Magdeburg Sommer 2009, 4. Mai 2009, c

Mehr

Objektorientierung. Klassen und Objekte. Dr. Beatrice Amrhein

Objektorientierung. Klassen und Objekte. Dr. Beatrice Amrhein Objektorientierung Klassen und Objekte Dr. Beatrice Amrhein Überblick Konzepte der Objektorientierten Programmierung Klassen und Objekte o Implementierung von Klassen o Verwendung von Objekten 2 Konzepte

Mehr

Kapitel 15: Von dynamischen zu statischen Typen. Grundlagen der Programmierung 1. Holger Karl. Wintersemester 2018/2018. Inhaltsverzeichnis 1

Kapitel 15: Von dynamischen zu statischen Typen. Grundlagen der Programmierung 1. Holger Karl. Wintersemester 2018/2018. Inhaltsverzeichnis 1 Kapitel 15: Von dynamischen zu statischen Typen Grundlagen der Programmierung 1 Holger Karl Wintersemester 2018/2018 Inhaltsverzeichnis Inhaltsverzeichnis 1 Abbildungsverzeichnis 2 Liste von Definitionen

Mehr

2. JAVA-Programmierung. Informatik II für Verkehrsingenieure

2. JAVA-Programmierung. Informatik II für Verkehrsingenieure 2. JAVA-Programmierung Informatik II für Verkehrsingenieure Problem-Algorithmus-Umsetzung Problemstellung Algorithmus Umsetzung 2 Beispiele für Algorithmen 3 Definitionsversuch Algorithmus Anleitung, wie

Mehr

Abschnitt 10: Typisierte Klassen

Abschnitt 10: Typisierte Klassen Abschnitt 10: Typisierte Klassen 10. Typisierte Klassen 10.1 Einführung: Grenzen der Typ-Polymorphie durch Vererbung 10.2 Grundlagen 10.3 Vererbung bei typisierten Klassen 10.4 Wildcards, obere und untere

Mehr

SPARK95. Ingmar Wirths. 12. Juli 2007

SPARK95. Ingmar Wirths. 12. Juli 2007 SPARK95 Ingmar Wirths 12. Juli 2007 Motivation Ada wurde zur Programmierung von Mikroprozessoren entwickelt. Motivation Ada wurde zur Programmierung von Mikroprozessoren entwickelt. Ein Systemversagen

Mehr

Programmierung in C/C++

Programmierung 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

Mehr

OOP und Angewandte Mathematik. Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik

OOP und Angewandte Mathematik. Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik WS 2011/12 Inhalt Test-Besprechung! Ziele verdeutlichen Große Bild von OOP Wiederholung: Einbettung als Technik

Mehr

Interdisziplinäre fachdidaktische Übung: Modelle für Sprachen in der Informatik. SS 2016: Grossmann, Jenko

Interdisziplinäre fachdidaktische Übung: Modelle für Sprachen in der Informatik. SS 2016: Grossmann, Jenko Interdisziplinäre fachdidaktische Übung: Modelle für Sprachen in der SS 2016: Grossmann, Jenko Die Beschreibung orientiert sich am Begriffssystem der Beschreibung natürlicher Sprachen Sprache in der steht

Mehr