3. Java - Sprachkonstrukte I
|
|
- Ulrike Stieber
- vor 5 Jahren
- Abrufe
Transkript
1 61 3. Java - Sprachkonstrukte I Namen und Bezeichner, Variablen, Zuweisungen, Konstanten, Datentypen, Operationen, Auswerten von Ausdrücken, Typkonversionen
2 Namen und Bezeichner 62 Ein Programm (also Klasse) braucht einen Namen public class SudokuSolver {...
3 Namen und Bezeichner 62 Ein Programm (also Klasse) braucht einen Namen public class SudokuSolver {... Konvention für Klassennamen: CamelCase benützen Wörter sind zusammengeschrieben mit jeweils einem Grossbuchstaben
4 62 Namen und Bezeichner Ein Programm (also Klasse) braucht einen Namen public class SudokuSolver {... Konvention für Klassennamen: CamelCase benützen Wörter sind zusammengeschrieben mit jeweils einem Grossbuchstaben Erlaubte Namen für Entitäten im Programm: Namen beginnen mit einem Buchstaben oder _ oder $ Danach Folge von Buchstaben, Zahlen oder _ oder $
5 Namen - was ist erlaubt 63 _myname AN$WE4_1S_42 TheCure strictfp side-swipe me@home 49ers $bling$ Ph.D s
6 Namen - was ist erlaubt 63 _myname AN$WE4_1S_42 TheCure strictfp side-swipe me@home 49ers $bling$ Ph.D s
7 Namen - was ist erlaubt 63 _myname AN$WE4_1S_42 TheCure side-swipe me@home strictfp?! 49ers $bling$ Ph.D s
8 Schlüsselwörter 64 Folgende Wörter werden von der Sprache bereits benützt und können deshalb nicht als Namen benützt werden: abstract continue for new switch assert default goto package synchronized boolean do if private this break double implements protected throw byte else import public throws case enum instanceof return transient catch extends int short try char final interface static void class finally long strictfp volatile const float native super while
9 65 Variablen und Konstanten Variablen sind Behälter für einen Wert Haben einen Datentyp und einen Namen Der Datentyp bestimmt, welche Art von Werten in der Variable erlaubt sind x y f c
10 65 Variablen und Konstanten Variablen sind Behälter für einen Wert Haben einen Datentyp und einen Namen Der Datentyp bestimmt, welche Art von Werten in der Variable erlaubt sind int x int y float f char c
11 65 Variablen und Konstanten Variablen sind Behälter für einen Wert Haben einen Datentyp und einen Namen Der Datentyp bestimmt, welche Art von Werten in der Variable erlaubt sind int x int y float f char c f a
12 65 Variablen und Konstanten Variablen sind Behälter für einen Wert Haben einen Datentyp und einen Namen Der Datentyp bestimmt, welche Art von Werten in der Variable erlaubt sind int x int y float f char c Deklaration in Java: f a int x = 23, y = 42; float f; char c = a ;
13 65 Variablen und Konstanten Variablen sind Behälter für einen Wert Haben einen Datentyp und einen Namen Der Datentyp bestimmt, welche Art von Werten in der Variable erlaubt sind int x int y float f char c Deklaration in Java: f a int x = 23, y = 42; float f; char c = a ; Initialisierung
14 66 Konstanten Schlüsselwort final Der Wert der Variable kann genau einmal gesetzt werden Beispiel final int maxsize = 100; Tip: Benützen Sie final immer, es sei denn der Wert muss tatsächlich veränderlich sein.
15 Standardtypen 67 Datentyp Definition Wertebereich Initialwert byte 8-bit Ganzzahl 128,..., short 16-bit Ganzzahl ,..., int 32-bit Ganzzahl 2 31,..., long 64-bit Ganzzahl 2 63,..., L float 32-bit Fliesskommazahl ±1.4E 45,..., ±3.4E f double 64-bit Fliesskommazahl ±4.9E 324,..., ±1.7E d boolean Wahrheitswert true, false false char Unicode-16 Zeichen \u0000,..., a, b,..., \uffff \u0000 String Zeichenkette null
16 Typen und Speicherbelegung Zur Erinnerung: Speicherzellen enthalten 1 Byte = 8 bit
17 Typen und Speicherbelegung Zur Erinnerung: Speicherzellen enthalten 1 Byte = 8 bit byte
18 Typen und Speicherbelegung Zur Erinnerung: Speicherzellen enthalten 1 Byte = 8 bit boolean byte
19 Typen und Speicherbelegung Zur Erinnerung: Speicherzellen enthalten 1 Byte = 8 bit boolean byte short
20 Typen und Speicherbelegung Zur Erinnerung: Speicherzellen enthalten 1 Byte = 8 bit boolean byte short, char
21 Typen und Speicherbelegung Zur Erinnerung: Speicherzellen enthalten 1 Byte = 8 bit boolean byte short, char int, float
22 Typen und Speicherbelegung 68 Zur Erinnerung: Speicherzellen enthalten 1 Byte = 8 bit boolean byte short, char int, float long, double
23 Literale: Ganzzahlen 69 Typ int (oder short, byte) 12 : Wert 12-3 : Wert 3
24 Literale: Ganzzahlen 69 Typ int (oder short, byte) 12 : Wert 12-3 : Wert 3 Typ long 25_872_224L : Wert
25 Literale: Ganzzahlen 69 Typ int (oder short, byte) 12 : Wert 12-3 : Wert 3 Typ long 25_872_224L : Wert Tip: Unterstriche zwischen Zahlen sind erlaubt!
26 Literale: Fliesskommazahlen 70 unterscheiden sich von Ganzzahlliteralen 1 ganzzahliger Teil
27 Literale: Fliesskommazahlen 70 unterscheiden sich von Ganzzahlliteralen durch Angabe von Dezimalkomma 1.0 : Typ double, Wert ganzzahliger Teil fraktionaler Teil
28 Literale: Fliesskommazahlen 70 unterscheiden sich von Ganzzahlliteralen durch Angabe von Dezimalkomma 1.0 : Typ double, Wert 1 1 e-7 oder Exponent. 1e3 : Typ double, Wert 1000 ganzzahliger Teil Exponent
29 Literale: Fliesskommazahlen 70 unterscheiden sich von Ganzzahlliteralen durch Angabe von Dezimalkomma 1.0 : Typ double, Wert 1 und / oder Exponent. 1e3 : Typ double, Wert 1000 ganzzahliger Teil 1.23e-7 fraktionaler Teil Exponent 1.23e-7 : Typ double, Wert
30 Literale: Fliesskommazahlen unterscheiden sich von Ganzzahlliteralen durch Angabe von Dezimalkomma 1.0 : Typ double, Wert f : Typ float, Wert 1.27 und / oder Exponent. 1e3 : Typ double, Wert 1000 ganzzahliger Teil 1.23e-7f fraktionaler Teil Exponent 1.23e-7 : Typ double, Wert e-7f : Typ float, Wert
31 Literale: Zeichen und Zeichenketten 71 Einzelne Zeichen: a : Typ char, Wert 97
32 Literale: Zeichen und Zeichenketten 71 Einzelne Zeichen: a : Typ char, Wert 97 Zeichenketten: "Hello There!" : Typ String
33 Literale: Zeichen und Zeichenketten 71 Einzelne Zeichen: a : Typ char, Wert 97 Zeichenketten: "Hello There!" : Typ String "a" : Typ String
34 Literale: Zeichen und Zeichenketten 71 Einzelne Zeichen: a : Typ char, Wert 97 Zeichenketten: "Hello There!" : Typ String "a" : Typ String Achtung: Zeichen und Zeichenketten sind zwei unterschiedliche Dinge!
35 Zeichen: In ASCII Tabelle 72
36 Wertzuweisungen 73 Kopiert einen Wert in die Variable x In Pseudocode: x Wert In Java: x = Wert x (Kopie) Wert
37 Wertzuweisungen 73 Kopiert einen Wert in die Variable x In Pseudocode: x Wert In Java: x = Wert x Wert Wert
38 Wertzuweisungen 73 Kopiert einen Wert in die Variable x In Pseudocode: x Wert In Java: x = Wert x Wert Wert = ist der Zuweisungsoperator und nicht ein Vergleich! int y = 42 ist also Deklaration + Wertzuweisung in einem.
39 Wertzuweisungen 74 Beispiele int a = 3; double b; b = 3.141; int c = a = 0; String name = "Inf";
40 Wertzuweisungen 74 Beispiele int a = 3; double b; b = 3.141; int c = a = 0; Eine verschachtelte Zuweisung: Der Ausdruck a = 0 speichert den Wert 0 in Variable a. und gibt den Wert danach zurück String name = "Inf";
41 Arithmetische Binäre Operatoren 75 Infix Notation: x op y mit folgenden Operatoren op: + / % Modulo
42 75 Arithmetische Binäre Operatoren Infix Notation: x op y mit folgenden Operatoren op: + / % Modulo Präzedenz: Punkt (und Modulo) vor Strich Assoziativität: Auswertung von Links nach Rechts
43 Arithmetische Binäre Operatoren 76 Division x / y: Ganzzahldivision falls x und y Ganzzahlen sind.
44 76 Arithmetische Binäre Operatoren Division x / y: Ganzzahldivision falls x und y Ganzzahlen sind. Division x / y: Fliesskommadivision falls x oder y eine Fliesskommazahl ist.
45 76 Arithmetische Binäre Operatoren Division x / y: Ganzzahldivision falls x und y Ganzzahlen sind. Division x / y: Fliesskommadivision falls x oder y eine Fliesskommazahl ist. Beispiele Ganzzahldivision und Modulo 5 / 3 ergibt 1 5 / 3 ergibt 1 5 % 3 ergibt 2 5 % 3 ergibt 2
46 Arithmetische Zuweisung 77 x = x + y x += y Analog für,, /, %
47 Arithmetische Zuweisung 77 x = x + y x += y Beispiele: x = 3; // x = x 3 name += "x" // name = name + "x" num = 2; // num = num 2 Analog für,, /, %
48 Arithmetische Unäre Operatoren 78 Prefix Notation: + x oder x
49 Arithmetische Unäre Operatoren 78 Prefix Notation: + x oder x Präzedenz: Unäre Operatoren binden stärker als binäre.
50 Arithmetische Unäre Operatoren 78 Prefix Notation: + x oder x Präzedenz: Unäre Operatoren binden stärker als binäre. Beispiele Angenommen x ist 3 2 x ergibt 6 x +1 ergibt 4
51 Inkrement/Dekrement Operatoren 79 Inkrement Operatoren ++x und x++ haben den gleichen Effekt: x x + 1.Aber unterschiedliche Rückgabewerte:
52 Inkrement/Dekrement Operatoren 79 Inkrement Operatoren ++x und x++ haben den gleichen Effekt: x x + 1.Aber unterschiedliche Rückgabewerte: Präfixoperator ++x gibt neuen Wert zurück: a = ++x; x = x + 1; a = x;
53 79 Inkrement/Dekrement Operatoren Inkrement Operatoren ++x und x++ haben den gleichen Effekt: x x + 1.Aber unterschiedliche Rückgabewerte: Präfixoperator ++x gibt neuen Wert zurück: a = ++x; x = x + 1; a = x; Postfixoperator x++ gibt den alten Wert zurück: a = x++; temp = x; x = x + 1; a= temp;
54 79 Inkrement/Dekrement Operatoren Inkrement Operatoren ++x und x++ haben den gleichen Effekt: x x + 1.Aber unterschiedliche Rückgabewerte: Präfixoperator ++x gibt neuen Wert zurück: a = ++x; x = x + 1; a = x; Postfixoperator x++ gibt den alten Wert zurück: a = x++; temp = x; x = x + 1; a= temp; Präzedenz: Inkrement und Dekrement binden stärker als unäre Operatoren.
55 79 Inkrement/Dekrement Operatoren Inkrement Operatoren ++x und x++ haben den gleichen Effekt: x x + 1.Aber unterschiedliche Rückgabewerte: Präfixoperator ++x gibt neuen Wert zurück: a = ++x; x = x + 1; a = x; Postfixoperator x++ gibt den alten Wert zurück: a = x++; temp = x; x = x + 1; a= temp; Präzedenz: Inkrement und Dekrement binden stärker als unäre Operatoren. Analog für x und x.
56 Inkrement/Dekrement Operatoren 80 Beispiele Angenommen x ist initial 2 y = ++x 3 y = x++ 3
57 Inkrement/Dekrement Operatoren 80 Beispiele Angenommen x ist initial 2 y = ++x 3 ergibt: x ist 3 und y ist 9 y = x++ 3
58 Inkrement/Dekrement Operatoren 80 Beispiele Angenommen x ist initial 2 y = ++x 3 ergibt: x ist 3 und y ist 9 y = x++ 3 ergibt: x ist 3 und y ist 6
59 81 Ausdrücke (Expressions) repräsentieren Berechnungen sind entweder primär oder zusammengesetzt aus anderen Ausdrücken, mit Hilfe von Operatoren sind statisch typisiert Analogie: Baukasten
60 Ausdrücke (Expressions) 82 Beispiele primär: 4.1d oder x oder "Hi" zusammengesetzt: x + y oder f 2.1f Der Typ von f ist float
61 Celsius zu Fahrenheit 83 public class Main { } public static void main(string[] args) { Out.print("Celsius: "); int celsius = In.readInt(); float fahrenheit = 9 * celsius / ; Out.println("Fahrenheit: " + fahrenheit); }
62 Celsius zu Fahrenheit 83 public class Main { } public static void main(string[] args) { Out.print("Celsius: "); int celsius = In.readInt(); float fahrenheit = 9 * celsius / ; Out.println("Fahrenheit: " + fahrenheit); } Beispiel: 15 Celsius sind 59 Fahrenheit
63 Celsius zu Fahrenheit - Analye 84 9 * celsius / Arithmetischer Ausdruck,
64 Celsius zu Fahrenheit - Analye 84 9 * celsius / Arithmetischer Ausdruck, drei Literale, eine Variable, drei Operatorsymbole
65 Celsius zu Fahrenheit - Analye 84 9 * celsius / Arithmetischer Ausdruck, drei Literale, eine Variable, drei Operatorsymbole
66 Celsius zu Fahrenheit - Analye 84 9 * celsius / Arithmetischer Ausdruck, drei Literale, eine Variable, drei Operatorsymbole
67 Celsius zu Fahrenheit - Analye 84 9 * celsius / Arithmetischer Ausdruck, drei Literale, eine Variable, drei Operatorsymbole Wie ist der Ausdruck geklammert?
68 Regel 1: Präzedenz 85 Multiplikative Operatoren (*, /, %) haben höhere Präzedenz ("binden stärker") als additive Operatoren (+, -).
69 Regel 1: Präzedenz 85 Multiplikative Operatoren (*, /, %) haben höhere Präzedenz ("binden stärker") als additive Operatoren (+, -). Beipsiel 9 * celsius / bedeutet (9 * celsius / 5) + 32
70 Regel 2: Assoziativität 86 Arithmetische Operatoren (*, /, %, +, -) sind linksassoziativ: bei gleicher Präzedenz erfolgt Auswertung von links nach rechts.
71 Regel 2: Assoziativität 86 Arithmetische Operatoren (*, /, %, +, -) sind linksassoziativ: bei gleicher Präzedenz erfolgt Auswertung von links nach rechts. Beispiel 9 * celsius / bedeutet ((9 * celsius) / 5) + 32
72 Regel 3: Stelligkeit 87 Unäre Operatoren +, - vor binären +, -.
73 Regel 3: Stelligkeit 87 Unäre Operatoren +, - vor binären +, -. Beispiel 9 * celsius / bedeutet 9 * celsius / (+5) + 32
74 Klammerung 88 Jeder Ausdruck kann mit Hilfe der Assoziativitäten Präzedenzen Stelligkeiten der beteiligten Operatoren eindeutig geklammert werden.
75 Ausdrucksbäume 89 Klammerung ergibt Ausdrucksbaum 9 * celsius / celsius 5 32 * / +
76 Ausdrucksbäume 89 Klammerung ergibt Ausdrucksbaum (9 * celsius) / celsius 5 32 * / +
77 Ausdrucksbäume 89 Klammerung ergibt Ausdrucksbaum ((9 * celsius) / 5) celsius 5 32 * / +
78 Ausdrucksbäume 89 Klammerung ergibt Ausdrucksbaum (((9 * celsius) / 5) + 32) 9 celsius 5 32 * / +
79 Auswertungsreihenfolge 90 "Von den Blättern zur Wurzel" im Ausdrucksbaum 9 * celsius / celsius 5 32 * / +
80 Auswertungsreihenfolge 90 "Von den Blättern zur Wurzel" im Ausdrucksbaum 9 * celsius / celsius 5 32 * / +
81 Auswertungsreihenfolge 90 "Von den Blättern zur Wurzel" im Ausdrucksbaum 9 * celsius / celsius 5 32 * / +
82 Auswertungsreihenfolge 90 "Von den Blättern zur Wurzel" im Ausdrucksbaum 9 * celsius / celsius 5 32 * / +
83 Auswertungsreihenfolge 90 "Von den Blättern zur Wurzel" im Ausdrucksbaum 9 * celsius / celsius 5 32 * / +
84 Auswertungsreihenfolge 90 "Von den Blättern zur Wurzel" im Ausdrucksbaum 9 * celsius / celsius 5 32 * / +
85 Auswertungsreihenfolge 90 "Von den Blättern zur Wurzel" im Ausdrucksbaum 9 * celsius / celsius 5 32 * / +
86 Auswertungsreihenfolge 90 "Von den Blättern zur Wurzel" im Ausdrucksbaum 9 * celsius / celsius 5 32 * / +
87 Ausdrucksbäume Notation 91 Üblichere Notation: Wurzel oben 9 * celsius / / 32 * 5 9 celsius
88 92 Typsystem Java hat ein statisches Typsystem: Alle Typen müssen deklariert werden Wenn möglich wird die Typisierung vom Compiler geprüft ansonsten zur Laufzeit Vorteil eines statischen Typsystems Fail-fast Fehler im Programm werden oft schon vom Compiler gefunden Verständlicher Code
89 Typfehler 93 Beispiel int pi_ish; float pi = 3.14f; pi_ish = pi; Compiler Fehler:./Root/Main.java:12: error: incompatible types: possible lossy conversion from float to int pi_ish = pi; ^
90 Explizite Typkonvertierung 94 Beispiel int pi_ish; float pi = 3.14f; pi_ish = pi;
91 Explizite Typkonvertierung 94 Beispiel int pi_ish; float pi = 3.14f; pi_ish = (int) pi; Explizite Typkonvertierung mit Typecasting: (typ)
92 Explizite Typkonvertierung Beispiel int pi_ish; float pi = 3.14f; pi_ish = (int) pi; Explizite Typkonvertierung mit Typecasting: (typ) Statisch typkorrekt, Compiler happy Laufzeitverhalten: Je nach Situation Hier: Genauigkeitsverlust: Kann das Programm zur Laufzeit zum Absturz bringen! 94
93 Typ Konvertierung - Anschaulich für Ganzzahlen 95 Expliziter Cast byte short int long Potentieller Informationsverlust bei explizitem Cast, da weniger Speicher zur Verfügung. Implizite Konversion
94 96 Gemischte Ausdrücke, Konversion Fliesskommazahlen sind allgemeiner als ganzzahlige Typen. In gemischten Ausdrücken werden ganze Zahlen zu Fliesskommazahlen konvertiert.
95 96 Gemischte Ausdrücke, Konversion Fliesskommazahlen sind allgemeiner als ganzzahlige Typen. In gemischten Ausdrücken werden ganze Zahlen zu Fliesskommazahlen konvertiert.
96 96 Gemischte Ausdrücke, Konversion Fliesskommazahlen sind allgemeiner als ganzzahlige Typen. In gemischten Ausdrücken werden ganze Zahlen zu Fliesskommazahlen konvertiert. 9 * celsius /
97 96 Gemischte Ausdrücke, Konversion Fliesskommazahlen sind allgemeiner als ganzzahlige Typen. In gemischten Ausdrücken werden ganze Zahlen zu Fliesskommazahlen konvertiert. 9 * celsius / Typ float, Wert 28
98 96 Gemischte Ausdrücke, Konversion Fliesskommazahlen sind allgemeiner als ganzzahlige Typen. In gemischten Ausdrücken werden ganze Zahlen zu Fliesskommazahlen konvertiert. 9 * 28.0f /
99 96 Gemischte Ausdrücke, Konversion Fliesskommazahlen sind allgemeiner als ganzzahlige Typen. In gemischten Ausdrücken werden ganze Zahlen zu Fliesskommazahlen konvertiert. 9 * 28.0f / wird zu float konvertiert: 9.0f
100 96 Gemischte Ausdrücke, Konversion Fliesskommazahlen sind allgemeiner als ganzzahlige Typen. In gemischten Ausdrücken werden ganze Zahlen zu Fliesskommazahlen konvertiert f / wird zu float konvertiert: 5.0f
101 96 Gemischte Ausdrücke, Konversion Fliesskommazahlen sind allgemeiner als ganzzahlige Typen. In gemischten Ausdrücken werden ganze Zahlen zu Fliesskommazahlen konvertiert. 50.4f + 32 wird zu float konvertiert: 32.0f
102 96 Gemischte Ausdrücke, Konversion Fliesskommazahlen sind allgemeiner als ganzzahlige Typen. In gemischten Ausdrücken werden ganze Zahlen zu Fliesskommazahlen konvertiert. 82.4f
103 Typkonversion bei binären Operationen 97 Bei einer binären Operation mit numerischen Operanden werden die Operanden nach folgenden Regeln konvertiert: Haben beide Operanden denselben Typ, findet keine Konversion statt Ist einer der Operanden double, so wird der andere nach double konvertiert Ist einer der Operanden float, so wird der andere nach float konvertiert Ist einer der Operanden long, so wird der andere nach long konvertiert Ansonsten: Beide Operanden werden nach int konvertiert
104 98 4. Effizienz von Algorithmen Effizienz von Algorithmen, Random Access Machine Modell, Funktionenwachstum, Asymptotik [Cormen et al, Kap. 2.2,3, Ottman/Widmayer, Kap. 1.1]
105 99 Effizienz von Algorithmen Ziele Laufzeitverhalten eines Algorithmus maschinenunabhängig quantifizieren. Effizienz von Algorithmen vergleichen. Abhängigkeit von der Eingabegrösse verstehen.
106 Technologiemodell 100 Random Access Machine (RAM) Ausführungsmodell: Instruktionen werden der Reihe nach (auf einem Prozessorkern) ausgeführt.
107 100 Technologiemodell Random Access Machine (RAM) Ausführungsmodell: Instruktionen werden der Reihe nach (auf einem Prozessorkern) ausgeführt. Speichermodell: Konstante Zugriffszeit.
108 100 Technologiemodell Random Access Machine (RAM) Ausführungsmodell: Instruktionen werden der Reihe nach (auf einem Prozessorkern) ausgeführt. Speichermodell: Konstante Zugriffszeit. Elementare Operationen: Rechenoperation (+,,,...), Vergleichsoperationen, Zuweisung / Kopieroperation, Flusskontrolle (Sprünge)
109 100 Technologiemodell Random Access Machine (RAM) Ausführungsmodell: Instruktionen werden der Reihe nach (auf einem Prozessorkern) ausgeführt. Speichermodell: Konstante Zugriffszeit. Elementare Operationen: Rechenoperation (+,,,...), Vergleichsoperationen, Zuweisung / Kopieroperation, Flusskontrolle (Sprünge) Einheitskostenmodell: elementare Operation hat Kosten 1.
110 100 Technologiemodell Random Access Machine (RAM) Ausführungsmodell: Instruktionen werden der Reihe nach (auf einem Prozessorkern) ausgeführt. Speichermodell: Konstante Zugriffszeit. Elementare Operationen: Rechenoperation (+,,,...), Vergleichsoperationen, Zuweisung / Kopieroperation, Flusskontrolle (Sprünge) Einheitskostenmodell: elementare Operation hat Kosten 1. Datentypen: Fundamentaltypen wie grössenbeschränkte Ganzzahl oder Fliesskommazahl.
111 Grösse der Eingabedaten 101 Typisch: Anzahl Eingabeobjekte (von fundamentalem Typ). Oftmals: Anzahl Bits für eine vernünftige / kostengünstige Repräsentation der Daten.
112 102 Asymptotisches Verhalten Genaue Laufzeit lässt sich selbst für kleine Eingabedaten kaum voraussagen. Betrachten das asymptotische Verhalten eines Algorithmus. Ignorieren alle konstanten Faktoren. Beispiel Eine Operation mit Kosten 20 ist genauso gut wie eine mit Kosten 1. Lineares Wachstum mit Steigung 5 ist genauso gut wie lineares Wachstum mit Steigung 1.
113 Funktionenwachstum O, Θ, Ω [Cormen et al, Kap. 3; Ottman/Widmayer, Kap. 1.1]
114 Oberflächlich 104 Verwende die asymptotische Notation zur Kennzeichnung der Laufzeit von Algorithmen Wir schreiben Θ(n 2 ) und meinen, dass der Algorithmus sich für grosse n wie n 2 verhält: verdoppelt sich die Problemgrösse, so vervierfacht sich die Laufzeit.
115 Genauer: Asymptotische obere Schranke 105 Gegeben: Funktion g : N R. Definition: O(g) = {f : N R c > 0, n 0 N : 0 f(n) c g(n) n n 0 } Schreibweise: O(g(n)) := O(g( )) = O(g).
116 Anschauung n g(n) = n 2 f O(g)
117 Anschauung 106 g(n) = n 2 f O(g) h O(g)
118 Beispiele 107 O(g) = {f : N R c > 0, n 0 N : 0 f(n) c g(n) n n 0 } f(n) f O(?) Beispiel 3n + 4 2n n n n + n
119 Beispiele 107 O(g) = {f : N R c > 0, n 0 N : 0 f(n) c g(n) n n 0 } f(n) f O(?) Beispiel 3n + 4 O(n) c = 4, n 0 = 4 2n n n n + n
120 Beispiele 107 O(g) = {f : N R c > 0, n 0 N : 0 f(n) c g(n) n n 0 } f(n) f O(?) Beispiel 3n + 4 O(n) c = 4, n 0 = 4 2n O(n) c = 2, n 0 = 0 n n n + n
121 Beispiele 107 O(g) = {f : N R c > 0, n 0 N : 0 f(n) c g(n) n n 0 } f(n) f O(?) Beispiel 3n + 4 O(n) c = 4, n 0 = 4 2n O(n) c = 2, n 0 = 0 n n O(n 2 ) n + n c = 2, n 0 = 100
122 Beispiele 107 O(g) = {f : N R c > 0, n 0 N : 0 f(n) c g(n) n n 0 } f(n) f O(?) Beispiel 3n + 4 O(n) c = 4, n 0 = 4 2n O(n) c = 2, n 0 = 0 n n O(n 2 ) c = 2, n 0 = 100 n + n O(n) c = 2, n 0 = 1
123 Eigenschaft 108 f 1 O(g), f 2 O(g) f 1 + f 2 O(g)
124 Umkehrung: Asymptotische untere Schranke 109 Gegeben: Funktion g : N R. Definition: Ω(g) = {f : N R c > 0, n 0 N : 0 c g(n) f(n) n n 0 }
125 Beispiel 110 f Ω(g) g(n) = n n 0
126 Beispiel 110 h Ω(g) f Ω(g) g(n) = n n 0
127 Asymptotisch scharfe Schranke 111 Gegeben Funktion g : N R. Definition: Θ(g) := Ω(g) O(g). Einfache, geschlossene Form: Übung.
128 Beispiel 112 g(n) = n 2 f Θ(n 2 ) h(n) = 0.5 n 2
129 Wachstumsbezeichnungen 113 O(1) beschränkt Array-Zugriff O(log log n) doppelt logarithmisch Binäre sortierte Suche interpoliert O(log n) logarithmisch Binäre sortierte Suche O( n) wie die Wurzelfunktion Primzahltest (naiv) O(n) linear Unsortierte naive Suche O(n log n) superlinear / loglinear Gute Sortieralgorithmen O(n 2 ) quadratisch Einfache Sortieralgorithmen O(n c ) polynomial Matrixmultiplikation O(2 n ) exponentiell Travelling Salesman Dynamic Programming O(n!) faktoriell Travelling Salesman naiv
130 Kleine n 60 n 4 2 n 40 n 2 20 n ln n
131 Grössere n n n 4 n 2 log n
132 Grosse n n n 4 n log n
133 Logarithmen! 117 1,000 n n 3/2 n log n n log n
134 Zeitbedarf 118 Annahme: 1 Operation = 1µs. Problemgrösse log 2 n 1µs n 1µs n log 2 n 1µs n 2 1µs 2 n 1µs
135 Zeitbedarf 118 Annahme: 1 Operation = 1µs. Problemgrösse log 2 n 1µs 7µs 13µs 20µs 30µs n 1µs n log 2 n 1µs n 2 1µs 2 n 1µs
136 Zeitbedarf 118 Annahme: 1 Operation = 1µs. Problemgrösse log 2 n 1µs 7µs 13µs 20µs 30µs n 1µs 100µs 1/100s 1s 17 Minuten n log 2 n 1µs n 2 1µs 2 n 1µs
137 Zeitbedarf 118 Annahme: 1 Operation = 1µs. Problemgrösse log 2 n 1µs 7µs 13µs 20µs 30µs n 1µs 100µs 1/100s 1s 17 Minuten n log 2 n 1µs 700µs 13/100µs 20s 8.5 Stunden n 2 1µs 2 n 1µs
138 Zeitbedarf 118 Annahme: 1 Operation = 1µs. Problemgrösse log 2 n 1µs 7µs 13µs 20µs 30µs n 1µs 100µs 1/100s 1s 17 Minuten n log 2 n 1µs 700µs 13/100µs 20s 8.5 Stunden n 2 1µs 1/100s 1.7 Minuten 11.5 Tage 317 Jahrhund. 2 n 1µs
139 Zeitbedarf 118 Annahme: 1 Operation = 1µs. Problemgrösse log 2 n 1µs 7µs 13µs 20µs 30µs n 1µs 100µs 1/100s 1s 17 Minuten n log 2 n 1µs 700µs 13/100µs 20s 8.5 Stunden n 2 1µs 1/100s 1.7 Minuten 11.5 Tage 317 Jahrhund. 2 n 1µs Jahrh.
140 Eine gute Strategie? dann kaufe ich mir eben eine neue Maschine!
141 Eine gute Strategie? dann kaufe ich mir eben eine neue Maschine! Wenn ich heute ein Problem der Grösse n lösen kann, dann kann ich mit einer 10 oder 100 mal so schnellen Maschine... Komplexität (speed 10) (speed 100) log 2 n n n 2 2 n
142 Eine gute Strategie? dann kaufe ich mir eben eine neue Maschine! Wenn ich heute ein Problem der Grösse n lösen kann, dann kann ich mit einer 10 oder 100 mal so schnellen Maschine... Komplexität (speed 10) (speed 100) log 2 n n n 10 n n 100 n n 2 2 n
143 Eine gute Strategie? dann kaufe ich mir eben eine neue Maschine! Wenn ich heute ein Problem der Grösse n lösen kann, dann kann ich mit einer 10 oder 100 mal so schnellen Maschine... Komplexität (speed 10) (speed 100) log 2 n n n 10 n n 100 n n 10 n n 100 n n 2 2 n
144 Eine gute Strategie? dann kaufe ich mir eben eine neue Maschine! Wenn ich heute ein Problem der Grösse n lösen kann, dann kann ich mit einer 10 oder 100 mal so schnellen Maschine... Komplexität (speed 10) (speed 100) log 2 n n n 10 n n 100 n n 10 n n 100 n n 2 n 3.16 n n 10 n 2 n
145 Eine gute Strategie? dann kaufe ich mir eben eine neue Maschine! Wenn ich heute ein Problem der Grösse n lösen kann, dann kann ich mit einer 10 oder 100 mal so schnellen Maschine... Komplexität (speed 10) (speed 100) log 2 n n n 10 n n 100 n n 10 n n 100 n n 2 n 3.16 n n 10 n 2 n n n n n
146 Beispiele 120
147 Beispiele 120 n O(n 2 )
148 Beispiele 120 n O(n 2 ) korrekt, aber ungenau:
149 Beispiele 120 n O(n 2 ) korrekt, aber ungenau: n O(n) und sogar n Θ(n).
150 Beispiele 120 n O(n 2 ) korrekt, aber ungenau: n O(n) und sogar n Θ(n).
151 Beispiele 120 n O(n 2 ) korrekt, aber ungenau: n O(n) und sogar n Θ(n). 3n 2 O(2n 2 )
152 Beispiele 120 n O(n 2 ) korrekt, aber ungenau: n O(n) und sogar n Θ(n). 3n 2 O(2n 2 ) korrekt, aber unüblich:
153 Beispiele 120 n O(n 2 ) korrekt, aber ungenau: n O(n) und sogar n Θ(n). 3n 2 O(2n 2 ) korrekt, aber unüblich: Konstanten weglasssen: 3n 2 O(n 2 ).
154 Beispiele 120 n O(n 2 ) korrekt, aber ungenau: n O(n) und sogar n Θ(n). 3n 2 O(2n 2 ) korrekt, aber unüblich: Konstanten weglasssen: 3n 2 O(n 2 ).
155 120 Beispiele n O(n 2 ) korrekt, aber ungenau: n O(n) und sogar n Θ(n). 3n 2 O(2n 2 ) korrekt, aber unüblich: Konstanten weglasssen: 3n 2 O(n 2 ). 2n 2 O(n)
156 120 Beispiele n O(n 2 ) korrekt, aber ungenau: n O(n) und sogar n Θ(n). 3n 2 O(2n 2 ) korrekt, aber unüblich: Konstanten weglasssen: 3n 2 O(n 2 ). 2n 2 O(n) ist falsch:
157 120 Beispiele n O(n 2 ) korrekt, aber ungenau: n O(n) und sogar n Θ(n). 3n 2 O(2n 2 ) korrekt, aber unüblich: Konstanten weglasssen: 3n 2 O(n 2 ). 2n 2 O(n) ist falsch: 2n2 cn = 2 c n n!
158 120 Beispiele n O(n 2 ) korrekt, aber ungenau: n O(n) und sogar n Θ(n). 3n 2 O(2n 2 ) korrekt, aber unüblich: Konstanten weglasssen: 3n 2 O(n 2 ). 2n 2 O(n) ist falsch: 2n2 cn = 2 c n n!
159 120 Beispiele n O(n 2 ) korrekt, aber ungenau: n O(n) und sogar n Θ(n). 3n 2 O(2n 2 ) korrekt, aber unüblich: Konstanten weglasssen: 3n 2 O(n 2 ). 2n 2 O(n) ist falsch: 2n2 cn O(n) O(n 2 ) = 2 c n n!
160 120 Beispiele n O(n 2 ) korrekt, aber ungenau: n O(n) und sogar n Θ(n). 3n 2 O(2n 2 ) korrekt, aber unüblich: Konstanten weglasssen: 3n 2 O(n 2 ). 2n 2 O(n) ist falsch: 2n2 cn O(n) O(n 2 ) ist korrekt = 2 c n n!
161 120 Beispiele n O(n 2 ) korrekt, aber ungenau: n O(n) und sogar n Θ(n). 3n 2 O(2n 2 ) korrekt, aber unüblich: Konstanten weglasssen: 3n 2 O(n 2 ). 2n 2 O(n) ist falsch: 2n2 cn O(n) O(n 2 ) ist korrekt = 2 c n n!
162 120 Beispiele n O(n 2 ) korrekt, aber ungenau: n O(n) und sogar n Θ(n). 3n 2 O(2n 2 ) korrekt, aber unüblich: Konstanten weglasssen: 3n 2 O(n 2 ). 2n 2 O(n) ist falsch: 2n2 cn O(n) O(n 2 ) ist korrekt Θ(n) Θ(n 2 ) = 2 c n n!
163 120 Beispiele n O(n 2 ) korrekt, aber ungenau: n O(n) und sogar n Θ(n). 3n 2 O(2n 2 ) korrekt, aber unüblich: Konstanten weglasssen: 3n 2 O(n 2 ). 2n 2 O(n) ist falsch: 2n2 cn O(n) O(n 2 ) ist korrekt Θ(n) Θ(n 2 ) ist falsch: = 2 c n n!
164 Beispiele 120 n O(n 2 ) korrekt, aber ungenau: n O(n) und sogar n Θ(n). 3n 2 O(2n 2 ) korrekt, aber unüblich: Konstanten weglasssen: 3n 2 O(n 2 ). 2n 2 O(n) ist falsch: 2n2 cn = 2 c n n! O(n) O(n 2 ) ist korrekt Θ(n) Θ(n 2 ) ist falsch: n Ω(n 2 ) Θ(n 2 )
165 Nützliches 121 Theorem Seien f, g : N R + zwei Funktionen. Dann gilt: f(n) 1 lim n g(n) f(n) 2 lim n g(n) 3 f(n) g(n) = 0 f O(g), O(f) O(g). = C > 0 (C konstant) f Θ(g). n g O(f), O(g) O(f).
166 122 Zur Notation Übliche Schreibweise f = O(g) ist zu verstehen als f O(g). Es gilt nämlich f 1 = O(g), f 2 = O(g) f 1 = f 2! Beispiel n = O(n 2 ), n 2 = O(n 2 ) aber natürlich n n 2.
167 123 Algorithmen, Programme und Laufzeit Programm: Konkrete Implementation eines Algorithmus. Laufzeit des Programmes: messbarer Wert auf einer konkreten Maschine. Kann sowohl nach oben, wie auch nach unten abgeschätzt werden. Beispiel Rechner mit 3 GHz. Maximale Anzahl Operationen pro Taktzyklus (z.b. 8). untere Schranke. Einzelne Operation dauert mit Sicherheit nie länger als ein Tag obere Schranke. Asymptotisch gesehen stimmen die Schranken überein.
168 Komplexität 124 Komplexität eines Problems P : minimale (asymptotische) Kosten über alle Algorithmen A, die P lösen.
169 Komplexität 124 Komplexität eines Problems P : minimale (asymptotische) Kosten über alle Algorithmen A, die P lösen. Komplexität der Elementarmultiplikation zweier Zahlen der Länge n ist Ω(n) und O(n log 3 2 ) (Karatsuba Ofman).
170 Komplexität Exemplarisch: Problem Komplexität O(n) O(n) O(n 2 ) Algorithmus Kosten 2 3n 4 O(n) Θ(n 2 ) Programm Laufzeit Θ(n) O(n) Θ(n 2 ) 2 Anzahl Elementaroperationen 124
3. Java - Sprachkonstrukte I
84 3. Java - Sprachkonstrukte I Namen und Bezeichner, Variablen, Zuweisungen, Konstanten, Datentypen, Operationen, Auswerten von Ausdrücken, Typkonversionen Namen und Bezeichner 85 Ein Programm (also Klasse)
Mehr3. Java - Sprachkonstrukte I
Namen und Bezeichner Ein Programm (also Klasse) braucht einen Namen 3. Java - Sprachkonstrukte I Namen und Bezeichner, Variablen, Zuweisungen, Konstanten, Datentypen, Operationen, Auswerten von Ausdrücken,
Mehr3. Java - Sprachkonstrukte I
Lernziele 3. Java - Sprachkonstrukte I Namen und Bezeichner, Variablen, Zuweisungen, Konstanten, Datentypen, Operationen, Auswerten von Ausdrücken, Typkonversionen Sie kennen die grundlegensten Bausteine
Mehr3. Java - Sprachkonstrukte I
Namen und Bezeichner Ein Programm (also Klasse) braucht einen Namen 3. Java - Sprachkonstrukte I Namen und Bezeichner, Variablen, Zuweisungen, Konstanten, Datentypen, Operationen, Auswerten von Ausdrücken,
MehrProgrammieren und Problemlösen Java-Sprachkonstrukte. Java-Sprachkonstrukte. Übung Altersberechner. Namen und Bezeichner. Namen und Bezeichner
Übung Altersberechner Dennis Komm Programmieren und Problemlösen public class AgeCalc { public static void main(string[] args) { Out.print("Enter your year of birth: ")... } } Ausgabe: "In 2020, you will
Mehr2. Effizienz von Algorithmen
Effizienz von Algorithmen 2. Effizienz von Algorithmen Effizienz von Algorithmen, Random Access Machine Modell, Funktionenwachstum, Asymptotik [Cormen et al, Kap. 2.2,3,4.2-4.4 Ottman/Widmayer, Kap. 1.1]
Mehr4. Effizienz von Algorithmen
Effizienz von Algorithmen 4. Effizienz von Algorithmen Effizienz von Algorithmen, Random Access Machine Modell, Funktionenwachstum, Asymptotik [Cormen et al, Kap. 2.2,3,4.2-4.4 Ottman/Widmayer, Kap. 1.1]
MehrProgrammieren und Problemlösen
Dennis Komm Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 27. Februar 2019 Komplexität von Algorithmen Aufgabe Primzahltest Schreibe ein Programm, das eine ganze Zahl x als Eingabe
Mehr3. Java Einführung. Erstes Java Programm. Der euklidische Algorithmus in Java. Java Klassen
Erstes Java Programm public class Hello { Klasse: Ein Programm Methode: benannte Folge von en. 3. Java Einführung Moderner Euklid Algorithmus in Java, Ein- und Ausgabe in Java public static void main (String[]
MehrInformatik II. Vorlesung am D-BAUG der ETH Zürich. Felix Friedrich & Hermann Lehner FS 2018
1 Informatik II Vorlesung am D-BAUG der ETH Zürich Felix Friedrich & Hermann Lehner FS 2018 23 1. Einführung Algorithmen und Datenstrukturen, erstes Beispiel 24 Ziele der Vorlesung Verständnis des Entwurfs
MehrInformatik II. 1. Einführung. Ziele der Vorlesung. Inhalte der Vorlesung. Vorlesung am D-BAUG der ETH Zürich
Informatik II Vorlesung am D-BAUG der ETH Zürich 1. Einführung Felix Friedrich & Hermann Lehner Algorithmen und Datenstrukturen, erstes Beispiel FS 2018 1 23 Ziele der Vorlesung Inhalte der Vorlesung Verständnis
MehrInformatik II. 1. Einführung. Inhalte der Vorlesung. Ziele der Vorlesung. Vorlesung am D-BAUG der ETH Zürich
Informatik II Vorlesung am D-BAUG der ETH Zürich 1. Einführung Felix Friedrich & Hermann Lehner Algorithmen und Datenstrukturen, Korrektheit, erstes Beispiel FS 2019 1 2 Ziele der Vorlesung Inhalte der
MehrDatenstrukturen und Algorithmen
Datenstrukturen und Algorithmen Vorlesung am D-Math (CSE) der ETH Zürich 1. Einführung Felix Friedrich Überblick, Algorithmen und Datenstrukturen, Korrektheit, erstes FS 2019 1 19 Ziele des Kurses Verständnis
MehrEinstieg in die Informatik mit Java
1 / 22 Einstieg in die Informatik mit Java Grundlagen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 22 1 Kommentare 2 Bezeichner für Klassen, Methoden, Variablen 3 White
MehrEinstieg in die Informatik mit Java
Vorlesung vom 18.4.07, Grundlagen Übersicht 1 Kommentare 2 Bezeichner für Klassen, Methoden, Variablen 3 White Space Zeichen 4 Wortsymbole 5 Interpunktionszeichen 6 Operatoren 7 import Anweisungen 8 Form
MehrGrundlagen der Modellierung und Programmierung, Übung
Grundlagen der Modellierung und Programmierung Übung Prof. Wolfram Amme LS Softwaretechnik Prof. Klaus Küspert LS Datenbanksysteme Prof. Birgitta König-Ries LS Verteilte Systeme Prof. Dr. Wilhelm Rossak
MehrTeil 5 - Java. Programmstruktur Operatoren Schlüsselwörter Datentypen
Teil 5 - Java Programmstruktur Operatoren Schlüsselwörter Datentypen 1 Kommentare in Java In Java gibt es drei Möglichkeiten zur Kommentierung: // Kommentar Alle Zeichen nach dem // werden ignoriert. für
MehrNamen und Bezeichner. Ein Programm braucht einen Namen. Bezeichner: Ein Name für "Objekte" im Programm.
Namen und Bezeichner, Variablen, Zuweisungen, Konstanten, Datentypen, Operationen,Auswertung von Ausdrücken, Konversion, Kontrollfluss: if..then, while, do.. while, for, Klassen und statische Methoden
MehrJava 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.
MehrJava-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
MehrEinführung in die Programmierung WS 2009/10. Übungsblatt 5: Typen, Variablen und einfache Methoden in Java
Ludwig-Maximilians-Universität München München, 20.11.2009 Institut für Informatik Prof. Dr. Christian Böhm Annahita Oswald, Bianca Wackersreuther Einführung in die Programmierung WS 2009/10 Übungsblatt
MehrVorkurs 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
MehrGanze Zahlen. Die Typen int, unsigned int; Auswertung arithmetischer Ausdrücke, arithmetische Operatoren
Ganze Zahlen Die Typen int, unsigned int; Auswertung arithmetischer Ausdrücke, arithmetische Operatoren Celsius to Fahrenheit // Program: fahrenheit.cpp // Convert temperatures from Celsius to Fahrenheit.
MehrNino Simunic M.A. Computerlinguistik, Campus DU
Vorlesung 3. Sitzung Grundlegende Programmiertechniken Wintersemester 2007/2008 Dozent Nino Simunic M.A. Computerlinguistik, Campus DU Grundlegende Programmiertechniken, WS 2007/2008 Ausdrücke, Operatoren
Mehr2. Ganze Zahlen int unsigned int
99 2. Ganze Zahlen Auswertung arithmetischer Ausdrücke, Assoziativität und Präzedenz, arithmetische Operatoren, Wertebereich der Typen int, unsigned int Celsius to Fahrenheit // Program: fahrenheit.cpp
MehrInstitut für Programmierung und Reaktive Systeme. Java 2. Markus Reschke
Java 2 Markus Reschke 07.10.2014 Datentypen Was wird gespeichert? Wie wird es gespeichert? Was kann man mit Werten eines Datentyps machen (Operationen, Methoden)? Welche Werte gehören zum Datentyp? Wie
MehrMartin Unold INFORMATIK. Geoinformatik und Vermessung
Wiederholung So sieht ein leeres Java-Programm aus public class Programmname { public static void main (String[] args) { // Hier stehen die Anweisungen } } Beispiele für Anweisungen Wiederholung Ausgabe
Mehr2. Ganze Zahlen. Auswertung arithmetischer Ausdrücke, Assoziativität und Präzedenz, arithmetische Operatoren, Wertebereich der Typen int, unsigned int
74 2. Ganze Zahlen Auswertung arithmetischer Ausdrücke, Assoziativität und Präzedenz, arithmetische Operatoren, Wertebereich der Typen int, unsigned int Celsius to Fahrenheit 75 // Program: fahrenheit.cpp
MehrEinführung in die Programmierung I. 2.0 Einfache Java Programme. Thomas R. Gross. Department Informatik ETH Zürich
252-0027 Einführung in die Programmierung I 2.0 Einfache Java Programme Thomas R. Gross Department Informatik ETH Zürich Uebersicht 2.0 Einfache Java Programme Struktur Namen Output 2 Graphische Darstellung
MehrVorkurs 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
Mehr5.3 Auswertung von Ausdrücken
5.3 Auswertung von Ausdrücken Funktionen in Java bekommen Parameter/Argumente als Input, und liefern als Output den Wert eines vorbestimmten Typs. Zum Beispiel könnte man eine Funktion i n t min ( i n
MehrSchwerpunkte. 8. Ausdrücke, Operatoren (einfache Typen) Beispiel: Schaltjahr Test. Einführendes Beispiel: Grundprobleme
Schwerpunkte Vollständige und unvollständige Auswertung 8. Ausdrücke, Operatoren (einfache Typen) Teil 1 Seiteneffekte Overloading: Überladung von Operatoren Implizite und explizite (cast) Typumwandlung
MehrProgrammiervorkurs 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,
MehrKapitel 4. Programmierkurs. Datentypen. Arten von Datentypen. Wiederholung Kapitel 4. Birgit Engels, Anna Schulze WS 07/08
Kapitel 4 Programmierkurs Birgit Engels, Anna Schulze Wiederholung Kapitel 4 ZAIK Universität zu Köln WS 07/08 1 / 23 2 Datentypen Arten von Datentypen Bei der Deklaration einer Variablen(=Behälter für
MehrGanze Zahlen. Die Typen int, unsigned int; Auswertung arithmetischer Ausdrücke, arithmetische Operatoren
Ganze Zahlen Die Typen int, unsigned int; Auswertung arithmetischer Ausdrücke, arithmetische Operatoren Celsius to Fahrenheit // Program: fahrenheit.cpp // Convert temperatures from Celsius to Fahrenheit.
MehrKostenmodell. Daniel Graf, Tobias Pröger. 22. September 2016 (aktualisierte Fassung 5 vom 9. Oktober 2016)
Kostenmodell Daniel Graf, Tobias Pröger 22. September 2016 (aktualisierte Fassung 5 vom 9. Oktober 2016) Erklärung: Diese Mitschrift ist als Ergänzung zur Vorlesung gedacht. Wir erheben keinen Anspruch
MehrJava - Zahlen, Wahrheitswerte und Zeichen. Leibniz Universität IT Services Anja Aue
Java - Zahlen, Wahrheitswerte und Zeichen Leibniz Universität Anja Aue Kommentare Hilfe für den Entwickler. Wer hat wann welche Änderung vorgenommen? Warum werden diese Anweisungen hier ausgeführt? Bei
MehrJava Lexikalische Struktur
Informatik 1 für Nebenfachstudierende Grundmodul Java Lexikalische Struktur Kai-Steffen Hielscher Folienversion: 19. Dezember 2017 Informatik 7 Rechnernetze und Kommunikationssysteme Inhaltsübersicht Kapitel
MehrGedächtnis. Während der Abarbeitung eines Algorithmus müssen sich Dinge gemerkt werden bzw. auf Dingen wird gerechnet. Zugriff.
Gedächtnis Während der Abarbeitung eines Algorithmus müssen sich Dinge gemerkt werden bzw. auf Dingen wird gerechnet Hauptspeicher 38265 Telefon CPU Gedächtnis Vorlesender Zugriff Verarbeitungseinheit
MehrWo sind wir? Übersicht lexikale Struktur von Java
Wo sind wir? Java-Umgebung Lexikale Konventionen Datentypen Kontrollstrukturen Ausdrücke Klassen, Pakete, Schnittstellen JVM Exceptions Java Klassenbibliotheken Ein-/Ausgabe Collections Threads Applets,
Mehr1. Ganze Zahlen. 9 * celsius / Celsius to Fahrenheit. (9 * celsius / 5) + 32
1. Ganze Zahlen Auswertung arithmetischer Ausdrücke, Assoziativität und Präzedenz, arithmetische Operatoren, Wertebereich der Typen int, unsigned int 1 Celsius to Fahrenheit // Program: fahrenheit.cpp
MehrJavakurs FSS Lehrstuhl Stuckenschmidt. Tag 1 - Variablen und Kontrollstrukturen
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt Tag 1 - Variablen und Kontrollstrukturen main Methode Startpunkt jeder Java Anwendung String[] args ist ein Array aus Parametern, die beim Aufruf über die Kommandozeile
Mehr2 Programmieren in Java I noch ohne Nachbearbeitung
1 2 Programmieren in Java I noch ohne Nachbearbeitung 2.1 Was sind Programme? Eingabe = Verarbeitung = Ausgabe Die Eingabe kann sein Konstanten im Quelltext; Kommandozeilenparameter oder interaktive Eingabe
MehrSprachkonstrukte. Einführung in Java. Folie 1 von Mai Ivo Kronenberg
Sprachkonstrukte Einführung in Java Folie 1 von 20 12. Mai 2011 Ivo Kronenberg Inhalt Kommentare Identifier (Bezeichner) Variablen Numerische Ausdrücke und Typen Kontrollstrukturen Verzweigungen Bedingungen
Mehr2. Ganze Zahlen int unsigned int
88 2. Ganze Zahlen Auswertung arithmetischer Ausdrücke, Assoziativität und Präzedenz, arithmetische Operatoren, Wertebereich der Typen int, unsigned int Celsius to Fahrenheit // Program: fahrenheit.cpp
MehrOperatoren für elementare Datentypen Bedingte Anweisungen Schleifen. Operatoren für elementare Datentypen Bedingte Anweisungen Schleifen
Programmieren I Martin Schultheiß Hochschule Darmstadt Wintersemester 2011/2012 1 / 25 Operatoren für elementare Datentypen Bedingte Schleifen 2 / 25 Zuweisungsoperator Die Zuweisung von Werten an Variablen
MehrEinstieg in die Informatik mit Java
Vorlesung vom 5.11.07, Weitere Ausdrücke Übersicht 1 Vergleichsoperatoren 2 Kombinierte Zuweisungsoperatoren 3 Logische Operatoren 4 Weitere Operatoren 5 Klassifizierung von Operatoren 6 Typumwandlungen
MehrElementare Konzepte von
Elementare Konzepte von Programmiersprachen Teil 1: Bezeichner, Elementare Datentypen, Variablen, Referenzen, Zuweisungen, Ausdrücke Kapitel 6.3 bis 6.7 in Küchlin/Weber: Einführung in die Informatik Bezeichner
MehrOperatoren in C. Gastvorlesung Andreas Textor
Operatoren in C Gastvorlesung - 11.01.10 Andreas Textor andreas.textor@hs-rm.de Terminologie Operand 4 + 2 Operand Operator Unterscheidung nach Anzahl Operanden Unäre, Binäre und Ternäre Operatoren Z.B.:!x;
MehrEinstieg in die Informatik mit Java
1 / 29 Einstieg in die Informatik mit Java Weitere Ausdrücke Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 29 1 Überblick 2 Kombinierte Zuweisungsoperatoren 3 Vergleichsoperatoren
Mehr3. Ganze Zahlen int unsigned int
110 3. Ganze Zahlen Auswertung arithmetischer Ausdrücke, Assoziativität und Präzedenz, arithmetische Operatoren, Wertebereich der Typen int, unsigned int Celsius to Fahrenheit // Program: fahrenheit.cpp
MehrJava 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
MehrProf. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik Operatoren, Kommentare, Ein-/Ausgabe
Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer Programmiertechnik Operatoren, Kommentare, Ein-/Ausgabe Was sind Operatoren Ein Operator ist eine in die Programmiersprache eingebaute Funktion, die
MehrKapitel 2: Grundelemente der Programmierung
Kapitel 2: Grundelemente der Programmierung Variablen Variablen sind Speicherbereiche im Arbeitsspeicher Anhand eines Namens kann man Werte hineinschreiben und auch wieder auslesen Variablen besitzen ein
MehrInformatik II. Woche 15, Giuseppe Accaputo
Informatik II Woche 15, 13.04.2017 Giuseppe Accaputo g@accaputo.ch 1 Themenübersicht Repetition: Pass by Value & Referenzen allgemein Repetition: Asymptotische Komplexität Live-Programmierung Aufgabe 7.1
MehrJava für Anfänger Teil 2: Java-Syntax. Programmierkurs Manfred Jackel
Java für Anfänger Teil 2: Java-Syntax Programmierkurs 11.-15.10.2010 Manfred Jackel 1 Syntax für die Sprache Java public class Welcome { } Schlüsselworte Reservierte Worte Keywords Wortsymbol Syntax: griech.
MehrArbeitsblätter für die Lehrveranstaltung OOP JAVA 1
Fachhochschule Stralsund Fachbereich Maschinenbau Lehrgebiet Informatik Prof. Dr.-Ing. Ch.Wahmkow Arbeitsblätter für die Lehrveranstaltung OOP I. Aufbau eines Java-Programmes JAVA 1 Escape-Sequenzen zur
MehrRepetitorium Programmieren I + II
Repetitorium Programmieren I + II Stephan Gimbel Johanna Mensik Michael Roth 6. März 2012 Agenda 1 Operatoren 2 Datentypen Gleitpunkt Zahl Typkonvertierung 3 Strommanipulatoren 4 Bedingungen if-else switch-case
MehrJava Datentypen und Variablen
Informatik 1 für Nebenfachstudierende Grundmodul Java Datentypen und Variablen Kai-Steffen Hielscher Folienversion: 24. Januar 2017 Informatik 7 Rechnernetze und Kommunikationssysteme Inhaltsübersicht
MehrAngewandte Mathematik und Programmierung
Angewandte Mathematik und Programmierung Einführung in das Konzept der objektorientierten Anwendungen zu mathematischen Rechnens WS 2013/14 Operatoren Operatoren führen Aktionen mit Operanden aus. Der
MehrJAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch)
JAVA BASICS 2. Primitive Datentypen 1. Warum Java? weit verbreitet einfach und (relativ) sicher keine Pointer (?) keine gotos kein Präprozessor keine globalen Variablen garbage collection objekt-orientiert
MehrWerkzeuge zur Programmentwicklung
Werkzeuge zur Programmentwicklung B-15 Bibliothek Modulschnittstellen vorübersetzte Module Eingabe Editor Übersetzer (Compiler) Binder (Linker) Rechner mit Systemsoftware Quellmodul (Source) Zielmodul
MehrMartin Unold INFORMATIK. Geoinformatik und Vermessung
Zusammenfassung Was ist eine Programmiersprache? Eine Sprache, die Formal eindeutig in Maschinenbefehle übersetzbar ist Für Menschen einfacher verständlich ist als Bytecode Zur Formulierung von Datenstrukturen
MehrMartin Unold INFORMATIK. Geoinformatik und Vermessung
Wiederholung So sieht ein leeres Java-Programm aus public class Programmname { public static void main (String[] args) { // Hier stehen die Anweisungen Wiederholung Anweisungen durch Methodenaufrufe Ausgabe
Mehr8. Ausdrücke, Operatoren (einfache Typen)
8. Ausdrücke, Operatoren (einfache Typen) Typumwandlung Cast-Operator Teil 2 Java-Beispiel: Unicode.java Version: 16. Nov. 2015 Unterschiedliche Typen Typumwandlung: Übersicht Zuweisung x = y; Ausdruck
MehrJava - Programmierung - Prozedurale Programmierung 1
Java - Programmierung - Prozedurale Programmierung 1 // elementare Datentypen public class el_dt public static void main(string args []) byte b = 127; short s = 32767; int i = 2147483647; long l = 9223372036854775807L,
MehrInformatik II Prüfungsvorbereitungskurs
Informatik II Prüfungsvorbereitungskurs Tag 1, 20.6.2016 Giuseppe Accaputo g@accaputo.ch 1 Über mich Giuseppe Accaputo 3. Semester RW/CSE Master E-Mail: g@accaputo.ch Homepage: http://accaputo.ch Informatik
MehrEinfache Datentypen in JAVA
5.4.1. Einfache Datentypen in JAVA Ganzzahlige Datentypen byte 8 bits -128
Mehr1 Bedingte Anweisungen. 2 Vergleiche und logische Operatoren. 3 Fallunterscheidungen. 4 Zeichen und Zeichenketten. 5 Schleifen.
Themen der Übung Kontrollstrukturen, Pseudocode und Modulo-Rechnung CoMa-Übung III TU Berlin 9.10.01 1 Bedingte Anweisungen Vergleiche und logische Operatoren 3 Fallunterscheidungen 4 Zeichen und Zeichenketten
MehrEinführung in die Programmierung
Einführung in die Programmierung by André Karge Übung - Operatoren, Methoden, Primitives 25. Oktober 2018 Einführung in die Programmierung WS18/19 André Karge 1/29 Notizen Standard Linux Befehle: http://images.linoxide.com/linux-cheat-sheet.pdf
MehrGrunddatentypen, Ausdrücke und Variablen
Grunddatentypen, Ausdrücke und Variablen Zentralübung zur Vorlesung Einführung in die Informatik http://www.pst.ifi.lmu.de/lehre/wise-11-12/infoeinf WS11/12 Vorlesung heute: Grunddatentypen Ausdrücke Variablen
MehrProgrammierung. Grundlagen. Tina Wegener, Ralph Steyer. 2. Ausgabe, 1. Aktualisierung, April 2014
Programmierung Tina Wegener, Ralph Steyer 2. Ausgabe, 1. Aktualisierung, April 2014 Grundlagen PG 6 Programmierung - Grundlagen 6 Grundlegende Sprachelemente In diesem Kapitel erfahren Sie was Syntax und
MehrVariablen. CoMa-Übung VIII TU Berlin. CoMa-Übung VIII (TU Berlin) Variablen / 15
Variablen CoMa-Übung VIII TU Berlin 4.12.2013 CoMa-Übung VIII (TU Berlin) Variablen 4.12.2013 1 / 15 Themen der Übung 1 Typanpassungen 2 Operatoren 3 Variablen-Gültigkeit CoMa-Übung VIII (TU Berlin) Variablen
Mehr2. Ganze Zahlen. 9 * celsius / Celsius to Fahrenheit. (9 * celsius / 5) + 32
Celsius to Fahrenheit // Program: fahrenheit.cpp // Convert temperatures from Celsius to Fahrenheit. #include 2. Ganze Zahlen Auswertung arithmetischer Ausdrücke, Assoziativität und Präzedenz,
MehrInformatik Vorkurs - Vorlesung 2
Informatik Vorkurs - Vorlesung 2 Variablen, Arrays, Zahlensysteme Torben Achilles, 9. Oktober 2018 Inhalt Variablen & Datentypen Arrays Zahlensysteme 9. Oktober 2018 Torben Achilles Informatik Vorkurs
Mehr5 Grundlagen der Java-Syntax
5 Grundlagen der Java-Syntax Es sollen nun einige Grundregeln besprechen, die in jeder Java-Programmdatei berücksichtigt werden müssen. 5.1 Grundsätzliches zur Syntax von Java Programmen Zunächst sollten
MehrJava ist statisch typisiert, d.h., Variablen, Ergebnisse von Ausdrücken, etc. haben einen Datentyp, der schon bei der Kompilierung festgelegt wird.
5 Mehr Java Java ist statisch typisiert, d.h., Variablen, Ergebnisse von Ausdrücken, etc. haben einen Datentyp, der schon bei der Kompilierung festgelegt wird. Java unterscheidet zwei Arten von Typen:
MehrGrundsymbole. Kapitel 2: Einfache Programme. Liste aller Java-Schlüsselwörter. Schlüsselwörter und Struktursymbole. Lexikalische Einheiten
Universität München, Hans-Peter Kriegel und Thomas Seidl Informatik II - 42 Universität München, Hans-Peter Kriegel und Thomas Seidl Informatik II - 43 Kapitel 2: Einfache Programme Grundsymbole Grundsymbole
MehrInformatik I Komplexität von Algorithmen
Leistungsverhalten von Algorithmen Informatik I Komplexität von Algorithmen G. Zachmann Clausthal University, Germany zach@in.tu-clausthal.de Speicherplatzkomplexität: Wird primärer & sekundärer Speicherplatz
MehrAlgorithmen und Datenstrukturen (für ET/IT)
Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 2017 Dr. Stefanie Demirci Computer Aided Medical Procedures Technische Universität München Programm heute 1 Einführung 2 Grundlagen von Algorithmen
MehrEinführung in die Informatik: Programmierung und Software-Entwicklung, WS 12/13. Kapitel 3. Grunddatentypen, Ausdrücke und Variable
1 Kapitel 3 Grunddatentypen, Ausdrücke und Variable 2 Eine Datenstruktur besteht aus Grunddatentypen in Java einer Menge von Daten (Werten) charakteristischen Operationen Datenstrukturen werden mit einem
Mehr4. Zahlendarstellungen
121 4. Zahlendarstellungen Wertebereich der Typen int, float und double Gemischte Ausdrücke und Konversionen; Löcher im Wertebereich; Fliesskommazahlensysteme; IEEE Standard; Grenzen der Fliesskommaarithmetik;
MehrAlgorithmen als systematische Vorgehensweisen zur Lösung eines formal definierten Problems
4. Algorithmen Motivation Algorithmen als systematische Vorgehensweisen zur Lösung eines formal definierten Problems Der Begriff Algorithmus geht auf den Gelehrten Muhammad al-chwarizmi zurück, der um
MehrGrundlagen der Informatik Ergänzungen WS 2007/2008 Prof. Dr. Rainer Lütticke
Grundlagen der Informatik Ergänzungen WS 2007/2008 Prof. Dr. Rainer Lütticke 1 Links Stellenwertsysteme mit Links zu Zahlensysteme: http://de.wikipedia.org/wiki/stellenwertsystem ASCII-Code: http://de.wikipedia.org/wiki/ascii
MehrProgrammieren in Java
Einführung in die (imperative) Programmierung 2 Wiederholung: Allgemein Hohe Programmiersprache Compiler Interpreter Maschinensprache Zielsystem 3 Wiederholung: Java Java Compiler Bytecode JRE Just-In-Time
MehrRO-Tutorien 3 / 6 / 12
RO-Tutorien 3 / 6 / 12 Tutorien zur Vorlesung Rechnerorganisation Christian A. Mandery WOCHE 2 AM 06./07.05.2013 KIT Universität des Landes Baden-Württemberg und nationales Forschungszentrum in der Helmholtz-Gemeinschaft
Mehr2. Ganze Zahlen. Beispiel: power8.cpp. Terminologie: L-Werte und R-Werte. Terminologie: L-Werte und R-Werte
90 Beispiel: power8.cpp 91 2. Ganze Zahlen int a; // Input int r; // Result std::cout > a; Auswertung arithmetischer Ausdrücke, Assoziativität und Präzedenz, arithmetische
MehrJava - Zahlen, Wahrheitswerte und Zeichen. Leibniz Universität IT Services Anja Aue
Java - Zahlen, Wahrheitswerte und Zeichen Leibniz Universität IT Services Anja Aue Kommentare Hilfe für den Entwickler. Wer hat wann welche Änderung vorgenommen? Warum werden diese Anweisungen hier ausgeführt?
MehrJAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch)
JAVA BASICS 2. Primitive Datentypen 1. Warum Java? zunehmend weit verbreitet einfach und (relativ) sicher keine Adressrechnung, aber Pointer keine gotos kein Präprozessor keine globalen Variablen garbage
MehrEinstieg in die Informatik mit Java
Vorlesung vom 25.4.07, Ausdrücke Übersicht 1 Die wichtigsten arithmetischen Ausdrücke Arithmetische Operatoren Inkrement und Dekrementoperatoren Zuweisungsoperator Mathematische Standardfunktionen Vergleichsoperatoren
MehrAlgorithmen als systematische Vorgehensweisen zur Lösung eines formal definierten Problems
4. Algorithmen Motivation Algorithmen als systematische Vorgehensweisen zur Lösung eines formal definierten Problems Der Begriff Algorithmus geht auf den Gelehrten Muhammad al-chwarizmi zurück, der um
Mehr8. Ausdrücke, Operatoren (einfache Typen)
8. Ausdrücke, Operatoren (einfache Typen) Teil 2 Java-Beispiel: Unicode.java K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16 Version: 16. Nov. 2015 2 Typumwandlung Cast-Operator 3 Unterschiedliche
MehrEinführung in die Informatik
Einführung in die Informatik Jochen Hoenicke Software Engineering Albert-Ludwigs-University Freiburg Sommersemester 2014 Jochen Hoenicke (Software Engineering) Einführung in die Informatik Sommersemester
Mehr