02 Einfache Java-Programme - fbi.h-da.de · PDF file2. Einfache Java-Programme Prof. Dr....

36
2. Einfache Java-Programme Prof. Dr. Bernhard Humm FH Darmstadt, 4. Oktober 2005 Grundlagen der Programmierung 1 (Java) Fachhochschule Darmstadt Haardtring 100 D-64295 Darmstadt

Transcript of 02 Einfache Java-Programme - fbi.h-da.de · PDF file2. Einfache Java-Programme Prof. Dr....

Page 1: 02 Einfache Java-Programme - fbi.h-da.de · PDF file2. Einfache Java-Programme Prof. Dr. Bernhard Humm FH Darmstadt, 4. Oktober 2005 Grundlagen der Programmierung 1 (Java) Fachhochschule

2. Einfache Java-Programme

Prof. Dr. Bernhard HummFH Darmstadt, 4. Oktober 2005

Grundlagen der Programmierung 1 (Java)

Fachhochschule DarmstadtHaardtring 100 D-64295 Darmstadt

Page 2: 02 Einfache Java-Programme - fbi.h-da.de · PDF file2. Einfache Java-Programme Prof. Dr. Bernhard Humm FH Darmstadt, 4. Oktober 2005 Grundlagen der Programmierung 1 (Java) Fachhochschule

Grundstruktur

Datentypen

Methoden

Ausdrücke & Zuweisungen

Ein- / Ausgabe

Seite 24.10.2005,Bernhard Humm: „Grundlagen der Programmierung I (Java)“. FH Darmstadt, WS 2005/2006

� Grundstruktur

Agenda

Agenda

Page 3: 02 Einfache Java-Programme - fbi.h-da.de · PDF file2. Einfache Java-Programme Prof. Dr. Bernhard Humm FH Darmstadt, 4. Oktober 2005 Grundlagen der Programmierung 1 (Java) Fachhochschule

Seite 34.10.2005,Bernhard Humm: „Grundlagen der Programmierung I (Java)“. FH Darmstadt, WS 2005/2006

Grundsymbole

Namenbezeichnen Variablen, Typen, ... in einem Programm- bestehen aus Buchstaben, Ziffern und "_"- beginnen mit Buchstaben- beliebig lang- Groß-/Kleinschreibung signifikant!

x MyClassx17 doSomethingmyVar getAddressmy_var CONSTANT

Schlüsselwörter- heben Programmteile hervor- dürfen nicht als Namen verwendet werden

if for privatewhile repeat public

; , . () {} []Satzzeichen- Interpunktionszeichen, engl. seperators

Operatoren- bilden Ausdrücke = > < ! ~ ? : & | + - * / ^ %

Trennung lexikalischer Einheiten Leerzeichen, Tabulator, Zeilen-vorschub, Satzzeichen, Opera-toren, Kommentare

Grundstruktur

Page 4: 02 Einfache Java-Programme - fbi.h-da.de · PDF file2. Einfache Java-Programme Prof. Dr. Bernhard Humm FH Darmstadt, 4. Oktober 2005 Grundlagen der Programmierung 1 (Java) Fachhochschule

Seite 44.10.2005,Bernhard Humm: „Grundlagen der Programmierung I (Java)“. FH Darmstadt, WS 2005/2006

Lexikalische Konventionen

� Variablennamen Kleinbuchstaben variable

� Methodennamen Kleinbuchstaben methode()

� Klassennamen Großbuchstaben Person

� symbolische Konstanten alle Buchstaben großMAXIMUM

� Bei zusammengesetzten Namen werden ab dem 2. Wort jeweils der 1. Buchstabe des Wortes groß geschrieben, z.B. die Variable firstName, die Methode getFirstName()

� Stets sprechende Namen wählen!

Grundstruktur

Page 5: 02 Einfache Java-Programme - fbi.h-da.de · PDF file2. Einfache Java-Programme Prof. Dr. Bernhard Humm FH Darmstadt, 4. Oktober 2005 Grundlagen der Programmierung 1 (Java) Fachhochschule

Seite 54.10.2005,Bernhard Humm: „Grundlagen der Programmierung I (Java)“. FH Darmstadt, WS 2005/2006

