Ubungsblatt 1

Werbung
Übungsblatt 1
Java Vorkurs (WS 2016)
Aufgabe 1 Hallo-Welt
Erstelle ein neues Projekt mit dem Namen HelloJava. Erstelle eine neue Klasse HelloJava.
(a) Schreibe die main-Methode in die Klasse und teste, ob das Programm kompiliert.
1 public c l a s s HelloJava {
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 ) {
3
4
}
5 }
(b) Füge nun folgende Zeile innerhalb der Klammern der main-Methode ein. Wenn du alles richtig
gemacht hast, sollte das Programm kompilieren und in der Konsole eine 42 erscheinen.
1 System . out . p r i n t l n ( 4 2 ) ;
(c) Übungen:
• Lösche 42 aus System.out.println(42);.
Erwartet: Keine sichtbare Ausgabe.
• Ersetze 42 durch 42, 42.
Erwartet: Fehler beim Kompilieren, println erwartet genau ein Argument.
• Ersetze 42 durch 42.0.
Erwartet: Ausgabe im Format eines double, 42.0.
• Ersetze 42 durch (andere) beliebige Zahlen.
• Ersetze 42 durch "42".
Erwartet: gleiche Ausgabe wie bei der einzelnen Zahl, Eclipse färbt "42" im Code aber
anders ein.
• Ersetze "42" durch "Hello Java".
Erwartet: Hello Java steht in der Konsole.
• Ersetze "Hello Java" durch Hello Java.
Erwartet: Fehler beim Kompilieren, Text wird als Code behandelt.
• Ersetze Hello Java durch "Hello \n Java".
Erwartet: die Wörter werden in Zeilen aufgeteilt.
• Teste auch die Wirkung von \t, \\, \" zwischen den Anführungszeichen.
• Kopiere die komplette Zeile mit dem println-Befehl und füge sie direkt unter dieser Zeile
ein weiteres mal ein
Erwartet: Ausgabe verdoppelt
• Was passiert, wenn man in der oberen Zeile das ln von println löscht?
• Zeichne einen Smiley in die Konsole
• Versuche nun folgenden Text auf der Konsole auszugeben:
Java Vorkurs 2016
Navi: "Look, Link! You’re big now!!! You’ve grown up!"
Java Vorkurs (WS 2016) – Übungsblatt 1
Seite 2 von 5
Aufgabe 2 Kommentare
In Java gibt es mehrere Möglichkeiten den eigentlichen Code mit Hinweisen für sich selbst und andere
Programmierer zu versehen:
1. Einzeilige Implementierungskommentare:
1 // A l l e s h i n t e r den z w e i Schr ä g s t r i c h e n i s t Kommentar ( b i s zum Z e i l e n e n d e )
2. Mehrzeilige Implementierungskommentare:
1 /∗
2 ∗ A l l e s von ”/∗” b i s ”∗ /” i s t e i n Kommentar
3 ∗/
3. Javadoc Kommentare:
1 /∗∗
2 ∗ Javadoc Kommentare b e g i n n e n mit ”/∗∗” ( z w e i S t e r n e n ! )
3 ∗ I n einem Javadoc Kommentar kann man auch s p e z i e l l e Tags verwenden :
4 ∗
5 ∗ @author Max Mustermann
6 ∗
7 ∗ Javadoc Kommentare s i n d s p e z i e l l , da e s v i e l e Werkzeuge g i b t , d i e s i e
8 ∗ a u t o m a t i s i e r t a u s l e s e n kö nnen und d a r a u s gut l e s b a r e Dokumente e r s t e l l e n kö
nnen .
9 ∗
10 ∗ Javadoc kann nur d i r e k t ü b e r K l a s s e n und Methoden s t e h e n .
11 ∗
12 ∗ E c l i p s e z e i g t euch beim A u f r u f e i n e r Methode den e n t s p r e c h e n d e n Javadoc
Kommmentar an ,
13 ∗ wenn i h r den M a u s z e i g e r ü b e r dem M e t h o d e n a u f r u f p o s i t i o n i e r t .
14 ∗/
Eure Klasse HelloJava aus Aufgabe 1 sollte etwa so aussehen (ohne die Kommentare):
1 // H i e r s o l l t e e i n Javadoc h i n
2 public c l a s s HelloJava {
3
4
// H i e r s o l l t e e i n Javadoc h i n
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 ) {
6
7
// H i e r wü r d e e i n Implementierungskommentar p a s s e n
8
System . out . p r i n t l n ( 4 2 ) ;
9
}
10 }
(a) Füge an den oben kommentierten Stellen in eurer Klasse den passenden Kommentartyp ein.
Benutze dabei nicht copy & paste, damit du nicht die Eclipse Autovervollständigung umgehst.
Kommentiere ab jetzt am besten alles, bei dem du dir unsicher bist, damit du
dir daheim nochmal deine Kommentare durchlesen kannst!
(b) Übungen:
•
•
•
•
•
Ändere den Autor der Klasse auf euren Namen
Füge einen @version-Tag unter dem @author-Tag hinzu
Füge zu dem JavaDoc Kommentar der main(String[] args)-Methode eine Beschreibung
Was für @-Tags kann man noch in Javadoc benutzen?
Wie kann man in Eclipse das Javadoc zu einer Webseite kompilieren lassen?
Java Vorkurs (WS 2016) – Übungsblatt 1
Seite 3 von 5
Aufgabe 3 Variablen und Datentypen
Verwende die in Aufgabe 2 kommentierte Klasse HelloJava.
(a) Erstelle innerhalb der main-Methode (aber oberhalb der println() Zeile) eine int Variable mit
dem Namen zahl. Weise dann der Variable zahl den Wert 42 zu:
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 ) {
2
int zahl ;
3
zahl = 42;
4
5
System . out . p r i n t l n ( 4 2 ) ;
6 }
(b) Die Variable wird bis jetzt von Eclipse immer noch gelb markiert. Wir haben der Variable zwar
einen Wert gegeben, benutzen diese aber noch nicht. Ersetze deshalb die 42 in println(42)
durch zahl und führe das Programm aus.
(c) Füge nun eine weitere Zuweisung (nicht 42) und eine weitere println()-Anweisung unter der
ersten ein. Was passiert?
(d) Übungen:
• Ersetze die erste Zuweisung (42) durch eine negative Zahl.
Erwartet: Negative, dann positive Zahl in Konsole.
• Ersetze die erste Zuweisung durch eine sehr große Zahl (> 2147483647).
Erwartet: Fehler beim Kompilieren, zahl ist zu groß für int
• Ersetze die erste Zuweisung durch ”42.0”.
Erwartet: Fehler beim Kompilieren, da falscher Datentyp
• Ersetze bei der Deklaration int durch double (oder float).
Erwartet: Ausgabe von 42.0
• Ersetze bei der Deklaration double durch boolean und beide Zuweisungen zu true oder
false.
Erwartet: true und false ausgeben
• Ersetze bei der Deklaration boolean durch String und beide Zuweisungen zu "hier irgendein
Text".
Erwartet: hier irgendein Text steht zweimal in der Konsole
• Finde den Unterschied zwischen int und long, indem du verschiedene Zahlen ausprobierst.
• Finde den Unterschied zwischen float und double, indem du verschiedene Zahlen ausprobierst.
• Was ist ein char? Benutze char im richtigen Kontext und gebe es auf der Konsole aus.
Aufgabe 4 Rechenoperatoren für Zahlen
In dieser Aufgabe wollen wir nun mit Variablen rechnen. Du wirst die Anwendung der Grundrechenarten in Java lernen und das Rechnen mit Variablen unterschiedlichen Typs.
(a) Erstelle eine neue Klasse RechnerKlasse und füge eine leere main-Methode hinzu. Definiere
innerhalb der Methode zwei Variablen vom Typ int mit den Namen zahl1 und ergebnis und
gebe die Variable ergebnis in der Konsole aus.
Achtung: Eclipse sollte nun einen Fehler anzeigen, der besagt, dass die Variable ergebnis
nicht initialisiert wurde. Setze daher die Variable gleich 0. Setze auch die Variable zahl1 auf
eine ganze Zahl deiner Wahl.
(b) Nun ist alles soweit, damit wir mit dem Rechnen beginnen können. Im ersten Schritt wollen wir
zu der Variable zahl1 5 addieren und das Ergebnis in der Variable ergebnis speichern. Dies
funktioniert mit folgender Code-Zeile:
1 ergebnis = zahl1 + 5;
Wenn du nun das Programm startest, sollte auf der Konsole die um 5 erhöhte Zahl stehen.
(c) In gleicher Weise kannst du auch die anderen Grundrechen-Operatoren anwenden. In Java werden sie durch + (plus), - (minus), * (mal) und / (geteilt) dargestellt. Bei der Division ist noch
etwas besonderes zu beachten, wie wir gleich noch sehen werden.
Als Test kannst du mal das + durch ein - oder * ersetzen und schauen, ob beim Ausführen das
erwartete Ergebnis auf der Konsole angezeigt wird.
Java Vorkurs (WS 2016) – Übungsblatt 1
Seite 4 von 5
(d) Setze nun die Variabele zahl1 auf 19 und ersetze den Operator durch / und lasse das Programm
laufen. Wir erwarten die Ausgabe 3.8, da 19/5 = 3.8. Vergleiche das erwartete Ergebnis mit der
Ausgabe auf der Konsole. Was fällt dir auf und woran könnte dies liegen?
(e) Verändere nun die Methode wie folgt und lasse anschließend das Programm erneut kompilieren.
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 ) {
2
3
int zahl1 = 19;
4
double e r g e b n i s = 0 ;
5
6
ergebnis = zahl1 / 5 . 0 ;
7
8
System . out . p r i n t l n ( e r g e b n i s ) ;
9 }
Wie hat sich das Ergebnis nun verändert? Wie könnte dies mit den Änderungen im Code
zusammenhängen?
(f) Wir wollen nun mit einer zweiten Variable rechnen. Füge dazu im oberen Teil der main-Methode
bei den anderen Variablen eine weitere Variable zahl2 von Typ int ein und initialisiere sie auf
0. Weise nun der Variable ergebnis den Wert zahl1 / zahl2 zu. Führe das Programm erneut
aus. Was stellst du fest?
(g) Verändere nun selbst einmal die Werte der Zahlen und den Operator, um einige andere Berechnungen durchzuführen.
(h) Deklariere nun eine weitere Variable zahl3 vom Typ int und initialisiere sie auf den Wert 4.
Setze die Variablen zahl1 und zahl2 auf die Werte 19 und 2. Speichere nun in der Variable
ergebnis das Ergebnis der Formel zahl1 + zahl2 ∗ zahl3. Beachtet Java Punkt-Vor-Strich Rechnung? Prüfe dies auch durch Ausprobieren mit anderen Zahlen und einer anderen Formel. Teste
auch, ob Klammern dieselbe Funktion wie in der Mathematik haben.
Java Vorkurs (WS 2016) – Übungsblatt 1
Seite 5 von 5
Aufgabe 5 Casten
Manchmal ist es nötig, Typen zu konvertieren. In Java nennt man dies Casten.
Typ
boolean
char
byte
short
int
long
float
double
Länge
1 Bit
16 Bit
8 Bits
16 Bits
32 Bits
64 Bits
32 Bits
64 Bits
Bereich
true / false
Einzelnes Zeichen (65.536 verschiedene Zeichen)
-128 bis 127
-32.768 bis 32.767
-2.147.483.648 bis 2.147.483.647
−263 bis 263 − 1, ab Java 8 auch 0 bis 264 − 1
+/-1,4E-45 bis +/-3,4E+38
+/-4,9E-324 bis +/-1,7E+308
(a) Erstelle eine neue Klasse mit dem Namen Casten. Und lege die main-Methode an.
Erstelle innerhalb der main-Methode eine Variable vom Typ int mit dem Namen zahl1 und
initialisiere den Wert auf 42. Des Weiteren wird eine Variable vom Typ double mit dem Namen
zahl2 benötigt. Diese Variable soll mit dem Wert der Variable zahl1 initialisiert werden. Füge
am besten noch zwei println Befehle hinzu, um die Werte der Zahlen auszugeben.
Starte das Programm, welchen Wert hat die Variable zahl2? Was ist der Unterschied zwischen
zahl1 und zahl2?
(b) Drehe jetzt das Ganze um: Weise nach den println Befehlen der Variable zahl2 den Wert 42.0
zu und danach der Variable zahl1 den Wert zahl2. Schreibe danach zwei weitere printlnBefehle für die beiden Variablen.
Achtung: Es wird hier eine Fehlermeldung auftreten. Woran liegt das? Was ist das Problem?
(c) Um aus einer Fließkommazahl eine Ganzzahl zu machen, braucht Java die Bestätigung, dass die
Ziffern hinter dem Komma wegfallen dürfen, um einen ungewollten Datenverlust zu vermeiden.
Dies geschieht indem man vor den Wert vom Typ float den benötigten Typ, in diesem Fall ein
int, in Klammern setzt. Diesen Vorgang bezeichnet man als casten.
Behebe nun diesen Fehler aus Aufgabenteil (b).
(d) Übungen:
• Probiere, anstatt double, auch Datentypen wie z.B. long aus.
Erwartet: Fehler beim Kompilieren, da long kann nicht automatisch in int gecastet werden,
da long längere Zahlen speichern kann als int.
• Passe den vorherigen Code so an, dass er kompiliert.
• double und float stehen in einer ähnlichen Beziehung wie int und long. In welche Richtung muss man casten, in welche Richtung geht das ohne cast.
• Kann man auch von boolean nach int casten?
• Was passiert, wenn man den String "Hello world" nach int castet?
Erwartet: Fehlermeldung (Exception)
• Stelle sicher, dass die Variable zahl1 vom Typ int ist. Weise zahl1 diesmal große Zahlen
zu. Ab wann wirft Eclipse eine Exception (siehe auch Aufgabe 3 in den Teilaufgaben)?
Woran kann dies liegen?
Herunterladen