Java Themen derÜbung Java installieren Java installieren

Werbung
Themen der Übung
Java
CoMa-Übung II
TU Berlin
1
Java-Installation
2
Hello World
3
Temperature
24.10.2012
CoMa-Übung II (TU Berlin)
Java
24.10.2012
1 / 28
CoMa-Übung II (TU Berlin)
Java installieren
Java installieren
Installation
Installation (Fortsetzung)
Java SE Development Kit 7u9 herunterladen
(http://www.oracle.com/technetwork/java/javase/
downloads/jdk7u9-downloads-1859576.html)
Java
24.10.2012
2 / 28
Nachdem das JDK installiert ist, wird nach einem Ordner für das Java
Runtime Environment gefragt
Installieren (hier am Beispiel von Windows 7)
JDK = Java Programme entwickeln
JRE = Java Programme ausführen
Merkt euch, wohin ihr das JDK installiert!
CoMa-Übung II (TU Berlin)
Java
Fertig!
24.10.2012
3 / 28
CoMa-Übung II (TU Berlin)
Java
24.10.2012
4 / 28
Java installieren
Java-Programme schreiben
Test
Vom Programmierer zum Programm
Kommandozeile aufrufen (Start → Nach cmd suchen → cmd
starten)
Text-Editor
(NotePad++)
Java-Kompiler
(javac)
Benutzung: Befehl eingeben, mit Enter bestätigen
java -version gibt die Version des installierten Java aus
Programmierer
Text-Datei
(.java)
Java Virtual
Machine
Java-Bytecode
(.class)
Programm
Programmierer nimmt einen beliebigen Text-Editor und legt eine neue
.java-Datei an (z.B. HelloWorld.java)
Ist die Datei fertig, kann die Text-Datei mit javac HelloWorld.java
(Kommandozeile) in Java-Bytecode übersetzt werden
Wird der Befehl java nicht gefunden, obwohl die Installation geklappt
hat, liegt Java vermutlich nicht im (Such-)Pfad
Java-Bytecode kann auf allen Systemen ausgeführt werden, für die es eine
Java Virtual Machine (JVM) gibt (java HelloWorld)
http://www.java-forum.org/einfuehrungen-erste-schritte/
94072-java-umgebungsvariable-einstellen-windows-7-a.html
CoMa-Übung II (TU Berlin)
Java
24.10.2012
JVM ist Teil des JREs, der Kompiler Teil des JDKs
5 / 28
CoMa-Übung II (TU Berlin)
Hello World
Hello World (Fortsetzung)
Test
Test
I
24.10.2012
6 / 28
Kompiliert die Datei mittels javac HelloWorld.java
Legt eine neue Textdatei HelloWorld.java an
I
Java
Groß- und Kleinschreibung beachten
Passt auf, dass kein zusätzliches .txt an den Dateinamen angehängt
wird
Startet das Programm mittels java HelloWorld
Wenn alles gut geht, sollte das Hello World! ausgegeben werden
Schreibt das Programm:
1
p u b l i c c l a s s HelloWorld {
2
p u b l i c s t a t i c v o i d main ( S t r i n g [ ] a r g s ) {
System . o u t . p r i n t l n ( ” H e l l o World ! ” ) ;
}
3
4
5
6
7
}
Startet die Kommandozeile, navigiert in das Verzeichnis mit
HelloWorld.java
CoMa-Übung II (TU Berlin)
Java
24.10.2012
7 / 28
CoMa-Übung II (TU Berlin)
Java
24.10.2012
8 / 28
1
Hello World – Wenn es nicht gut geht...
Hello World – Wenn es nicht gut geht...
Vergessenes Semikolon
Vergessene Anführungszeichen
1
p u b l i c c l a s s HelloWorld {
2
4
5
4
5
6
6
7
}
HelloWorld.java:4:
error:
Der Kompiler versucht Hello World! als Java-Befehl zu übersetzen
’;’ expected
Geht schief, produziert ”komische” Fehlermeldungen
Sagt euch die Art des Fehlers und wo dem Kompiler der Fehler
aufgefallen ist
Mensch ist bei der Interpretation der Fehler gefragt
Java
24.10.2012
9 / 28
CoMa-Übung II (TU Berlin)
Falsche Klammern
1
2
p u b l i c c l a s s HelloWorld {
p u b l i c s t a t i c v o i d main ( S t r i n g [ ] a r g s ) {
s y s t e m . o u t . p r i n t l n ( ” H e l l o World ! ” ) ;
}
3
4
5
6
7
10 / 28
2
p u b l i c s t a t i c v o i d main ( S t r i n g [ ] a r g s ) {
System . o u t . p r i n t l n [ ” H e l l o World ! ” ] ;
}
5
24.10.2012
Groß- und Kleinschreibung, Rechtschreibung
p u b l i c c l a s s HelloWorld {
4
Java
Hello World – Wenn es nicht gut geht...
Hello World – Wenn es nicht gut geht...
3
}
Gibt eine Fehlermeldung in der Kommandozeile
CoMa-Übung II (TU Berlin)
1
p u b l i c s t a t i c v o i d main ( S t r i n g [ ] a r g s ) {
System . o u t . p r i n t l n ( H e l l o World ! ) ;
}
3
p u b l i c s t a t i c v o i d main ( S t r i n g [ ] a r g s ) {
System . o u t . p r i n t l n ( ” H e l l o World ! ” )
}
3
7
p u b l i c c l a s s HelloWorld {
2
6
}
7
Viele Symbole in Java haben eine Bedeutung
Groß- und Kleinschreibung, Rechtschreibung sehr wichtig
Benutzt ihr die falschen, kommt der Kompiler durcheinander
Ein falscher Buchstabe und der Kompiler versteht euch nicht
In der Regel wird nicht erkannt, was ihr eigentlich wolltet
Ergebnis: Der Kompiler beschwert sich, dass er etwas nicht kennt
Ergebnis: ”komische” Fehler
CoMa-Übung II (TU Berlin)
Java
24.10.2012
}
11 / 28
CoMa-Übung II (TU Berlin)
Java
24.10.2012
12 / 28
Hello World – Wenn es nicht gut geht...
Java – Konzepte
Klassen- und Dateinamen
1
Konzepte
p u b l i c c l a s s HelloWorld {
Java ist eine objekt-orientierte Programmiersprache
2
p u b l i c s t a t i c v o i d main ( S t r i n g [ ] a r g s ) {
System . o u t . p r i n t l n ( ” H e l l o World ! ” ) ;
}
3
4
5
Man fängt mit sehr einfachen Datentypen (z.B. Zahlen) an und baut
daraus komplexere Strukturen (Klassen/Objekte)
6
7
Aus diesen Strukturen baut man dann noch komplexere Strukturen,
etc.
}
Eine Datei mit einer Klasse namens HelloWorld muss
HelloWorld.java genannt werden
Klassenbibliotheken
Sonst gibt es einen Fehler beim Kompilieren
Wenn jeder bei Null anfangen würde, wäre das sehr ineffizient
Es gibt große Bibliotheken voller vorgefertigter Strukturen (die ihr
auch als Teil des JDKs bekommen habt)
Werden wir nach und nach einführen
CoMa-Übung II (TU Berlin)
Java
24.10.2012
13 / 28
CoMa-Übung II (TU Berlin)
Die anderen Bestandteile von Hello World
1
24.10.2012
14 / 28
Die anderen Bestandteile von Hello World
p u b l i c c l a s s HelloWorld {
1
p u b l i c c l a s s HelloWorld {
2
2
p u b l i c s t a t i c v o i d main ( S t r i n g [ ] a r g s ) {
System . o u t . p r i n t l n ( ” H e l l o World ! ” ) ;
}
3
4
5
p u b l i c s t a t i c v o i d main ( S t r i n g [ ] a r g s ) {
System . o u t . p r i n t l n ( ” H e l l o World ! ” ) ;
}
3
4
5
6
7
Java
6
}
7
class
}
class
Sagt, dass ihr jetzt eine neue Klasse (= eine der erwähnten
komplexeren Strukturen) definieren wollt
Sagt, dass ihr jetzt eine neue Klasse (= eine der erwähnten
komplexeren Strukturen) definieren wollt
Sichtbarkeitsmodifikatoren: public, private
Sichtbarkeitsmodifikatoren: public, private
Schlüsselwörter wie public und private bestimmen, welche Teile
eurer Klassen von außen sichtbar sind
Schlüsselwörter wie public und private bestimmen, welche Teile
eurer Klassen von außen sichtbar sind
Bsp.: In einem Handy wäre das Display public (da von außen
sichtbar), der Prozessor aber nicht.
Bsp.: In einem Handy wäre das Display public (da von außen
sichtbar), der Prozessor aber nicht.
CoMa-Übung II (TU Berlin)
Java
24.10.2012
15 / 28
CoMa-Übung II (TU Berlin)
Java
24.10.2012
16 / 28
Die anderen Bestandteile von Hello World
1
Hello World – Zusammenfassung
p u b l i c c l a s s HelloWorld {
1
2
p u b l i c s t a t i c v o i d main ( S t r i n g [ ] a r g s ) {
System . o u t . p r i n t l n ( ” H e l l o World ! ” ) ;
}
3
4
5
p u b l i c s t a t i c v o i d main ( S t r i n g [ ] a r g s ) {
System . o u t . p r i n t l n ( ” H e l l o World ! ” ) ;
}
3
4
5
6
7
p u b l i c c l a s s HelloWorld {
2
6
}
7
Was ihr von dem Programm mitnehmen solltet:
public static void main(String[] args)
Definiert die Einstiegsmethode für ein Programm, damit Java weiß wo
das Programm anfängt
System.out.println(x) gibt x auf der Kommandozeile aus und
beginnt eine neue Zeile
x kann dabei eine Zahl, eine Zeichenkette oder ein beliebiges
komplexeres Objekt sein
System.out.println()
Ruft die Methode println() der Variable out der Klasse System auf
Gibt etwas in der Kommandozeile aus
CoMa-Übung II (TU Berlin)
}
Java
24.10.2012
17 / 28
Ihr kennt jetzt ein Grundgerüst, um ein ausführbares Java-Programm
zu erstellen
CoMa-Übung II (TU Berlin)
Variablen und Zuweisungen in Java
(Primitive) Datentypen
Variablen
Datentypen für Zahlen z ∈ Z
Java
24.10.2012
Variablen haben in Java ein Typ, der festlegt, welche Werte eine
Variable annehmen kann (vgl. n ∈ N).
byte: −128 = −27 ≤ z ≤ 27 − 1 = 127
Der Datentyp einer Variablen muss bei ihrer Deklaration festgelegt
werden und kann danach nicht mehr geändert werden.
int: −2.147.483.648 = −231 ≤ z ≤ 231 − 1 = 2.147.483.647
18 / 28
short: −32.768 = −215 ≤ z ≤ 215 − 1 = 32.767
long: −9 · 1018 ≈ −263 ≤ z ≤ 263 − 1 ≈ 9 · 1018
Datentyp variablenName; deklariert eine Variable von Typ
Datentyp die variablenName heißt.
Datentypen für Zahlen z ∈ Q
Datentyp variablenName1, variablenName2; für mehrere
Variablen des gleichen Typs.
float: 32-bit Gleitkommazahl (≈ ±3.7 · 1038 )
Bevor eine Variable vom Programm benutzt werden kann, muss ihr
ein Wert zugewiesen werden.
Sehr großer Wertebereich, aber Zahlen werden nur approximiert
double: 64-bit Gleitkommazahl (≈ ±1.8 · 10308 )
Rundungsfehler (→ Numerik)
Zuweisungen
Andere primitive Datentypen
Der Operator für Zuweisungen in Java ist =. Eine Zuweisung hat
somit die Form a = b;. b muss zu dem Typ von a passen.
CoMa-Übung II (TU Berlin)
Java
24.10.2012
boolean: true/false, char: 16-bit Unicode-Zeichen
19 / 28
CoMa-Übung II (TU Berlin)
Java
24.10.2012
20 / 28
Operatoren
Stolperfallen beim Rechnen
Beachtet:
Operatoren
Die Datentypen für Zahlen können nur Zahlen einer bestimmten
Größe darstellen. Verlässt man bei einer Rechnung diesen Bereich,
wird das Ergebnis falsch.
Java erlaubt Zuweisungen der Form a = b; nur, wenn der Datentyp
von b zu dem von a passt. Das ist unter anderem dann der Fall, wenn
Addition: +, Subtraktion: −, Multiplikation ∗
Division: / (wenn einer der beiden Operanden keine Ganzzahl ist)
Ganzzahlige Division: / (wenn beide Operanden Ganzzahlen sind)
Darum: 9/5 = 1, aber 9.0/5 = 1.8
I
Es gelten die üblichen Präzedenzregeln: Klammern vor ∗, / vor +, −
Die Klasse Math
I
I
a und b den gleichen Datentyp haben
a ein Zahlen-Datentyp ist, der einen größeren Zahlenbereich als b
darstellen kann
a ein Gleitkomma-Datentyp ist und b ein Ganzzahl-Datentyp ist
Stellt grundlegende mathematische Funktionen zur Verfügung
Beispiele:
Math.round(x) gibt für einen double-Wert x den am nächsten
liegenden long-Wert zur̈uck; gibt es zwei Kandidaten, wird
aufgerundet.
double d = 1.0; int i = 1; long ell = 1;
d = i; ell = i; → geht
i = ell; → Fehler
CoMa-Übung II (TU Berlin)
Java
24.10.2012
21 / 28
CoMa-Übung II (TU Berlin)
Java
Benutzereingaben einlesen
Benutzereingaben einlesen (2)
Die Klasse Scanner
Funktionsweise
24.10.2012
Die Klasse Scanner liest Text von der Kommandozeile oder einer
Datei ein und zerlegt sie in Einheiten (Token)
Benutzer-Eingabe kann mehrere Token enthalten; können mit
mehreren next-Aufrufen nacheinander abgearbeitet werden
Standard der Klasse ist, den gelesenen Text bei Leerzeichen zu
zerlegen, d.h. jedes Wort wird ein Token
Sind keine Token mehr verfügbar und wird eine next-Methode
aufgerufen, wartet das Programm auf eine Benutzer-Eingabe (d.h.
eine mit Enter bestätigte Zeichenkette)
"Hello World!" würde also zu "Hello" und "World!" zerlegt
22 / 28
Je nach der Umgebung, in der die Scanner-Klasse sich befindet,
erwartet die Klasse ein . (Englisch) oder ein , (Deutsch) in
Gleitkommazahlen
Scanner scan = new Scanner(System.in);
erzeugt eine Variable namens scan vom Typ Scanner, welche ein
neues Scanner-Objekt zugewiesen bekommt, dass die
Kommandozeilen-Eingabe ausliest (System.in)
Kann eine Benutzer-Eingabe nicht wie gewünscht als Zahl
interpretiert werden, gibt es eine Fehlermeldung
Lesen eines Token
nextDouble(), nextInt(), nextLong(), ... lesen das nächste Token
und wandeln es in einen double, int, long, etc. um (sofern möglich)
CoMa-Übung II (TU Berlin)
Java
24.10.2012
23 / 28
CoMa-Übung II (TU Berlin)
Java
24.10.2012
24 / 28
Temperature
1
Temperature – Zusammenfassung
import j a v a . u t i l . S c a n n e r ;
2
3
4
5
6
7
8
9
10
11
12
13
14
Was ihr von dem Programm mitnehmen solltet:
p u b l i c c l a s s Temperature {
p u b l i c s t a t i c v o i d main ( S t r i n g [ ] a r g s ) {
d ou bl e f a h r e n h e i t , c e l s i u s ;
S c a n n e r s c a n = new S c a n n e r ( System . i n ) ;
System . o u t . p r i n t l n ( ” Geben S i e e i n e Te m p e r a t u r i n
F a h r e n h e i t e i n und d r u e c k e n S i e r e t u r n ” ) ;
f a h r e n h e i t = scan . nextDouble () ;
c e l s i u s = 5.0 / 9 ∗ ( f a h r e n h e i t − 32) ;
c e l s i u s = Math . r o u n d ( c e l s i u s ∗ 1 0 0 ) ;
c e l s i u s = c e l s i u s / 100.0;
System . o u t . p r i n t l n ( f a h r e n h e i t + ” Grad F a h r e n h e i t
e n s t p r e c h e n ” + c e l s i u s + ” Grad C e l s i u s . ” ) ;
}
}
CoMa-Übung II (TU Berlin)
Java
24.10.2012
Variablen deklarieren
Grundlegende Datentypen
Zuweisungen vornehmen
Arithmetische Operatoren
Einfaches Rechnen mit Java
Runden mit Math.round
Eingaben aus der Kommandozeile auslesen mit Scanner
25 / 28
CoMa-Übung II (TU Berlin)
1
Hausaufgaben
I
I
Zum Spielbeginn liegen 18 Streichhölzer auf dem Tisch
Spieler nehmen abwechselnd 1-3 Hölzer
Wer das letzte Holz nimmt, hat verloren
Kann der anfangende Spieler immer gewinnen? Was passiert, wenn es
nicht 18 Hölzer zu Beginn sind?
Linux, Taschenrechner und Suche nach dem größten Wert, für die die
Fakultätsfunktion berechnet werden kann
3
4
5
6
7
8
9
10
11
12
13
14
Programmieraufgaben
Temperature.java so modifizieren, dass ein Strompreisrechner
daraus wird
CoMa-Übung II (TU Berlin)
26 / 28
import j a v a . u t i l . S c a n n e r ;
2
Members-Datei anlegen (→ wichtig für euren Mumie-Zugriff und für
euren CoMa-Schein)
Streichholz-Spiel – Algorithmisches Denken
I
24.10.2012
Temperature
HAs und PAs
I
Java
Java
24.10.2012
p u b l i c c l a s s Temperature {
p u b l i c s t a t i c v o i d main ( S t r i n g [ ] a r g s ) {
double f a h r e n h e i t , c e l s i u s ;
S c a n n e r s c a n = new S c a n n e r ( System . i n ) ;
System . o u t . p r i n t l n ( ” Geben S i e e i n e T e m p er a t u r i n
F a h r e n h e i t e i n und d r u e c k e n S i e r e t u r n ” ) ;
f a h r e n h e i t = scan . nextDouble () ;
c e l s i u s = 5.0 / 9 ∗ ( f a h r e n h e i t − 32) ;
c e l s i u s = Math . r o u n d ( c e l s i u s ∗ 1 0 0 ) ;
c e l s i u s = c e l s i u s / 100.0;
System . o u t . p r i n t l n ( f a h r e n h e i t + ” Grad F a h r e n h e i t
e n s t p r e c h e n ” + c e l s i u s + ” Grad C e l s i u s . ” ) ;
}
}
fahrenheit – Jahresstromverbrauch, celsius – Preis
Formeln, Namen, Kommentare und Ausgaben anpassen für PA 1
27 / 28
CoMa-Übung II (TU Berlin)
Java
24.10.2012
28 / 28
Herunterladen