Sie sind auf Seite 1von 6

Programmierung I

Praktikum 5
Datentypen, Zuweisungen und Typumwandlung

Allgemeine Hinweise
Lösungen der Aufgaben dieses Aufgabenblatts müssen über die Lernplattform abgegeben
werden, um Punkte für die Klausurzulassung zu erhalten.

Da die Lösungen automatisch überprüft werden, müssen die Spezifikationen und die
Ausgaben der Lösungen genauso eingehalten werden wie sie auf diesem Aufgabenblatt
definiert sind. Hierfür lassen sich die auf der Lernplattform verfügbaren Programmier-
Templates (Projekte) als Vorlage nutzen. Für die Abgabe laden Sie nur die Dateien hoch, die
die einzelnen Klassen enthalten, bitte nicht das gesamte Programmier-Template hochladen.

Es werden nur die Lösungen der Aufgaben bewertet, zu denen eine Punktzahl angegeben ist.
Für Aufgaben oder Aufgabenteile, die als Zusatzaufgaben gekennzeichnet sind, werden keine
Punkte vergeben. Die Bearbeitung ist dennoch sinnvoll für eine Vertiefung der Inhalt. Falls
Sie diese Aufgaben abgeben möchten, nutzen Sie hierfür separate Klassen und Dateien.

Details zu der Klausurzulassung, dem Ablauf des Praktikums und den Abgaben können dem
Leitfaden entnommen werden, der sich auf der Lernplattform befindet. Dort befinden sich
auch der Stundensonderplan und der Semesterterminplan.

Aufgabe 1 (Zusatzaufgabe) – Wertebereiche primitiver


Datentypen (0 Punkte)
In Java sind acht primitive Datentypen definiert. Variablen des Datentyps boolean können
die Wahrheitswerte false oder true aufnehmen. In Variablen des Datentypes char
lassen sich einzelne Zeichen speichern, genauer: 16-Bit-Unicode-Zeichen (0x0000 … 0xFFFF).

Mit den restlichen sechs Datentypen lassen sich Variablen definieren, die Zahlenwerte
aufnehmen können. In dieser Aufgabe sollen diese sechs Datentypen betrachtet werden.

a) Öffnen Sie mit Visual Studio Code (VSC) mit Java Extensions das Projekt Datentypen,
das sich in dem Zip-Archiv „Datentypen.zip“ auf der Lernplattform befindet. Öffnen Sie
die Java-Datei PrimitiveDatentypen.java in dem Java-Paket
aufgaben/_01primitive_datentypen. Dieses Paket muss ggf. erst
aufgeklappt werden.

b) Recherchieren Sie, welche sechs primitive Datentypen in Java definiert sind, mit deren
Hilfe sich Variablen für die Aufnahme von Zahlen definieren lassen.

Hinweis: Die Java-Datentypen String oder StringBuilder sind keine primitiven


Datentypen. Jede (selbst definierte) Klasse ist ebenfalls ein (komplexer) Datentyp.

Prof. Dr. Lehn, Prof. Dr. Igel, Prof. Dr. Menküc, Prof. Dr. Wöhrle
Programmierung I

Finden sie weiterhin heraus, welche Wertebereiche (von dem kleinsten Wert bis zu dem
größten Wert) sich jeweils darstellen lassen. Ermitteln Sie weiterhin, welche Anzahl von
Bytes eine Variable des jeweiligen Datentyps im Speicher belegt.

Geben Sie das Ergebnis wie folgt auf der Kommandozeile aus.

Datentyp: ??? Datentyp: ???


von: ??? von: ???
bis: ??? bis: ???
Speicherplatz (in Byte): ??? Speicherplatz (in Byte): ???

Datentyp: ??? Datentyp: ???


von: ??? von: ???
bis: ??? bis: ???
Speicherplatz (in Byte): ??? Speicherplatz (in Byte): ???

Datentyp: ??? Datentyp: ???


von: ??? von: ???
bis: ??? bis: ???
Speicherplatz (in Byte): ??? Speicherplatz (in Byte): ???

