Vorlesung Programmieren

Größe: px
Ab Seite anzeigen:

Download "Vorlesung Programmieren"

Transkript

1 Vorlesung Programmieren Java Grundlagen Dr. Dennis Pfisterer Institut für Telematik, Universität zu Lübeck

2 Überblick Motivation von Programmiersprachen Java: Historie und Besonderheiten Wesentliche Sprachelemente Variablen und elementare Datentypen Operatoren Ausdrücke Operatoren Kontrollstrukturen (Bedingte Ausführung, Wiederholungsanweisungen) Security - 04 Cryptology #2

3 Algorithmen, Maschinen- und Programmiersprachen Algorithmen kann man mit Programmiersprachen aufschreiben Maschinensprache genügt im Prinzip dafür Besteht nur aus Menge von Nullen und Einsen Für Menschen nur schwer verständlich Maschinenspezifisch, schwer auf andere Rechner zu portieren Schwer, in der Maschinensprache den Algorithmus zu sehen Deshalb: Höhere Programmiersprache Näher am menschlichen Denken Lassen sich vom Computer in Maschinencode umwandeln Programme in einer solchen Sprache heißen Quellcode, Programmcode, Source-Code oder einfach nur Source oder Code Es existieren hunderte verschiedener solcher Sprachen Welche man wählt, hängt vom Anwendungszweck ab Prinzipiell sind alle gleich mächtig (Turing vollständig)

4 Höhere Programmiersprache Sprache mit eigener Syntax und Semantik Syntax: Grammatikregeln der Sprache Walfische bereisen Indien, um Wolken zu klauen! Semantik: Bedeutung einzelner Worte und Satzzeichen der Sprache Der obige Satz ist syntaktisch korrekt aber sinnlos. Ziel: Sicheres Beherrschen beider Aspekte Compiler prüfen Syntax aber keine Semantik Security - 04 Cryptology #4

5 Warum Java? Besonderheiten von Java Sprache i. W. neu entworfen, nur wenige Altlasten Daher vergleichsweise einfach zu erlernen Write once, run everywhere Technische Realisierung: Programm Compiler Maschinencode Programm Compiler Interpreter Bytecode Maschinencode 5-5

6 Warum Java? Byte-Code statt Maschinensprache Maschinencode für eine virtuelle Maschine Kann auf jeder realen Maschine simuliert werden Ist ein solcher Simulator für einen Rechner verfügbar, dann kann jedes kompilierte Java-Programm ausgeführt werden Nachteil (Potenziell) langsamer als echter Maschinencode Inzwischen wurden sog. Just-in-Time-Compiler entwickelt, welche den Geschwindigkeitsnachteil in vielen Bereichen kompensieren 5-6

7 Geschichte von Java J. Gosling et al. entwickeln Oak (Object Application Kernel) auf Basis von C++ Ziele: Plattform-Unabhängigkeit, Erweiterbarkeit der Systeme und Austauschbarkeit von Komponenten (ursprünglicher Einsatzbereich: Haushaltselektronik) Oak wird wegen rechtlicher Probleme in Java umbenannt. Zu diesem Namen wurden die Entwickler beim Kaffeetrinken inspiriert Java entwickelt sich durch Applet-Technologie zur Sprache des WWW Seit 1995 Sun bietet Java Development Kit (JDK) mit Compiler und Interpreter kostenlos an 2009 übernimmt Oracle Sun Microsystems 5-7

8 Warum Java? Typische Einsatzbereich für Java heute Applets: laufen direkt im Web-Browser Desktop-Anwendungen (J2SE) Web-Server Geschäftsanwendungen (Java EE) mit Servlets, JSF, JSP,... Handy-Anwendungen (J2ME, Android, ) Inzwischen sehr mächtig und performant! Vielzahl alternativer Sprachen für VM verfügbar (JRuby,...) Direkte Konkurrenz: Microsoft C# 5-8

9 Compiler und Laufzeitumgebung Java-Entwickler benötigt zwei wesentliche Komponenten Java-Compiler Virtual Maschine (auch genannt: Laufzeitumgebung ) Von Oracle kostenlos angeboten Empfohlener Download JDK 7 ohne weiteres Zubehör (nicht nur das JRE) 5-9

10 Compiler und Laufzeitumgebung JDK enthält alle notwendigen Werkzeuge javac (Java Compiler) java (Virtual Machine, auch: VM) Und viele andere Tools (später) Schreiben von Java Programmen Programme (genauer: der Quellcode) werden im Text- Editor geschrieben Unix: vi, vim, nano, pico, nedit, emacs, Windows: edit, PSPad, UltraEdit, Scite, 5-10

11 Integrated Development Environment (IDE) Alternative zum Texteditor Integrieren Editor, Compiler und VM Beispiele: Eclipse, Netbeans, IntelliJ, Viele Zusatzfunktionen Syntax Highlighting Code Completion Debugger Refactoring Plug-Ins für Spezialanwendung... Für das Erlernen von Java nicht nur hilfreich Entscheiden Sie selbst, ab wann Sie eine IDE einsetzen Später: Große Übung über IDEs 5-11

12 Ein erstes Java-Programm Grundgerüst: Wird für jedes Java-Programm benötigt! Einrückung und Co.: Nur für Menschen zur einfacheren Lesbarkeit Programm-Name (muss mit Dateinamen übereinstimmen, inkl. Groß-/Kleinschreibung!) public class MeinProgramm { public static void main(string[] args){ System.out.println("42"); } } Anweisung zum Ausgeben von Text Ende einer Anweisung 5-12

13 Beispiel (Editieren, Compilieren, Ausführen) Editieren in beliebigem Editor vi MeinProgramm.java Groß- und Kleinschreibung wichtig (auch unter Windows) Kompilieren mit Java-Compiler javac javac MeinProgramm.java Erzeugt Datei MeinProgramm.class mit Bytecode-Instruktionen Ausführen mit Virtual Machine java java MeinProgramm Achtung: kein.java am Ende Groß- und Kleinschreibung beachten Security - 04 Cryptology #13

14 Ausgabe auf der Konsole Security - 04 Cryptology #14

15 Sprachmerkmale Java ist Turing-mächtig Es kann also alles berechnet werden Sofern genügend Speicher verfügbar ist Erforderliche Sprachmerkmale Elementare Rechenoperationen (Addition, Subtraktion,...) Sequenz (Hintereinander-Ausführung) Bedingte Ausführung (If-Anweisung) While-Anweisung

16 Erstes Sprachelement: Sequentielle Ausführung Markierung des Endes einer Anweisung durch Semikolon Zeichen ; a1; a2; a3; a4; Formatierung (für den Compiler) egal Für Menschen macht es Sinn, sich an gewisse Konventionen zu halten Security - 04 Cryptology #16

17 Lesbarer Code: Kommentare Kommentare einfügen damit Menschen Code besser verstehen können Werden vom Compiler ignoriert Zwei Varianten (in Java) // Kommentar 1-zeilig /* Kommentar potenziell über mehrere Zeilen */ Vorsicht: Verschachteln nicht erlaubt (/* /* */ */) Security - 04 Cryptology #17

