• Keine Ergebnisse gefunden

Übungen zu Einführung in die Informatik:

N/A
N/A
Protected

Academic year: 2021

Aktie "Übungen zu Einführung in die Informatik:"

Copied!
6
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Ludwig-Maximilians-Universität München WS 2017/18

Institut für Informatik Übungsblatt 4

Prof. Dr. R. Hennicker, P. Wendler

Übungen zu Einführung in die Informatik:

Programmierung und Software-Entwicklung: Lösungsvorschlag

Aufgabe 4-1 Gültigkeitsbereiche und Speicher Präsenz Gegeben sei folgender Java-Codeblock:

1 {

2 i n t m = 13 , n = 2 , z = 0;

3 m = m + n ;

4 {

5 double x ;

6 x = m / n ;

7 i n t i = (i n t) x ;

8 z = i - n ;

9 }

10 n ++;

11 i n t h = n + 1;

12 }

a) Bestimmen Sie den Gültigkeitsbereich vonm,n,z,x,i undh.

Lösung:

{

int m = 13, n = 2, z = 0;

m = m + n;

{

double x;

x = m / n;

int i = (int) x;

z = i - n;





Gültigkeitsbereich von x und i }

n++;

int h = n + 1;

}









































Gültigkeitsbereich von m, n, z und h

b) Zeigen Sie die Veränderung des Speichers während der Ausführung des gesamten Codeblocks.

Lösung:

i 7 i 7

x x 7.0 x 7.0 x 7.0 h 4

z 0 z 0 z 0 z 0 z 0 z 5 z 5 z 5

n 2 n 2 n 2 n 2 n 2 n 2 n 3 n 3

m 13 m 15 m 15 m 15 m 15 m 15 m 15 m 15

(2)

Aufgabe 4-2 Gültigkeitsbereiche und Speicher Hausaufgabe Gegeben sei folgender Java-Codeblock:

1 {

2 double a = 2.0 , b = 3 . 4 ;

3 {

4 a = a + b ;

5 i n t c = (i n t) a ;

6 a = c ;

7 }

8 a - -;

9 double d = a + b ;

10 boolean t e s t = a != d ;

11 }

a) Bestimmen Sie den Gültigkeitsbereich vona,b,c,d und test.

Lösung:

{

double a = 2.0, b = 3.4;

{

a = a + b;

int c = (int) a;

a = c;

Gültigkeitsbereich von c

} a--;

double d = a + b;

boolean test = a != d;

}





































Gültigkeitsbereich von a, b, d und test

b) Zeigen Sie die Veränderung des Speichers während der Ausführung des gesamten Codeblocks.

Lösung:

test true

c 5 c 5 d 7.4 d 7.4

b 3.4 b 3.4 b 3.4 b 3.4 b 3.4 b 3.4 b 3.4

a 2.0 a 5.4 a 5.4 a 5.0 a 4.0 a 4.0 a 4.0

Aufgabe 4-3 Einfache Anweisungen in Java Präsenz

Ein KFZ-Besitzer möchte ein Java-Programm erstellen, das ihm vor jeder Fahrt den entstehenden Benzin- und Ölverbrauch berechnet. Der Benzinverbrauch des Fahrzeugs beträgt 6.7 Liter pro 100 km, der Ölverbrauch beträgt0.6Liter pro 1000 km. Schreiben Sie in einer KlasseVerbrauch ein Java-Programm, das für eine gegebene Fahrtstrecke den entstehenden Benzin- und Ölver- brauch berechnet und ausgibt. Testen Sie Ihr Programm mit den Fahrtstrecken 0.1 km, 3 km und 100.13km. Bestimmen Sie zunächst, welche lokalen Variablen Sie benötigen (mit Typ)!

Mögliche Lösung:Wir benötigen folgende lokalen Variablen:

• eine Variable benzinverbrauchPro100kmvom Typ double

• eine Variable oelverbrauchPro1000kmvom Typdouble

(3)

• eine Variable fahrtstreckevom Typ double

• eine Variable heutigerBenzinverbrauch vom Typ double, in der wir mit Hilfe der Va- riablenbenzinverbrauchPro1kmundfahrtstrecke den Benzinverbrauch für diese Fahrt- strecke berechnen

• eine Variable heutigerOelverbrauch vom Typ double, in der wir mit Hilfe der Varia- blenoelverbrauchPro1km undfahrtstrecke den Benzinverbrauch für diese Fahrtstrecke berechnen