class ProgramName {

public static void main (String[] arg) {... // Deklarationen... // Anweisungen

}… // weitere Methoden

}

Grundstruktur von Java-Programmen

Beispiel

class Sample {public static void main (String[] args) {}

}

Text muß in einer Datei namensProgramName.java stehen

Text steht in DateiSample.java

Klassenname

Main-Methode:-public: kann von außen gerufen werden- static: ist Klassenmethode- void: gibt keinen Wert zurück- String[] args: Array args aus Zeichenketten als Parameter

- Jede Deklaration und jede Anweisung muss mit Semikolon enden- Zusammengehörige Gruppen von Anweisungen einrücken

Grundstruktur

Page 6: 02 Einfache Java-Programme - fbi.h-da.de · PDF file2. Einfache Java-Programme Prof. Dr. Bernhard Humm FH Darmstadt, 4. Oktober 2005 Grundlagen der Programmierung 1 (Java) Fachhochschule

Seite 64.10.2005,Bernhard Humm: „Grundlagen der Programmierung I (Java)“. FH Darmstadt, WS 2005/2006

Kommentare:Erläuterungen des Programms

Zeilenendekommentare- beginnen mit //- gehen bis zum Zeilenende

int sum; // total sales

Klammerkommentare- durch /* ... */ begrenzt- können über mehrere Zeilen gehen- dürfen nicht geschachtelt werden- oft zum "Auskommentieren" vonProgrammteilen

/* Das ist ein längererKommentar, der übermehrere Zeilen geht */

Sinnvoll kommentieren!- alles kommentieren, was Erklärung bedarf- statt unklares Programm mit Kommentar, besser klares Programm ohne Kommentar- nicht kommentieren, was ohnehin schon im Programm steht; zum Beispiel nicht:int sum; // Summe

- Möglichst englische Bezeichner und Kommentare; nicht deutsch und englisch mischen!

Grundstruktur

Page 7: 02 Einfache Java-Programme - fbi.h-da.de · PDF file2. Einfache Java-Programme Prof. Dr. Bernhard Humm FH Darmstadt, 4. Oktober 2005 Grundlagen der Programmierung 1 (Java) Fachhochschule

Seite 74.10.2005,Bernhard Humm: „Grundlagen der Programmierung I (Java)“. FH Darmstadt, WS 2005/2006

Übersetzen und Ausführen mit JDK

� JDK installieren

download http://java.sun.com/j2se/1.5.0/download.jsp

� Übersetzen

C:\> cd MySamples wechselt ins Verzeichnis mit der Quelldatei

C:\MySamples> javac Sample.java erzeugt Datei Sample.class

� Ausführen

C:\MySamples> java Sample ruft main-Methode der Klasse Sample auf

� Frage: Wer ruft die Main-Methode auf?

Grundstruktur

Page 8: 02 Einfache Java-Programme - fbi.h-da.de · PDF file2. Einfache Java-Programme Prof. Dr. Bernhard Humm FH Darmstadt, 4. Oktober 2005 Grundlagen der Programmierung 1 (Java) Fachhochschule

Grundstruktur

Datentypen

Methoden

Ausdrücke & Zuweisungen

Ein- / Ausgabe

Seite 84.10.2005,Bernhard Humm: „Grundlagen der Programmierung I (Java)“. FH Darmstadt, WS 2005/2006

� Datentypen

Agenda

Agenda

Page 9: 02 Einfache Java-Programme - fbi.h-da.de · PDF file2. Einfache Java-Programme Prof. Dr. Bernhard Humm FH Darmstadt, 4. Oktober 2005 Grundlagen der Programmierung 1 (Java) Fachhochschule

Seite 94.10.2005,Bernhard Humm: „Grundlagen der Programmierung I (Java)“. FH Darmstadt, WS 2005/2006

Datentypen

� Äpfel können nicht mit Birnen verglichen werden

� Zentrales Konzept der Informatik

� Bekannt aus der Mathematik: Gruppen, Körper, Ringe, Algebren

� Auch Datenstruktur, abstrakter Datentyp genannt

� In Programmiersprache zusätzlich: Darstellung im Speicher

Datentyp =

Wertebereich + Operationen

Datentypen

