Ubungsblatt 1

Werbung
Übungsblatt 1
Java Vorkurs (WS 2015)
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 testen sie 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 }
(b)
Füge nun folgende Zeile innerhalb der Klammern der main-Methode ein. Wenn sie alles richtig
gemacht haben sollte das Programm kompilieren und in der Konsole eine 42 erscheinen.
1
(c)
System . out . p r i n t l n ( 4 2 ) ;
Ü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 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
Java Vorkurs (WS 2015) – Ü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 Implementationskommentar p a s s e n
8
System . out . p r i n t l n ( 4 2 ) ;
9
}
10 }
Fügt an den oben kommentierten Stellen in eurer Klasse den passenden Kommentartyp ein. Benutzt
dabei nicht copy & paste, damit ihr nicht die Eclipse Autovervollständigung umgeht.
Kommentiere ab jetzt am besten alles, bei dem du dir unsicher bist, damit du dir daheim nochmal
deine Kommentare durchlesen kannst!
(a)
Übungen:
• Ändert den Autor der Klasse auf euren Namen
• Fügt einen ”@version”Tag unter dem ”@author”Tag hinzu
• Füge eine Beschreibung, was die ”main(String[] args)Methode macht zu ihrem Javadoc
hinzu
• 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 2015) – Übungsblatt 1
Seite 3 von 5
Aufgabe 3 Variablen und Datentypen
Erstellen sie 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
2
3
4
5
6
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 ) {
int zahl ;
zahl = 42;
System . out . p r i n t l n ( 4 2 ) ;
}
(a)
Die Variable wird bis jetzt von Eclipse immer noch gelb markiert. Wir haben der Variable
zwar einen Wert gegeben, benutzen sie aber noch nicht. Ersetze deshalb die 42 in println(42)
durch zahl und führe das Programm aus.
(b)
Füge nun eine weitere Zuweisung (nicht 42) und eine weitere ’println’ Anweisung unter der
ersten ein.
(c)
Ü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 jetzt bei der Deklaration int durch double (oder float).
Erwartet: Ausgabe von 42.0
• ersetze jetzt bei der Deklaration double durch boolean und beide Zuweisungen zu true
oder false.
Erwartet: true und false ausgeben
• ersetze jetzt bei der Deklaration boolean durch String und beide Zuweisungen zu "hier
irgendein Text".
Erwartet: hier irgendein Text steht zwei mal 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
Java Vorkurs (WS 2015) – Übungsblatt 1
Seite 4 von 5
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 implementiere auch dort die main-Methode. Definiere innerhalb der Methode zwei Variablen vom Typ int mit den Namen zahl1 und ergebnis
und gebe die Variable ergebnis in der Konsole aus.
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.
(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 dae 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
2
3
4
5
6
7
8
9
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 ) {
int zahl1 = 19;
double e r g e b n i s = 0 ;
ergebnis = zahl1 / 5 . 0 ;
System . out . p r i n t l n ( e r g e b n i s ) ;
}
Wie hat sich das Ergebnis nun verändert? Wie könnte dies mit den Änderungen im Code
zusammen hä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.
Setzte 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 das auch durch ausprobieren mit anderen Zahlen und einer anderen Formel. Teste
auch ob Klammern die selbe Funktion wie in der Mathematik haben.
Java Vorkurs (WS 2015) – Übungsblatt 1
Seite 5 von 5
Aufgabe 5 Casten
Erstellen sie eine neue Klasse mit dem Namen Karsten. Und legen sie die main-Methode an.
Erstellen sie innerhalb der main-Methode eine Variable vom Typ int mit dem Namen zahl1 und
initialisiere den Wert auf 42. Desweiteren wird eine Variable vom Typ double mit dem Namen zahl2
benötigt. Diese Variable soll mit der Varibale zahl1 initialisiert werden. Füge am besten noch zwei
println Befehle hinzu, um die Werte der Zahlen auszugeben.
(a)
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.
(b)
Um aus einem Kommawert 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. Behebt nun diesen Fehler.
1 zahl1 = ( int ) zahl2 ;
(c)
Übungen:
• weise zahl2 verschiedene Zahlen zu.
Erwartet: Die Ausgabe sollte bei allen drei Zahlen für zahl1 die gleiche sein (42)
• probiere auch Datentypen wie z.B. long.
Erwartet: Fehler beim Kompilieren, 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.
Erwartet: Ausgabe 42 und 42.
• 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?
Erwartet: nein
• Was passiert, wenn man den String ”Hello world”nach int castet?
Erwartet: Exception
• Gehe wieder auf den zuletzt angegebenen Code zurück, weise zahl1 aber diesmal große
Zahlen zu. Ab wann wirft Eclipse eine Exception (siehe auch Aufgabe 3 in den Teilaufgaben)
Herunterladen