1 p u b l i c c l a s s V e r b r a u c h {

2 p u b l i c s t a t i c void m a i n ( S t r i n g [] a r g s ) {

3 double b e n z i n v e r b r a u c h P r o 1 0 0 k m = 6 . 7 ;

4 double o e l v e r b r a u c h P r o 1 0 0 0 k m = 0 . 6 ;

5

6 // B e r e c h n u n g des h e u t i g e n V e r b r a u c h

7 double f a h r t s t r e c k e = 1 0 0 . 1 3 ;

8 double h e u t i g e r B e n z i n v e r b r a u c h =

9 f a h r t s t r e c k e * b e n z i n v e r b r a u c h P r o 1 0 0 k m / 1 0 0 ;

10 double h e u t i g e r O e l v e r b r a u c h =

11 f a h r t s t r e c k e * o e l v e r b r a u c h P r o 1 0 0 0 k m / 1 0 0 0 ;

12

13 S y s t e m . out . p r i n t l n ( " Der h e u t i g e B e n z i n v e r b r a u c h ist "

14 + h e u t i g e r B e n z i n v e r b r a u c h );

15 S y s t e m . out . p r i n t l n ( " Der h e u t i g e O e l v e r b r a u c h ist "

16 + h e u t i g e r O e l v e r b r a u c h );

17 }

18 }

Aufgabe 4-4 Einfache Anweisungen in Java Hausaufgabe Ein Pizza-Service berechnet den Preis einer Pizza nach folgendem Schema: Der Grundpreis einer Pizza ist5.50Euro und jeder Belag, den ein Kunde auswählt, kostet weitere0.75Euro. Schreiben Sie in einer KlassePizzaServiceein Javaprogramm, das für eine gegebene Anzahl an Belagsorten den Gesamtpreis der Pizza berechnet und ausgibt. Testen Sie Ihr Programm mit 1, 5 und 23 Belagsorten. Bestimmen Sie zunächst, welche lokalen Variablen Sie benötigen (mit Typ)!

Mögliche Lösung:Wir benötigen folgende lokalen Variablen:

• eine Variable grundpreisvom Typ double

• eine Variable belagpreisvom Typ double

• eine Variable anzahlBelagsortenvom Typint

• eine Variable gesamtpreis vom Typ double, in der wir mit Hilfe der obigen Variablen grundpreis, belagpreis und anzahlBelagsorten den Gesamtpreis der entsprechenden Pizza berechnen

1 p u b l i c c l a s s P i z z a S e r v i c e {

2 p u b l i c s t a t i c void m a i n ( S t r i n g [] a r g s ) {

3 double g r u n d p r e i s = 5 . 5 ;

4 double b e l a g p r e i s = 0 . 7 5 ;

5

6 // B e r e c h n u n g des G e s a m t p r e i s e s

7 i n t a n z a h l B e l a g s o r t e n = 23;

8 double g e s a m t p r e i s = g r u n d p r e i s + a n z a h l B e l a g s o r t e n * b e l a g p r e i s ;

9

(4)

10 S y s t e m . out . p r i n t l n ( " Die P i z z a k o s t e t " + g e s a m t p r e i s + " E u r o . " );

11 }

12 }

Aufgabe 4-5 Bedingungen in Java Präsenz

Schreiben Sie in einer KlasseIntSortierungein Javaprogramm, in dem zunächst drei Variablen x, y und z vom Typ int deklariert werden. Das Javaprogramm soll die Werte in den Variablen aufsteigend sortieren und auf dem Bildschirm ausgeben. Testen Sie Ihr Programm für die Werte x = 5,y = 3 undz = 1.

Lösungsidee:

Wir definieren drei Variablen x,y undz und initialisieren sie hier beispielsweise mitx = 5,y = 3 undz = 1.

• Zunächst vergleichen wirx und y. Falls x > ygilt, vertauschen wir x und y (sonst nicht).

(Hier: Da5 > 3 gilt, vertauschen wir die Werte und erhalten x = 3und y = 5.)

• Anschließend vergleichen wir y und z. Falls y > z gilt, vertauschen wir y und z (sonst nicht). (Hier: Da5 > 1 gilt, vertauschen wir die Werte und erhalteny = 1 undz = 5.)

• Zuletzt müssen wir nochmalxundyvergleichen. Fallsx > ygilt, vertauschen wir nochmals x undy(sonst nicht). (Hier: Da 3 > 1gilt, vertauschen wir die Werte und erhaltenx = 1 undy = 3.)

Diesen Algorithmus setzt man folgendermaßen in Java um:

1 p u b l i c c l a s s I n t S o r t i e r u n g {

2 p u b l i c s t a t i c void m a i n ( S t r i n g [] a r g s ) {

3 i n t x = 5;

4 i n t y = 3;

5 i n t z = 1;

6

7 i f ( x > y ) {

8 i n t tmp = x ;

9 x = y ;

10 y = tmp ;

11 }

12 i f ( y > z ) {

13 i n t tmp = y ;

14 y = z ;

15 z = tmp ;

16 }

17 i f ( x > y ) {

18 i n t tmp = x ;

19 x = y ;

20 y = tmp ;

21 }

22

23 S y s t e m . out . p r i n t l n ( " Die r i c h t i g e R e i h e n f o l g e ist " +

24 x + " , " + y + " , " + z );

25 }

26 }

(5)

Aufgabe 4-6 Bedingungen in Java Hausaufgabe In den USA wird für das Jahr 2016 auf Basis folgender Tabelle die Einkommensteuer berechnet;

in der Tabelle sind die Bruttogehälter (d.h. vor Steuerabzug) angegeben.

Steuersatz Ledige Verheiratete

10% $0 - $9 275 $0 - $18 550

15% $9 276 - $37 650 $18 551 - $75 300 25% $37 651 - $91 150 $75 301 - $151 900 28% $91 151 - $190 150 $151 901 - $231 450 33% $190 151 - $413 350 $231 451 - $413 350 35% $413 351 - $415 050 $413 351 - $466 950

39.6% ab $415 051 ab 466 951

Schreiben Sie in einer Klasse SteuernUSA ein Javaprogramm, das das Netto-Gehalt (d.h. nach Steuerabzug) in den USA berechnet und ausgibt. Bestimmen Sie zunächst, welche lokalen Varia- blen Sie benötigen (mit Typ)! Ob eine Person verheiratet ist oder nicht, kann mit einer Variable vom Typ boolean ausgedrückt werden. Testen Sie Ihr Programm für eine verheiratete Person mit einem Brutto-Gehalt von $123 456.78.

Mögliche Lösung:Wir benötigen vier lokale Variablen:

• eine Variable gehaltBruttovom Typ double

• eine Variable verheiratetvom Typ boolean

• eine Variable steuernvom Typ double, in der wir mit Hilfe der VariablengehaltBrutto undverheiratet die zu zahlenden Steuern berechnen

• eine Variable gehaltNetto vom Typ double, in der wir mit Hilfe der Variablen steuern undgehaltBrutto das Netto-Gehalt nach Abzug der Steuern berechnen

1 p u b l i c c l a s s S t e u e r n U S A {

2 p u b l i c s t a t i c void m a i n ( S t r i n g [] a r g s ) {

3 double g e h a l t B r u t t o = 1 2 3 4 5 6 . 7 8 ;

4 boolean v e r h e i r a t e t = true;

5

6 double s t e u e r n ;

7 i f ( v e r h e i r a t e t ) {

8 i f ( g e h a l t B r u t t o <= 1 8 5 5 0 ) {

9 s t e u e r n = 0.1 * g e h a l t B r u t t o ;

10 }

11 e l s e i f ( g e h a l t B r u t t o <= 7 5 3 0 0 ) {

12 s t e u e r n = 0 . 1 5 * g e h a l t B r u t t o ;

13 }

14 e l s e i f ( g e h a l t B r u t t o <= 1 5 1 9 0 0 ) {

15 s t e u e r n = 0 . 2 5 * g e h a l t B r u t t o ;

16 }

17 e l s e i f ( g e h a l t B r u t t o <= 2 3 1 4 5 0 ) {

18 s t e u e r n = 0 . 2 8 * g e h a l t B r u t t o ;

19 }

20 e l s e i f ( g e h a l t B r u t t o <= 4 1 3 3 5 0 ) {

21 s t e u e r n = 0 . 3 3 * g e h a l t B r u t t o ;

22 }

23 e l s e i f ( g e h a l t B r u t t o <= 4 6 6 9 5 0 ) {

24 s t e u e r n = 0 . 3 5 * g e h a l t B r u t t o ;

25 }

26 e l s e {

27 s t e u e r n = 0 . 3 9 6 * g e h a l t B r u t t o ;

28 }

(6)

29 }

30 e l s e {

31 i f ( g e h a l t B r u t t o <= 9 2 7 5 ) {

32 s t e u e r n = 0.1 * g e h a l t B r u t t o ;

33 }

34 e l s e i f ( g e h a l t B r u t t o <= 3 7 6 5 0 ) {

35 s t e u e r n = 0 . 1 5 * g e h a l t B r u t t o ;

36 }

37 e l s e i f ( g e h a l t B r u t t o <= 9 1 1 5 0 ) {

38 s t e u e r n = 0 . 2 5 * g e h a l t B r u t t o ;

39 }

40 e l s e i f ( g e h a l t B r u t t o <= 1 9 0 1 5 0 ) {

41 s t e u e r n = 0 . 2 8 * g e h a l t B r u t t o ;

42 }

43 e l s e i f ( g e h a l t B r u t t o <= 4 1 3 3 5 0 ) {

44 s t e u e r n = 0 . 3 3 * g e h a l t B r u t t o ;

45 }

46 e l s e i f ( g e h a l t B r u t t o <= 4 1 5 0 5 0 ) {

47 s t e u e r n = 0 . 3 5 * g e h a l t B r u t t o ;

48 }

49 e l s e {

50 s t e u e r n = 0 . 3 6 9 * g e h a l t B r u t t o ;

51 }

52 }

53

54 double g e h a l t N e t t o = g e h a l t B r u t t o - s t e u e r n ;

55

56 S y s t e m . out . p r i n t l n ( " Ihr J a h r e s g e h a l t n a c h S t e u e r n ist "

57 + g e h a l t N e t t o );

58 }

59 }