Page 10: 02 Einfache Java-Programme - fbi.h-da.de · PDF file2. Einfache Java-Programme Prof. Dr. Bernhard Humm FH Darmstadt, 4. Oktober 2005 Grundlagen der Programmierung 1 (Java) Fachhochschule

Seite 104.10.2005,Bernhard Humm: „Grundlagen der Programmierung I (Java)“. FH Darmstadt, WS 2005/2006

Klassifikation der Datentypen in Java

Datentyp

Einfacher(elementarer, primitiver) Typ

Referenztyp

Wahrheitswerte- boolean

Zeichen-Typ- char

Integer-Typ- byte- short- int- long

Gleitpunkt-Typ- float- double

Klassen-Typ

Array-Typ

Schnittstellen-Typ

numerischerTyp

Datentypen

Page 11: 02 Einfache Java-Programme - fbi.h-da.de · PDF file2. Einfache Java-Programme Prof. Dr. Bernhard Humm FH Darmstadt, 4. Oktober 2005 Grundlagen der Programmierung 1 (Java) Fachhochschule

Seite 114.10.2005,Bernhard Humm: „Grundlagen der Programmierung I (Java)“. FH Darmstadt, WS 2005/2006

Der Datentyp boolean

• true

• false

Wertebereich

• Konjunktion (&& bzw. &) UND: true && false� false

• Disjunktion (|| bzw. |) ODER: true || false� true

• Negation (!) NICHT: !true� false

• Exklusives Oder (^): true ^ true� false

Operationen

Datentypen

Page 12: 02 Einfache Java-Programme - fbi.h-da.de · PDF file2. Einfache Java-Programme Prof. Dr. Bernhard Humm FH Darmstadt, 4. Oktober 2005 Grundlagen der Programmierung 1 (Java) Fachhochschule

Seite 124.10.2005,Bernhard Humm: „Grundlagen der Programmierung I (Java)“. FH Darmstadt, WS 2005/2006

Boolean Wahrheitstafeln

boolean isEmployed, isaMinor, isaYoungWorker, isaVoter;

isaYoungWorker = isEmployed & isaMinor;

isaVoter = ! isaMinor;

isaTaxpayer = isaVoter | isEmployed;

boolean freeBus = (isPensioner | isaMinor) & !isEmployed;

x1 x2 AND && OR || XOR ^

true true true true false

true false false true true

false true false true true

false false false false false

x1 NOT !

true false

false true

Beispiele:

Datentypen

Page 13: 02 Einfache Java-Programme - fbi.h-da.de · PDF file2. Einfache Java-Programme Prof. Dr. Bernhard Humm FH Darmstadt, 4. Oktober 2005 Grundlagen der Programmierung 1 (Java) Fachhochschule

Seite 134.10.2005,Bernhard Humm: „Grundlagen der Programmierung I (Java)“. FH Darmstadt, WS 2005/2006

Boolesche Ausdrücke

� Operanden vom Typ byte, int, short, long, float, double oder char und gelieferter Ergebniswert vom Typ boolean

� Operatoren für Vergleiche

== Gleichheit 4 == 5 (ergibt false)

!= Ungleichheit 6 != 7 (ergibt true)

> Größer 'a' > 'b' (ergibt false)

< Kleiner -2. < 0.1 (ergibt true)

>= Größer-Gleich 1 >= -1 (ergibt true)

<= Kleiner-Gleich 3 <= 3 (ergibt true)

boolean isPensioner; int age = 67; isPensioner = age > 65;

Datentypen

Page 14: 02 Einfache Java-Programme - fbi.h-da.de · PDF file2. Einfache Java-Programme Prof. Dr. Bernhard Humm FH Darmstadt, 4. Oktober 2005 Grundlagen der Programmierung 1 (Java) Fachhochschule

Seite 144.10.2005,Bernhard Humm: „Grundlagen der Programmierung I (Java)“. FH Darmstadt, WS 2005/2006

Operator-Prioritäten

� Verarbeitungsreihenfolge boolescher Operatoren in Java

1. ( )

2. !

3. &

4. |

5. &&

6. ||

� Vergleichsoperatoren haben in Java eine höhere Priorität als boolesche Operatoren!

