Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Programmierkurs Java Vorlesung 4 Dietrich Boles Seite 1 Programmierkurs Java Vorlesung am FB Informatik der Universität Oldenburg Vorlesung 4 Dietrich.

Ähnliche Präsentationen


Präsentation zum Thema: "Programmierkurs Java Vorlesung 4 Dietrich Boles Seite 1 Programmierkurs Java Vorlesung am FB Informatik der Universität Oldenburg Vorlesung 4 Dietrich."—  Präsentation transkript:

1 Programmierkurs Java Vorlesung 4 Dietrich Boles Seite 1 Programmierkurs Java Vorlesung am FB Informatik der Universität Oldenburg Vorlesung 4 Dietrich Boles

2 Programmierkurs Java Vorlesung 4 Dietrich Boles Seite 2 Gliederung von Vorlesung 4 Java-Grundlagen –Java-Programme –Zeichensätze –Kommentare –Token –Schlüsselwörter –Bezeichner Variablen –Motivation –Datentypen –Initialisierung Ausdrücke –Motivation –Definition –Operatoren Erweiterung des Hamster-Modells

3 Programmierkurs Java Vorlesung 4 Dietrich Boles Seite 3 Grundlagen / Java-Programme Erstellen und Ausführen: (1)Eingeben eines Programms (2)Compilieren ( javac )evtl. Syntaxfehler beseitigen! (3)Ausführen ( java ) Beispiel: (1)Datei World.java : (2) javac World.java (3) java World import java.io.*; public class World { public static void main(String[] args) { try { System.out.println(Hello world!); } catch (Exception e) { System.out.println(Fehler!); } } } to-do-Code

4 Programmierkurs Java Vorlesung 4 Dietrich Boles Seite 4 Grundlagen / Zeichensätze Java zugrundeliegender Zeichensatz: Unicode 16-Bit-Zeichensatz (2 16 Zeichen) ersten 256 Zeichen: Latin-1 ersten 128 Zeichen: ASCII (7-Bit-Zeichensatz) Escape-Sequenz \udddd als (Ersatz-)Darstellung von Unicode-Zeichen; d ist hexadezimale Ziffer ( 0-9 und a-f ) gültiger Bezeichner: ab\u4711\u8a9fcd Bitte nur ASCII-Zeichen verwenden !!!!!!!!!!!!!

5 Programmierkurs Java Vorlesung 4 Dietrich Boles Seite 5 Grundlagen / Kommentare Zeilenkommentar: // Kommentar Bereichskommentar: /* Kommentar */ import java.io.*; // gibt Hello world! aus public class World { public static void main(String[] args) { try { /* Ausgabe- befehl */ System.out.println(Hello world!); } catch (Exception e) { System.out.println(Fehler!); } } } Dokumentationskommentar: /** Kommentar */ Keine Schachtelung möglich!

6 Programmierkurs Java Vorlesung 4 Dietrich Boles Seite 6 Grundlagen / Token Token: lexikalische Einheiten –Symbole: <, =, <=,... –Schlüsselwörter: while, if,... –Bezeichner: Prozedurnamen, Klassennamen,... –Literale: true, 23, 24.5f, hello world,... Trennung von Token: –Leerzeichen (Blank) –Tabulator –Zeilenende –Zeilenvorschub –Seitenvorschub gefräßiger Tokenizer: Zusammenfassung möglichst vieler Zeichen

7 Programmierkurs Java Vorlesung 4 Dietrich Boles Seite 7 Grundlagen / Schlüsselwörter

8 Programmierkurs Java Vorlesung 4 Dietrich Boles Seite 8 Grundlagen / Bezeichner Benennung von deklarierten Einheiten und Labeln: –Klassennamen –Variablennamen –Prozedurnamen –... Beginn mit Buchstabe, Unterstrich oder Dollar anschließend: Buchstaben, Ziffern, Unterstrich, Dollar, Unicode-Zeichen Grundlage: Unicode-Zeichensatz –Katze –Kätzchen –a hassasasasass asasas as Bitte nur ASCII-Zeichen verwenden!

