Abschnitt 6: Grundlagen der imperativen Programmierung

Größe: px
Ab Seite anzeigen:

Download "Abschnitt 6: Grundlagen der imperativen Programmierung"

Transkript

1 Abschnitt 6: Grundlagen der imperativen Programmierung 6. Grundlagen der imperativen Programmierung Prozeduraufrufe 6.3 Variablen, Anweisungen und Prozeduren in Java 6.4 Bedingte Anweisungen und Iteration 6.5 Reihungen (Arrays) 6.6 Zeichenketten (Strings) 6.7 Strukturierung von Programmen 6.8 Zusammenfassung und Beispiele Peer Kröger (LMU München) Einführung in die Programmierung WS 16/ / 745

2 Überblick 6. Grundlagen der imperativen Programmierung Prozeduraufrufe 6.3 Variablen, Anweisungen und Prozeduren in Java 6.4 Bedingte Anweisungen und Iteration 6.5 Reihungen (Arrays) 6.6 Zeichenketten (Strings) 6.7 Strukturierung von Programmen 6.8 Zusammenfassung und Beispiele Peer Kröger (LMU München) Einführung in die Programmierung WS 16/ / 745

3 Road Map Wir wenden uns jetzt dem imperativen Paradigma zu. Zur Erinnerung: imperative Algorithmen werden typischerweise als Folge von Anweisungen formuliert. Diese Anweisung haben meist Nebeneffekte, bei denen Größen (meist in Form von Variablen) geändert werden. Wir werden sehen, dass einiger der funktionalen Konzept der vergangenen Kapitel entsprechende imperative Pendants haben, bzw. dass sich funktionale und imperative Konzepte sehr gut miteinander vereinbaren lassen. Wir verwenden wie vorher wieder eine Pseudo-Sprache, um die Konzepte zu erklären und sehen uns dann deren Umsetzung in Java an. Peer Kröger (LMU München) Einführung in die Programmierung WS 16/ / 745

4 Variablen Im vorherigen Kapitel haben wir Ausdrücke nur mit Operationssymbolen (Literale und mehrstelligen Operatoren) gebildet; als Variablen haben wir nur die Eingabevariablen der Algorithmen (Funktionen) zugelassen. Diese Einschränkung über der Menge der für Ausdrücke zur Verfügung stehenden Variablen V geben wir jetzt auf: Wir erlauben nun auch weitere Variablen in Ausdrücken, allerdings müssen diese vorher vereinbart, also bekannt, sein. Peer Kröger (LMU München) Einführung in die Programmierung WS 16/ / 745

5 Variablen Wozu sind Variablen gut? Betrachten wir als Beispiel folgenden (in funktionaler Darstellung) angegebenen Algorithmus: Berechne die Funktion f (x) für x 1 mit f : R R gegeben durch f (x) = ( x ) 2 für x 1 x + 1 Eine imperative Darstellung erhält man z.b. durch Aufteilung der Funktionsdefinition in mehrere Anweisungen, die nacheinander auszuführen sind: y 1 = x + 1; y 2 = y y 1 ; y 3 = y 2 y 2; f (x) =y 3. Peer Kröger (LMU München) Einführung in die Programmierung WS 16/ / 745

6 Variablen Intuition des Auswertungsvorgangs der imperativen Darstellung: y1, y 2 und y 3 repräsentieren drei Zettel. Auf diese Zettel werden der Reihe nach Rechenergebnisse geschrieben (Werte verändert Nebeneffekte). Bei Bedarf wird der Wert auf dem Zettel abgelesen. Formal steckt hinter dieser Intuition eine Substitution: x wird beim Aufruf der Funktion wie bisher durch den Eingabewert substituiert. y1 wird mit dem Wert des Ausdrucks x + 1 substituiert wobei x bereits substituiert wurde (der Wert von y 1 ist damit beim Aufruf von f wohldefiniert). Mit y2 und y 3 kann man analog verfahren. Peer Kröger (LMU München) Einführung in die Programmierung WS 16/ / 745

7 Variablen und Konstanten Bei genauerer Betrachtung: Nachdem der Wert von y1 zur Berechnung von y 2 benutzt wurde, wird er im folgenden nicht mehr benötigt. Eigentlich könnte der Zettel nach dem Verwenden (Ablesen). radiert und für die weiteren Schritte wiederverwendet werden In diesem Fall kämen wir mit einem Zettel y aus: y = x + 1; y = y + 1 ; y y = y y; f (x) =y. Peer Kröger (LMU München) Einführung in die Programmierung WS 16/ / 745

8 Variablen und Konstanten, Anweisungen Beobachtung 1: Es gibt also offenbar radierbare Zettel (Variablen) und nicht-radierbare Zettel (Konstanten 10 ). Beobachtung 2: Der Wert von f wurde jetzt nicht durch einen (auswertbaren) Ausdruck angegeben, sondern durch eine Menge von Anweisungen, die sequentiell abzuarbeiten sind. Das ist genau genommen ein imperativer Algorithmus, den wir nun als Prozedur (imperatives Pendant zur Funktion) darstellen. 10 Nicht zu verwechseln mit Literalen! Peer Kröger (LMU München) Einführung in die Programmierung WS 16/ / 745

9 Prozeduren In unserer Modul-Schreibweise (Pseudo-Sprache) würden wir diese Prozedur für f wie folgt notieren: Mit mehreren Variablen: procedure fberechnen1(x : R) R output Berechnung der Funktion f pre x 1 body var y 1, y 2, y 3 R; y 1 x + 1; y 2 y 1 + 1/y 1; y 3 y 2 y 2; return y 3; Mit einer Variablen: procedure fberechnen2(x : R) R; output Berechnung der Funktion f pre x 1 body var y R y x + 1; y y + 1/y; y y y; return y; In beiden Algorithmen benutzen wir wieder eine implizite Sortenanpassung. Peer Kröger (LMU München) Einführung in die Programmierung WS 16/ / 745

10 Prozeduren Der einzige Unterschied zu unseren bisherigen Fuktionen: Der Name procedure anstelle von function zeigt an, dass es sich um eine Prozedur, also einem imperativen Algorithmus handelt (alles andere von Signatur über Eingabevariablen gilt analog). Im Prozedur-Rumpf (nach body) stehen jetzt eine Menge von Anweisungen. Bei diesen Anweisung handelt es sich um Anweisungen mit Variablen (wir erlauben Analoges mit Konstanten siehe folgende Folien). Die letzte Anweisung beginnt mit dem Schlüsselwort return, gefolgt von einem Ausdruck a; dies bedeutet, dass der Wert von a als Ergebnis der Prozedur zurück gegeben werden soll. Peer Kröger (LMU München) Einführung in die Programmierung WS 16/ / 745

