Wo sind wir? Übersicht lexikale Struktur von Java

Ähnliche Dokumente
Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java

Java für Anfänger Teil 2: Java-Syntax. Programmierkurs Manfred Jackel

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

5 Grundlagen der Java-Syntax

Einstieg in die Informatik mit Java

Java für Anfänger Teil 2: Java-Syntax. Programmierkurs Manfred Jackel

Java-Schulung Grundlagen

1. Der Einstieg in Java

Elementare Konzepte von

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2

3 Die Programmiersprache Java

Programmierung. Grundlagen. Tina Wegener, Ralph Steyer. 2. Ausgabe, 1. Aktualisierung, April 2014

2 Imperative Sprachkonzepte

Primitive Datentypen. Dr. Wolfgang Süß Thorsten Schlachter

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

3 Die Programmiersprache Java

Datenbankanwendungsprogrammierung Crashkurs Java

Java - Zahlen, Wahrheitswerte und Zeichen. Leibniz Universität IT Services Anja Aue

Einführung in die Programmierung mit BlueJ

Einstieg in die Informatik mit Java

Übungen Informatik I. JAVA - Einführung. elga Gabler, Holger Vogelsang, Christian Pape. Übungen Informatik 1 Folie 1

Java - Zahlen, Wahrheitswerte und Zeichen. Leibniz Universität IT Services Anja Aue

Primitive Datentypen

JAVA-Datentypen und deren Wertebereich

Ein erstes Java-Programm

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

S. d. I.: Programieren in C Folie diese Zeichen dürfen verwendet werden in

Welche Informatik-Kenntnisse bringen Sie mit?

Programmieren I + II Regeln der Code-Formatierung

Smalltalk vs. Java c Chris Burkert Smalltalk versus Java

JAVA - Code Konvention - Grundtypen

Übersicht. Vorstellung des OO-Paradigmas

3. Anweisungen und Kontrollstrukturen

Prinzipien der Softwareentwicklung S. Strahringer

1. Der Einstieg in Java

Zeichen. Datentyp char. char ch = 'x'; Page 1. Zeichen braucht man zur Verarbeitung von Texten, Namen, Bezeichnungen. Zeichencodes

Programmierkurs Java

RO-Tutorien 3 / 6 / 12

Einheit Lexikalische Grundlagen der Programmiersprache C Lexikalische Einheiten

Grundlagen der Programmierung

16. März 2016 artb5-v1.1

Javaprogrammierung mit NetBeans. Variablen, Datentypen, Methoden

Einführung in die C-Programmierung

Tutoraufgabe 1 (Zweierkomplement): Lösung: Programmierung WS16/17 Lösung - Übung 2

Programmieren in Java

JavaScript. Dies ist normales HTML. Hallo Welt! Dies ist JavaScript. Wieder normales HTML.

1.2 Attribute und Methoden Aufbau einer Java-Klasse:

Sprachbeschreibung und Erweiterung

Programmieren in C. -- ALLE Programmiersprachen sind HÄSSLICH -- Deklaration: erst der Datentyp, dann der Variablenname. Semikolon am Ende.

Informatik: Abschnitt 4

Werkzeuge zur Programmentwicklung

Aktivitäten in C# /.NET umsetzen

7. Schnittstellen Grundlagen zu Schnittstellen. 7. Schnittstellen

Programmieren mit. Java. Lars Knipping. Februar 2002

Programmierung WS12/13 Lösung - Übung 1 M. Brockschmidt, F. Emmes, C. Otto, T. Ströder

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

Klausur am Montag, 20.Juli um 9 Uhr

Kontrollstrukturen, Pseudocode und Modulo-Rechnung

Kapitel 3: Lexikalische Syntax

2. Programmierung in C

Noch für heute: primitive Datentypen in JAVA. Primitive Datentypen. Pseudocode. Dezimal-, Binär- und Hexadezimalsystem. der logische Typ boolean

Java 8. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Oktober 2014 JAV8

Anwendungsentwicklung mit Java. Grundlagen der OOP, Variablen, Klassen und Objekte, Methoden

3 Objektorientierte Konzepte in Java

Prof. H. Herbstreith Fachbereich Informatik. Leistungsnachweis. Informatik 1 WS 2001/2002

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

Kapitel 4: Lexikalische Syntax

Programmiertechnik Skalare Typen,Variablen, Zuweisungen

PHP Code Konventionen Um einen einheitlichen Code zu generieren, der von jedem gelesen werden kann, müssen folgende Konventionen eingehalten werden.

Informatik: Abschnitt 4

Objektorientierte Programmierung. Kapitel 4: Lexikalische Syntax