� Klammern benutzen ! (zur Erhöhung der Lesbarkeit)

� möglichst einfache boolesche Ausdrücke verwenden

Datentypen

Page 15: 02 Einfache Java-Programme - fbi.h-da.de · PDF file2. Einfache Java-Programme Prof. Dr. Bernhard Humm FH Darmstadt, 4. Oktober 2005 Grundlagen der Programmierung 1 (Java) Fachhochschule

Grundstruktur

Datentypen

Methoden

Ausdrücke & Zuweisungen

Ein- / Ausgabe

Seite 154.10.2005,Bernhard Humm: „Grundlagen der Programmierung I (Java)“. FH Darmstadt, WS 2005/2006

� Methoden

Agenda

Agenda

Page 16: 02 Einfache Java-Programme - fbi.h-da.de · PDF file2. Einfache Java-Programme Prof. Dr. Bernhard Humm FH Darmstadt, 4. Oktober 2005 Grundlagen der Programmierung 1 (Java) Fachhochschule

Seite 164.10.2005,Bernhard Humm: „Grundlagen der Programmierung I (Java)“. FH Darmstadt, WS 2005/2006

Methoden

� Definition: Teil eines Programms, das in in sich abgeschlossene Aufgabe löst und hierzu eine Folge von Anweisungen und Deklarationen ausführt

� Analogon zu Funktion in der Mathematik (wie auch Operatoren)

� Vorteile

– bessere Übersichtlichkeit von Programmen (Struktur)

– separate Lösung von Teilproblemen

– Wiederverwendbarkeit

� Aspekte: Methodendeklaration und Methodenaufruf

Methoden

Page 17: 02 Einfache Java-Programme - fbi.h-da.de · PDF file2. Einfache Java-Programme Prof. Dr. Bernhard Humm FH Darmstadt, 4. Oktober 2005 Grundlagen der Programmierung 1 (Java) Fachhochschule

Seite 174.10.2005,Bernhard Humm: „Grundlagen der Programmierung I (Java)“. FH Darmstadt, WS 2005/2006

Deklaration einer Methode

� innerhalb einer Klasse, vor/nach der main-Methode

� Reihenfolge der Methodendeklarationen hat keinen Einfluß auf Semantik

� keine Schachtelung von Methodendeklarationen möglich

Modifier Rückgabetyp Name (Typ1 Parameter1, … Typn Parametern) {Deklarationen und Anweisungen;return Ausdruck; // falls nicht void

}

public / private, static, final

Ergebnis-Datentyp oder void

Namen und Datentypen der Eingaben

Beendigung und Rückgabe

Methoden

Page 18: 02 Einfache Java-Programme - fbi.h-da.de · PDF file2. Einfache Java-Programme Prof. Dr. Bernhard Humm FH Darmstadt, 4. Oktober 2005 Grundlagen der Programmierung 1 (Java) Fachhochschule

Seite 184.10.2005,Bernhard Humm: „Grundlagen der Programmierung I (Java)“. FH Darmstadt, WS 2005/2006

Funktionen und Prozeduren:Beispiele für Methodendeklarationen

� Funktionen: Methoden mit Rückgabewert; ohne Seiteneffekte

� Prozeduren: Methoden ohne Rückgabewert; mit Seiteneffekten

� Mischformen sind möglich, aber sollten vermieden werden!

public static float fahrenheit(float c) {return c *9/5 +32;

}

public static void printBox() {System.out.println(“--------“);System.out.println(“| |“);System.out.println(“| |“);System.out.println(“--------“);

}

Methoden

Page 19: 02 Einfache Java-Programme - fbi.h-da.de · PDF file2. Einfache Java-Programme Prof. Dr. Bernhard Humm FH Darmstadt, 4. Oktober 2005 Grundlagen der Programmierung 1 (Java) Fachhochschule

Seite 194.10.2005,Bernhard Humm: „Grundlagen der Programmierung I (Java)“. FH Darmstadt, WS 2005/2006

Aufruf einer Methode

� Aufruf einer Methode, welche in derselben Klasse deklariert ist:

� Geschachtelte Methodenaufrufe:

f = fahrenheit(42);

printBox ();

n=f(2, 42);

main() { int f(int m,n) {

p(n);

void p(float x) {

} } }