18 Verarbeitung von Daten Programme verarbeiten Daten Werden gelesen und ausgegeben Notwendig: I/O-Funktionen (später) Zur Verarbeitung müssen diese im Arbeitsspeicher gehalten werden Programme müssen diese Daten referenzieren können Konzept der Variablen

19 Variablen Adresse Inhalt Eine Variable ist ein Speicherplatz Eine (Start-)Adresse im Arbeitsspeicher Programme verwenden Namen statt Adressen (z.b. jahr, i, hallo) Compiler bzw. Betriebssystem kümmert sich um konkrete Zuordnung Größe des belegten Speichers bestimmt durch Datentyp 32-Bit Ganzzahl 8-Bit vorzeichenbehaftete Ganzzahl

20 Nächste Schritte Welche Datentypen gibt es in Java? Wie werden Variablen eines Typs deklariert? Welche elementaren Rechenoperationen (Operatoren) stellt Java bereit? Wie wird der Programmablauf gesteuert? (Schleifen, bedingte Anweisungen, usw.) 5-20

21 Datentypen

22 Primitive Datentypen in Java Datentyp Bemerkung Min Max byte 8 Bit, 2er-Komplement short 16 Bit, 2er-Komplement int 32 Bit, 2er-Komplement long 64 Bit, 2er-Komplement float double 32-bit IEEE 754 floating point 64-bit IEEE 754 floating point boolean Größe nicht spezifiziert false true char Ein 16-bit Unicode Zeichen '\u0000' (oder 0) '\uffff' (oder )

23 Primitive Datentypen in Java byte: The byte data type is an 8-bit signed two's complement integer. It has a minimum value of -128 and a maximum value of 127 (inclusive). The byte data type can be useful for saving memory in large arrays, where the memory savings actually matters. short: The short data type is a 16-bit signed two's complement integer. It has a minimum value of -32,768 and a maximum value of 32,767 (inclusive). int: The int data type is a 32-bit signed two's complement integer. It has a minimum value of -2,147,483,648 and a maximum value of 2,147,483,647 (inclusive). For integral values, this data type is generally the default choice unless there is a reason (like the above) to choose something else. long: The long data type is a 64-bit signed two's complement integer. It has a minimum value of -9,223,372,036,854,775,808 and a maximum value of 9,223,372,036,854,775,807 (inclusive). Use this data type when you need a range of values wider than those provided by int. Quelle:

24 Primitive Datentypen in Java float: The float data type is a single-precision 32-bit IEEE 754 floating point. This data type should never be used for precise values, such as currency. For that, you will need to use the java.math.bigdecimal class instead. Numbers and Strings covers BigDecimal and other useful classes provided by the Java platform. double: The double data type is a double-precision 64-bit IEEE 754 floating point. For decimal values, this data type is generally the default choice. As mentioned above, this data type should never be used for precise values, such as currency. Quelle:

25 Primitive Datentypen in Java boolean: The boolean data type has only two possible values: true and false. Use this data type for simple flags that track true/false conditions. This data type represents one bit of information, but its "size" isn't something that's precisely defined. char: The char data type is a single 16-bit Unicode character. It has a minimum value of '\u0000' (or 0) and a maximum value of '\uffff' (or 65,535 inclusive). 5-25

26 Variablen und Variablendeklaration

27 Deklaration von Variablen Eine Variable ist ein Speicherplatz Repräsentiert einen Wert aus einem bestimmten Wertebereich Wertebereich durch verwendeten Datentyp festgelegt Speicherbereich wird über einen Namen referenziert Eine Variable wird deklariert (d.h. erzeugt) Syntax: <Typ> <Name>; Dadurch wird Speicher reserviert Beispiele int myint; char c1; boolean flag; short myshort, myshort2; mehrere Variablen gleichen Typs 5-27

28 Beispiel Was tut dieses Programm? Datei: Beispiele\08-Java-Grundlagen\2-Variablen\Variablen.java Security - 04 Cryptology #28

29 Was tut dieses Programm? Auf den ersten Blick: Nichts Zumindest erwartet es keine Eingabe Und es macht keine Ausgaben Es berechnet offensichtlich nichts Aber: es reserviert Speicher für Variablen Und gibt ihn sofort wieder frei Mit diesen Variablen könnten wir jetzt aber arbeiten Zwischenergebnisse und Ergebnisse von Berechnungen ablegen Diese Ergebnisse über den Namen der Variablen ansprechen Security - 04 Cryptology #29

30 Deklaration von Variablen: Identifier Wiederholung Deklaration: <Typ> <Name>; Der <Name> einer Variable ist ein Identifier Über diesen Identifier wird eine Variable eindeutig bezeichnet Es können nicht zwei Variablen den gleichen Identifier haben Zumindest nicht im gleichen Kontext (später) Identifier dürfen nur aus gewissen Zeichen bestehen Regeln für Identifier: nächste Folie Security - 04 Cryptology #30

31 Legale Identifier Bestehen aus Unicode Zeichen Nummern Währungssymbole Verbindungszeichen (Bsp.: Unterstrich _ ) Dürfen theoretisch beliebig lang sein Einschränkungen Muss mit Zeichen, Währungssymbol oder Verbindungszeichen starten Also auf keinen Fall mit einer Nummer Kein reserviertes Schlüsselwörter (class, public, etc.). Details unter Keine Leerzeichen Identifier sind case-sensitive (Unterscheidung von Groß- und Kleinschreibung) Security - 04 Cryptology #31

32 Beispiele Legale Identifier Test Besteht nur aus Alphazeichen und ist daher korrekt. DAS_IST_TOTAL_TOLL Unterstriche sind erlaubt (auch am Anfang) bóolêáñ Gültige Unicode Zeichen DAGOBERT$$$$ Dollar-Zeichen ist ein gültiger Java- Buchstabe. $ Währungssymbole sind gültige Zeichen Ungültige Identifier 2good4u Erstes Zeichen muss ein Buchstabe sein und keine Ziffer das ist toll Leerzeichen sind nicht erlaubt Krass! Ausrufezeichen ist, wie viele Sonderzeichen, ungültig class Der Name ist schon von Java belegt (Class wäre ok) Security - 04 Cryptology #32

33 Datei: Beispiele\08-Java-Grundlagen\3-Identifier\Identifier.java Security - 04 Cryptology #33

34 Konventionen Normalerweise hält man sich auch an gewisse Konventionen Zum Beispiel an den sog. Java Code Style Java Code Style für Identifier (Kurzfassung) Klein beginnen und im Camel Case weiterschreiben Beispiel: einevariablemiteinemlangennamen Für internationale Zusammenarbeit Am besten auf ASCII beschränken (kein ä, ü, ß,...) Details unter ventions html#367 Security - 04 Cryptology #34

35 Typsicherheit Alle Daten, die wir verarbeiten, sind immer von einem bestimmten Typ Typ der Werte, die wir einer Variablen zuweisen, muss dem Typ der Variablen entsprechen Alternativ müssen wir konvertieren (später) Kann man einen Wahrheitswert (boolean) eine int-zahl zuweisen (z.b. 123)? Nein, das dient der Sicherheit von Programmen Sog. statische Typsicherheit Diese wird vom Compiler überprüft Security - 04 Cryptology #35