11 Anweisungen mit Variablen und Konstanten Variablen und Konstanten können deklariert werden, z.b. var y 1, y 2, y 3 R in fberechnen1 bzw. var y R in fberechnen2. Intuitiv wird dabei ein leerer Zettel (Speicherzelle) angelegt. Formal bedeutet die Deklaration einer Variablen/Konstanten v, dass der Bezeichner v zu der Menge der zur Verfügung stehenden Variablen V, die wir in Ausdrücken (im Rumpf) verwenden dürfen, hinzugefügt wird. Der Typ der Variable muss bei der Deklaration angegeben werden. Um anzuzeigen, dass wir Konstanten deklarieren, verwenden wir das Schlüsselwort const statt var. Wir fassen Variablen- und Konstantendeklarationen formal ebenfalls als Anweisungen auf. Peer Kröger (LMU München) Einführung in die Programmierung WS 16/ / 745

12 Anweisungen mit Variablen und Konstanten Achtung: Variablen sind (bei uns) Ausdrücke und haben daher (bei uns) einen Typ! Besonderheit: Wir fordern, dass zu Beginn einer Prozedur alle Variablen bekannt gemacht werden müssen (das ist nicht in allen Programmiersprachen so, bspw. auch in Java nicht; es erleichtert uns aber das Leben etwas die nachfolgenden Formalisierungen sind aber leicht erweiterbar). Damit enthält die Menge V der in Ausdrücke im Prozedurrumpf erlaubten Variablen alle Eingabe-Variablen (im Prozedurkopf) und alle im Rumpf unter var deklarierten Variablen bzw. unter const deklarierten Konstanten. Peer Kröger (LMU München) Einführung in die Programmierung WS 16/ / 745

13 Anweisungen mit Variablen und Konstanten Deklarierte Variablen und Konstanten können intialisiert werden, d.h. erstmalig einen (Wert eines) Ausdruck(s) zugewiesen bekommen, z.b. y 1 x + 1 in fberechnen1 oder y x + 1 in fberechnen2. Intuitiv wird ein Wert auf den Zettel (in die Speicherzelle) geschrieben. Dadurch wird der Variablen/Konstanten v V der Wert eines Ausdrucks a zugewiesen (dies nennt man auch Wertzuweisung). Formal bedeutet dies, dass v durch a substituiert wird, d.h. [v/a] Die Schreibweise x y weist also der Variablen/Konstanten x den Wert des Ausdrucks y zu; wir fordern sinnvollerweise, dass x und y den selben Typ haben. Peer Kröger (LMU München) Einführung in die Programmierung WS 16/ / 745

14 Variablen und Konstanten Der Wert einer Variablen kann später auch noch durch eine weitere Wertzuweisung an einen Ausdruck (mit gleichem Typ) verändert werden, z.b. y 1/y in fberechnen2. Dabei kann man auch auf den alten Wert des Zettels zurückgreifen (ihn vor dem radieren ablesen und sich merken), d.h. der neue Wert kann vom alten abhängig sein. Intuitiv wird der alte Wert auf dem Zettel radiert und der Wert des neuen Ausdrucks auf den Zettel geschrieben. Formal also eine erneute Substitution. Konstanten können nur einmal verändert (initialisiert) werden. Variablen können beliebig oft durch Wertzuweisungen verändert werden. Peer Kröger (LMU München) Einführung in die Programmierung WS 16/ / 745

15 Variablen und Konstanten in Java Wir illustrieren noch kurz die Verwendung von Konstanten an der Funktion f von oben. In der Variante f 1 könnten wir y 1, y 2, y 3 auch als Konstanten verwenden, da sie nur einmal initialisiert und dannach nicht mehr verändert werden: Mit Konstanten: procedure fberechnen3(x : R) R output Berechnung der Funktion f pre x 1 body const y 1, y 2, y 3 R; y 1 x + 1; y 2 y 1 + 1/y 1; y 3 y 2 y 2; return y 3; Mit Variablen und Konstanten: procedure fberechnen4(x : R) R; output Berechnung der Funktion f pre x 1 body var v R; const c R; v x + 1; v v + 1/v; c v v; return c; Peer Kröger (LMU München) Einführung in die Programmierung WS 16/ / 745

16 Funktionen und Prozeduren Nochmal allgemein der Zusammenhang Prozedur/Funktion: Die Prozedur dient (ähnlich wie die Funktion) zur Abstraktion von Algorithmen (genauer: von den einzelnen Schritten eines Algorithmus). Wie bei Funktionen wird durch Parametrisierung von der Identität der Daten abstrahiert: die Berechnungsvorschriften werden mit abstrakten (Eingabe-) Parametern (Variablen) formuliert, so wie bei Funktionen der Rumpf mit den (Eingabe-) Parametern gebildet wurde. konkrete Eingabedaten bilden die aktuellen (Parameter-) Werte mit denen die Eingabedaten dann beim Aufruf substituiert werden. Durch Spezifikation des (Ein- / Ausgabe-) Verhaltens wird von den Implementierungsdetails abstrahiert. Peer Kröger (LMU München) Einführung in die Programmierung WS 16/ / 745

17 Funktionen und Prozeduren Vorteile der Abstraktion durch Prozeduren: Örtliche Eingrenzung (Locality): Die Implementierung einer Abstraktion kann verstanden oder geschrieben werden, ohne die Implementierungen (also die einzelnen Anweisungen) anderer Abstraktionen kennen zu müssen. Änderbarkeit (Modifiability): Jede Abstraktion kann reimplementiert (z.b. die Anweisungen verändert) werden, ohne dass andere Abstraktionen geändert werden müssen. Wiederverwendbarkeit (Reusability): Die Implementierung einer Abstraktion kann beliebig wiederverwendet werden. Peer Kröger (LMU München) Einführung in die Programmierung WS 16/ / 745

18 Funktionen und Prozeduren Funktionen und Prozeduren haben also gewisse Gemeinsamkeiten, aber: eine Funktion kann man als Prozedur bezeichnen, nicht jede Prozedur ist jedoch eine Funktion. Eine Funktion stellt nur eine Abbildung von Elementen aus dem Definitionsbereich auf Elemente aus dem Bildbereich dar, es werden aber keine Werte verändert. Im imperativen Paradigma können Werte von Variablen verändert werden (durch Anweisungen), dies kann Effekte auf andere Bereiche eines Programmes haben. Treten in einer Prozedur solche sog. Seiteneffekte (oder Nebeneffekte) auf, kann man nicht mehr von einer Funktion sprechen. Eine Funktion kann man also als eine Prozedur ohne Seiteneffekte auffassen. Peer Kröger (LMU München) Einführung in die Programmierung WS 16/ / 745