Wenn Sie die Ergebnisse manuell recherchieren, achten Sie genau auf die Zahlenwerte.
Die Ergebnisse lassen sich auch automatisch ermitteln.

Aufgabe 2 – Geometrische Berechnungen (2 Punkte)


In dieser Aufgabe sollen der Umfang und der Flächeninhalt für jeweils ein Rechteck und
einen Kreis bestimmt werden.

a) Öffnen Sie mit Visual Studio Code (VSC) mit Java Extensions das Projekt Datentypen,
das sich in dem Zip-Archiv „Datentypen.zip“ auf der Lernplattform befindet. Öffnen Sie
die Java-Datei Geometrie.java in dem Java-Paket aufgaben/_02geometrie.
Dieses Paket muss ggf. erst aufgeklappt werden.

b) Definieren Sie in der main-Methode die float-Variablen seiteA und seiteB.


Mithilfe der Scanner-Klasse sollen nacheinander Werte von der Kommandozeile
eingelesen und in diesen Eingabevariablen gespeichert werden.

Definieren Sie weiterhin die float-Variablen rechteckUmfang und


rechteckFlaeche. Entwicklen Sie Ausdrücke für die Berechnung des Umfangs und
des Flächeninhalts eines Rechtecks auf Basis der o.g. Eingabevariablen. Die Ergebnisse
sollen den entsprechenden Ausgabevariablen zugewiesen werden.

Im Anschluss sollen die Inhalte der Ausgabevariablen auf der Kommandozeile


ausgegeben werden.

Ein Beispielergebnis soll folgendermaßen aussehen:

seiteA: 3
seiteB: 4

Prof. Dr. Lehn, Prof. Dr. Igel, Prof. Dr. Menküc, Prof. Dr. Wöhrle
Programmierung I

rechteckUmfang = 14.0
rechteckFlaeche = 12.0

c) Definieren Sie die float-Variable radius. Mithilfe der Scanner-Klasse soll ein Wert
von der Kommandozeile eingelesen und in dieser Eingabevariable gespeichert werden.
Definieren Sie weiterhin die float-Variable pi und weisen Sie dieser Variablen den
konstanten Wert 3.14 zu.

Definieren Sie weiterhin die float-Variablen kreisUmfang und kreisFlaeche.


Entwickeln Sie Ausdrücke für die Berechnung des Umfangs und des Flächeninhalts eines
Kreises auf Basis der o.g. Eingabevariable. Die Ergebnisse sollen den entsprechenden
Ausgabevariablen zugewiesen werden.

Im Anschluss sollen die Inhalte der Ausgabevariablen auf der Kommandozeile


ausgegeben werden. Ein Beispielergebnis – einschließlich der Ausgabe für die Rechteck-
Berechnung – soll folgendermaßen aussehen:

seiteA: 3
seiteB: 4
rechteckUmfang = 14.0
rechteckFlaeche = 12.0
radius: 3
kreisUmfang = 18.84
kreisFlaeche = 28.26

d) Zusatzaufgabe (0 Punkte): Erweitern Sie Ihr Programm zur Berechnung des Umfangs und
des Flächeninhalts eines Dreiecks.

Aufgabe 3 – Zinseszins-Berechnung (6 Punkte)


In dieser Aufgabe soll der Gewinn einer Geldanlage mit einem bestimmten Zinssatz nach
einer vorgegebenen Anzahl von Jahren berechnet werden.

a) Öffnen Sie mit Visual Studio Code (VSC) mit Java Extensions das Projekt Datentypen,
das sich in dem Zip-Archiv „Datentypen.zip“ auf der Lernplattform befindet. Öffnen Sie
die Java-Datei Verzinsung.java in dem Java-Paket
aufgaben/_03verzinsung. Dieses Paket muss ggf. erst aufgeklappt werden.

b) Definieren Sie in der main-Methode die double-Variable startBetrag , die float-


Variable zinssatz und die int-Variable anlageDauer. Mithilfe der Scanner-
Klasse sollen nacheinander Werte von der Kommandozeile eingelesen und in diesen
Eingabevariablen gespeichert werden.