36 Spezialfall von Deklarationen: Arrays Security - 04 Cryptology #36

37 Spezialfall: Arrays Beispiel: Wir benötigen zehn Integer-Variablen int i0, i1, i2, i3, i4, i5, i6, i7, i8 i9; Einfacher: Verwendung sog. Arrays int[] i = new int[10]; Zugriff über Indizes i[0], i[1],, i[9] Erster Index (0) Achtes Element an Index Länge des Arrays:

38 Arrays: Beispiel der Deklaration Deklaration im Prinzip wie eine normale Variable gleichen Type Wo das [] steht (davor, danach) ist egal new int[10] reserviert Speicher für 10 int Variablen Bedeutung von new: später Security - 04 Cryptology #38

39 Größe / Länge eines Arrays In Java ist die Länge von Arrays abfragbar Komfortfeature von Java (nicht in allen Sprachen) arrayname.length (Variable vom Typ int) Beispiel: int i[] = new int[10]; int t[] = new int[20]; i.length ergibt 10 t.length ergibt

40 Literale Security - 04 Cryptology #40

41 Typsicherheit und Literale Daten sind immer von einem bestimmten Typ Das gilt auch für Literale Literale: Konstante Werte im Quelltext Manchmal auch Konstanten genannt Beispiele xA 9.81 true z Welchen Datentyp haben diese Literale? Security - 04 Cryptology #41

42 Datentypen von Literalen (Ganzzahlen) Ganzzahlige Typen (standardmäßig vom Typ int) 10 (Dezimal) 012 (Oktal, Basis 8, wegen führender Null) 0xA (Hexadezimal, Basis 16 wegen führendem 0x, Groß-/Kleinschreibung egal) 0b1010 (Binär, Basis 2, wegen führendem 0b) Suffix l oder L Datentyp long statt int Beispiel: 12273; 12733L; int i = 10; long l = 10L; Java7 erlaubt Underscores zur besseren Übersichtlichkeit Beispiele: 1012_1234_1_4, 0xFFFF_ABCD, 0b

43 Datentypen von Literalen (Floating Point) Floating Point Werte sind standardmäßig vom Typ double Durch Anhängen von f wird ein Literal vom Typ float Optional kann ein d angehängt werden, um double explizit zu fordern Schreibweise von Floating Point Literalen Normale Schreibweise: 10.0 (alternativ: 10.) Normale Schreibweise: 0.1 (alternativ :.1) Eng. Schreibweise: 1E1 (entspricht 1 * 10 1 ) Float erzwingen: 10.0f Double erzwingen: 10.0d Security - 04 Cryptology #43