Programmieren in C / C++ Grundlagen C 2

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

Programmieren I. Kontrollstrukturen. Heusch 8 Ratz Institut für Angewandte Informatik

Klassen in Java. Grundlagen der Programmierung. Stephan Kleuker 68

Musterlösungen zur Klausur Informatik 3

Einführung Datentypen Verzweigung Schleifen. Java Crashkurs. Kim-Manuel Klein May 4, 2015

Einführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein

Kontrollstrukturen. Bedingter Ablauf: if. Bedingter Ablauf: if-else

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

7. Übung zur Vorlesung Grundlagen der Informatik

Einstieg in die Informatik mit Java

EINI LW. Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 15/16

Android-Apps Gegenüberstellung Delphi java

AuD-Tafelübung T-B5b

1 Polymorphie (Vielgestaltigkeit)

Computeranwendung und Programmierung (CuP)

Schachtelung der 2. Variante (Bedingungs-Kaskade): if (B1) A1 else if (B2) A2 else if (B3) A3 else if (B4) A4 else A

Propädeutikum zur Programmierung

Dr. Monika Meiler. Inhalt

Programmierung 2. Übersetzer: Das Frontend. Sebastian Hack. Klaas Boesche. Sommersemester

Grundlagen. Die Komponenten eines C Programms. Das erste Programm

CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik)

Programmieren in Java

Kapitel 11: Wiederholung und Zusammenfassung

4. Datentypen. Einleitung Eingebaute Datentypen. Konversion / Type-Cast. Operatoren. Übersicht Die Datentypen char, float und double Standardwerte

Teil 1: Grundeigenschaften von Rechnern und Software [10P]

Programmieren in C Einführung

Tutorium Rechnerorganisation

Transkript:

Wo sind wir? Java-Umgebung Lexikale Konventionen Datentypen Kontrollstrukturen Ausdrücke Klassen, Pakete, Schnittstellen JVM Exceptions Java Klassenbibliotheken Ein-/Ausgabe Collections Threads Applets, Sicherheit Grafik Beans Integrierte Entwicklungsumgebungen FH Bonn-Rhein-Sieg Programmiersprache Java 25 Übersicht lexikale Struktur von Java Zeichensatz Lexikale Analyse der Sprache Grundsymbole der Sprache Bezeichner Schlüsselworte Literale Separatoren Operatoren FH Bonn-Rhein-Sieg Programmiersprache Java 26 1

Lexikale Struktur von Java-Programmen Alle Java-Programme werden im Unicode-Zeichensatz geschrieben. http://www.unicode.org/ Mit wenigen Ausnahmen wird davon nur der ASCII-Teil verwendet, d.h. die ersten 128 Zeichen (d.h. keine deutschen Umlaute) Ausnahmen (voller Unicode-Zeichensatz möglich): Kommentare Bezeichner (z.b. von Variablen- und Methodennamen; gute Idee???) Inhalt von Zeichenketten und Zeichenkettenliteralen Beispiel: // Grüzi miteinand "Fahre zur Hölle, erbärmlicher Schurke!" Über Fluchtzeichenfolgen können mit reinen ASCII-Zeichenfolgen beliebige Unicode-Zeichen angebeben werden FH Bonn-Rhein-Sieg Programmiersprache Java 27 Fluchtzeichenfolge Fluchtzeichenfolgen bestehen nur aus ASCII-Zeichen Mit Fluchtzeichenfolgen lässt sich jedes Unicode-Zeichen angeben Der Wert der hexadezimalen Zahl entspricht dem Code des Zeichens im Unicode-Zeichensatz Mehrere u hintereinander nur für bestimmte Werkzeuge interessant Syntax: Fluchtzeichenfolge \ u HexZiffer HexZiffer HexZiffer HexZiffer HexZiffer 0... 9 a... f A... F Beispiele: \u005c steht für Z \uu005c steht für Z FH Bonn-Rhein-Sieg Programmiersprache Java 28 2