Definieren Sie weiterhin die double-Variable gewinn.


Mithilfe des Startbetrags 𝑠𝑠, des Zinsfaktors 𝑟𝑟 und der Anlagedauer 𝑡𝑡 (in Jahren) lässt sich
der Gewinn durch die folgende Formel ermitteln.

𝑔𝑔 = 𝑠𝑠 (1 + 𝑟𝑟)𝑡𝑡 − 𝑠𝑠

Prof. Dr. Lehn, Prof. Dr. Igel, Prof. Dr. Menküc, Prof. Dr. Wöhrle
Programmierung I

Setzen Sie diese Formel in Java-Quellcode um, mit dem der Gewinn ermittelt wird und
das Ergebnis der Ausgabevariable zugewiesen wird. Auch wenn die Berechnung durch
einen geschlossenen Ausdruck möglich ist, nutzen Sie bitte eine for-Schleife.

Im Anschluss an die Berechnung und Zuweisung soll der Inhalt der Ausgabevariable auf
der Kommandozeile ausgegeben werden.

Ein Beispielergebnis soll folgendermaßen aussehen:

startBetrag: 10
zinssatz: 0,01
anlageDauer: 5
gewinn = 0.51010000480135

Aufgabe 4 – Runden durch Typumwandlung (6 Punkte)


In dieser Aufgabe wird das Prinzip der Rundung von Zahlenwerten mithilfe der
Typumwandlung behandelt.

a) Öffnen Sie mit Visual Studio Code (VSC) mit Java Extensions das Projekt Datentypen,
das sich in dem Zip-Archiv „Datentypen.zip“ auf der Lernplattform befindet. Öffnen Sie
die Java-Datei Runden.java in dem Java-Paket aufgaben/_04runden. Dieses
Paket muss ggf. erst aufgeklappt werden.

b) Definieren Sie in der main-Methode die double-Variable messwert. Mithilfe der


Scanner-Klasse soll ein Wert von der Kommandozeile eingelesen und in dieser
Eingabevariable gespeichert werden.

Dieser Messwert soll auf die folgenden vier unterschiedlichen Weisen gerundet werden
und den angegebenen Ergebnisvariablen zugewiesen werden.
1. Abschneiden des Nachkommateils.  abgeschnittenNachDemKomma
2. Kaufmännisches Runden auf ganze Zahlen.  gerundetAufGanzeZahlen
3. Abschneiden bis auf zwei Nachkommastellen.
 abgeschnittenNach2Nachkommastellen
4. Kaufmännisches Runden auf zwei Nachkommastellen.
 gerundetAuf2Nachkommastellen

Kaufmännisches Runden (nicht negativer Zahlen) bedeutet Folgendes:


• Falls die die Ziffer der ersten wegfallenden Dezimalstelle 0, 1, 2, 3 oder 4 ist, dann
wird abgerundet.
• Falls die Ziffer der ersten wegfallenden Dezimalstelle eine 5, 6, 7, 8 oder 9 ist,
dann wird aufgerundet.

Setzen Sie diese vier Berechnungsvorschriften in Quellcode um und weisen Sie die
Ergebnisse den oben angegebenen Ergebnisvariablen zu. Negative Zahlen müssen nicht
berücksichtigt werden.

Prof. Dr. Lehn, Prof. Dr. Igel, Prof. Dr. Menküc, Prof. Dr. Wöhrle
Programmierung I

Hinweis: Um den Nachkommaanteil zu entfernen, lässt sich die explizite Typumwandlung


(type cast) verwenden.

Im Anschluss sollen die Ergebnisse auf der Kommandozeile ausgegeben werden.


Beispielergebnisse soll folgendermaßen aussehen:

messwert: 11,425
abgeschnittenNachDemKomma = 11.0
gerundetAufGanzeZahlen = 11.0
abgeschnittenNach2Nachkommastellen = 11.42
gerundetAuf2Nachkommastellen = 11.43

messwert: 22,512
abgeschnittenNachDemKomma = 22.0
gerundetAufGanzeZahlen = 23.0
abgeschnittenNach2Nachkommastellen = 22.51
gerundetAuf2Nachkommastellen = 22.51