(1) (2)(3)

(4)

(5)

(6)(7)(8)(9)

Methoden

Page 20: 02 Einfache Java-Programme - fbi.h-da.de · PDF file2. Einfache Java-Programme Prof. Dr. Bernhard Humm FH Darmstadt, 4. Oktober 2005 Grundlagen der Programmierung 1 (Java) Fachhochschule

Seite 204.10.2005,Bernhard Humm: „Grundlagen der Programmierung I (Java)“. FH Darmstadt, WS 2005/2006

Formale und aktuelle Parameter

� Formale Parameter (Methoden-Deklaration)

– Einführung einer lokalen Variable für die Methode

– wie viele Übergabeparameter, von welchem Typ und in welcher Reihenfolge

� Aktuelle Parameter (Methoden-Aufruf)

– Übergabe eines "Initialwertes" für den formalen Parameter

– Bedingung: Anzahl an formalen Parametern = Anzahl an aktuellen Parametern

– für alle Parameter in der entsprechenden Reihenfolge gilt: Typ des aktuellen Parameters ist typkonform zum Typ des formalen Parameters

Methoden

Page 21: 02 Einfache Java-Programme - fbi.h-da.de · PDF file2. Einfache Java-Programme Prof. Dr. Bernhard Humm FH Darmstadt, 4. Oktober 2005 Grundlagen der Programmierung 1 (Java) Fachhochschule

Seite 214.10.2005,Bernhard Humm: „Grundlagen der Programmierung I (Java)“. FH Darmstadt, WS 2005/2006

Der Teufel steckt im DetailWelche Fehler haben sich eingeschlichen?

public static void methode1(int a) {

return 2 * a;

}

public static int methode2 (int a) {

return (a == a);

}

public static int methode3 (int a) {

int temp = 2 * a;

}

Methoden

Page 22: 02 Einfache Java-Programme - fbi.h-da.de · PDF file2. Einfache Java-Programme Prof. Dr. Bernhard Humm FH Darmstadt, 4. Oktober 2005 Grundlagen der Programmierung 1 (Java) Fachhochschule

Seite 224.10.2005,Bernhard Humm: „Grundlagen der Programmierung I (Java)“. FH Darmstadt, WS 2005/2006

Korrektheit von Methoden: Vor- und Nachbedingungen

public static float fahrenheit(float c)

pre: c > -273,15

post: result = c *9/5 +32

• Muss der Aufrufer sicher stellen

• Kann die Methode erwarten:

public static int fahrenheit(int c) {assert (c > -273,15);return c *9/5 +32;

}

Vorbedingung (pre condition)

• Muss die Methode sicherstellen

• Kann der Aufrufer erwarten:

…f = fahrenheit(c);assert (f == c *9/5 +32);…

Nachbedingung (post condition)

Methoden

Page 23: 02 Einfache Java-Programme - fbi.h-da.de · PDF file2. Einfache Java-Programme Prof. Dr. Bernhard Humm FH Darmstadt, 4. Oktober 2005 Grundlagen der Programmierung 1 (Java) Fachhochschule

Grundstruktur

Datentypen

Methoden

Ausdrücke & Zuweisungen

Ein- / Ausgabe

Seite 234.10.2005,Bernhard Humm: „Grundlagen der Programmierung I (Java)“. FH Darmstadt, WS 2005/2006

� Ausdrücke & Zuweisungen

Agenda

Agenda

Page 24: 02 Einfache Java-Programme - fbi.h-da.de · PDF file2. Einfache Java-Programme Prof. Dr. Bernhard Humm FH Darmstadt, 4. Oktober 2005 Grundlagen der Programmierung 1 (Java) Fachhochschule

Seite 244.10.2005,Bernhard Humm: „Grundlagen der Programmierung I (Java)“. FH Darmstadt, WS 2005/2006

Variablendeklarationen

Jede Variable muss vor ihrer Verwendung deklariert werden- macht den Namen und den Typ der Variablen bekannt- Compiler reserviert Speicherplatz für die Variable

boolean isCorrect; deklariert eine Variable Typ booleanint x, y; deklariert zwei Variablen x und y vom Typ int (Ganzzahl)