19 Funktionen und Prozeduren Das beliebte erste Beispiel für ein Java Programm verwendet übrigens eine Prozedur main in einem Modul HelloWorld: public class HelloWorld { } public static void main(string[] args) { System.out.println("Hello, World!"); } Der Seiteneffekt ist die Ausgabe von "Hello World!" auf der Kommandozeile. Peer Kröger (LMU München) Einführung in die Programmierung WS 16/ / 745

20 Prozeduraufrufe Überblick 6. Grundlagen der imperativen Programmierung Prozeduraufrufe 6.3 Variablen, Anweisungen und Prozeduren in Java 6.4 Bedingte Anweisungen und Iteration 6.5 Reihungen (Arrays) 6.6 Zeichenketten (Strings) 6.7 Strukturierung von Programmen 6.8 Zusammenfassung und Beispiele Peer Kröger (LMU München) Einführung in die Programmierung WS 16/ / 745

21 Prozeduraufrufe Prozeduraufrufe Genauso wie bei Funktionen stellt sich auch für die Prozeduren die Frage: was passiert, wenn eine Prozedur mit konkreten (Eingabe-Werten) ausgeführt wird, also die Anweisungen im Rumpf der Prozedur ausgeführt werden? In unserem Beispiel also: was passiert, wenn z.b. die Prozedur fberechnen1 mit dem Wert 3.0 also fberechnen1(3.0) aufgerufen wird? Wir klären diese Frage zunächst wieder informell mit unserer Intuition, dass eine Variable/Konstante ein Zettel ist. Peer Kröger (LMU München) Einführung in die Programmierung WS 16/ / 745

22 Prozeduraufrufe Prozeduraufrufe Offenbar bewirkt eine Anweisung eine Veränderung des Zustands indem sich ein Programm (in Ausführung) gerade befindet. Eine Wertzuweisung an eine Variable z.b. verändert den Zustand so, dass die Variable einen neuen Wert bekommt (also ab jetzt neu substituiert wird). Stellt sich noch die Frage, wie so ein Zustand aussehen kann: intuitiv besteht ein Zustand aus der Menge an Zetteln, die anfangs vereinbart wurden Wenn wir Deklarationen zu beliebigen Zeitpunkten im Rumpf zulassen würden, entsprechen alle Zettel, die bis zu dem entspr. Zeitpunkt deklariert wurden. Peer Kröger (LMU München) Einführung in die Programmierung WS 16/ / 745

23 Prozeduraufrufe Zustände Formal ist ein Zustand (engl. State) eine Menge S von Paaren z =(x, d) mit folgenden Eigenschaften x ist eine Variable (x V), d.h. x ist ein Eingabeparameter (im Kopf der Prozedur), eine (unter const vereinbarte) Konstante, oder eine (unter var vereinbarte) Variable. x heißt Name oder Bezeichner von z. d ist ein Objekt der Sorte von x (oder undefiniert, notiert als ω) und heißt Inhalt von z. Die Menge S enthält keine zwei verschiedenen Paare (x, d1) und (x, d 2) mit gleichem Namen x. Ein Paar (x, d) formalisiert das Bild eines Zettels x auf dem der Wert d steht. (x,ω) kann als leerer Zettel verstanden werden. Peer Kröger (LMU München) Einführung in die Programmierung WS 16/ / 745

24 Prozeduraufrufe Zustände Wir unterscheiden jetzt noch die Bezeichner (Variablen), die formale Eingabeparameter der Prozedur sind (die kennen wir ja schon von Funktionen als V(σ)), und Bezeichner, die als Variablen oder Konstanten zu Beginn des Rumpfs mit var und const vereinbart werden: Sei N(S) die Menge aller Namen in S und V(S) N(S) die Menge der (formalen) Eingabeparameter der aufgerufenen Prozedur (so wie wir das von Funktionen kennen), d.h. V(S) sind die Eingabevariablen (aus dem Kopf wie bisher). N(S) \ V(S) sind die deklarierten Konstanten/Variablen im Rumpf. Ein Zustand S definiert eine Substitution für alle Namen x N(S) in S deren Wert d ω ist: das Paar (x, d) Sdefiniert offenbar die Substitution σ =[x/d]. Peer Kröger (LMU München) Einführung in die Programmierung WS 16/ / 745

25 Prozeduraufrufe Zustände Dies kommt Ihnen bekannt vor: Bei Funktionen haben wir gesehen, dass der Aufruf eines Algorithmus eine Substitution σ für die Eingabeparameter des Algorithmus V(σ) spezifiziert (analog gilt dies nun für V(S), das wir bisher mit V(σ) bezeichnet hatten). Zustände beinhaltet offenbar nun aber nicht mehr nur die Eingabeparameter sondern auch die im Rumpf zusätzlich vereinbarten Konstanten und Variablen, daher ist N(S) auch wirklich eine Obermenge von V(S). Dieser Unterschied zwischen Funktion und Prozedur drückt sich auch in unserer unterschiedlichen Schreibweise aus: σ bzw. S und V bzw. N. Peer Kröger (LMU München) Einführung in die Programmierung WS 16/ / 745

26 Prozeduraufrufe Zustände Die Unterscheidung in V und N ist leider nötig: Offensichtlich ist für einen Prozeduraufruf (e, d) Smit d ω für alle Eingabeparameter e V(S), d.h. alle Variablen, die Eingabeparameter bezeichnen, sind definiert/nicht leer (der Aufruf der Prozedur mit konkreten Werten erwirkt eine entsprechende Substitution). Dies gilt aber nicht notwendigerweise für alle vereinbarten Variablen und Konstanten N(S) \ V(S), denn Variablen und Konstanten müssen in unserer Schreibweise nicht sofort initialisiert werden (das passiert teilweise erst viel später), können also zunächst leer bzw. undefiniert sein. Peer Kröger (LMU München) Einführung in die Programmierung WS 16/ / 745

27 Prozeduraufrufe Zustände Damit wird der Wert eines Ausdrucks u nun abhängig vom Zustand S, in dem er betrachtet wird. Wir schreiben daher nun W S statt W σ (was OK ist, da S ja auch eine Substitution definiert). Die formale Definition von W S ist allerdings leicht: es genügt eine Erweiterung der rekursiven Definition des Wertes eines Ausdrucks u für den Fall, dass u eine im Rumpf vereinbarte Variable oder Konstante 12 aus N(S) \ V(S) ist. 12 Wir schreiben auch lokale Variable/Konstante. Peer Kröger (LMU München) Einführung in die Programmierung WS 16/ / 745