c) Zusatzaufgabe (0 Punkte): Erweitern Sie das Programm, so dass auch negative Zahlen
korrekt gerundet werden.

Aufgabe 5 – Trigonometrische Berechnungen (6 Punkte)


In dieser Aufgabe wird das Prinzip der Berechnung mithilfe der in Java verfügbaren
Mathematik-Klassenbibliothek Math behandelt. Als Beispiel dienen Berechnungen für ein
rechtwinkliges Dreieck.

a) Öffnen Sie mit Visual Studio Code (VSC) mit Java Extensions das Projekt Datentypen,
das sich in dem Zip-Archiv „Datentypen.zip“ auf der Lernplattform befindet. Öffnen Sie
die Java-Datei Trigonometrie.java in dem Java-Paket
aufgaben/_05trigonometrie. Dieses Paket muss ggf. erst aufgeklappt werden.

b) Definieren Sie in der main-Methode die float-Variablen ankathete und


gegenkathete. Mithilfe der Scanner-Klasse sollen nacheinander Werte von der
Kommandozeile eingelesen und in diesen Eingabevariablen gespeichert werden. Für
diese Aufgabe ist es wichtig, dass der Datentyp float (und nicht double) verwendet
wird.

Mithilfe dieser Werte soll durch den Satz des Pythagoras die Länge der Hypotenuse
bestimmt und in der float-Ergebnisvariable hypotenuse abgelegt werden. Nutzen
Sie für die Berechnung der Quadratwurzel die statische Methode Math.sqrt() aus
der Java-Bibliothek java.lang.Math. Die folgende Quellcodezeile ermitteln
beispielsweise die Quadratwurzel des Werts in eingabe und legt das Ergebnis in
ausgabe ab.

ausgabe = Math.sqrt(eingabe);

Prof. Dr. Lehn, Prof. Dr. Igel, Prof. Dr. Menküc, Prof. Dr. Wöhrle
Programmierung I

Weiterhin soll mithilfe des Arkustanges der Winkel in Grad zwischen der Ankathete und
der Gegenkathete bestimmt werden und in der float-Ergebnisvariable
winkelAnkatheteUndHypotenuse abgelegt werden.

Die Formel für die Berechnung des Winkels lautet:

𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔ℎ𝑒𝑒𝑒𝑒𝑒𝑒
∝ = tan−1 � �
𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎ℎ𝑒𝑒𝑒𝑒𝑒𝑒

Die Berechnung des Arkustangens (tan−1 ) lässt sich mithilfe der statischen Methode
Math.atan() aus der Java-Bibliothek java.lang.Math durchführen. Für die
Umwandlung aus dem Bogenmaß in das Gradmaß steht in dieser Bibliothek die statische
Methode Math.toDegrees() zur Verfügung.

Hinweis: Da die Funktionen in Math für double-Werte implementiert sind, müssen


entsprechende Typumwandlungen (typ casts) durchgeführt werden.

Setzen Sie diese Berechnungsvorschriften in Quellcode um und weisen Sie die Ergebnisse
den oben angegebenen Ergebnisvariablen zu.

Im Anschluss sollen die Ergebnisse auf der Kommandozeile ausgegeben werden.


Beispielergebnisse soll folgendermaßen aussehen:

ankathete: 3
gegenkathete: 4
hypotenuse = 5.0
winkelAnkatheteUndHypotenuse = 53.130104

ankathete: 7,5
gegenkathete: 4
hypotenuse = 8.5
winkelAnkatheteUndHypotenuse = 28.072489

c) Zusatzaufgabe (0 Punkte): Erweitern Sie das Programm, so dass sich auch alle
trigonometrischen Berechnungen mit den Sinus- und Cosinus-Funktionen durchführen
lassen. Die Java-Bibliothek java.lang.Math hält entsprechende Funktionen bereit.

Prof. Dr. Lehn, Prof. Dr. Igel, Prof. Dr. Menküc, Prof. Dr. Wöhrle

Das könnte Ihnen auch gefallen