Initialisierung- Jede Variable sollte explizit initialisiert werden- Programmierstil: Variablendeklaration und Initialisierung am Anfang der Methode

boolean isCorrect = false; deklariert boolean Variable mit Initialwert falseint x = 100, y = 0; deklariert int Variablen x und y und weist Werte zu

Ausdrücke & Zuweisungen

Page 25: 02 Einfache Java-Programme - fbi.h-da.de · PDF file2. Einfache Java-Programme Prof. Dr. Bernhard Humm FH Darmstadt, 4. Oktober 2005 Grundlagen der Programmierung 1 (Java) Fachhochschule

Seite 254.10.2005,Bernhard Humm: „Grundlagen der Programmierung I (Java)“. FH Darmstadt, WS 2005/2006

Konstantendeklaration

� Initialisierte "Variablen", deren Wert man nicht mehr ändern kann

� Zweck:

– bessere Lesbarkeit: max ist lesbarer als 100

– bessere Wartbarkeit: wenn die Konstante mehrmals vorkommt und geändert werden muss, dann muss das nur an 1 Stelle erfolgen

� Konstantendeklaration muss auf Klassenebene stehen (s. später)

� Konvention: GROSSBUCHSTABEN

static final float PI = 3.14159;

Ausdrücke & Zuweisungen

Page 26: 02 Einfache Java-Programme - fbi.h-da.de · PDF file2. Einfache Java-Programme Prof. Dr. Bernhard Humm FH Darmstadt, 4. Oktober 2005 Grundlagen der Programmierung 1 (Java) Fachhochschule

Seite 264.10.2005,Bernhard Humm: „Grundlagen der Programmierung I (Java)“. FH Darmstadt, WS 2005/2006

Programmierstil:Verwende niemals Literale im Code

� Literale sind feste Werte von Datentypen

float u, r;String tag;…u = 2 * 3.14159 * r;…if (tag == “Montag”) {…

}

static final float PI = 3.14159;static final int MONTAG = 1float u, r;int tag;…u = 2 * PI * r;…if (tag == MONTAG) {…

}

��

Ausdrücke & Zuweisungen

Page 27: 02 Einfache Java-Programme - fbi.h-da.de · PDF file2. Einfache Java-Programme Prof. Dr. Bernhard Humm FH Darmstadt, 4. Oktober 2005 Grundlagen der Programmierung 1 (Java) Fachhochschule

Seite 274.10.2005,Bernhard Humm: „Grundlagen der Programmierung I (Java)“. FH Darmstadt, WS 2005/2006

Zuweisungen

x = x + 1 ;

Variable Ausdruck

1. berechne den Ausdruck2. speichere seinen Wert in der Variablen

Bedingung: linke und rechte Seite müssen zuweisungskompatibelsein- müssen dieselben Typen haben, oder- Typ links ⊇ Typ rechts

Hierarchie der ganzzahligen Typen

long ⊇ int ⊇ short ⊇ byte

Statische Typenprüfung: Compiler prüft:- dass Variablen nur erlaubte Werte enthalten- dass auf Werte nur erlaubte Operationen ausgeführt werden� Java ist eine streng typisierte Sprache

Beispieleint i, j; short s; byte b;i = j; // ok: derselbe Typi = 300; // ok (Zahlkonstanten sind int)b = 300; // falsch: 300 paßt nicht in bytei = s; // oks = i; // falsch

Ausdrücke & Zuweisungen

Page 28: 02 Einfache Java-Programme - fbi.h-da.de · PDF file2. Einfache Java-Programme Prof. Dr. Bernhard Humm FH Darmstadt, 4. Oktober 2005 Grundlagen der Programmierung 1 (Java) Fachhochschule

Seite 284.10.2005,Bernhard Humm: „Grundlagen der Programmierung I (Java)“. FH Darmstadt, WS 2005/2006

Arithmetische Ausdrücke

Vereinfachte Grammatik (EBNF)

Expr = Operand {BinaryOperator Operand}.Operand = [UnaryOperator] ( identifier | number | "(" Expr ")" ).

Binäre Operatoren

+ Addition

- Subtraktion

* Multiplikation

/ Division, Ergebnis ganzzahlig 4/3 (-4)/3 4/(-3) (-4)/(-3)