44 Datentypen von Literalen (Zeichen) Datentyp von Zeichen in Java: char In einfachen Anführungszeichen eingeschlossen (') Repräsentieren immer genau ein Zeichen Mehr als ein Zeichen nicht möglich (dafür spezieller Typ: String später) Beispiele: 'a' (das Zeichen a), 'ü' (das Zeichen ü) Manche Zeichen werden mit Backslash (\) escaped '\n' Zeilenumbruch '\'' Das Zeichen ' '\\' Das Zeichen \ selbst '\u00f1 Das Unicode-Zeichen mit der Nummer F1 16 ( ): ñ Details unter:

45 Beispiel Datei: Beispiele\08-Java-Grundlagen\4-Literale\Literale.java Security - 04 Cryptology #45

46 Operatoren Security - 04 Cryptology #46

47 Operatoren Was können wir nun mit Variablen und deren Werten anfangen? Werte zuweisen Werte vergleichen Werte addieren Werte subtrahieren usw. Geschieht über Operatoren Siehe auch avase/tutorial/java/nutsandb olts/operators.html Operatortyp (sortiert nach Vorrang) Postfix expr++ expr-- Unär ++expr --expr +expr -expr ~! Multiplikativ * / % Additiv + - Shift << >> >>> Vergleich Gleichheit ==!= Bitweises AND Bitweises XOR Bitweises OR Logisches AND Logisches OR < > <= >= instanceof & ^ && Ternärer Operator? : Zuweisung = += -= *= /= %= &= ^= = <<= >>= >>>= 5-47

48 Operatoren Berechnen neuen Wert (Ergebnis hat bestimmten Datentyp) Ergebnis 2, Datentyp int int i = 1; i = 2 * i; Zwei Operatoren (= und *) Ergebnis der Multiplikation: 2, Datentyp int; 2.0 * 1; Ergebnis: 2.0, Datentyp float 3/2; Ergebnis: 1, Datentyp int 5-48

49 Zuweisungsoperator (=) Funktion: Weist einer Variablen einen Wert zu Ergebnis der Berechnung der rechten Seite (RVALUE) wird der linken Seite (LVALUE der Variablen) zugewiesen Rechte Seite wird zuerst ausgewertet Wird die Variable rechts verwendet, so hat sie noch den alten Wert Beispiel int myint; myint = 10; myint = 12 * myint / 2; (entspricht 12 * 10 / 2 60) myint = 2 + 9; (entspricht ) Abkürzung: Deklaration und Zuweisung in einem int myint = 10; 5-49

50 Zuweisungsoperator (=): Beispiele Beispiele (Deklaration + Zuweisung) char c = 'f'; byte b = 10; short s = 20; int i = 30; long l = ; float f = f; double d = d; boolean bo = false; Zuweisung bo = true; Ok bo = i; Fehler: int boolean geht nicht f = i; Ok (Safe Conversion, int float) i = f; Fehler: Verlust von Genauigkeit 5-50

51 Zuweisungsoperator (=): Beispiele Security - 04 Cryptology #51

52 Operatoren für Zahlenvergleiche == (gleich)!= (ungleich) > (größer) >= (größer oder gleich) < (kleiner) <= (kleiner oder gleich) Ergebnis Beispiel int i = 0; int j = 10; System.out.println( i == j ); System.out.println( j < 10 ); Ausgabe false false boolean-wert Werte: true oder false 5-52

53 Operatoren für Boolesche Ausdrücke &&! (und-verknüpfung) (oder-verknüpfung) (Negation) Geben jeweils einen boolean-wert zurück Beispiel System.out.println( ( (false && true)!(1==2) ) ); Ausgabe true 5-53

54 Operatoren für Zahlenarithmetik + (Addition) - (Subtraktion) * (Multiplikation) / (Division) % (Rest-Operator) Geben jeweils einen Zahlenwert zurück Beispiel System.out.println( ); // 12.5, double System.out.println(10 % 8); // 2, int 5-54

55 Weitere Operatoren für Zahlenarithmetik ++ (Inkrement) -- (Dekrement) Geben jeweils einen Zahlenwert zurück Nicht frei von Nebeneffekten Je in zwei Varianten verfügbar i++ (Post-Inkrement) i-- (Post-Dekrement) ++i (Prä-Inkrement) --i (Prä-Dekrement) int i = 3; i++; System.out.println(i); // "4" ++i; System.out.println(i); // "5" System.out.println(++i); //"6" System.out.println(i++); // "6" System.out.println(i); // "7" 5-55

56 Operatoren zur Typumwandlung Explizite Typumwandlung (Casting) Syntax: (Datentyp) Wert Gibt Wert (der Variablen/Konstante) im angegeben Datentyp zurück Java handhabt Datentypen sehr strikt Typkonvertierungen müssen explizit angeben werden Falsch int i = 3.5f * 6; // Rechter Ausdruck: Typ float int i = (int) 3.7f * 6; // Ergebnis: 3 * 6 = 18 Richtig int i = (int)(3.7f * 6); // Ergebnis: 3.5 * 6 =

57 Ausdrücke und Anweisungen Security - 04 Cryptology #57

58 Ausdruck (engl.: expression) Kann aus Operatoren, Variablen, Literalen und Funktionen (später) bestehen Berechnet einen Wert eines bestimmten Datentyps Beispiele 1 Wert: 1, Typ: int Wert: 3, Typ: int Wert 3.0, Typ: double * / 7.0 Wert ,Typ double (char) ( 'a' + 7 ) Wert h, Typ char Security - 04 Cryptology #58

59 Beispiel Datei: Beispiele\08-Java-Grundlagen\8-Ausdruecke\Ausdruecke.java Security - 04 Cryptology #59

60 Anweisungen (Statements) Anweisungen müssen (anders als Ausdrücke) keinen Wert zurückgeben Jeder Ausdruck ist auch eine Anweisung (Wert des Ausdrucks wird ignoriert) Mehrere Ausdrücke werden durch ; getrennt (sequentielle Ausführung) Beispiel: System.out.println( Hallo ); Gibt Hallo auf der Konsole aus, berechnet aber keinen Wert Spezielle Anweisung: Blockanweisung Gruppiert Menge von Anweisungen/Ausdrücken zu einer Anweisung Syntax: { <keine oder mehrere Anweisungen> } Beispiel: {} Beispiel: { int i=1+2; System.out.println( Hallo ); i=i*2; } Security - 04 Cryptology #60

61 Kontrollstrukturen Security - 04 Cryptology #61

62 Kontrollstrukturen Wichtig: bedingte Ausführung und Wiederholungsanweisung Java bietet mehrere Variante an Sind äquivalent und ineinander überführbar Sind jeweils eine Anweisung Bedingte Ausführung if switch Wiederholungsanweisung while do... while for Security - 04 Cryptology #62

63 Bedingte Ausführung: if Syntax: if (boolescher-ausdruck) anweisung; boolescher-ausdruck: Ausdruck, der zu boolean Wert evaluiert (true/false) Anweisung: Einzelne Anweisung (kann auch eine Blockanweisung sein) Beispiel für boolesche Ausdrücke true 1 > 2 i!= 12 u 2 > z - 3 Beispiele für if-anweisung if (true) System.out.println( Tautologie ); int i = 3; if (2 * i > 1000) i = i / 2; Security - 04 Cryptology #63

64 Fallstrick Beispiel: int i=3; if(2*i > 1000) i = i / 2; i = 3 * i; Auch wenn es optisch nicht so aussieht, aber: i = 3 * i ist nicht mehr Teil der if-anweisung Wird also IMMER ausgeführt, unabhängig vom Wert von boolescher-ausdruck Wichtig: Formatierung hat nichts mit Syntax zu tun Dennoch sollte man es optisch besser formatieren Besser: int i = 3; if(2 * i > 1000) i = i / 2; i = 3 * i; Aber: was wenn das gar nicht so gewollt ist? Security - 04 Cryptology #64

65 Fallstrick: Lösung: Blockanweisung Wenn i = 3 * i Teil der if-anweisung werden soll, hilft eine Blockanweisung int i = 3; if(2 * i > 1000) { i = i / 2; i = 3 * i; } Besser formatiert (Java Coding Style) int i = 3; if(2 * i > 1000) { i = i / 2; i = 3 * i; } Generell sinnvoll, Blockanweisungen zu benutzen z.b. falls man später noch eine Anweisung hinzufügt Security - 04 Cryptology #65

66 Variante der if-anweisung (if...then...else) Oft soll entweder das eine oder das andere gemacht werden if (a > 100) a = a 100; if (a <= 100) System.out.println( a zu klein ); Probleme Gleiche Bedingung muss zweimal formuliert werden (1 x positiv, 1x negativ) Wenn die erste Anweisung a modifiziert (wie hier geschehen), dann kommt es ggf. zu ungewolltem Verhalten Daher Variante if (boolescher-ausdruck) anweisung1; else anweisung2; Wenn boolescher-ausdruck true ist, dann wird anweisung1 ausgeführt, ansonsten anweisung2 if (a>100) a=a 100; else System.out.println( a zu klein ); Security - 04 Cryptology #66

67 Variante der if-anweisung (if...then...else) if (boolescher-ausdruck) anweisung1; else anweisung2; Beide Anweisungen können wieder beliebige Ausdrücke sein Also z.b. auch wieder if-anweisungen Beispiel: if(a>100) if(b>100) b=b+a; else a=a*2; Aber: zu welchem if gehört das else? Security - 04 Cryptology #67

68 Variante der if-anweisung (if...then...else) Lösung if (a > 100) if (b > 100) b = b + a; else a = a * 2; Wichtig: explizit machen, was gemeint ist Platzsparen muss nicht sein Lieber den Code besser lesbar machen Variante 1 if (a > 100) { if (b > 100) { b = b + a; } else { a = a * 2; } } Variante 2 if (a > 100) { if (b > 100) { b = b + a; } } else { a = a * 2; } Security - 04 Cryptology #68

69 if-anweisung: Weitere Beispiele Beispiel: if if (i > 12 ) { System.out.println("i ist größer als 12"); i = 123 * i 345; } Beispiel: if-then-else if (i > 12 ) { System.out.println("i ist größer als 12"); i = 0; } else { System.out.println("i ist kleiner oder gleich 12"); i++; } 5-69

70 Alternative zu if: switch-anweisung Nach case kann nur eine Konstante stehen, keine Variable Vorsicht: nicht das break vergessen Kann z.b. anstelle von langen if-else- Anweisungen verwendet werden Code wird dadurch kürzer und (evtl.) verständlicher Security - 04 Cryptology #70

71 Kontrollstrukturen: Wiederholung While-Schleife Wiederhole, solange Ausdruck wahr Syntax:while (boolescher-ausdruck) anweisung1; Beispiele while (i > 10) i--; while (i > 10) { System.out.println(i); i--; } 5-71

72 Kontrollstrukturen: Wiederholung Do-While-Schleife Wie while, jedoch mindestens einmal ausgeführt Syntax: do anweisung1; while(boolescher-ausdruck); Beispiele do i--; while (i > 10); do { System.out.println(i); i--; } while (i > 10); 5-72

73 Beispiel: while und do...while Security - 04 Cryptology #73

74 Kontrollstrukturen: Wiederholungen Abseits von while und do...while gibt es eine weitere Wiederholungsanweisung: for Ist wahrscheinlich die am meisten benutzte Variante while, do...while und for lassen sich ineinander überführen Welche Variante man nutzt ist daher egal Allerdings ist for expliziter als while/do-while und prägnanter Syntax for(<initialization>; <termination>; <increment>) statement; <initialization> Einmal zu Beginn der Schleife ausgeführt <termination> Abbruchbedingung (boolescher Ausdruck) <increment> Nach jedem Durchlauf ausgeführt 5-74

75 Kontrollstrukturen: Wiederholungen Beispiel: Wertebereich durchlaufen <initialization> int i = 0 Deklariert und Initialisiert Variable i <termination> i < 10 Abbruchbedingung <increment> i++ Erhöht Wert von i nach jedem Durchlauf Ablauf <initialization>(i: 0), <termination> (false), <statement>, <increment> (i: 1), <termination> (false), <statement>, <increment> (i: 2),..., <increment> (i: 10), <termination> (true) Ende Initialisierung Bedingung Modifikation for (int i = 0; i < 10; i++){ System.out.println(i); } 5-75

76 Kontrollstrukturen: Wiederholungen Beispiele: for-anweisung for (int i = 0; i < 100; i = i * i) System.out.println("i=" + i); for ( ; i < 10; --i); for (;;;); Endlosschleife 5-76

77 Demo: Größeres Java-Programm Ziel: Einlesen einer max. 20 Zeichen langen Zeichenfolge und Ausgabe in umgekehrter Reihenfolge Algorithmus Erzeuge einen Puffer für max. 20 Zeichen Lese ein Zeichen vom Keyboard ein Solange noch Platz im Puffer ist und nicht Enter gedrückt wurde Speichere Zeichen in nächsten freien Platz im Puffer Lese nächstes Zeichen vom Keyboard Setze Variable i auf Index des letzten Zeichens Solange i >= 0 ist Gebe Zeichen an Index i aus Dekrementiere i 5-77

78 Exkurs: Einlesen von Zeichen Bisher: Ausgabe auf der Konsole Zwei Ausgabe- Ströme : Standard (System.out) und Fehler (System.err) Trennen von echten Ausgabedaten und Fehlern Normal nicht unterscheidbar, können einzeln umgeleitet werden (siehe GUE Unix) Standardausgabe: System.out System.out.println( Hallo Welt ); Hallo Welt und beginnt neue Zeile System.out.print( Hallo Welt ); Hallo Welt (ohne neue Zeile zu beginnen) System.out.println(); Beginnt nur eine neue Zeile Fehlerausgabe: System.err System.err.println( Das sollte nicht passieren ); Security - 04 Cryptology #78

79 Beispiel: System.out und System.err Security - 04 Cryptology #79

80 Exkurs: Einlesen von Zeichen Wie liest man nun Zeichen von der Tastatur ein? Passendes Gegenstück: System.in Beispiel: Ein Zeichen von Tastatur lesen char c = (char) System.in.read(); Warum der Typ-Cast? Woher weiß man das? Umfangreiche Dokumentation von Java Sog. Javadoc Security - 04 Cryptology #80

81 Fertiges Programm Security - 04 Cryptology #81

82 Security - 04 Cryptology #82

83 Zusammenfassung und Ausblick Mit den besprochenen Komponenten können bereits alle denkbaren Algorithmen in Java formuliert werden Restliche Magie des Programm-Grundgerüsts noch unklar Wird später nach und nach klarer Ergänzende Literatur

Programmierkurs Java. Grundlagen. Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.

Programmierkurs Java. Grundlagen. Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck. Programmierkurs Java Grundlagen Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer #2 Algorithmen, Maschinen- und Programmiersprachen Algorithmen

Mehr

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Variablen und Datentypen Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer #2 Überblick Welche Datentypen gibt es

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

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Kontrollstrukturen Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Kontrollstrukturen Wichtig: bedingte Ausführung

Mehr

Java 7. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Dezember 2011 JAV7

Java 7. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Dezember 2011 JAV7 Java 7 Elmar Fuchs Grundlagen Programmierung 1. Ausgabe, Dezember 2011 JAV7 5 Java 7 - Grundlagen Programmierung 5 Kontrollstrukturen In diesem Kapitel erfahren Sie wie Sie die Ausführung von von Bedingungen

Mehr

Programmierkurs C++ Variablen und Datentypen

Programmierkurs C++ Variablen und Datentypen Programmierkurs C++ Variablen und Datentypen Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer #2 Überblick Welche Datentypen gibt es in

Mehr

Programmieren. Besonderheiten von Java:

Programmieren. Besonderheiten von Java: Institut für Telematik Universität zu Lübeck 5-2 Überblick Programmieren Kapitel 5: Java (5.1 bis 5.6) 1. Einführung (Warum Java?) 2. Compiler und Laufzeitumgebung, IDEs 3. Das erste eigene Java-Programm

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

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

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

Mehr

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

Programmieren I. Kontrollstrukturen. Heusch 8 Ratz 4.5. www.kit.edu. Institut für Angewandte Informatik

Programmieren I. Kontrollstrukturen. Heusch 8 Ratz 4.5. www.kit.edu. Institut für Angewandte Informatik Programmieren I Kontrollstrukturen Heusch 8 Ratz 4.5 KIT Universität des Landes Baden-Württemberg und nationales Großforschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu Arten von Kontrollstrukturen

Mehr

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

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

Mehr

Grundlagen der Programmierung Prof. H. Mössenböck. 3. Verzweigungen

Grundlagen der Programmierung Prof. H. Mössenböck. 3. Verzweigungen Grundlagen der Programmierung Prof. H. Mössenböck 3. Verzweigungen If-Anweisung n > 0? j n if (n > 0) x = x / n; ohne else-zweig x x / n j max x x > y? n max y if (x > y) max = x; else max = y; mit else-zweig

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

Diana Lange. Generative Gestaltung Operatoren

Diana Lange. Generative Gestaltung Operatoren Diana Lange Generative Gestaltung Operatoren Begriffserklärung Verknüpfungsvorschrift im Rahmen logischer Kalküle. Quelle: google Operatoren sind Zeichen, die mit einer bestimmten Bedeutung versehen sind.

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

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

Java Einführung Operatoren Kapitel 2 und 3

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

Mehr

C/C++ Programmierung

C/C++ Programmierung 1 C/C++ Programmierung Grundlagen: Anweisungen Sebastian Hack Christoph Mallon (hack mallon)@cs.uni-sb.de Fachbereich Informatik Universität des Saarlandes Wintersemester 2009/2010 2 Anweisungen (Statements)

Mehr

Programmierkurs C++ Grundlagen. Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.

Programmierkurs C++ Grundlagen. Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck. Programmierkurs C++ Grundlagen Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Algorithmen, Maschinen- und Programmiersprachen Algorithmen

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

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

Gliederung. Tutorium zur Vorlesung. Gliederung. Gliederung. 1. Gliederung der Informatik. 1. Gliederung der Informatik. 1. Gliederung der Informatik

Gliederung. Tutorium zur Vorlesung. Gliederung. Gliederung. 1. Gliederung der Informatik. 1. Gliederung der Informatik. 1. Gliederung der Informatik Informatik I WS 2012/13 Tutorium zur Vorlesung 1. Alexander Zietlow zietlow@informatik.uni-tuebingen.de Wilhelm-Schickard-Institut für Informatik Eberhard Karls Universität Tübingen 11.02.2013 1. 2. 1.

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

Erwin Grüner 09.02.2006

Erwin Grüner 09.02.2006 FB Psychologie Uni Marburg 09.02.2006 Themenübersicht Folgende Befehle stehen in R zur Verfügung: {}: Anweisungsblock if: Bedingte Anweisung switch: Fallunterscheidung repeat-schleife while-schleife for-schleife

Mehr

Datentypen. Agenda für heute, 4. März, 2010. Pascal ist eine streng typisierte Programmiersprache

Datentypen. Agenda für heute, 4. März, 2010. Pascal ist eine streng typisierte Programmiersprache Agenda für heute, 4. März, 2010 Zusammengesetzte if-then-else-anweisungen Datentypen Pascal ist eine streng typisierte Programmiersprache Für jeden Speicherplatz muss ein Datentyp t (Datenformat) t) definiert