Lexikale Übersetzung Zuerst wird (in 3 Teilschritten; s.u.) in jeder Übersetzung durch einen Java-Compiler die Folge von Unicode-Eingabezeichen zerlegt in eine Folge von Eingabeelementen Eingabeelemente von Java sind: Wortzwischenräume Kommentare Token (dies sind die terminalen Symbole der Java-Grammatik): Bezeichner Schlüsselworte Literale Trennzeichen Operatoren Schritt 1: Ersetzen von Fluchtzeichenfolgen in Unicode-Zeichen Schritt 2: Aufteilung des Unicode-Zeichenstroms aus Schritt 1 in Eingabezeichen und Zeilenbegrenzer Schritt 3: Aufteilung des Stroms aus Schritt 2 in eine Folge von Eingabeelementen FH Bonn-Rhein-Sieg Programmiersprache Java 29 Beispiel // Dies ist ein Kommentar class Test { int \u005c; } Fluchtzeichen nach Unicode // Dies ist ein Kommentar class Test { int Z; } Aufteilung in Zeichen und Zeilenbegrenzer // Dies ist ein Kommentar ENDE class Test { ENDE int Z; ENDE } ENDE Aufteilung in Eingabeelemente // Dies ist ein Kommentar class Test { int Z; } FH Bonn-Rhein-Sieg Programmiersprache Java 30 3

Trennung von Token Token werden durch Zwischenraumzeichen und Kommentare getrennt Zwischenraumzeichen sind: Leerzeichen Horizontaler Tabulatorzeichen Seitenvorschub Zeilenende (CR, LF oder CR+LF) Als Token wird die längstmögliche Verlängerung genommen Beispiel: += ist ein Token ("+=") + = sind zwei Token ("+" und "=") a -- b sind drei Token ("a" und "--" und "b"). (Längstmögliche Verlängerung ist grammatikalisch falsch, grammatikalisch wäre richtig: a - -b) FH Bonn-Rhein-Sieg Programmiersprache Java 31 Bezeichner Ein Bezeichner ist eine beliebig lange Folge von Buchstaben und/oder Ziffern, wobei das erste Zeichen ein Buchstabe sein muss. Ausgenommen sind Schlüsselwörter und "quasi"-schlüsselwörter. Es sind zwar prinzipiell beliebige Unicode-Zeichen erlaubt, aber ein Amerikaner kann mit dem Bezeichner größterüberläufer evtl.wenig anfangen, evtl. noch nicht einmal in seinem Editor korrekt anzeigen lassen. Besser ist die Beschränkung auf den ASCII- Zeichensatz. Bezeichner werden z.b. benötigt als Variablennamen, Methodennamen, Klassennamen usw. Beispiele: i meinevariable meinevariable2 FH Bonn-Rhein-Sieg Programmiersprache Java 32 4

Syntaxdiagramm Bezeichner Java-Buchstabe Java-Buchstabe Ziffer Java-Buchstabe A... Z a... z _ $ Ziffer 0... 9 FH Bonn-Rhein-Sieg Programmiersprache Java 33 Schlüsselwörter abstract default if private throw boolean do implements protected throws break double import public transient byte else instanceof return try case extends int short void catch final interface static volatile char finally long super while class float native switch const for new synchronized continue goto package this "quasi"-schlüsselwörter: null true false FH Bonn-Rhein-Sieg Programmiersprache Java 34 5

Literale Ein Literal ist die Quelltext-Darstellung eines Wertes eines einfachen Typs (int, float, char usw.) oder vom Typ String oder des null-typs. Literale werden oft auch als "Konstanten" bezeichnet. Beispiele: 5 3.14 3.14f "Hallo" true null Je nach Basistyp werden verschiedene Literale unterschieden: Literal Integer-Literal Fließkomma-Literal Boolean-Literal Character-Literal String-Literal null-literal FH Bonn-Rhein-Sieg Programmiersprache Java 35 Integer-Literal Mit einem Integer-Literal werden ganzzahlige Werte dargestellt. Die Zahlkonstanten können zur: Basis 10 (dezimal) Basis 16 (hexadezimal) Basis 8 (oktal) angegeben werden. Integer-Literal Dezimal-Literal Hexadezimal-Literal Oktal-Literal Durch Anfügen eines "l" oder "L" entsteht eine Konstante vom Typ long, sonst ist die Konstante vom Typ int. FH Bonn-Rhein-Sieg Programmiersprache Java 36 6

Syntaxdiagramme Dezimal-Literal 0 Ziffer0 Ziffer0 Ziffer l 1 9... L Hexadezimal- Literal 0 x Hex-Ziffer Hex-Ziffer l 0 f... L Oktal-Literal 0 Oktal-Ziffer Oktal-Ziffer l 0 7... L FH Bonn-Rhein-Sieg Programmiersprache Java 37 Beispiele dezimal hex. Oktal dezimal 0 0x0 00 = 12 17 0x11 021 = 17 33 0x21 041 = 33 12L 0xcL 014L = 12 FH Bonn-Rhein-Sieg Programmiersprache Java 38 7