% Modulo (Divisionsrest) 4%3 (-4)%3 4%(-3) (-4)/(-3)

Unäre Operatoren

+ Identität (+x = x)

- Vorzeichenumkehr

Ausdrücke & Zuweisungen

Page 29: 02 Einfache Java-Programme - fbi.h-da.de · PDF file2. Einfache Java-Programme Prof. Dr. Bernhard Humm FH Darmstadt, 4. Oktober 2005 Grundlagen der Programmierung 1 (Java) Fachhochschule

Seite 294.10.2005,Bernhard Humm: „Grundlagen der Programmierung I (Java)“. FH Darmstadt, WS 2005/2006

Vorrangs- und Typregeln in arithmetischen Ausdrücken

Vorrangregeln

- Punktrechnung (*, /, %) vor Strichrechnung (+, -)- Unäre Operatoren binden stärker als binärez.B.: 3 + 4 * -2 ergibt -5

Typumwandlung (type cast)

(type)expression

- wandelt Typ von expression in type um- dabei kann etwas abgeschnitten werden

(short)i

i

TypregelnOperandentypen byte, short, int, longErgebnistyp - wenn mindestens 1 Operand long ist ⇒ long

- sonst ⇒ int

Beispiele

short s; int i; long x;x = x + i; // longi = s + 1; // int (1 ist vom Typ int)s = (short)(s + 1); // Typumwandlung nötig

Ausdrücke & Zuweisungen

Page 30: 02 Einfache Java-Programme - fbi.h-da.de · PDF file2. Einfache Java-Programme Prof. Dr. Bernhard Humm FH Darmstadt, 4. Oktober 2005 Grundlagen der Programmierung 1 (Java) Fachhochschule

Seite 304.10.2005,Bernhard Humm: „Grundlagen der Programmierung I (Java)“. FH Darmstadt, WS 2005/2006

Typkonvertierung

� Eine Konvertierung primitiver Datentypen heißt erweiternd, wenn sie in Pfeilrichtung erfolgt, einschränkend, wenn sie entgegen der Pfeilrichtung erfolgt.

byte

char

short int long float double

• Erweiternde Typkonvertierung; vom Compiler automatisch durchgeführt

• Bei nicht identischen, aber kompatiblen Variablen, Ausdrücken, Parametern

Implizite Typkonvertierung

• Erweiternde oder einschränkende Typkonvertierung; vom Programmierer erzwungen durch den Type Cast Operator

• Beispiel:double a = 5.0; int i= (int) a;

Explizite Typkonvertierung

Ausdrücke & Zuweisungen

Page 31: 02 Einfache Java-Programme - fbi.h-da.de · PDF file2. Einfache Java-Programme Prof. Dr. Bernhard Humm FH Darmstadt, 4. Oktober 2005 Grundlagen der Programmierung 1 (Java) Fachhochschule

Seite 314.10.2005,Bernhard Humm: „Grundlagen der Programmierung I (Java)“. FH Darmstadt, WS 2005/2006

Beispiel: Zinsberechnung

Problem: Eine Bank ändert oft ihre Zinssätze.Frage: Wie verändern sich dadurch mein Zinsertrag?

Lösung: Was wissen wir? Was wollen wir wissen ? Wie bekommen wir das Ergebnis heraus?

Formel: I = (P T R) / 100

I (interest): Zinsertrag pro Jahr P (principal): GuthabenT (time): Zeit in Jahren R (rate): Zinssatz

Algorithmus:

– M Nummer des aktuellen Monats

– (12 - M) /12 noch zu verzinsende Zeit im laufenden Jahr

– (P * (12 - M) / 12) * oldRate) / 100 Zinsen bei altem Zinssatz

– (P * (12 - M) / 12) * newRate) / 100 Zinsen bei neuem Zinssatz

– Die Differenz hieraus ergibt die gesuchte Veränderung des Ertrags

Ausdrücke & Zuweisungen

Page 32: 02 Einfache Java-Programme - fbi.h-da.de · PDF file2. Einfache Java-Programme Prof. Dr. Bernhard Humm FH Darmstadt, 4. Oktober 2005 Grundlagen der Programmierung 1 (Java) Fachhochschule