Mehr

Programmierung in C. Grundlagen. Stefan Kallerhoff

Programmierung in C. Grundlagen. Stefan Kallerhoff Programmierung in C Grundlagen Stefan Kallerhoff Vorstellungsrunde Name Hobby/Beruf Schon mal was programmiert? Erwartungen an den Kurs Lieblingstier Für zu Hause C-Buch online: http://openbook.rheinwerk-verlag.de/c_von_a_bis_z/

Mehr

1. Formulieren Sie den Algorithmus <Bedienung eines Getränkeautomaten> nach den oben genannten Kriterien.

1. Formulieren Sie den Algorithmus <Bedienung eines Getränkeautomaten> nach den oben genannten Kriterien. Java 1 Einführung Grundlegende Übungsaufgaben Arbeitsauftrag 1.1 1. Formulieren Sie den Algorithmus nach den oben genannten Kriterien. Beispiel: Bedienung eines Getränkeautomaten

Mehr

Programmieren in C. C Syntax Datentypen, Operatoren und Kontrollstrukturen. Prof. Dr. Nikolaus Wulff

Programmieren in C. C Syntax Datentypen, Operatoren und Kontrollstrukturen. Prof. Dr. Nikolaus Wulff Programmieren in C C Syntax Datentypen, Operatoren und Kontrollstrukturen Prof. Dr. Nikolaus Wulff Elementare Typen Imperative und objektorientierte Programmiersprachen bieten i.d.r. einen Satz elementarer

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