28 Prozeduraufrufe Zustände Die anderen Fälle, dass u ein Eingabeparameter, ein Literal, die Anwendung eines Basisoperators oder ein Aufruf einer Funktion (mit Rückgabewert ohne Seiteneffekte) ist, bleiben unverändert: In diesen Fällen ersetzen wir einfach W σ (u) durch W S (u)). Für den Fall u = x mit x N(S) \ V(S) (lokale Variable/Konstante) definieren wir nun zusätzlich: ist (x, d) Sund d ω, soistws(u) =d ist (x,ω) Soder x N(S), soistws(u) =ω Wir schreiben W(u) statt W S (u), wenn sich S aus dem Kontext ergibt. Peer Kröger (LMU München) Einführung in die Programmierung WS 16/ / 745

29 Prozeduraufrufe Zustandsübergänge Was passiert mit einem Zustand S, wenn Anweisungen ausgeführt werden, die Variablen aus N(S) verändern bzw. neue vereinbaren? Intuitiv: Bei der Vereinbarung einer Variablen (analog Konstanten) am Anfang des Prozedurrumpfs 13 wird ein neuer Zettel hinzugefügt, der Zettel ist zunächst leer. Bei der Initialisierung einer Variablen (analog Konstanten) wird der entsprechende Zettel (erstmalig) verändert (bildlich: der leere Zettel wird durch einen neuen, nun nicht-leeren Zettel gleichen Namens ersetzt). Bei einer weiteren Wertzuweisung an eine Variable wird der entsprechende Zettel (wieder) verändert. 13 wieder leicht erweiterbar auf beliebige Stellen im Rumpf. Peer Kröger (LMU München) Einführung in die Programmierung WS 16/ / 745

30 Prozeduraufrufe Zustandsübergänge Formal: sei die Anweisung a eine Variablen- bzw. Konstantendeklaration, eine Initialisierung oder eine Wertzuweisung, und sei S eine Sorte. a bewirkt eine Zustandsänderung von Zustand S in einen Nachfolgezustand Ŝ wie folgt Deklaration: Hat a die Form var x S bzw. const x S Ŝ = S {(x,ω)} mit x N(S), soist Initialisierung: Hat a die Form x u; mit x N(S) und ist u ein Ausdruck mit W(u) ω, so ist Ŝ = S\{(x,ω)} {(x, W(u))} Wertzuweisung: Hat a die Form x u; mit (x, d) S(d.h. x N(S) hat den Wert d) und ist u ein Ausdruck mit W(u) ω, soistŝ = S\{(x, d)} {(x, W(u))} Peer Kröger (LMU München) Einführung in die Programmierung WS 16/ / 745

31 Prozeduraufrufe Zustandsübergänge Wie bereits erwähnt enthält der Anfangszustand beim Aufruf eines Algorithmus (einer Prozedur) S 0 bereits die Eingabevariablen V(S) des Algorithmus (so wie bei Funktionen, bei denen es ja nur diesen Zustand gibt), der ausgeführt wird mit den entsprechenden konkreten Eingabe-Werten des Aufrufs. Beispiel: Beim Aufruf der Prozedur fberechnen1(x) mit 3.0, also fberechnen1(3.0), ist der initiale Zustand S 0 = {(x, 3.0)}, der wie bei Funktionen die Substitution des Eingabeparameters x durch den konkreten Wert 3.0 enthält. Peer Kröger (LMU München) Einführung in die Programmierung WS 16/ / 745

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

PIWIN I. Praktische Informatik für Wirtschaftsmathematiker, Ingenieure und Naturwissenschaftler I. Vorlesung 3 SWS WS 2007/2008

PIWIN I. Praktische Informatik für Wirtschaftsmathematiker, Ingenieure und Naturwissenschaftler I. Vorlesung 3 SWS WS 2007/2008 PIWIN I Kap. 7 Objektorientierte Programmierung - Einführung 1 PIWIN I Praktische Informatik für Wirtschaftsmathematiker, Ingenieure und Naturwissenschaftler I Vorlesung 3 SWS WS 2007/2008 FB Informatik

Mehr

Abschnitt 9: Schnittstellen: Interfaces

Abschnitt 9: Schnittstellen: Interfaces Abschnitt 9: Schnittstellen: Interfaces 9. Schnittstellen: Interfaces 9.1 Die Idee der Schnittstellen 9.2 Schnittstellen in Java 9.3 Marker-Interfaces 9.4 Interfaces und Hilfsklassen 9.5 Zusammenfassung

Mehr

Java Einführung Methoden in Klassen

Java Einführung Methoden in Klassen Java Einführung Methoden in Klassen Lehrziel der Einheit Methoden Signatur (=Deklaration) einer Methode Zugriff/Sichtbarkeit Rückgabewerte Parameter Aufruf von Methoden (Nachrichten) Information Hiding

Mehr

EINI WiMa/LW. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 11/12

EINI WiMa/LW. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 11/12 EINI WiMa/LW Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 11/12 Fakultät für Informatik Technische Universität Dortmund lars.hildebrand@udo.edu http://ls1-www.cs.uni-dortmund.de

Mehr

Kapitel 6. Vererbung

Kapitel 6. Vererbung 1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben

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

Kapitel 6. Vererbung

Kapitel 6. Vererbung 1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben

Mehr

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2 Java Einführung VARIABLEN und DATENTYPEN Kapitel 2 Inhalt dieser Einheit Variablen (Sinn und Aufgabe) Bezeichner Datentypen, Deklaration und Operationen Typenumwandlung (implizit/explizit) 2 Variablen

Mehr

Java Einführung Programmcode

Java Einführung Programmcode Java Einführung Programmcode Inhalt dieser Einheit Programmelemente Der erste Programmcode Die Entwicklungsumgebung: Sun's Java Software Development Kit (SDK) Vom Code zum Ausführen des Programms 2 Wiederholung:

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

Arrays und Methoden. Programmiervorkurs WS 2010 / 11

Arrays und Methoden. Programmiervorkurs WS 2010 / 11 Arrays und Methoden Programmiervorkurs WS 2010 / 11 Einleitung Bisher sind einfach Programme möglich Nun wollen wir Organisation und Stil verbessern Gesamter Code sollte nicht an einer Stelle stehen Nicht

Mehr

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

Rekursion. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung Rekursion Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-12-13/infoeinf WS12/13 Aufgabe 1: Potenzfunktion Schreiben Sie eine Methode, die

Mehr

Übersicht. Informatik 2 Teil 3 Anwendungsbeispiel für objektorientierte Programmierung

Übersicht. Informatik 2 Teil 3 Anwendungsbeispiel für objektorientierte Programmierung Übersicht 3.1 Modell Konto 3.2 Modell Konto - Erläuterungen 3.3 Benutzer Ein- und Ausgabe mit Dialogfenster I 3.4 Benutzer Ein- und Ausgabe mit Dialogfenster II 3.5 Klassen- und Objekteigenschaften des