Seite 324.10.2005,Bernhard Humm: „Grundlagen der Programmierung I (Java)“. FH Darmstadt, WS 2005/2006

Beispiel: Zinsberechnung

public class Sample {static final double p = 1000; // in EURstatic final int m = 4; // for Aprilstatic final double oldRate = 12.5; // %static final double newRate = 13.0; // %

public static void main(String[] args) {double dif = 0;

// perform calculationdif = computeInterest(p, m, oldRate) –

computeInterest(p, m, newRate);

// print out the resultSystem.out.println("Interest will change by: " + dif);

}

public static double computeInterest(double p, int m, double r) {

double i = 0;double t = 0;

t = (12.0 - m) / 12.0;i = p * t * r / 100;return i;

} }

Page 33: 02 Einfache Java-Programme - fbi.h-da.de · PDF file2. Einfache Java-Programme Prof. Dr. Bernhard Humm FH Darmstadt, 4. Oktober 2005 Grundlagen der Programmierung 1 (Java) Fachhochschule

Grundstruktur

Datentypen

Methoden

Ausdrücke & Zuweisungen

Ein- / Ausgabe

Seite 334.10.2005,Bernhard Humm: „Grundlagen der Programmierung I (Java)“. FH Darmstadt, WS 2005/2006

� Ein- / Ausgabe

Agenda

Agenda

Page 34: 02 Einfache Java-Programme - fbi.h-da.de · PDF file2. Einfache Java-Programme Prof. Dr. Bernhard Humm FH Darmstadt, 4. Oktober 2005 Grundlagen der Programmierung 1 (Java) Fachhochschule

Seite 344.10.2005,Bernhard Humm: „Grundlagen der Programmierung I (Java)“. FH Darmstadt, WS 2005/2006

Standard-Ein- und Ausgabe

� Punkt-Notation: Zugriff auf Attribute und Methoden von Klassen und Objekten (siehe Objekt-Orientierung

Programm

Eingabe von der Tastatur

System.in

Ausgabeauf die Konsole

System.out

Ein- / Ausgabe

Page 35: 02 Einfache Java-Programme - fbi.h-da.de · PDF file2. Einfache Java-Programme Prof. Dr. Bernhard Humm FH Darmstadt, 4. Oktober 2005 Grundlagen der Programmierung 1 (Java) Fachhochschule

Seite 354.10.2005,Bernhard Humm: „Grundlagen der Programmierung I (Java)“. FH Darmstadt, WS 2005/2006

Standard-Ausgabe

� Ausgabe auf die Konsole:System.out.print(“ein Text“); // Parameter: Zeichenkette (String)

� Zeilenvorschub:System.out.println(); // print line

beziehungsweiseSystem.out.print(“ \n“); // newline Character

� Eine einzelne Zeichenkette darf nicht auf mehrere Zeilen aufgeteilt werden:“Das geht

so nicht“

� Konkatenation (Verkettung) von Zeichenketten mit +-Operator:“ Output value: “ + diff + “ Euro \n“

Dabei implizite Typkonversion double � String

Ein- / Ausgabe

Page 36: 02 Einfache Java-Programme - fbi.h-da.de · PDF file2. Einfache Java-Programme Prof. Dr. Bernhard Humm FH Darmstadt, 4. Oktober 2005 Grundlagen der Programmierung 1 (Java) Fachhochschule

Seite 364.10.2005,Bernhard Humm: „Grundlagen der Programmierung I (Java)“. FH Darmstadt, WS 2005/2006

Standard-Eingabe

� Komplizierter als Standard-Ausgabe

� Import des Java-Pakets für Ein-/Ausgabe

� Exception Handling

� Geschachtelte Objekt-Instaziierung

� Klassenmethoden verschiedener Klassen

import java.io.*;

public class Sample { public static void main(String[] args) throws IOException{ int a, b, c; BufferedReader din = new BufferedReader(

new InputStreamReader(System.in));

System.out.println("Bitte a eingeben: "); a = Integer.parseInt(din.readLine()); System.out.println("Bitte b eingeben: "); b = Integer.parseInt(din.readLine()); c = a + b; System.out.println("a+b="+c); } }

Ein- / Ausgabe