Modellierung und Programmierung 1

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

Mehr

Einführung in die Programmierung

Einführung in die Programmierung : Inhalt Einführung in die Programmierung Wintersemester 2010/11 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund Wiederholungen - while - do-while - for

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

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

Einfache Arrays. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-13-14/infoeinf WS13/14 Action required now 1. Smartphone: installiere die App "socrative student"

Mehr

IT-Basics 2. DI Gerhard Fließ

IT-Basics 2. DI Gerhard Fließ IT-Basics 2 DI Gerhard Fließ Wer bin ich? DI Gerhard Fließ Telematik Studium an der TU Graz Softwareentwickler XiTrust www.xitrust.com www.tugraz.at Worum geht es? Objektorientierte Programmierung Konzepte

Mehr

Klausur in Programmieren

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

Mehr

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

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

Entwurf von Algorithmen - Kontrollstrukturen

Entwurf von Algorithmen - Kontrollstrukturen Entwurf von Algorithmen - Kontrollstrukturen Eine wichtige Phase in der Entwicklung von Computerprogrammen ist der Entwurf von Algorithmen. Dieser Arbeitsschritt vor dem Schreiben des Programmes in einer

Mehr

Computeranwendung und Programmierung (CuP)

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

Mehr

Java Kurs für Anfänger Einheit 2 Datentypen und Operationen

Java Kurs für Anfänger Einheit 2 Datentypen und Operationen Java Kurs für Anfänger Einheit 2 Datentypen und Operationen Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 16. Mai 2009 Inhaltsverzeichnis

Mehr

Einführung in die Programmierung

Einführung in die Programmierung : Inhalt Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund - mit / ohne Parameter - mit / ohne Rückgabewerte

Mehr

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

Dr. Monika Meiler. Inhalt

Dr. Monika Meiler. Inhalt Inhalt 4 Einführung in die Programmiersprache Java (Teil II)... 4-2 4.4 Strukturierte Programmierung... 4-2 4.4.1 Strukturierung im Kleinen... 4-2 4.4.2 Addierer (do-schleife)... 4-3 4.4.3 Ein- Mal- Eins

Mehr

Kurze Einführung in die Programmiersprache C++ und in Root

Kurze Einführung in die Programmiersprache C++ und in Root Kurze Einführung in die Programmiersprache C++ und in Root Statistik, Datenanalyse und Simulation; 31.10.2006 Inhalt 1 Einführung in die Programmiersprache C++ Allgemeines Variablen Funktionen 2 1 Einführung

Mehr

Einführung in die Java- Programmierung

Einführung in die Java- Programmierung Einführung in die Java- Programmierung Dr. Volker Riediger Tassilo Horn riediger horn@uni-koblenz.de WiSe 2012/13 1 Wichtig... Mittags keine Pommes... Praktikum A 230 C 207 (Madeleine + Esma) F 112 F 113

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

Java-Programmierung mit NetBeans

Java-Programmierung mit NetBeans Java-Programmierung mit NetBeans Steuerstrukturen Dr. Henry Herper Otto-von-Guericke-Universität Magdeburg - WS 2012/13 Steuerstrukturen Steuerstrukturen Verzweigungen Alternativen abweisende nichtabweisende

Mehr

Übungen zur Vorlesung Einführung in die Informatik Wintersemester 2010/11

Übungen zur Vorlesung Einführung in die Informatik Wintersemester 2010/11 Übungen zur Vorlesung Einführung in die Informatik Wintersemester 2010/11 Fakultät für Informatik Lehrstuhl 1 Dr. Lars Hildebrand Carla Delgado-Battenfeld Fatih Gedikli Tobias Marschall Benjamin Schowe

Mehr

25 kann ohne Rest durch 5 geteilt werden! ist wahr

25 kann ohne Rest durch 5 geteilt werden! ist wahr Lehrbrief 2: Lektion 8 - C -Praxis 4-1 - 5.2 Einfache Entscheidungen mit if und die Vergleichsoperatoren Nun tauchen wir immer tiefer in die Geheimnisse von C ein und beschäftigen uns mit einem sehr wichtigen

Mehr

Modul 122 VBA Scribt.docx

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

Mehr

Programmieren in C. Felder, Schleifen und Fließkommaarithmetik. Prof. Dr. Nikolaus Wulff

Programmieren in C. Felder, Schleifen und Fließkommaarithmetik. Prof. Dr. Nikolaus Wulff Programmieren in C Felder, Schleifen und Fließkommaarithmetik Prof. Dr. Nikolaus Wulff Addition von Zahlen 1 2 3 4 5 #include int main() { int x,y,z,sum; x = 1; y = 2; z = 4; sum = x + y + z;

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

