3. Java - Sprachkonstrukte I

Ähnliche Dokumente
3. Java Einführung. Erstes Java Programm. Der euklidische Algorithmus in Java. Java Klassen

Einstieg in die Informatik mit Java

Namen und Bezeichner. Ein Programm braucht einen Namen. Bezeichner: Ein Name für "Objekte" im Programm.

Java-Schulung Grundlagen

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2

Java I Vorlesung Imperatives Programmieren

Wo sind wir? Übersicht lexikale Struktur von Java

Ganze Zahlen. Die Typen int, unsigned int; Auswertung arithmetischer Ausdrücke, arithmetische Operatoren

Einführung in die Programmierung I. 2.0 Einfache Java Programme. Thomas R. Gross. Department Informatik ETH Zürich

Sprachkonstrukte. Einführung in Java. Folie 1 von Mai Ivo Kronenberg

Ganze Zahlen. Die Typen int, unsigned int; Auswertung arithmetischer Ausdrücke, arithmetische Operatoren

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

Einführung in die Programmierung WS 2009/10. Übungsblatt 5: Typen, Variablen und einfache Methoden in Java

Institut für Programmierung und Reaktive Systeme. Java 2. Markus Reschke

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 1 - Variablen und Kontrollstrukturen

Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik Operatoren, Kommentare, Ein-/Ausgabe

2. Ganze Zahlen int unsigned int

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

2. Ganze Zahlen. Auswertung arithmetischer Ausdrücke, Assoziativität und Präzedenz, arithmetische Operatoren, Wertebereich der Typen int, unsigned int

Einstieg in die Informatik mit Java

Kapitel 4. Programmierkurs. Datentypen. Arten von Datentypen. Wiederholung Kapitel 4. Birgit Engels, Anna Schulze WS 07/08

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

Arbeitsblätter für die Lehrveranstaltung OOP JAVA 1

Java - Programmierung - Prozedurale Programmierung 1

Einstieg in die Informatik mit Java

Einführung in die Informatik

Grundsymbole. Kapitel 2: Einfache Programme. Liste aller Java-Schlüsselwörter. Schlüsselwörter und Struktursymbole. Lexikalische Einheiten

1. Ganze Zahlen. 9 * celsius / Celsius to Fahrenheit. (9 * celsius / 5) + 32

5 Grundlagen der Java-Syntax

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch)

Primitive Datentypen

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

Elementare Konzepte von

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

1. Der Einstieg in Java

MiniJava-Sprachbericht Version 3.1

Grunddatentypen, Ausdrücke und Variablen

2 Imperative Sprachkonzepte

Java Datentypen und Variablen

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

Grundlagen der Informatik Ergänzungen WS 2007/2008 Prof. Dr. Rainer Lütticke

Kapitel 4: Elementare Konzepte von Programmiersprachen. Variablen Referenzen Zuweisungen

Grammatik, Bezeichner, Datentypen, Entwicklungszyklus

RO-Tutorien 3 / 6 / 12

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch)

Software Entwicklung 1

Operatoren für elementare Datentypen Bedingte Anweisungen Schleifen. Operatoren für elementare Datentypen Bedingte Anweisungen Schleifen

RO-Tutorien 15 und 16

Ein erstes Java-Programm

Anweisungen zur Ablaufsteuerung

Einstieg in die Informatik mit Java

Variablen. CoMa-Übung VIII TU Berlin. CoMa-Übung VIII (TU Berlin) Variablen / 15

Programmieren in Java

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

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 12/13. Kapitel 3. Grunddatentypen, Ausdrücke und Variable

Grunddatentypen, Ausdrücke und Variablen Typkonversion, Überprüfen und Auswerten von Ausdrücken

Einstieg in die Informatik mit Java

Programmiertechnik Operatoren, Kommentare, Ein-/Ausgabe

Programmieren in Java

Einführung in die Programmierung Wintersemester 2008/09

Kapitel 3. Grunddatentypen, Ausdrücke und Variable

Datenbankanwendungsprogrammierung Crashkurs Java

Ausdrücke in Scala. Funktionale Programmierung. Christoph Knabe FB VI

Kapitel 05. Datentypen. Fachgebiet Knowledge Engineering Prof. Dr. Johannes Fürnkranz

Die Sprache C# Datentypen, Speicherverwaltung Grundelemente der Sprache. Dr. Beatrice Amrhein

C- Kurs 03 Ausdrücke und Operatoren