9 Programmierkurs Java Vorlesung 4 Dietrich Boles Seite 9 Variablen und Ausdrücke / Motivation Motivation: Der Hamster soll bis zur nächsten Wand laufen, dabei alle Körner einsammeln, die er findet, und an der Wand genauso viele Körner ablegen, wie er eingesammelt hat. Notwendige Voraussetzungen: –Gedächtnis (Speicher) –Zählen/Rechnen/Vergleichen (Operationen) Programm: * 1 :gefundene Anzahl ist 0; while (vornFrei()) { vor(); while (kornDa()) { nimm(); * 2 :erhöhe gefundene Anzahl um 1; } while ( * 3 :gefundene Anzahl größer als 0 ist ) { gib(); * 4 :erniedrige gefundene Anzahl um 1; }

10 Programmierkurs Java Vorlesung 4 Dietrich Boles Seite 10 Variablen / Definition Notwendig für * 1 : –Reservierung von Speicherplatz ( Variablendefinition) –Festlegung eines Namens ( Variablendeklaration) –Festlegung des Typs ( Datentypen) –Initialisierung –hier: int anzahl = 0; Variablendeklaration/-definition: –Deklaration: Bekanntgabe eines Namens für den Speicherbereich an den Compiler –Definition: Reservierung von Platz im Hauptspeicher Programm Daten Hauptspeicher Gedächtnis

11 Programmierkurs Java Vorlesung 4 Dietrich Boles Seite 11 Variablen / Definition ::= [= ] {, [= ]} ; int anzahl = 0; long grosse_zahl = L; float pi = F; float noch_eine; char eins = `1`, zwei = `2`, drei = `3`; char neue_zeile = `\n`; String hello = hello world!; boolean wahr = true; int abcdefgh = 4711;

12 Programmierkurs Java Vorlesung 4 Dietrich Boles Seite 12 Variablen / Datentypen Daten haben unterschiedliche Eigenschaften: –Ganze Zahlen:2, 4711, -45,... –Reelle Zahlen:-3.4, , -3.4e-10, e123,... –Buchstaben:`a`, `b`,... –Zeichenketten:hello world!,... –... –Unsinn: 3 + hello Unterschiedliche Daten benötigen unterschiedlich viel Platz –boolesche Werte: 1 Bit –ASCII-Zeichen: 7 Bit –... Motivation für Datentypen: –Überprüfung sinnvoller Operationen –Reservierung von passendem Speicherplatz

13 Programmierkurs Java Vorlesung 4 Dietrich Boles Seite 13 Variablen / Datentypen Einfache Datentypen in Java: boolean entweder true oder false char 16-Bit-Unicode byte 8-Bit-Integer, vorzeichenbehaftetes 2er-Komplement short 16-Bit-Integer, vorzeichenbehaftetes 2er-Komplement int 32-Bit-Integer, vorzeichenbehaftetes 2er-Komplement long 64-Bit-Integer, vorzeichenbehaftetes 2er-Komplement float 32-Bit-Gleitkommazahl (IEEE ) double 64-Bit-Gleitkommazahl (IEEE ) Wertebereiche beschränkt: int : [ ] int i = ; i = i + 1; i:

14 Programmierkurs Java Vorlesung 4 Dietrich Boles Seite 14 Variablen / Datentypen booleanfalseN.A.N.A. char`\u0000`\u0000\uFFFF byte short int long0L float0.0F E E-45 double E E-324 Default Kleinster Wert Größter Wert

15 Programmierkurs Java Vorlesung 4 Dietrich Boles Seite 15 Variablen / Initialisierung Initialisierung von Variablen –implizit durch Default-Werte –explizit mit Hilfe von Literalen bzw. Ausdrücken –Empfehlung: Variablen immer explizit initialisieren! Literale: Typspezifische Konstanten boolean : true, false int : Zeichenketten aus –oktalen (führende 0): 035 –dezimalen 29 –hexadezimalen Ziffern (führendes 0x): 0x1D

16 Programmierkurs Java Vorlesung 4 Dietrich Boles Seite 16 Variablen / Initialisierung long : int -Literal mit nachgestelltem l oder L : 29L4321l double: Dezimalzahlen mit Dezimalpunkt und optionalem Exponent: e1.18E-2 float: double -Literal mit nachgestelltem f oder F : 18.0f1.8e1F char: Zeichen zwischen zwei Apostrophen: `a``A``2` oder Sonderzeichen mit Escape-Sequenz: `\n``\``\\` Strings: Zeichen zwischen zwei Anführungszeichen:hello\n world

17 Programmierkurs Java Vorlesung 4 Dietrich Boles Seite 17 Ausdrücke / Motivation Notwendig für * 2, * 3 und * 4 : –Operationen ( Mathematik) –Operatoren –Operanden Sinn und Zweck: Berechnung neuer Werte aus alten Werten Beispiel: int anzahl = 0; anzahl = anzahl + 1; Operator Operand

18 Programmierkurs Java Vorlesung 4 Dietrich Boles Seite 18 Ausdrücke / Definition ::= | | ( ) | Ausdruck: –Verarbeitungsvorschrift, deren Ausführung einen Wert eines bestimmten Typs liefert –entsteht, indem Operanden mit Operatoren verknüpft werden –Operanden müssen typkonform sein!

19 Programmierkurs Java Vorlesung 4 Dietrich Boles Seite 19 Ausdrücke / Operatoren / Übersicht Integer-Arithmetik (int, short, long): +, -, *, /, % Gleitkomma-Arithmetik (float, double): +, -, *, / Boolesche Arithmetik (boolean): &&, ||, ! Vergleichsoperatoren: ==, !=,, = Zuweisungsoperatoren: =, +=, -=, *=, /=, %= Inkrement-Operator: ++ Dekrement-Operator: -- Bit-Operatoren: >>, &, |, ~, ^,... Spezielle Operatoren: ?:, (type)

20 Programmierkurs Java Vorlesung 4 Dietrich Boles Seite 20 Ausdrücke / Operatoren / integer-Arithmetik + :positives Vorzeichen :negatives Vorzeichen :Addition (= 110) - :Subtraktion (= -86) * :Multiplikation 6 * 5 (= 30) / :Ganzzahl-Division 7 / 3 (= 2) % :Restbildung (modulo) 7 % 3 (= 1) Operanden vom Typ int, short oder long gelieferter Wert vom Typ int, short bzw. long

21 Programmierkurs Java Vorlesung 4 Dietrich Boles Seite 21 Ausdrücke / Operatoren / Gleitkomma-Arithmetik + :positives Vorzeichen e3 - :negatives Vorzeichen -3.4e-5 + :Addition (= 11.0) - :Subtraktion (= -8.6) * :Multiplikation 6.1 * 5.0 (= 30.5) / :Ganzzahl-Division 9.0 / 2.0 (= 4.5) Operanden vom Typ float oder double gelieferter Wert vom Typ float oder double Rundungsfehler möglich!

22 Programmierkurs Java Vorlesung 4 Dietrich Boles Seite 22 Ausdrücke / Operatoren / boolesche Arithmetik && :Konjunktion true && false (= false) || :Disjunktion true || false (= true) ! :Negation !true (= false) Operanden vom Typ boolean gelieferter Wert vom Typ boolean

23 Programmierkurs Java Vorlesung 4 Dietrich Boles Seite 23 Ausdrücke / Operatoren / Vergleiche == :Gleichheit 4 == 5 (= false) != :Ungleichheit 6 != 7 (= true) < :Kleiner -2. < 0.1 (= true) <= :Kleiner-Gleich 3 <= 3 (= true) > :Größer `a` > `b` (= false) >= :Größer-Gleich 1 >= -1 (= true) Operanden vom Typ int, short, long,float, double oder char gelieferter Wert vom Typ boolean

24 Programmierkurs Java Vorlesung 4 Dietrich Boles Seite 24 Ausdrücke / Operatoren / Zuweisung Operanden von beliebigem Typ gelieferter Wert vom Typ der Operanden ::= = ; int i = 0, j = -34; // Initialisierung i = 45; // Zuweisung i = i + 3; j = i = j + i*3; Abkürzungen: i++ i = i+1; i-- i = i-1; i += i = i + ( ) i -= i = i - ( ) i *= i = i * ( ) i /= i = i / ( ) i %= i = i % ( )

25 Programmierkurs Java Vorlesung 4 Dietrich Boles Seite 25 Ausdrücke / Operatoren / Bedingungsoperator ternärer Operator erster Operand vom Typ boolean Operanden zwei und drei typkonform int i = 45, j = 46; int k = i

26 Programmierkurs Java Vorlesung 4 Dietrich Boles Seite 26 Ausdrücke / Operatoren / Typumwandlungen einige Typumwandlungen implizit: –short int long –float double –arithmetisch Gleitkomma –char int short s = 3; int i = s; long l = i = s; float f = 3.4F; double d = f * 2.3; float g = 3 + i; int b = `a`; ´z` - `a` ASCII-Repräsentation

27 Programmierkurs Java Vorlesung 4 Dietrich Boles Seite 27 Ausdrücke / Operatoren / Typumwandlungen Explizite Typumwandlung (Typcast): ::= ( ) double d = 7.99; int i = (int) d; // i == 7 int zahl = 33000; short s = (short)zahl; // Abschneiden der oberen Bits // s == Nicht alle Typumwandlungen sind erlaubt: int wahr = (int)true; // Fehler!!!

28 Programmierkurs Java Vorlesung 4 Dietrich Boles Seite 28 Ausdrücke / Operatoren / Präzedenz Postfix-Operatoren [],., ++, -- unäre Operatoren +, -, ~, ! Erzeugung / Typumwandlung new, (type) Multiplikationsoperatoren *, /, % Additionsoperatoren +, - Gleichheitsoperatoren ==, != logische Und && logisches Oder || Bedingungsoperator ?: Zuweisungsoperatoren =, +=, *=,... Abänderung der Präzedenz durch Klammernsetzung möglich! Liste mit absteigender Präzedenz:

29 Programmierkurs Java Vorlesung 4 Dietrich Boles Seite 29 Ausdrücke / Operatoren / Assoziativität wichtig bei Operatoren gleicher Präzedenz alle unären Operatoren sind rechts-assoziativ alle binären Operatoren außer den Zuweisungsoperatoren sind links-assoziativ Zuweisungsoperatoren sind rechts-assoziativ der ternäre Bedingungsoperator ( ?: ) ist rechts-assoziativ Assoziativität ist von Bedeutung bei Funktionen mit Seiteneffekten! i = j *= k + 78; i = (j *= (k + 78)); i = j * k / 5; i = (j * k) / 5;

30 Programmierkurs Java Vorlesung 4 Dietrich Boles Seite 30 Ausdrücke / Operatoren / Auswertungsreihenfolge Operanden werden immer von links nach rechts ausgewertet werden wichtig bei Seiteneffekten! jeder Operand wird vor der Ausführung des Operators ausgewertet; Ausnahmen: &&, || und ?: p && q p ? q : false p || q p ? true : q o1 ? o2 : o3 werte o1 aus; falls true, werte o2 ansonsten o3 aus

31 Programmierkurs Java Vorlesung 4 Dietrich Boles Seite 31 Variablen und Ausdrücke / Zusammenfassung Motivation: Der Hamster soll bis zur nächsten Wand laufen, dabei alle Körner einsammeln, die er findet, und an der Wand genauso viele Körner ablegen, wie er eingesammelt hat. Programm: int anzahl = 0; while (vornFrei()) { vor(); while (kornDa()) { nimm(); anzahl = anzahl + 1; } while ( anzahl > 0 ) { gib(); anzahl = anzahl -1; }

32 Programmierkurs Java Vorlesung 4 Dietrich Boles Seite 32 Beispiele / Fakultät import java.io.*; public class Fakultaet { public static void main (String[] args) { int fak = 1; int n = 7; int zaehler = 1; while (zaehler <= n) { fak = fak * zaehler; zaehler = zaehler + 1; } System.out.println(fak); } fak: n: zaehler:

33 Programmierkurs Java Vorlesung 4 Dietrich Boles Seite 33 Variablen und Ausdrücke / Beispiel import java.io.*; public class Fibonacci { public static void main (String[] args) { int lo = 1; int hi = 1; System.out.println(lo); while (hi < 20) { System.out.println(hi); hi = lo + hi; // neues hi lo = hi - lo; // neues lo (= altes hi) } lo: hi:

34 Programmierkurs Java Vorlesung 4 Dietrich Boles Seite 34 Erweiterung des Hamster-Modells Variablendefinition (int anzahl = 0;) –neue Anweisung (lokale Variable) –neue Definition (globale Variable) Zuweisung(en) (anzahl = 3;) arithmetische Ausdrücke (anzahl = anzahl + 1;) Erweiterung der booleschen Ausdrücke (anzahl > 0) Achtung: –Der Gültigkeitsbereich einer Variablen beschränkt sich auf den Block, in dem die Variable definiert wurde! –Im Falle einer Variablendefinition als Anweisung beginnt der Gültigkeitsbereich ab der Stelle der Definition! –In dem Gültigkeitsbereich einer Variablen darf keine Variable gleichen Namens definiert werden!

35 Programmierkurs Java Vorlesung 4 Dietrich Boles Seite 35 Erweiterung des Hamster-Modells Aufgabe: Der Hamster soll bis zur nächsten Wand laufen, dabei alle Körner einsammeln, die er findet, und an der Wand genauso viele Körner ablegen, wie er eingesammelt hat. Korrektes Programm mit globaler Variable anzahl : int anzahl = 0; void main() { sammle(); while (vornFrei()) { vor(); sammle(); } legeAb(); } void sammle() { while (kornDa()) { nimm(); anzahl = anzahl + 1; } void legeAb() { while (anzahl > 0) { gib(); anzahl = anzahl - 1; }

36 Programmierkurs Java Vorlesung 4 Dietrich Boles Seite 36 Erweiterung des Hamster-Modells Aufgabe: Der Hamster soll bis zur nächsten Wand laufen, dabei alle Körner einsammeln, die er findet, und an der Wand genauso viele Körner ablegen, wie er eingesammelt hat. Fehlerhaftes Programm mit zwei lokalen Variablen anzahl : void main() { sammle(); while (vornFrei()) { vor(); sammle(); } legeAb(); } void sammle() { int anzahl = 0; while (kornDa()) { nimm(); anzahl = anzahl + 1; } void legeAb() { int anzahl; while (anzahl > 0) { gib(); anzahl = anzahl - 1; }


Herunterladen ppt "Programmierkurs Java Vorlesung 4 Dietrich Boles Seite 1 Programmierkurs Java Vorlesung am FB Informatik der Universität Oldenburg Vorlesung 4 Dietrich."

Ähnliche Präsentationen


Google-Anzeigen