Die Programmiersprache Java. Dr. Wolfgang Süß Thorsten Schlachter

Die Programmiersprache Java. Dr. Wolfgang Süß Thorsten Schlachter Die Programmiersprache Java Dr. Wolfgang Süß Thorsten Schlachter Eigenschaften von Java Java ist eine von der Firma Sun Microsystems entwickelte objektorientierte Programmiersprache. Java ist......a simple,

Mehr

Programmiervorkurs. Organisation: Steffen Gebert, Alexander Wolff. Tutoren: Jürgen Zöller, Jonathan Stoll. Wintersemester 2012/2013

Programmiervorkurs. Organisation: Steffen Gebert, Alexander Wolff. Tutoren: Jürgen Zöller, Jonathan Stoll. Wintersemester 2012/2013 Programmiervorkurs Wintersemester 2012/2013 Organisation: Steffen Gebert, Alexander Wolff Tutoren: Jürgen Zöller, Jonathan Stoll Kontakt (für Organisatorisches, Fehler auf Folien...): Steffen Gebert steffen.gebert@informatik.uni-wuerzburg.de

Mehr

GEONET Anleitung für Web-Autoren

GEONET Anleitung für Web-Autoren GEONET Anleitung für Web-Autoren Alfred Wassermann Universität Bayreuth Alfred.Wassermann@uni-bayreuth.de 5. Mai 1999 Inhaltsverzeichnis 1 Technische Voraussetzungen 1 2 JAVA-Programme in HTML-Seiten verwenden

Mehr

Einführung in Javadoc

Einführung in Javadoc Einführung in Javadoc Johannes Rinn http://java.sun.com/j2se/javadoc Was ist Javadoc? Javadoc ist ein Werkzeug, dass eine standardisierte Dokumentation für die Programmiersprache Java unterstützt. Vorteil:

Mehr

Übersicht Programmablaufsteuerung

Übersicht Programmablaufsteuerung Übersicht Programmablaufsteuerung Konditionale Verzweigung: if - else switch-anweisung Schleifenkonstrukte: while, do - while for Schleife Sprung-Anweisungen: break, continue, goto, return Anweisungen

Mehr

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

Programmiertechnik Operatoren, Kommentare, Ein-/Ausgabe

Programmiertechnik Operatoren, Kommentare, Ein-/Ausgabe Programmiertechnik Operatoren, Kommentare, Ein-/Ausgabe Prof. Dr. Oliver Haase Oliver Haase Hochschule Konstanz 1 Was sind Operatoren? Ein Operator ist eine in die Programmiersprache eingebaute Funktion,

Mehr

1. Der Einstieg in Java. Was heißt Programmieren?

1. Der Einstieg in Java. Was heißt Programmieren? 1. Der Einstieg in Java Lernziele: Am Ende dieses Kapitels sollen Sie wissen, aus welchen Bestandteilen ein Java-Programm besteht, Java-Programme übersetzen und ausführen können, Möglichkeiten der Kommentierung

Mehr

Übungsblatt 3: Algorithmen in Java & Grammatiken

Übungsblatt 3: Algorithmen in Java & Grammatiken Humboldt-Universität zu Berlin Grundlagen der Programmierung (Vorlesung von Prof. Bothe) Institut für Informatik WS 15/16 Übungsblatt 3: Algorithmen in Java & Grammatiken Abgabe: bis 9:00 Uhr am 30.11.2015

Mehr

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

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

Mehr

Einführung in die C-Programmierung

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

Mehr

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

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

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

Mehr

J.5 Die Java Virtual Machine

J.5 Die Java Virtual Machine Java Virtual Machine Die Java Virtual Machine 22 Prof. Dr. Rainer Manthey Informatik II Java-Compiler und Java Virtual Machine Quellcode-Datei class C... javac D.java Java-Compiler - Dateien class class

Mehr

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen: VBA Programmierung mit Excel Schleifen 1/6 Erweiterung der Aufgabe Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen: Es müssen also 11 (B L) x 35 = 385 Zellen berücksichtigt

Mehr

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

Kontrollstrukturen, Strukturierte Programmierung

Kontrollstrukturen, Strukturierte Programmierung , Strukturierte Programmierung Steuer- und Kontrollfluss Strukturierte Programmierung Arten von Strukturblöcken Sequenz Alternative Iteration C-Spezifisches Seite 1 Elementare Algorithmen SelectionSort

Mehr

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Konstruktor, Statische Methoden Packages Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Initialisierung von Datenstrukturen

Mehr

Software-Engineering und Optimierungsanwendungen in der Thermodynamik

Software-Engineering und Optimierungsanwendungen in der Thermodynamik Software-Engineering und Optimierungsanwendungen in der Thermodynamik Software-Engineering 5 Programmentwicklung und Debuggen mit IDE und CASE-Tools Übungen Prof. Dr. Rolf Dornberger OPTSWE_SWE: 5 Programmentwicklung

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

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

1 Vom Problem zum Programm

1 Vom Problem zum Programm Hintergrundinformationen zur Vorlesung GRUNDLAGEN DER INFORMATIK I Studiengang Elektrotechnik WS 02/03 AG Betriebssysteme FB3 Kirsten Berkenkötter 1 Vom Problem zum Programm Aufgabenstellung analysieren

Mehr

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-Schulung Grundlagen

Java-Schulung Grundlagen Java-Schulung Grundlagen Java 2 Standard Edition JDK 5 / 6 31.05.2008 Marcel Wieczorek 1 Themenübersicht Basiswissen Objektorientierung Datentypen Fehlerbehandlung Sonstiges Einführung Klassen, Strings

Mehr

Programmiervorkurs Einführung in Java Tag 1

Programmiervorkurs Einführung in Java Tag 1 Programmiervorkurs Einführung in Java Tag 1 Sebastian Glutsch SS 2018 namen Inhaltsübersicht Vorkurs Tag 1:,, en,, Einführung Tag 2: Boolesche Ausdrücke,, If-Abfragen, Switch-Case Tag 3: Arrays, (Do-)While-Schleife,

Mehr

Kontrollstrukturen, Pseudocode und Modulo-Rechnung

Kontrollstrukturen, Pseudocode und Modulo-Rechnung Kontrollstrukturen, Pseudocode und Modulo-Rechnung CoMa-Übung III TU Berlin 29.10.2012 CoMa-Übung III (TU Berlin) Kontrollstrukturen, Pseudocode und Modulo-Rechnung 29.10.2012 1 / 1 Themen der Übung 1

Mehr

Vorkurs Informatik WiSe 16/17

Vorkurs Informatik WiSe 16/17 Java Ausdrücke und Variablen Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe, 05.10.2016 Technische Universität Braunschweig, IPS Überblick Ausdrücke, Datentypen und Variablen Kontrollstrukturen 05.10.2016

Mehr

2. ERSTELLEN VON APPS MIT DEM ADT PLUGIN VON ECLIPSE

2. ERSTELLEN VON APPS MIT DEM ADT PLUGIN VON ECLIPSE 2. ERSTELLEN VON APPS MIT DEM ADT PLUGIN VON ECLIPSE 2.1 Die Einrichtung der Benutzeroberfläche Das Einrichten einer Android-Eclipse-Entwicklungsumgebung zur Android-Entwicklung ist grundsätzlich nicht