Werkzeuge zur Programmentwicklung

Programmieren I. Operatoren und Ausdrücke Heusch 6.2 Ratz Institut für Angewandte Informatik

Vorlesung Programmieren

Primitive Datentypen. Dr. Wolfgang Süß Thorsten Schlachter

5.3 Auswertung von Ausdrücken

Primitive Datentypen, Eingaben, Kontrollstrukturen und Methodendeklaration

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

JAVA-Datentypen und deren Wertebereich

2. Programmierung in C

Intensivübung zu Algorithmen und Datenstrukturen

12 Abstrakte Klassen, finale Klassen und Interfaces

Unterlagen. CPP-Uebungen-08/

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

Propädeutikum zur Programmierung

Variablen. int Flugzeug. float. I write code Hund. String. long. Borchers: Programmierung für Alle (Java), WS 06/07 Kapitel

1. Referenzdatentypen: Felder und Strings. Referenz- vs. einfache Datentypen. Rückblick: Einfache Datentypen (1) 4711 r

1. Referenzdatentypen: Felder und Strings

Tutorium Rechnerorganisation

Fragenkatalog ESOP WS 16/17

Grundlagen der Informatik 2. Typen

Projekt 3 Variablen und Operatoren

Grundlagen der Informatik 2. Operatoren

Klausur am Montag, 20.Juli um 9 Uhr

Grundlagen der Programmierung Prof. H. Mössenböck. 2. Einfache Programme

Primitive Datentypen und Felder (Arrays)

Algorithmen & Programmierung. Ausdrücke & Operatoren (1)

14 Abstrakte Klassen, finale Klassen, Interfaces

Programmieren I. Kapitel 5. Kontrollfluss

14 Abstrakte Klassen, finale Klassen, Interfaces. Auswertung von Ausdrücken. Beispiel. Abstrakte Methoden und Klassen

Operatoren für elementare Datentypen Bedingte Anweisungen Schleifen. Programmieren I. Martin Schultheiß. Hochschule Darmstadt Wintersemester 2010/2011

Teil I. Konzepte imperativer Programmierung

Prinzipielle Ausführungsvarianten I

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

Transkript:

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, Typkonversionen 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 $ 85 86 Namen - was ist erlaubt Schlüsselwörter Folgende Wörter werden von der Sprache bereits benützt und können deshalb nicht als Namen benützt werden: _myname AN$WE4_1S_42 $bling$ TheCure me@home strictfp 49ers?! side-swipe Ph.D s 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 87 88

Variablen und Konstanten 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 23 int y 42 float f 0.0f char c a Deklaration in Java: int x = 23, y = 42; float f; char c = a ; Initialisierung 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. 89 90 Standardtypen Typen und Speicherbelegung Datentyp Definition Wertebereich Initialwert byte 8-bit Ganzzahl 128,..., 127 0 short 16-bit Ganzzahl 32 768,..., 32 767 0 int 32-bit Ganzzahl 2 31,..., 2 31 1 0 long 64-bit Ganzzahl 2 63,..., 2 63 1 0L float 32-bit Fliesskommazahl ±1.4E 45,..., ±3.4E +38 0.0f double 64-bit Fliesskommazahl ±4.9E 324,..., ±1.7E +308 0.0d Zur Erinnerung: Speicherzellen enthalten 1 Byte = 8 bit boolean byte short, char boolean Wahrheitswert true, false false char Unicode-16 Zeichen \u0000,..., a, b,..., \uffff \u0000 String Zeichenkette null int, float long, double 91 92

Literale: Ganzzahlen Literale: Fliesskommazahlen Typ int (oder short, byte) unterscheiden sich von Ganzzahlliteralen durch Angabe von 12 : Wert 12-3 : Wert 3 Dezimalkomma 1.0 : Typ double, Wert 1 1.23e-7f Typ long 25_872_224L : Wert 25 872 224 1.27f : Typ float, Wert 1.27 und / oder Exponent. 1e3 : Typ double, Wert 1000 ganzzahliger Teil fraktionaler Teil Exponent Tip: Unterstriche zwischen Zahlen sind erlaubt! 1.23e-7 : Typ double, Wert 1.23 10 7 93 1.23e-7f : Typ float, Wert 1.23 10 7 94 Literale: Zeichen und Zeichenketten Zeichen: In ASCII Tabelle Einzelne Zeichen: a : Typ char, Wert 97 Zeichenketten: "Hello There!" : Typ String "a" : Typ String Achtung: Zeichen und Zeichenketten sind zwei unterschiedliche Dinge! 95 96