Mehr

Tutorium Java Ein Überblick. Helge Janicke

Tutorium Java Ein Überblick. Helge Janicke Tutorium Java Ein Überblick Helge Janicke 26. Oktober 2000 1 VORRAUSSETZUNGEN ZUM PROGRAMMIEREN MIT JAVA. 1 1 Vorraussetzungen zum Programmieren mit Java. Was braucht man, wenn man mit Java programmieren

Mehr

Erwin Grüner 15.12.2005

Erwin Grüner 15.12.2005 FB Psychologie Uni Marburg 15.12.2005 Themenübersicht Mit Hilfe der Funktionen runif(), rnorm() usw. kann man (Pseudo-) erzeugen. Darüber hinaus gibt es in R noch zwei weitere interessante Zufallsfunktionen:

Mehr

Objekt-Orientierte Programmierung

Objekt-Orientierte Programmierung Objekt-Orientierte Programmierung Ein OO-Programm modelliert eine Anwendung als eine Welt von Objekten, die miteinander in Beziehung stehen ( später). Ein Objekt kann andere Objekte erzeugen. Ein Objekt

Mehr

Kapitel 6. Vererbung

Kapitel 6. Vererbung Kapitel 6 Vererbung Vererbung 1 Ziele Das Vererbungsprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen

Mehr

AKTUEL ZU JAVA 8 PROGRAMMIEREN IN JAVA. 7. Auflage. Im Internet: Alle Beispielprogramme und Lösungen

AKTUEL ZU JAVA 8 PROGRAMMIEREN IN JAVA. 7. Auflage. Im Internet: Alle Beispielprogramme und Lösungen L AKTUEL ZU fritz JOBST JAVA 8 PROGRAMMIEREN IN JAVA 7. Auflage Im Internet: Alle Beispielprogramme und Lösungen 4 1 Der Einstieg in Java keinem Fall zulässig. Die Schreibweisen Hello.java für den Namen

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

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

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

Einführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein (kmk@informatik.uni-kiel.

Einführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein (kmk@informatik.uni-kiel. Java Crashkurs Kim-Manuel Klein (kmk@informatik.uni-kiel.de) May 7, 2015 Quellen und Editoren Internet Tutorial: z.b. http://www.java-tutorial.org Editoren Normaler Texteditor (Gedit, Scite oder ähnliche)

Mehr

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 02: Klassen & Objekte Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil: Klassen Grundstruktur einer Java-Klasse Eigenschaften (Attribute) Variablen

Mehr

1. Grundlegende Eigenscha5en 2. Redefini+on 3. Polymophie 4. Mehrfachvererbung

1. Grundlegende Eigenscha5en 2. Redefini+on 3. Polymophie 4. Mehrfachvererbung K05 Vererbung & Polymorphie in C++ 1. Grundlegende Eigenscha5en 2. Redefini+on 3. Polymophie 4. Mehrfachvererbung 2 Vererbung in C++: Grundlagen Analog zu Java unterstützt C++ das Konzept der Vererbung:

Mehr

3 Objektorientierte Konzepte in Java

3 Objektorientierte Konzepte in Java 3 Objektorientierte Konzepte in Java 3.1 Klassendeklarationen Fragen an die Klassendeklaration: Wie heißt die Klasse? Wer darf auf die Klasse und ihre Attribute/Methoden zugreifen? Ist die Klasse eine

Mehr

Programmierung in Python

Programmierung in Python Programmierung in Python imperativ, objekt-orientiert dynamische Typisierung rapid prototyping Script-Sprache Funktionales und rekursives Programmieren P raktische Informatik 1, W S 2004/05, F olien P

Mehr

Autor: Michael Spahn Version: 1.0 1/10 Vertraulichkeit: öffentlich Status: Final Metaways Infosystems GmbH

Autor: Michael Spahn Version: 1.0 1/10 Vertraulichkeit: öffentlich Status: Final Metaways Infosystems GmbH Java Einleitung - Handout Kurzbeschreibung: Eine kleine Einführung in die Programmierung mit Java. Dokument: Autor: Michael Spahn Version 1.0 Status: Final Datum: 23.10.2012 Vertraulichkeit: öffentlich

Mehr

3 Objektorientierte Konzepte in Java

3 Objektorientierte Konzepte in Java 3 Objektorientierte Konzepte in Java Bisherige Beobachtungen zu Objekten: werden in Klassen zusammengefasst besitzen Eigenschaften und Verhalten verbergen private Informationen werden geboren, leben und

Mehr

Einfache Rechenstrukturen und Kontrollfluss II

Einfache Rechenstrukturen und Kontrollfluss II Einfache Rechenstrukturen und Kontrollfluss II Martin Wirsing in Zusammenarbeit mit Moritz Hammer und Axel Rauschmayer http://www.pst.informatik.uni-muenchen.de/lehre/ss06/infoii/ SS 06 Ziele Lernen imperative

Mehr

1 Polymorphie (Vielgestaltigkeit)

1 Polymorphie (Vielgestaltigkeit) 1 Polymorphie (Vielgestaltigkeit) Problem: Unsere Datenstrukturen List, Stack und Queue können einzig und allein int-werte aufnehmen. Wollen wir String-Objekte, andere Arten von Zahlen oder andere Objekttypen

Mehr

Vorlesung Informatik II

Vorlesung Informatik II Vorlesung Informatik II Universität Augsburg Wintersemester 2011/2012 Prof. Dr. Bernhard Bauer Folien von: Prof. Dr. Robert Lorenz Lehrprofessur für Informatik 02. JAVA: Erstes Programm 1 Das erste Java-Programm

Mehr

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen. I.2. I.2. Grundlagen von von Programmiersprachen.

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen. I.2. I.2. Grundlagen von von Programmiersprachen. 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

Test zu Grundlagen der Programmierung Leitung: Michael Hahsler. 21. November 2003

Test zu Grundlagen der Programmierung Leitung: Michael Hahsler. 21. November 2003 Test zu Grundlagen der Programmierung Leitung: Michael Hahsler 1. November 00 Name Martrikelnummer Unterschrift Bitte kreuzen Sie das Studium an, für das Sie diese Prüfung ablegen: O Bakkalaureat Wirtschaftsinformatik

Mehr

Objektorientierte Programmierung. Objektorientierte Programmierung. Klasse. Objekt. Beispiel: Sportfest1. Methode. Eine Einführung mit BlueJ

Objektorientierte Programmierung. Objektorientierte Programmierung. Klasse. Objekt. Beispiel: Sportfest1. Methode. Eine Einführung mit BlueJ Objektorientierte Programmierung Objektorientierte Programmierung Eine Einführung mit BlueJ stellt die Daten, ihre Struktur und ihre Beziehungen zueinander in den Vordergrund. Weniger im Blickpunkt: die

Mehr

Informationsverarbeitung im Bauwesen

Informationsverarbeitung im Bauwesen 4 Informationsverarbeitung im Bauwesen Markus Uhlmann basierend auf Folien von A. Brugger 1 Zusammenfassung der 3. Vorlesung Einführung in Excel/VBA Einführung in die Tabellenkalkulation Erste Schritte

Mehr

5. Tutorium zu Programmieren

5. Tutorium zu Programmieren 5. Tutorium zu Programmieren Dennis Ewert Gruppe 6 Universität Karlsruhe Institut für Programmstrukturen und Datenorganisation (IPD) Lehrstuhl Programmierparadigmen WS 2008/2009 c 2008 by IPD Snelting

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

Vererbung & Schnittstellen in C#

Vererbung & Schnittstellen in C# Vererbung & Schnittstellen in C# Inhaltsübersicht - Vorüberlegung - Vererbung - Schnittstellenklassen - Zusammenfassung 1 Vorüberlegung Wozu benötigt man Vererbung überhaubt? 1.Um Zeit zu sparen! Verwendung

Mehr

einkonto.zahle(+100); //Transaktion Einzahlung einkonto.zahle(-20); //Transaktion Auszahlung einkonto.zahle(+30); //Transaktion Einzahlung

einkonto.zahle(+100); //Transaktion Einzahlung einkonto.zahle(-20); //Transaktion Auszahlung einkonto.zahle(+30); //Transaktion Einzahlung PIWIN I Kap. 7 Objektorientierte Programmierung - Einführung 28 Testklasse public class TestGirokonto { public static void main(string[] args) { // erzeuge neues Konto Girokonto einkonto = new Girokonto();

Mehr

620.900 Propädeutikum zur Programmierung

620.900 Propädeutikum zur Programmierung 620.900 Propädeutikum zur Programmierung Andreas Bollin Institute für Informatik Systeme Universität Klagenfurt Andreas.Bollin@uni-klu.ac.at Tel: 0463 / 2700-3516 Arrays Wiederholung (1/5) Array = GEORDNETE

Mehr

Einführung in die Java- Programmierung

Einführung in die Java- Programmierung Einführung in die Java- Programmierung Dr. Volker Riediger Der hat die früher handschriftlichen Folien lesbar gemacht. Tassilo Horn riediger horn@uni-koblenz.de WiSe 2012/13 1 Heutige Themen Hello World!

Mehr

Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005

Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005 Einführung in die objektorientierte Programmierung mit Java Klausur am 19. Oktober 2005 Matrikelnummer: Nachname: Vorname: Semesteranzahl: Die Klausur besteht aus drei Frageblöcken zu den Inhalten der

Mehr

5.4 Klassen und Objekte

5.4 Klassen und Objekte 5.4 Klassen und Objekte Zusammenfassung: Projekt Figuren und Zeichner Figuren stellt Basisklassen für geometrische Figuren zur Verfügung Zeichner bietet eine übergeordnete Klasse Zeichner, welche die Dienstleistungen

Mehr

Erste Schritte in Java

Erste Schritte in Java Erste Schritte in Java Im einführenden Kapitel haben wir die Grundbegriffe der imperativen Programmierung an einem Beispiel (Algorithmus von Euklid) kennengelernt. In diesem Kapitel sehen wir uns an einem

Mehr

Liebe Leserin, lieber Leser, in der ersten Auflage von Programmieren lernen mit Java von Hans- Peter Habelitz sind einige Fehler zu korrigieren.

Liebe Leserin, lieber Leser, in der ersten Auflage von Programmieren lernen mit Java von Hans- Peter Habelitz sind einige Fehler zu korrigieren. Liebe Leserin, lieber Leser, in der ersten Auflage von Programmieren lernen mit Java von Hans- Peter Habelitz sind einige Fehler zu korrigieren. Niemand bedauert diese Fehler mehr als der Autor selbst.

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

5 Logische Programmierung

5 Logische Programmierung 5 Logische Programmierung Logik wird als Programmiersprache benutzt Der logische Ansatz zu Programmierung ist (sowie der funktionale) deklarativ; Programme können mit Hilfe zweier abstrakten, maschinen-unabhängigen

Mehr

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden.

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden. Einfache Ein- und Ausgabe mit Java 1. Hallo-Welt! Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden. /** Die Klasse hello sendet einen

Mehr

5.5.8 Öffentliche und private Eigenschaften

5.5.8 Öffentliche und private Eigenschaften 5.5.8 Öffentliche und private Eigenschaften Schnittstellen vs. Implementierungen: Schnittstelle einer Klasse beschreibt, was eine Klasse leistet und wie sie benutzt werden kann, ohne dass ihre Implementierung

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

C allgemein. C wurde unter und für Unix entwickelt. Vorläufer sind BCPL und B.

C allgemein. C wurde unter und für Unix entwickelt. Vorläufer sind BCPL und B. C-Crash-Kurs Eine kurze, keinesfalls erschöpfende Einführung in die Sprache C für Studierende, die eine strukturierte imperative Programmiersprache beherrschen. Die Vorstellung erfolgt am Beispiel von

Mehr

Android will doch nur spielen. Java Eine kurze Einführung

Android will doch nur spielen. Java Eine kurze Einführung Android will doch nur spielen Java Eine kurze Einführung Agenda Einführung in Java Syntax und Semantik Komplexe Datenstrukturen OOP Weitere Java-Elemente 2 Einführung in Java Was ist Java? lt. Sun: einfach

Mehr

Inhaltsverzeichnis. Grundbegriffe der C-Programmierung Für den HI-TECH C-Compiler

Inhaltsverzeichnis. Grundbegriffe der C-Programmierung Für den HI-TECH C-Compiler Inhaltsverzeichnis Grundbegriffe der C-Programmierung 1. Grundsätzliches... 2 1.1 Darstellung von Werten... 2 1.1.1 Dezimale Zahlendarstellung... 2 1.1.2 Binäre Zahlendarstellung... 3 1.1.3 Hexadezimale

Mehr

4. Objektorientierte Programmierung

4. Objektorientierte Programmierung 4. Objektorientierte Programmierung In Abschnitt 3 ging es um fundamentale Basiskonzepte von Java, wie es sie in jeder anderen gängigen Programmiersprache so oder so ähnlich auch gibt. In Abschnitt 4 nun

Mehr

Proseminar Funktionales Programmieren. Stephan Kreutzer

Proseminar Funktionales Programmieren. Stephan Kreutzer Proseminar Funktionales Programmieren Die Programmiersprache LISP Stephan Kreutzer Teil I: Funktionales Programmieren Imperative Sprachen Imperative Sprachen: Befehlsorientiert Imperative Sprachen orientieren

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

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

Interaktionen zwischen Objekten durch Senden von Nachrichten und Reagieren auf empfangene Nachrichten

Interaktionen zwischen Objekten durch Senden von Nachrichten und Reagieren auf empfangene Nachrichten Objekt Objekt kapselt Variablen und Routinen Interaktionen zwischen Objekten durch Senden von Nachrichten und Reagieren auf empfangene Nachrichten Eigenschaften jedes Objekts: Identität (identisch = mehrere

Mehr

Algorithmische Kernsprache. Zuweisung, einfache und bedingte Anweisung, Blöcke, Schleifen, return, debugging.

Algorithmische Kernsprache. Zuweisung, einfache und bedingte Anweisung, Blöcke, Schleifen, return, debugging. Algorithmische Kernsprache Zuweisung, einfache und bedingte Anweisung, Blöcke, Schleifen, return, debugging. Ausdrücke Anweisungen Ausdrücke bezeichnen einen Wert Kontext stellt Werte von Variablen Werte

Mehr

4 Codierung nach Viginere (Lösung)

4 Codierung nach Viginere (Lösung) Kapitel 4 Codierung nach Viginere (Lösung) Seite 1/14 4 Codierung nach Viginere (Lösung) 4.1 Einführung Blaise de Vigenère lebte von 1523 bis 1596 in Frankreich und war nach dem Studium bei verschiedenen

Mehr

Kapitel 8: Funktionen / Prozeduren

Kapitel 8: Funktionen / Prozeduren 8. Funktionen/Prozeduren 8-1 Objektorientierte Programmierung (Winter 2006/2007) Kapitel 8: Funktionen / Prozeduren Deklaration von Funktionen/Prozeduren Parameter, Übergabemechanismen Referenzen Globale

Mehr

Funktionen in PHP 1/7

Funktionen in PHP 1/7 Funktionen in PHP 1/7 Vordefinierte Funktionen in PHP oder vom Entwickler geschriebene Funktionen bringen folgende Vorteile: gleiche Vorgänge müssen nur einmal beschrieben und können beliebig oft ausgeführt

Mehr

Prinzipielle Ausführungsvarianten I

Prinzipielle Ausführungsvarianten I Software Entwicklung 1 Annette Bieniusa / Arnd Poetzsch-Heffter Unser erstes Java Programm AG Softech FB Informatik TU Kaiserslautern Bieniusa/Poetzsch-Heffter Software Entwicklung 1 2/ 39 Hello World!

Mehr

Grundlagen der Programmierung (Vorlesung 14)

Grundlagen der Programmierung (Vorlesung 14) Grundlagen der Programmierung (Vorlesung 14) Ralf Möller, FH-Wedel Vorige Vorlesung Verifikation von Anweisungen und Anweisungsfolgen Schleifen Inhalt dieser Vorlesung Funktionen und Prozeduren Lernziele

Mehr

Vorkurs Informatik WiSe 15/16

Vorkurs Informatik WiSe 15/16 Java 1 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe, 12.10.2015 Technische Universität Braunschweig, IPS Überblick Organisatorisches Arbeitsablauf Hello! 12.10.2015 Dr. Werner Struckmann / Stephan

Mehr

Klassendefinitionen verstehen

Klassendefinitionen verstehen Klassendefinitionen verstehen Java-Programme bestehen aus Klassendefinitionen und sonst nichts! 1 1.0 Konzepte Felder Konstruktoren Methoden Parameter Zuweisungen ( = ) Anweisungen bedingte Anweisungen

Mehr

Kapitel 2. Methoden zur Beschreibung von Syntax

Kapitel 2. Methoden zur Beschreibung von Syntax 1 Kapitel 2 Methoden zur Beschreibung von Syntax Grammatik, die sogar Könige zu kontrollieren weiß... aus Molière, Les Femmes Savantes (1672), 2. Akt 2 Ziele Zwei Standards zur Definition der Syntax von

Mehr

VisualBasic - Variablen

VisualBasic - Variablen Typisch für alle Basic-Dialekte ist die Eigenschaft, dass Variablen eigentlich nicht deklariert werden müssen. Sobald Sie einen Bezeichner schreiben, der bisher nicht bekannt war, wird er automatisch angelegt

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

Ein erstes Java-Programm

Ein erstes Java-Programm Ein erstes Java-Programm public class Rechnung { public static void main (String [] arguments) { int x, y; x = 10; y = -1 + 23 * 33 + 3 * 7 * (5 + 6); System.out.print ("Das Resultat ist "); System.out.println

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

3. Konzepte der objektorientierten Programmierung

3. Konzepte der objektorientierten Programmierung 3. Konzepte der objektorientierten Programmierung 3.1 Basiskonzepte 3.2 Generalisierung / Spezialisierung 3.3 Aggregation 3.4 Assoziation 3.5 Nachrichten 3.6 Polymorphismus 3. Konzepte der Objektorientierung

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

Programmieren Tutorium

Programmieren Tutorium Programmieren Tutorium Tom Schildhauer Tutorium 12 Universität Karlsruhe (TH) Institut für Programmstrukturen und Datenorganisation (IPD) Lehrstuhl Programmierparadigmen WS 2008/2009 c 2008 by Tom Schildhauer,

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

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

Klassenbeziehungen & Vererbung

Klassenbeziehungen & Vererbung Klassenbeziehungen & Vererbung VL Objektorientierte Programmierung Raimund Kirner teilweise nach Folien von Franz Puntigam, TU Wien Überblick Arten von Klassenbeziehungen Untertypen versus Vererbung in

Mehr

Teil 1: Grundeigenschaften von Rechnern und Software

Teil 1: Grundeigenschaften von Rechnern und Software Blatt Nummer: 1 Teil 1: Grundeigenschaften von Rechnern und Software Aufgabe 1.1 [3P] Nennen Sie mindestens 3 Arten von Programmen zur Softwareentwicklung Editor, Compiler, Linker, Debugger, Interpreter,...

Mehr

Übersicht. Schleifen. Schleifeninvarianten. Referenztypen, Wrapperklassen und API. 9. November 2009 CoMa I WS 08/09 1/15

Übersicht. Schleifen. Schleifeninvarianten. Referenztypen, Wrapperklassen und API. 9. November 2009 CoMa I WS 08/09 1/15 Übersicht Schleifen Schleifeninvarianten Referenztypen, Wrapperklassen und API CoMa I WS 08/09 1/15 CoMa I Programmierziele Linux bedienen Code umschreiben strukturierte Datentypen Anweisungen und Kontrollstrukturen

Mehr

Ausarbeitung des Interpreter Referats

Ausarbeitung des Interpreter Referats Ausarbeitung des Interpreter Referats Gliederung 1. Programmiersprache 1.2. Syntax 1.2.1. Konkrete Syntax 1.2.2. Abstrakter Syntax Baum (Abstrakte Syntax) 2. Parser 2.1. Syntaktische Struktur einer Sprache

Mehr

Programmieren was ist das genau?

Programmieren was ist das genau? Programmieren was ist das genau? Programmieren heisst Computerprogramme herstellen (von griechisch programma für Vorschrift). Ein Computerprogramm ist Teil der Software eines Computers. Als Software bezeichnet

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

Informatik. Studiengang Chemische Technologie. Michael Roth WS 2012/2013. michael.roth@h-da.de. Hochschule Darmstadt -Fachbereich Informatik-

Informatik. Studiengang Chemische Technologie. Michael Roth WS 2012/2013. michael.roth@h-da.de. Hochschule Darmstadt -Fachbereich Informatik- Informatik Studiengang Chemische Technologie Michael Roth michael.roth@h-da.de Hochschule Darmstadt -Fachbereich Informatik- WS 2012/2013 Inhalt Teil VII Einstieg in Java I Michael Roth (h_da) Informatik

Mehr

Web und Mobile Apps Programmieren mit Dart

Web und Mobile Apps Programmieren mit Dart Web und Mobile Apps Programmieren mit Dart Marco Jakob Workshop INFOS 2013 in Kiel 28.09.2013. ZIEL attraktiv aktuell Programmierunterricht wenig Hürden Inhalt Weshalb Web und Mobile im Unterricht? aktuelle

Mehr

Software Engineering Klassendiagramme Einführung

Software Engineering Klassendiagramme Einführung Software Engineering Klassendiagramme Einführung Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Aufgabe Erstellen Sie eine Klasse Person in Java. Jede Person verfügt

Mehr

Binäre Suchbäume (binary search trees, kurz: bst)

Binäre Suchbäume (binary search trees, kurz: bst) Binäre Suchbäume (binary search trees, kurz: bst) Datenstruktur zum Speichern einer endlichen Menge M von Zahlen. Genauer: Binärbaum T mit n := M Knoten Jeder Knoten v von T ist mit einer Zahl m v M markiert.

Mehr

Hello World. Javakurs 2014, 1. Vorlesung. Sebastian Schuck. basierend auf der Vorlage von Arne Kappen. wiki.freitagsrunde.org. 3.

Hello World. Javakurs 2014, 1. Vorlesung. Sebastian Schuck. basierend auf der Vorlage von Arne Kappen. wiki.freitagsrunde.org. 3. Hello World Javakurs 2014, 1. Vorlesung Sebastian Schuck basierend auf der Vorlage von Arne Kappen wiki.freitagsrunde.org 3. März 2014 This work is licensed under the Creative Commons Attribution-ShareAlike

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

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

Themen der Übung. Java. Java installieren. Java installieren. Installation (Fortsetzung)

Themen der Übung. Java. Java installieren. Java installieren. Installation (Fortsetzung) Themen der Übung Java CoMa-Übung II TU Berlin 1 Java-Installation Hello World 3 Temperature 4.10.01 CoMa-Übung II (TU Berlin) Java 4.10.01 1 / 8 CoMa-Übung II (TU Berlin) Java 4.10.01 / 8 Java installieren

Mehr

Institut fu r Informatik

Institut fu r Informatik Technische Universita t Mu nchen Institut fu r Informatik Lehrstuhl fu r Bioinformatik Einfu hrung in die Programmierung fu r Bioinformatiker Prof. B. Rost, L. Richter WS 2013 Aufgabenblatt 3 18. November

Mehr

Einführung in die Informatik Grammars & Parsers

Einführung in die Informatik Grammars & Parsers Einführung in die Informatik Grammars & Parsers Grammatiken, Parsen von Texten Wolfram Burgard Cyrill Stachniss 12.1 Einleitung Wir haben in den vorangehenden Kapiteln meistens vollständige Java- Programme

Mehr

Primitive Datentypen

Primitive Datentypen Primitive Datentypen 2 Arten von Datentypen: primitive Datentypen (heute) Objekte (später) Java ist streng typisiert, d.h. für jede Variable muß angegeben werden was für eine Art von Wert sie aufnimmt.

Mehr

Beispiel: Methode mit einem Fehler. Diese Methode wird problematisch, wenn von außen eine Dauer von 0 Sekunden angegeben wird, etwa im Aufruf

Beispiel: Methode mit einem Fehler. Diese Methode wird problematisch, wenn von außen eine Dauer von 0 Sekunden angegeben wird, etwa im Aufruf 16 Exceptions Zur Behandlung unerwarteter Situationen bietet Java Unterstützung in Form von Exceptions oder Ausnahmen. Den Sinn von Exceptions können wir Ihnen an einem kleinen Beispiel klarmachen. Nehmen

Mehr

Institut für Informatik

Institut für Informatik Technische Universität München Institut für Informatik Lehrstuhl für Computer Graphik & Visualisierung WS 2010 Praktikum: Grundlagen der Programmierung Aufgabenblatt 1 Prof. R. Westermann, A. Lehmann,

Mehr

Kapitel 3 Das Projekt Bankkonto Seite 1

Kapitel 3 Das Projekt Bankkonto Seite 1 Kapitel 3 Das Projekt Bankkonto Seite 1 3 Das Projekt Bankkonto Nun wirst du dich etwas gründlicher mit dem Quelltext einer Klasse beschäftigen. Du lernst, wie zwei Objekte eine gemeinsame Aufgabe erledigen.

Mehr

Aufgabe 1. »Programmieren«, WS 2006/2007. Nino Simunic M.A.

Aufgabe 1. »Programmieren«, WS 2006/2007. Nino Simunic M.A. »Programmieren«, WS 006/007 Nino Simunic (nino.simunic@uni-due.de) Übungsblatt 4 Aufgabe 1 OOP In dieser Aufgabe sollen Sie Autos als Klasse Car modellieren. Die Eigenschaften auf attributiver Ebene sind:

Mehr

Nachholklausur (6 ECTS) Einführung in die Informatik: Programmierung und Software-Entwicklung. Nachname... Vorname... Matrikelnummer... Studienfach...

Nachholklausur (6 ECTS) Einführung in die Informatik: Programmierung und Software-Entwicklung. Nachname... Vorname... Matrikelnummer... Studienfach... Ludwig-Maximilians-Universität München WS 2012/13 Institut für Informatik 19.04.2013, 12:00 14:00 Uhr Prof. Dr. R. Hennicker, A. Klarl Nachholklausur (6 ECTS) Einführung in die Informatik: Programmierung

Mehr