Norbert M. Lang 1800413 Übung Di, 17:15 Uhr (B) Modellierung und Programmierung 1 Lösung zu Übungsblatt Nr. 1 (1) Konvertierung (a) natürliche Zahlen Basis 2 Basis 10 11000100 01000001 50241 11010001 01 837 10101111 11111110 45054 Basis 16 C441 345 AFFE (b) rationale Zahlen Basis 2 1101.011 101.01101 11011.1101 Basis 10 13.375 5.40625 27.8125 Basis 16 D.6 5.68 1B.D (c) b, x? (66)10 = (123)b ⇒ b = 7 und (0.12)3 = (x)10 ⇒ x = 0.625 (2) Maschinenzahl (a) Umrechnung Maschinenzahl / Dezimalzahl (int) (i) geg. M = 10000000 00000000 00000000 00000010, ges. x D.h. M = 1 0000000 0 0000000 00000000 00000000 Da der Exponent Null ist, handelt es sich um eine denormalisierte Zahl, d.h. x = 0.m mit m = 00000000000000000000010. Daraus folgt: x = 1.0 · 2−22 ≈ 0. (ii) geg. x = −77, ges. Darstellung von x als Maschinenzahl M x ist negativ, also sign(M ) = 1 , weiter (77)10 = (1001101)2 = (1.001101)2 · 26 ⇒ m = 001101... , E = e + Offset = (133)10 = ( 10000101 )2 ⇒ M = 11000010 10011010 00000000 00000000 (b) Umrechnung Maschinenzahl / Dezimalzahl (float) (i) geg. M = 11000001 01010000 00000000 00000000, ges. x ⇒ sign(M ) = 1, E = (10000010)2 = (130)10 , m = 101 ⇒ e = E − Offset = 130 − 127 = 3 ⇒ −x = (1.m · 2e )2 = (1.101 · 23 )2 = (1101)2 = (13)10 Damit ist also x = −13 die durch M dargestellte Zahl. (ii) geg. x = 99.75, ges. Darstellung von x als Maschinenzahl M (99)10 = (1100011)2 , (0.75)10 = (0.11)2 ⇒ x = (99.75)10 = (1100011.11)2 = (1.10001111 · 26 )2 ⇒ sign(M ) = 0, m = 10001111, E = e + Offset = (6)10 + (127)10 = (133)10 = (10000101)2 ⇒ M = 01000010 11001111 00000000 00000000 (c) Maschinenzahl Dezimalzahl MIN 1 1111111 0 1111111 11111111 11111111 ≈ −3.4028235 · 1038 MAX 0 1111111 0 1111111 11111111 11111111 ≈ 3.4028235 · 1038 1 −126 kleinster Rundungsfehler: 2 · 2 ; größter Rundungsfehler: 12 · 2104 1 Norbert M. Lang 1800413 Übung Di, 17:15 Uhr (B) (3) Algorithmen und Programme (a) Sei f (n) = n2 + n + 41 mit n ∈ N gegeben. Sei weiter n = 41, dann folt aus f (41) = 412 + 41 + 41 = 41 · 41 + 2 · 41 = 43 · 41 sofort: 41 6= f (41) und 41 | f (41), d.h. f (41) ist keine Primzahl, da diese nur durch sich selbst und 1 teilbar sein dürfen. (b) Für den folgenden Algorithmus ist zu beachten: p := prim(n), n ∈ N \ {0, 1} ist Ausgabe und n Eingabe; Laufvariable/Teiler b ist auf 2 < b < n/2 beschränkt (da i. A. kein Primzahltest für {0, 1} notwendig sowie 2 kleinst- und n/2 größtmöglicher natürtlicher Teiler von n). −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− a=n ; b=2; c =1; w h i l e ( b<n / 2 ) { i f ( a%b==0){c=0} b=b+1; } p=c ; −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− n Eingabe 31 Verarbeitung p a b c 31 31 .. . 2 3 .. . 1 1 .. . 31 15 1 Ausgabe n Eingabe 623 Verarbeitung 1 p a b c 623 623 .. . 2 3 .. . 1 1 .. . 623 623 623 .. . 6 7 8 .. . 1 0 0 .. . 623 311 0 Ausgabe 0 2 Norbert M. Lang 1800413 Übung Di, 17:15 Uhr (B) (4) HalloWeltPlus-Applet (a) Java-Quellcode // H a l l o W e l t A p p l e t P l u s . j a v a import j a v a . a p p l e t . ∗ ; import j a v a . awt . ∗ ; // Applet // Gr ap hi cs /∗∗ ∗ D i e s e s Applet g i b t " H a l l o Welt ! " aus ∗ und w e c h s e l t Vorder −/H i n t e r g r u n d f a r b e . ∗/ p u b l i c c l a s s H a l l o W e l t A p p l e t P l u s e x t e n d s Applet { /∗∗ ∗ Hauptmethode , D a r s t e l l u n g d e s Applet . ∗ S e t z e n d e r Hinter − und V o r d e r g r u n d f a r b e . ∗/ int vorder = 0; p u b l i c v o i d p a i n t ( G ra ph ic s g ) { g . d r a w S t r i n g ( " H a l l o Welt ! " , 5 0 , 5 0 ) ; i f ( v o r d e r ==0) { setForeground ( Color . black ) ; setBackground ( C o l o r . w h i t e ) ; } else { setForeground ( Color . white ) ; setBackground ( C o l o r . b l a c k ) ; } } p u b l i c v o i d setBackFor ( i n t nr ) { // Wechsel d e r Farben . v o r d e r = nr ; r e p a i n t ( 100L ) ; } } 3 Norbert M. Lang 1800413 Übung Di, 17:15 Uhr (B) (b) HTML-Quellcode <html> <!−− Bindet das HalloWeltPlus −Applet e i n . −−> <head> < t i t l e >HalloWeltApplet </ t i t l e > </head> <body> <!−− Applet −−> <a p p l e t code=H a l l o W e l t A p p l e t P l u s . c l a s s name=A width =200 h e i g h t =200></a p p l e t > <hr> <!−− Javascript −−> <a o n C l i c k="document .A. setBackFor ( 0)"> H i n t e r g r u n d w e i s s !</a><p> <a o n C l i c k="document .A. s e t B a c k f o r ( 1)"> H i n t e r g r u n d schwarz !</a> </body> </html> 4