Wertzuweisungen Kopiert einen Wert in die Variable x In Pseudocode: x Wert In Java: x = Wert x Wert (Kopie) = ist der Zuweisungsoperator und nicht ein Vergleich! int y = 42 ist also Deklaration + Wertzuweisung in einem. Wert Wertzuweisungen Beispiele int a = 3; double b; b = 3.141; int c = a = 0; String name = "Inf"; Eine verschachtelte Zuweisung: Der Ausdruck a = 0 speichert den Wert 0 in Variable a. und gibt den Wert danach zurück 97 98 Arithmetische Binäre Operatoren 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 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 99 100

Arithmetische Zuweisung Arithmetische Unäre Operatoren x = x + y x += y Analog für,, /, % Beispiele: x = 3; // x = x 3 name += "x" // name = name + "x" num = 2; // num = num 2 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 101 102 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. Inkrement/Dekrement Operatoren 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 103 104

Ausdrücke (Expressions) Ausdrücke (Expressions) repräsentieren Berechnungen sind entweder primär oder zusammengesetzt...... aus anderen Ausdrücken, mit Hilfe von Operatoren sind statisch typisiert Beispiele primär: 4.1d oder x oder "Hi" zusammengesetzt: x + y oder f 2.1f Der Typ von 12 2.1f ist float Analogie: Baukasten 105 106 Celsius zu Fahrenheit Celsius zu Fahrenheit - Analye public class Main { } public static void main(string[] args) { Out.print("Celsius: "); int celsius = In.readInt(); float fahrenheit = ; Out.println("Fahrenheit: " + fahrenheit); } Beispiel: 15 Celsius sind 59 Fahrenheit Arithmetischer Ausdruck, enthält drei Literale, eine Variable, drei Operatorsymbole Wie ist der Ausdruck geklammert? 107 108

Regel 1: Präzedenz Regel 2: Assoziativität Multiplikative Operatoren (*, /, %) haben höhere Präzedenz ("binden stärker") als additive Operatoren (+, -). Arithmetische Operatoren (*, /, %, +, -) sind linksassoziativ: bei gleicher Präzedenz erfolgt Auswertung von links nach rechts. Beipsiel bedeutet (9 * celsius / 5) + 32 Beispiel bedeutet ((9 * celsius) / 5) + 32 109 110 Regel 3: Stelligkeit Klammerung Unäre Operatoren +, - vor binären +, -. Beispiel 9 * celsius / + 5 + 32 bedeutet 9 * celsius / (+5) + 32 Jeder Ausdruck kann mit Hilfe der Assoziativitäten Präzedenzen Stelligkeiten (Anzahl Operanden) der beteiligten Operatoren eindeutig geklammert werden. 111 112

Ausdrucksbäume Klammerung ergibt Ausdrucksbaum (((9 * celsius) / 5) + 32) 9 celsius 5 32 * / + Auswertungsreihenfolge "Von den Blättern zur Wurzel" im Ausdrucksbaum 9 celsius 5 32 * / + 113 114 Ausdrucksbäume Notation Üblichere Notation: Wurzel oben + 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 / 32 Vorteil eines statischen Typsystems * 9 celsius 5 Fail-fast Fehler im Programm werden oft schon vom Compiler gefunden Verständlicher Code 115 116

Typfehler Beispiel int pi_ish; float pi = 3.14f; pi_ish = pi; Explizite Typkonvertierung Beispiel int pi_ish; float pi = 3.14f; pi_ish = (int) pi; Compiler Fehler:./Root/Main.java:12: error: incompatible types: possible lossy conversion from float to int pi_ish = pi; ^ Explizite Typkonvertierung mit Typecasting: (typ) Statisch typkorrekt, Compiler happy Laufzeitverhalten: Je nach Situation Hier: Genauigkeitsverlust: 3.14 3 117 Kann das Programm zur Laufzeit zum Absturz bringen! 118 Typ Konvertierung - Anschaulich für Ganzzahlen Gemischte Ausdrücke, Konversion Expliziter Cast byte short int long Implizite Konversion Fliesskommazahlen sind allgemeiner als ganzzahlige Typen. In gemischten Ausdrücken werden ganze Zahlen zu Fliesskommazahlen konvertiert. Potentieller Informationsverlust bei explizitem Cast, da weniger Speicher zur Verfügung. 119 120

Typkonversion bei binären Operationen 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 121