Ausgesuchte Werte dezimal hexadezimal oktal Minimaler Wert (int) -2147483648 = -2 31 0x80000000 = -2 31 020000000000 = -2 31 Maximaler Wert (int) 2147483648 = 2 31 0x7fffffff = 2 31-1 017777777777 = 2 31-1 -1 (int) -1 0xffffffff 037777777777 Minimaler Wert (long) -9223372036854775808L = -2 63 0x8000000000000000L = -2 63 01000000000000000000000L = -2 63 Maximaler Wert (long) 9223372036854775808L = 2 63 0x7fffffffffffffffL = 2 63-1 0777777777777777777777L = 2 63-1 -1(long) -1L 0xffffffffffffffffL 01777777777777777777777L Die dezimalen Werte 2147483648=2 31 und 92233720368547750809=2 63 (mit 32 bzw. 64 Bits nicht mehr im Zweierkomplement darstellbar) dürfen nur im Zusammenhang mit der Negation verwandt werden. FH Bonn-Rhein-Sieg Programmiersprache Java 39 Fließkomma-Literal Fließkomma-Literal Ziffer. Ziffer Exponentteil Fließsuffix. Ziffer Exponentteil Fließsuffix Ziffer Exponentteil Fließsuffix Ziffer Exponentteil Fließsuffix Exponentteil Fließsuffix e Ziffer E + - f F d D FH Bonn-Rhein-Sieg Programmiersprache Java 40 8

Beispiele 3.14 3.14f 3.14d = 3.14 0.1.1 1.e-1 = 0.1 10.0 10. 1e1 = 10.0 Wird nicht explizit ein Fließsuffix angehängt, so ist das Literal vom Typ double. FH Bonn-Rhein-Sieg Programmiersprache Java 41 Boolean- und null-literal Die beiden boolschen Literale stehen für die Wahrheitswerte wahr und falsch. Boolean-Literal true false Das null-literal kennzeichnet den leeren Zeiger im Zusammenhang mit Referenztypen. null-literal null FH Bonn-Rhein-Sieg Programmiersprache Java 42 9

Character-Literal Ein Character-Literal stellt genau ein Zeichen des Unicode-Zeichensatzes dar. Dabei sind auch Fluchtzeichenfolgen als ein Zeichen erlaubt, da diese schon in der ersten Phase des Übersetzens in Unicode-Zeichen umgewandelt werden (Schritt 1: Ersetzen von Fluchtzeichenfolgen in Unicode-Zeichen). Weiterhin gibt es Escape-Sequenzen für besondere Kontrollzeichen. Character-Literal ' Ein Zeichen ungleich ' und \ und Zeilenende Escape-Sequenz ' Beispiele: 'a' 'ä' '\u005c' (='Z') '\n' FH Bonn-Rhein-Sieg Programmiersprache Java 43 Escape-Sequenzen \b Backspace (BS) \t Horizontaler Tabulator (TAB) \n Zeilenvorschub (Line Feed, LF) \r Wagenrücklauf (Cariage Return, CR) \f Seitenvorschub (Form Feed, FF) \" " \' \\ \ ' \0 bis \377 Oktal-Code (wg. Kompatibilität zu C; geht auch mit Unicode) Beispiel: '\n' '\1' FH Bonn-Rhein-Sieg Programmiersprache Java 44 10

String-Literal String- oder Zeichenketten-Literale sind 0 oder mehr Zeichen in Anführungszeichen eingeschlossen. Längere Strings können in mehrere Teilstrings aufgebrochen werden, die durch + verkettet werden. Der Typ solch eines Literals ist String, demzufolge ist jedes Zeichenketten- Literal eine Referenz auf eine Instanz der Klasse String! Wichtig: 'a' ist ein Character, "a" ist ein String! String-Literal " Ein Zeichen ungleich ' und \ und Zeilenende " Escape-Sequenz Beispiele: "" "Hallo" "Hallo\n" "Ätsch\n\tBätsch\n" FH Bonn-Rhein-Sieg Programmiersprache Java 45 Separatoren Java kennt die folgenden Separatoren (Interpunktionszeichen): ( ) { } [ ] ; (Semikolon), (Komma). (Punkt) FH Bonn-Rhein-Sieg Programmiersprache Java 46 11

Operatoren Java kennt die folgenden Operatoren: = > <! ~? : == <= >=!= && ++ -- + - * / & ^ % << >> >>> += -= *= /= &= = ^= %= <<= >>= >>>= Wiederholung: Zwischen den Zeichen dieser Operatoren dürfen keine Trennzeichen (Leerzeichen, Kommentare usw.) sein, sonst wären es zwei (oder mehr) Token! FH Bonn-Rhein-Sieg Programmiersprache Java 47 12