Mehr

Einführung zum Arbeiten mit Microsoft Visual C++ 2010 Express Edition

Einführung zum Arbeiten mit Microsoft Visual C++ 2010 Express Edition In den nachfolgenden Schritten finden Sie beschrieben, wie Sie in der Entwicklungsumgebung Microsoft Visual Studio 2010 eine Projektmappe, ein Projekt und einen ersten Quellcode erstellen, diesen kompilieren,

Mehr

Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2015/16. Vorbereitende Aufgaben

Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2015/16. Vorbereitende Aufgaben Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2015/16 Fakultät für Informatik Lehrstuhl 14 Lars Hildebrand, Marcel Preuß, Iman Kamehkhosh, Marc Bury, Diana Howey Übungsblatt

Mehr

Übung Grundlagen der Programmierung. Übung 03: Schleifen. Testplan Testergebnisse

Übung Grundlagen der Programmierung. Übung 03: Schleifen. Testplan Testergebnisse Übung 03: Schleifen Abgabetermin: xx.xx.xxxx Name: Matrikelnummer: Gruppe: G1 (Prähofer) G2 (Prähofer) G3 (Wolfinger) Aufgabe Punkte gelöst abzugeben schriftlich abzugeben elektronisch Aufgabe 03.1 12

Mehr

C-Probeklausur (Informatik 1; Umfang: C, Teil 1; SS07)

C-Probeklausur (Informatik 1; Umfang: C, Teil 1; SS07) C-Probeklausur (Informatik 1; Umfang: C, Teil 1; SS07) 1. Aufgabe 6 Punkte Geben Sie Definitionen an für: float var; 1 a) eine float-variable var: b) einen Zeiger pvar, der float *pvar = &var; 1 auf die

Mehr

M. Graefenhan 2000-12-07. Übungen zu C. Blatt 3. Musterlösung

M. Graefenhan 2000-12-07. Übungen zu C. Blatt 3. Musterlösung M. Graefenhan 2000-12-07 Aufgabe Lösungsweg Übungen zu C Blatt 3 Musterlösung Schreiben Sie ein Programm, das die Häufigkeit von Zeichen in einem eingelesenen String feststellt. Benutzen Sie dazu ein zweidimensionales

Mehr

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren Lineargleichungssysteme: Additions-/ Subtraktionsverfahren W. Kippels 22. Februar 2014 Inhaltsverzeichnis 1 Einleitung 2 2 Lineargleichungssysteme zweiten Grades 2 3 Lineargleichungssysteme höheren als

Mehr

Systeme 1. Kapitel 6. Nebenläufigkeit und wechselseitiger Ausschluss

Systeme 1. Kapitel 6. Nebenläufigkeit und wechselseitiger Ausschluss Systeme 1 Kapitel 6 Nebenläufigkeit und wechselseitiger Ausschluss Threads Die Adressräume verschiedener Prozesse sind getrennt und geschützt gegen den Zugriff anderer Prozesse. Threads sind leichtgewichtige

Mehr

Übungen 19.01.2012 Programmieren 1 Felix Rohrer. Übungen

Übungen 19.01.2012 Programmieren 1 Felix Rohrer. Übungen Übungen if / else / else if... 2... 2 Aufgabe 2:... 2 Aufgabe 3:... 2 Aufgabe 4:... 2 Aufgabe 5:... 2 Aufgabe 6:... 2 Aufgabe 7:... 3 Aufgabe 8:... 3 Aufgabe 9:... 3 Aufgabe 10:... 3 switch... 4... 4 Aufgabe

Mehr

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

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

Mehr

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

Übung Grundlagen der Programmierung. Übung 05: Arrays. Abgabetermin: xx.xx.xxxx. Java-Programm Testplan Testergebnisse

Übung Grundlagen der Programmierung. Übung 05: Arrays. Abgabetermin: xx.xx.xxxx. Java-Programm Testplan Testergebnisse Übung 05: Arrays Abgabetermin: xx.xx.xxxx Name: Name, Vorname Matrikelnummer: 0XXXXXX Gruppe: G1 (Prähofer) G2 (Wolfinger) G3 (Wolfinger) Aufgabe Punkte gelöst abzugeben schriftlich abzugeben elektronisch

Mehr

Programmieren in Haskell Einführung

Programmieren in Haskell Einführung Programmieren in Haskell Einführung Peter Steffen Universität Bielefeld Technische Fakultät 16.10.2009 1 Programmieren in Haskell Veranstalter Dr. Peter Steffen Raum: M3-124 Tel.: 0521/106-2906 Email:

Mehr

Angewandte Mathematik und Programmierung

Angewandte Mathematik und Programmierung Angewandte Mathematik und Programmierung Einführung in das Konzept der objektorientierten Anwendungen zu mathematischen Rechnens SS2013 Inhalt Projekt Vorlesung: praktische Implementierung üben Ein und

Mehr

Vorkurs Informatik WiSe 17/18

Vorkurs Informatik WiSe 17/18 Java Ausdrücke und Variablen Dr. Werner Struckmann / Stephan Mielke, Nicole Naczk, 05.10.2017 Technische Universität Braunschweig, IPS Überblick Ausdrücke, Datentypen und Variablen Kontrollstrukturen 05.10.2017

Mehr

Berner Fachhochschule Hochschule für Technik und Informatik HTI. Kapitel 1. Einstieg in Java. Dr. Elham Firouzi 06.09.10 1

Berner Fachhochschule Hochschule für Technik und Informatik HTI. Kapitel 1. Einstieg in Java. Dr. Elham Firouzi 06.09.10 1 Kapitel 1 Einstieg in Java Dr. Elham Firouzi 06.09.10 1 1 : Einstieg in Java Einleitung Ein erstes Beispiel Berner Fachhochschule Entwicklung von Java-Programmen Applikationen Applets Vor und Nachteile

Mehr

Testen mit JUnit. Motivation

Testen mit JUnit. Motivation Test First Design for Test in Eclipse (eigentlich: ) zu einer Klasse Beispiel zur Demonstration Ergänzungen Test First "Immer dann, wenn Du in Versuchung kommst, etwas wie eine print- Anweisung oder einen

Mehr

Praktikum Ingenieurinformatik. Termin 2. Verzweigungen (if-else), printf und scanf, while-schleife

Praktikum Ingenieurinformatik. Termin 2. Verzweigungen (if-else), printf und scanf, while-schleife Praktikum Ingenieurinformatik Termin 2 Verzweigungen (if-else), printf und scanf, while-schleife 1 1. Import/Export von Eclipse-Projekten 2. Verzweigungen (if-else-anweisung) 3. printf und scanf 4. Übungsaufgaben

Mehr

Fachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 6

Fachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 6 Gudrun Fischer Sascha Kriewel programmierung@is.informatik.uni-duisburg.de Anmeldung zur Klausur! Übungsblatt Nr. 6 Um an der Klausur teilzunehmen, müssen sich Studierende der angewandten Informatik in

Mehr