Besprechung der Präsenzaufgaben in den Übungen ab 17.11.2017. Abgabe der Hausaufgaben bis Mittwoch, 29.11.2017, 14:00 Uhr über UniworX (siehe Folien der ersten Zentralübung).

• Erstellen Sie zu jeder Aufgabe eine Klasse, die den Namen trägt, der in der Aufgabe gefor- dert ist.

• Der Java-Code in ihrer Abgabe muss als separate .java-Datei abgegeben werden. Öffnen Sie dazu im Explorer den Ordner, den Sie als Eclipse-Workspace ausgewählt haben und navigieren Sie in den entsprechenden Unterordner anhand ihrer Projektstruktur.

• Kopieren Sie alle Dateien Ihrer Abgabe in einen eigenen Ordner (für jedes Übungsblatt ein eigener Ordner) und geben Sie den gesamten Ordner als ZIP-Archiv ab. In dem Ordner dürfen nur Dateien mit der Endung .java, .pdf, .jpg oder .txt enthalten sein. Word- Dokumente werden nicht korrigiert!

• Unter Windows kann ein ZIP-Archiv wie folgt erstellt werden: rechter Mausklick auf den Ordner, Auswahl von Senden an -> ZIP-komprimierter Ordner. Unter Mac OS hinge- hen: rechter Mausklick auf den Ordner, Auswahl von Komprimieren/Compress.

Referenzen

ÄHNLICHE DOKUMENTE

a) Definieren Sie eine EBNF-Grammatik für die oben beschriebene Sprache. Geben Sie in jedem Schritt an, ob Sie eine Regel angewendet haben und welche Operatoren Sie angewendet

Geben Sie für jeden dieser Ausdrücke an, ob er syntaktisch korrekt ist oder nicht (mit Begrün- dung) und ob er typkorrekt ist oder nicht (mit Begründung).. c) Schreiben Sie

Geben Sie für jeden dieser Ausdrücke an, ob er syntaktisch korrekt ist oder nicht (mit Begrün- dung) und ob er typkorrekt ist oder nicht (mit Begründung).. Für typkorrekte Ausdrücke

Schreiben Sie in einer Klasse IntSortierung ein Javaprogramm, in dem zunächst drei Variablen x, y und z vom Typ int deklariert werden. Das Javaprogramm soll die Werte in den

Schreiben Sie in einer Klasse Investitionsrechner ein Java-Programm, welches pro Jahr aus- gibt, das wievielte Jahr gerade berechnet wird, wieviele Autos in diesem Jahr

Schreiben Sie in einer Klasse Investitionsrechner ein Java-Programm, welches pro Jahr aus- gibt, das wievielte Jahr gerade berechnet wird, wieviele Autos in diesem Jahr

new Line(3,4) ist nicht typkorrekt, da zwar die Anzahl der aktuellen Parameter mit der Anzahl der formalen Parameter in der Konstruktordeklaration übereinstimmt, aber 3 und 4 den

a) Definieren Sie in einer Klasse TilgungsrechnersrechnerA zunächst einen Zinssatz von 2.0% sowie den Tilgungssatz von 10% als geeignete Konstanten. Der Wert der